summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/google/protobuf/any.h157
-rw-r--r--include/google/protobuf/any.pb.h384
-rw-r--r--include/google/protobuf/any.proto158
-rw-r--r--include/google/protobuf/api.pb.h1437
-rw-r--r--include/google/protobuf/api.proto208
-rw-r--r--include/google/protobuf/arena.h851
-rw-r--r--include/google/protobuf/arena_impl.h686
-rw-r--r--include/google/protobuf/arenastring.h480
-rw-r--r--include/google/protobuf/arenaz_sampler.h207
-rw-r--r--include/google/protobuf/compiler/code_generator.h207
-rw-r--r--include/google/protobuf/compiler/command_line_interface.h464
-rw-r--r--include/google/protobuf/compiler/cpp/cpp_generator.h6
-rw-r--r--include/google/protobuf/compiler/cpp/file.h209
-rw-r--r--include/google/protobuf/compiler/cpp/generator.h107
-rw-r--r--include/google/protobuf/compiler/cpp/helpers.h1064
-rw-r--r--include/google/protobuf/compiler/cpp/names.h97
-rw-r--r--include/google/protobuf/compiler/csharp/csharp_doc_comment.h51
-rw-r--r--include/google/protobuf/compiler/csharp/csharp_generator.h70
-rw-r--r--include/google/protobuf/compiler/csharp/csharp_names.h109
-rw-r--r--include/google/protobuf/compiler/csharp/csharp_options.h81
-rw-r--r--include/google/protobuf/compiler/importer.h338
-rw-r--r--include/google/protobuf/compiler/java/generator.h77
-rw-r--r--include/google/protobuf/compiler/java/java_generator.h6
-rw-r--r--include/google/protobuf/compiler/java/kotlin_generator.h74
-rw-r--r--include/google/protobuf/compiler/java/names.h100
-rw-r--r--include/google/protobuf/compiler/objectivec/objectivec_generator.h79
-rw-r--r--include/google/protobuf/compiler/objectivec/objectivec_helpers.h353
-rw-r--r--include/google/protobuf/compiler/parser.h602
-rw-r--r--include/google/protobuf/compiler/php/php_generator.h92
-rw-r--r--include/google/protobuf/compiler/plugin.h96
-rw-r--r--include/google/protobuf/compiler/plugin.pb.h1901
-rw-r--r--include/google/protobuf/compiler/plugin.proto183
-rw-r--r--include/google/protobuf/compiler/python/generator.h185
-rw-r--r--include/google/protobuf/compiler/python/pyi_generator.h120
-rw-r--r--include/google/protobuf/compiler/python/python_generator.h6
-rw-r--r--include/google/protobuf/compiler/ruby/ruby_generator.h67
-rw-r--r--include/google/protobuf/descriptor.h2440
-rw-r--r--include/google/protobuf/descriptor.pb.h14821
-rw-r--r--include/google/protobuf/descriptor.proto921
-rw-r--r--include/google/protobuf/descriptor_database.h398
-rw-r--r--include/google/protobuf/duration.pb.h278
-rw-r--r--include/google/protobuf/duration.proto116
-rw-r--r--include/google/protobuf/dynamic_message.h227
-rw-r--r--include/google/protobuf/empty.pb.h198
-rw-r--r--include/google/protobuf/empty.proto51
-rw-r--r--include/google/protobuf/endian.h198
-rw-r--r--include/google/protobuf/explicitly_constructed.h97
-rw-r--r--include/google/protobuf/extension_set.h1561
-rw-r--r--include/google/protobuf/extension_set_inl.h276
-rw-r--r--include/google/protobuf/field_access_listener.h172
-rw-r--r--include/google/protobuf/field_mask.pb.h317
-rw-r--r--include/google/protobuf/field_mask.proto245
-rw-r--r--include/google/protobuf/generated_enum_reflection.h100
-rw-r--r--include/google/protobuf/generated_enum_util.h85
-rw-r--r--include/google/protobuf/generated_message_bases.h87
-rw-r--r--include/google/protobuf/generated_message_reflection.h354
-rw-r--r--include/google/protobuf/generated_message_tctable_decl.h312
-rw-r--r--include/google/protobuf/generated_message_tctable_impl.h553
-rw-r--r--include/google/protobuf/generated_message_util.h214
-rw-r--r--include/google/protobuf/has_bits.h117
-rw-r--r--include/google/protobuf/implicit_weak_message.h213
-rw-r--r--include/google/protobuf/inlined_string_field.h532
-rw-r--r--include/google/protobuf/io/coded_stream.h1799
-rw-r--r--include/google/protobuf/io/gzip_stream.h205
-rw-r--r--include/google/protobuf/io/io_win32.h141
-rw-r--r--include/google/protobuf/io/printer.h387
-rw-r--r--include/google/protobuf/io/strtod.h55
-rw-r--r--include/google/protobuf/io/tokenizer.h442
-rw-r--r--include/google/protobuf/io/zero_copy_stream.h260
-rw-r--r--include/google/protobuf/io/zero_copy_stream_impl.h336
-rw-r--r--include/google/protobuf/io/zero_copy_stream_impl_lite.h413
-rw-r--r--include/google/protobuf/map.h1448
-rw-r--r--include/google/protobuf/map_entry.h134
-rw-r--r--include/google/protobuf/map_entry_lite.h563
-rw-r--r--include/google/protobuf/map_field.h946
-rw-r--r--include/google/protobuf/map_field_inl.h375
-rw-r--r--include/google/protobuf/map_field_lite.h209
-rw-r--r--include/google/protobuf/map_type_handler.h736
-rw-r--r--include/google/protobuf/message.h1497
-rw-r--r--include/google/protobuf/message_lite.h591
-rw-r--r--include/google/protobuf/metadata.h36
-rw-r--r--include/google/protobuf/metadata_lite.h316
-rw-r--r--include/google/protobuf/parse_context.h1025
-rw-r--r--include/google/protobuf/port.h80
-rw-r--r--include/google/protobuf/port_def.inc928
-rw-r--r--include/google/protobuf/port_undef.inc160
-rw-r--r--include/google/protobuf/reflection.h570
-rw-r--r--include/google/protobuf/reflection_ops.h92
-rw-r--r--include/google/protobuf/repeated_field.h1219
-rw-r--r--include/google/protobuf/repeated_ptr_field.h1970
-rw-r--r--include/google/protobuf/service.h295
-rw-r--r--include/google/protobuf/source_context.pb.h282
-rw-r--r--include/google/protobuf/source_context.proto48
-rw-r--r--include/google/protobuf/struct.pb.h1177
-rw-r--r--include/google/protobuf/struct.proto95
-rw-r--r--include/google/protobuf/stubs/bytestream.h351
-rw-r--r--include/google/protobuf/stubs/callback.h583
-rw-r--r--include/google/protobuf/stubs/casts.h138
-rw-r--r--include/google/protobuf/stubs/common.h197
-rw-r--r--include/google/protobuf/stubs/hash.h114
-rw-r--r--include/google/protobuf/stubs/logging.h239
-rw-r--r--include/google/protobuf/stubs/macros.h93
-rw-r--r--include/google/protobuf/stubs/map_util.h769
-rw-r--r--include/google/protobuf/stubs/mutex.h218
-rw-r--r--include/google/protobuf/stubs/once.h55
-rw-r--r--include/google/protobuf/stubs/platform_macros.h142
-rw-r--r--include/google/protobuf/stubs/port.h413
-rw-r--r--include/google/protobuf/stubs/status.h196
-rw-r--r--include/google/protobuf/stubs/stl_util.h90
-rw-r--r--include/google/protobuf/stubs/stringpiece.h402
-rw-r--r--include/google/protobuf/stubs/strutil.h950
-rw-r--r--include/google/protobuf/stubs/template_util.h138
-rw-r--r--include/google/protobuf/text_format.h693
-rw-r--r--include/google/protobuf/timestamp.pb.h278
-rw-r--r--include/google/protobuf/timestamp.proto147
-rw-r--r--include/google/protobuf/type.pb.h2571
-rw-r--r--include/google/protobuf/type.proto187
-rw-r--r--include/google/protobuf/unknown_field_set.h407
-rw-r--r--include/google/protobuf/util/delimited_message_util.h109
-rw-r--r--include/google/protobuf/util/field_comparator.h288
-rw-r--r--include/google/protobuf/util/field_mask_util.h263
-rw-r--r--include/google/protobuf/util/json_util.h204
-rw-r--r--include/google/protobuf/util/message_differencer.h980
-rw-r--r--include/google/protobuf/util/time_util.h314
-rw-r--r--include/google/protobuf/util/type_resolver.h77
-rw-r--r--include/google/protobuf/util/type_resolver_util.h58
-rw-r--r--include/google/protobuf/wire_format.h414
-rw-r--r--include/google/protobuf/wire_format_lite.h1899
-rw-r--r--include/google/protobuf/wrappers.pb.h1741
-rw-r--r--include/google/protobuf/wrappers.proto123
-rw-r--r--libs/win32/libprotobuf.libbin4020006 -> 0 bytes
-rw-r--r--libs/win64/libprotobuf.libbin4086332 -> 0 bytes
132 files changed, 0 insertions, 70866 deletions
diff --git a/include/google/protobuf/any.h b/include/google/protobuf/any.h
deleted file mode 100644
index 92ea2bb2c7..0000000000
--- a/include/google/protobuf/any.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_ANY_H__
-#define GOOGLE_PROTOBUF_ANY_H__
-
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/message_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class FieldDescriptor;
-class Message;
-
-namespace internal {
-
-extern const char kAnyFullTypeName[]; // "google.protobuf.Any".
-extern const char kTypeGoogleApisComPrefix[]; // "type.googleapis.com/".
-extern const char kTypeGoogleProdComPrefix[]; // "type.googleprod.com/".
-
-std::string GetTypeUrl(StringPiece message_name,
- StringPiece type_url_prefix);
-
-// Helper class used to implement google::protobuf::Any.
-class PROTOBUF_EXPORT AnyMetadata {
- typedef ArenaStringPtr UrlType;
- typedef ArenaStringPtr ValueType;
- public:
- // AnyMetadata does not take ownership of "type_url" and "value".
- constexpr AnyMetadata(UrlType* type_url, ValueType* value)
- : type_url_(type_url), value_(value) {}
-
- // Packs a message using the default type URL prefix: "type.googleapis.com".
- // The resulted type URL will be "type.googleapis.com/<message_full_name>".
- // Returns false if serializing the message failed.
- template <typename T>
- bool PackFrom(Arena* arena, const T& message) {
- return InternalPackFrom(arena, message, kTypeGoogleApisComPrefix,
- T::FullMessageName());
- }
-
- bool PackFrom(Arena* arena, const Message& message);
-
- // Packs a message using the given type URL prefix. The type URL will be
- // constructed by concatenating the message type's full name to the prefix
- // with an optional "/" separator if the prefix doesn't already end with "/".
- // For example, both PackFrom(message, "type.googleapis.com") and
- // PackFrom(message, "type.googleapis.com/") yield the same result type
- // URL: "type.googleapis.com/<message_full_name>".
- // Returns false if serializing the message failed.
- template <typename T>
- bool PackFrom(Arena* arena, const T& message,
- StringPiece type_url_prefix) {
- return InternalPackFrom(arena, message, type_url_prefix,
- T::FullMessageName());
- }
-
- bool PackFrom(Arena* arena, const Message& message,
- StringPiece type_url_prefix);
-
- // Unpacks the payload into the given message. Returns false if the message's
- // type doesn't match the type specified in the type URL (i.e., the full
- // name after the last "/" of the type URL doesn't match the message's actual
- // full name) or parsing the payload has failed.
- template <typename T>
- bool UnpackTo(T* message) const {
- return InternalUnpackTo(T::FullMessageName(), message);
- }
-
- bool UnpackTo(Message* message) const;
-
- // Checks whether the type specified in the type URL matches the given type.
- // A type is considered matching if its full name matches the full name after
- // the last "/" in the type URL.
- template <typename T>
- bool Is() const {
- return InternalIs(T::FullMessageName());
- }
-
- private:
- bool InternalPackFrom(Arena* arena, const MessageLite& message,
- StringPiece type_url_prefix,
- StringPiece type_name);
- bool InternalUnpackTo(StringPiece type_name,
- MessageLite* message) const;
- bool InternalIs(StringPiece type_name) const;
-
- UrlType* type_url_;
- ValueType* value_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(AnyMetadata);
-};
-
-// Get the proto type name from Any::type_url value. For example, passing
-// "type.googleapis.com/rpc.QueryOrigin" will return "rpc.QueryOrigin" in
-// *full_type_name. Returns false if the type_url does not have a "/"
-// in the type url separating the full type name.
-//
-// NOTE: this function is available publicly as a static method on the
-// generated message type: google::protobuf::Any::ParseAnyTypeUrl()
-bool ParseAnyTypeUrl(StringPiece type_url, std::string* full_type_name);
-
-// Get the proto type name and prefix from Any::type_url value. For example,
-// passing "type.googleapis.com/rpc.QueryOrigin" will return
-// "type.googleapis.com/" in *url_prefix and "rpc.QueryOrigin" in
-// *full_type_name. Returns false if the type_url does not have a "/" in the
-// type url separating the full type name.
-bool ParseAnyTypeUrl(StringPiece type_url, std::string* url_prefix,
- std::string* full_type_name);
-
-// See if message is of type google.protobuf.Any, if so, return the descriptors
-// for "type_url" and "value" fields.
-bool GetAnyFieldDescriptors(const Message& message,
- const FieldDescriptor** type_url_field,
- const FieldDescriptor** value_field);
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_ANY_H__
diff --git a/include/google/protobuf/any.pb.h b/include/google/protobuf/any.pb.h
deleted file mode 100644
index 0a9ee260b2..0000000000
--- a/include/google/protobuf/any.pb.h
+++ /dev/null
@@ -1,384 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/any.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fany_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fany_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fany_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Any;
-struct AnyDefaultTypeInternal;
-PROTOBUF_EXPORT extern AnyDefaultTypeInternal _Any_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Any* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Any>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT Any final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Any) */ {
- public:
- inline Any() : Any(nullptr) {}
- ~Any() override;
- explicit PROTOBUF_CONSTEXPR Any(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Any(const Any& from);
- Any(Any&& from) noexcept
- : Any() {
- *this = ::std::move(from);
- }
-
- inline Any& operator=(const Any& from) {
- CopyFrom(from);
- return *this;
- }
- inline Any& operator=(Any&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Any& default_instance() {
- return *internal_default_instance();
- }
- static inline const Any* internal_default_instance() {
- return reinterpret_cast<const Any*>(
- &_Any_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- // implements Any -----------------------------------------------
-
- bool PackFrom(const ::PROTOBUF_NAMESPACE_ID::Message& message) {
- GOOGLE_DCHECK_NE(&message, this);
- return _impl_._any_metadata_.PackFrom(GetArena(), message);
- }
- bool PackFrom(const ::PROTOBUF_NAMESPACE_ID::Message& message,
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam type_url_prefix) {
- GOOGLE_DCHECK_NE(&message, this);
- return _impl_._any_metadata_.PackFrom(GetArena(), message, type_url_prefix);
- }
- bool UnpackTo(::PROTOBUF_NAMESPACE_ID::Message* message) const {
- return _impl_._any_metadata_.UnpackTo(message);
- }
- static bool GetAnyFieldDescriptors(
- const ::PROTOBUF_NAMESPACE_ID::Message& message,
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** type_url_field,
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptor** value_field);
- template <typename T, class = typename std::enable_if<!std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::Message&>::value>::type>
- bool PackFrom(const T& message) {
- return _impl_._any_metadata_.PackFrom<T>(GetArena(), message);
- }
- template <typename T, class = typename std::enable_if<!std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::Message&>::value>::type>
- bool PackFrom(const T& message,
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam type_url_prefix) {
- return _impl_._any_metadata_.PackFrom<T>(GetArena(), message, type_url_prefix);}
- template <typename T, class = typename std::enable_if<!std::is_convertible<T, const ::PROTOBUF_NAMESPACE_ID::Message&>::value>::type>
- bool UnpackTo(T* message) const {
- return _impl_._any_metadata_.UnpackTo<T>(message);
- }
- template<typename T> bool Is() const {
- return _impl_._any_metadata_.Is<T>();
- }
- static bool ParseAnyTypeUrl(::PROTOBUF_NAMESPACE_ID::ConstStringParam type_url,
- std::string* full_type_name);
- friend void swap(Any& a, Any& b) {
- a.Swap(&b);
- }
- inline void Swap(Any* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Any* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Any* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Any>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Any& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Any& from) {
- Any::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Any* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Any";
- }
- protected:
- explicit Any(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kTypeUrlFieldNumber = 1,
- kValueFieldNumber = 2,
- };
- // string type_url = 1;
- void clear_type_url();
- const std::string& type_url() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_type_url(ArgT0&& arg0, ArgT... args);
- std::string* mutable_type_url();
- PROTOBUF_NODISCARD std::string* release_type_url();
- void set_allocated_type_url(std::string* type_url);
- private:
- const std::string& _internal_type_url() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_type_url(const std::string& value);
- std::string* _internal_mutable_type_url();
- public:
-
- // bytes value = 2;
- void clear_value();
- const std::string& value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_value();
- PROTOBUF_NODISCARD std::string* release_value();
- void set_allocated_value(std::string* value);
- private:
- const std::string& _internal_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(const std::string& value);
- std::string* _internal_mutable_value();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Any)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr type_url_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata _any_metadata_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fany_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Any
-
-// string type_url = 1;
-inline void Any::clear_type_url() {
- _impl_.type_url_.ClearToEmpty();
-}
-inline const std::string& Any::type_url() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Any.type_url)
- return _internal_type_url();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Any::set_type_url(ArgT0&& arg0, ArgT... args) {
-
- _impl_.type_url_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Any.type_url)
-}
-inline std::string* Any::mutable_type_url() {
- std::string* _s = _internal_mutable_type_url();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Any.type_url)
- return _s;
-}
-inline const std::string& Any::_internal_type_url() const {
- return _impl_.type_url_.Get();
-}
-inline void Any::_internal_set_type_url(const std::string& value) {
-
- _impl_.type_url_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Any::_internal_mutable_type_url() {
-
- return _impl_.type_url_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Any::release_type_url() {
- // @@protoc_insertion_point(field_release:google.protobuf.Any.type_url)
- return _impl_.type_url_.Release();
-}
-inline void Any::set_allocated_type_url(std::string* type_url) {
- if (type_url != nullptr) {
-
- } else {
-
- }
- _impl_.type_url_.SetAllocated(type_url, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.type_url_.IsDefault()) {
- _impl_.type_url_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Any.type_url)
-}
-
-// bytes value = 2;
-inline void Any::clear_value() {
- _impl_.value_.ClearToEmpty();
-}
-inline const std::string& Any::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Any.value)
- return _internal_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Any::set_value(ArgT0&& arg0, ArgT... args) {
-
- _impl_.value_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Any.value)
-}
-inline std::string* Any::mutable_value() {
- std::string* _s = _internal_mutable_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Any.value)
- return _s;
-}
-inline const std::string& Any::_internal_value() const {
- return _impl_.value_.Get();
-}
-inline void Any::_internal_set_value(const std::string& value) {
-
- _impl_.value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Any::_internal_mutable_value() {
-
- return _impl_.value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Any::release_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Any.value)
- return _impl_.value_.Release();
-}
-inline void Any::set_allocated_value(std::string* value) {
- if (value != nullptr) {
-
- } else {
-
- }
- _impl_.value_.SetAllocated(value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.value_.IsDefault()) {
- _impl_.value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Any.value)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fany_2eproto
diff --git a/include/google/protobuf/any.proto b/include/google/protobuf/any.proto
deleted file mode 100644
index e2c2042fdc..0000000000
--- a/include/google/protobuf/any.proto
+++ /dev/null
@@ -1,158 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option go_package = "google.golang.org/protobuf/types/known/anypb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "AnyProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-// Foo foo = ...;
-// Any any;
-// any.PackFrom(foo);
-// ...
-// if (any.UnpackTo(&foo)) {
-// ...
-// }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-// Foo foo = ...;
-// Any any = Any.pack(foo);
-// ...
-// if (any.is(Foo.class)) {
-// foo = any.unpack(Foo.class);
-// }
-//
-// Example 3: Pack and unpack a message in Python.
-//
-// foo = Foo(...)
-// any = Any()
-// any.Pack(foo)
-// ...
-// if any.Is(Foo.DESCRIPTOR):
-// any.Unpack(foo)
-// ...
-//
-// Example 4: Pack and unpack a message in Go
-//
-// foo := &pb.Foo{...}
-// any, err := anypb.New(foo)
-// if err != nil {
-// ...
-// }
-// ...
-// foo := &pb.Foo{}
-// if err := any.UnmarshalTo(foo); err != nil {
-// ...
-// }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-//
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-// package google.profile;
-// message Person {
-// string first_name = 1;
-// string last_name = 2;
-// }
-//
-// {
-// "@type": "type.googleapis.com/google.profile.Person",
-// "firstName": <string>,
-// "lastName": <string>
-// }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-// {
-// "@type": "type.googleapis.com/google.protobuf.Duration",
-// "value": "1.212s"
-// }
-//
-message Any {
- // A URL/resource name that uniquely identifies the type of the serialized
- // protocol buffer message. This string must contain at least
- // one "/" character. The last segment of the URL's path must represent
- // the fully qualified name of the type (as in
- // `path/google.protobuf.Duration`). The name should be in a canonical form
- // (e.g., leading "." is not accepted).
- //
- // In practice, teams usually precompile into the binary all types that they
- // expect it to use in the context of Any. However, for URLs which use the
- // scheme `http`, `https`, or no scheme, one can optionally set up a type
- // server that maps type URLs to message definitions as follows:
- //
- // * If no scheme is provided, `https` is assumed.
- // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
- // value in binary format, or produce an error.
- // * Applications are allowed to cache lookup results based on the
- // URL, or have them precompiled into a binary to avoid any
- // lookup. Therefore, binary compatibility needs to be preserved
- // on changes to types. (Use versioned type names to manage
- // breaking changes.)
- //
- // Note: this functionality is not currently available in the official
- // protobuf release, and it is not used for type URLs beginning with
- // type.googleapis.com.
- //
- // Schemes other than `http`, `https` (or the empty scheme) might be
- // used with implementation specific semantics.
- //
- string type_url = 1;
-
- // Must be a valid serialized protocol buffer of the above specified type.
- bytes value = 2;
-}
diff --git a/include/google/protobuf/api.pb.h b/include/google/protobuf/api.pb.h
deleted file mode 100644
index 49032949b5..0000000000
--- a/include/google/protobuf/api.pb.h
+++ /dev/null
@@ -1,1437 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/api.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-#include <google/protobuf/source_context.pb.h>
-#include <google/protobuf/type.pb.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fapi_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fapi_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fapi_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Api;
-struct ApiDefaultTypeInternal;
-PROTOBUF_EXPORT extern ApiDefaultTypeInternal _Api_default_instance_;
-class Method;
-struct MethodDefaultTypeInternal;
-PROTOBUF_EXPORT extern MethodDefaultTypeInternal _Method_default_instance_;
-class Mixin;
-struct MixinDefaultTypeInternal;
-PROTOBUF_EXPORT extern MixinDefaultTypeInternal _Mixin_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Api* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Api>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Method* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Method>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Mixin* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Mixin>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT Api final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Api) */ {
- public:
- inline Api() : Api(nullptr) {}
- ~Api() override;
- explicit PROTOBUF_CONSTEXPR Api(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Api(const Api& from);
- Api(Api&& from) noexcept
- : Api() {
- *this = ::std::move(from);
- }
-
- inline Api& operator=(const Api& from) {
- CopyFrom(from);
- return *this;
- }
- inline Api& operator=(Api&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Api& default_instance() {
- return *internal_default_instance();
- }
- static inline const Api* internal_default_instance() {
- return reinterpret_cast<const Api*>(
- &_Api_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Api& a, Api& b) {
- a.Swap(&b);
- }
- inline void Swap(Api* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Api* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Api* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Api>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Api& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Api& from) {
- Api::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Api* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Api";
- }
- protected:
- explicit Api(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kMethodsFieldNumber = 2,
- kOptionsFieldNumber = 3,
- kMixinsFieldNumber = 6,
- kNameFieldNumber = 1,
- kVersionFieldNumber = 4,
- kSourceContextFieldNumber = 5,
- kSyntaxFieldNumber = 7,
- };
- // repeated .google.protobuf.Method methods = 2;
- int methods_size() const;
- private:
- int _internal_methods_size() const;
- public:
- void clear_methods();
- ::PROTOBUF_NAMESPACE_ID::Method* mutable_methods(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Method >*
- mutable_methods();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Method& _internal_methods(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Method* _internal_add_methods();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Method& methods(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Method* add_methods();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Method >&
- methods() const;
-
- // repeated .google.protobuf.Option options = 3;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // repeated .google.protobuf.Mixin mixins = 6;
- int mixins_size() const;
- private:
- int _internal_mixins_size() const;
- public:
- void clear_mixins();
- ::PROTOBUF_NAMESPACE_ID::Mixin* mutable_mixins(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Mixin >*
- mutable_mixins();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Mixin& _internal_mixins(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Mixin* _internal_add_mixins();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Mixin& mixins(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Mixin* add_mixins();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Mixin >&
- mixins() const;
-
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // string version = 4;
- void clear_version();
- const std::string& version() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_version(ArgT0&& arg0, ArgT... args);
- std::string* mutable_version();
- PROTOBUF_NODISCARD std::string* release_version();
- void set_allocated_version(std::string* version);
- private:
- const std::string& _internal_version() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_version(const std::string& value);
- std::string* _internal_mutable_version();
- public:
-
- // .google.protobuf.SourceContext source_context = 5;
- bool has_source_context() const;
- private:
- bool _internal_has_source_context() const;
- public:
- void clear_source_context();
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& source_context() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::SourceContext* release_source_context();
- ::PROTOBUF_NAMESPACE_ID::SourceContext* mutable_source_context();
- void set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- private:
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& _internal_source_context() const;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _internal_mutable_source_context();
- public:
- void unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- ::PROTOBUF_NAMESPACE_ID::SourceContext* unsafe_arena_release_source_context();
-
- // .google.protobuf.Syntax syntax = 7;
- void clear_syntax();
- ::PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
- void set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
- void _internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Api)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Method > methods_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Mixin > mixins_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context_;
- int syntax_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Method final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Method) */ {
- public:
- inline Method() : Method(nullptr) {}
- ~Method() override;
- explicit PROTOBUF_CONSTEXPR Method(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Method(const Method& from);
- Method(Method&& from) noexcept
- : Method() {
- *this = ::std::move(from);
- }
-
- inline Method& operator=(const Method& from) {
- CopyFrom(from);
- return *this;
- }
- inline Method& operator=(Method&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Method& default_instance() {
- return *internal_default_instance();
- }
- static inline const Method* internal_default_instance() {
- return reinterpret_cast<const Method*>(
- &_Method_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(Method& a, Method& b) {
- a.Swap(&b);
- }
- inline void Swap(Method* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Method* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Method* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Method>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Method& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Method& from) {
- Method::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Method* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Method";
- }
- protected:
- explicit Method(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kOptionsFieldNumber = 6,
- kNameFieldNumber = 1,
- kRequestTypeUrlFieldNumber = 2,
- kResponseTypeUrlFieldNumber = 4,
- kRequestStreamingFieldNumber = 3,
- kResponseStreamingFieldNumber = 5,
- kSyntaxFieldNumber = 7,
- };
- // repeated .google.protobuf.Option options = 6;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // string request_type_url = 2;
- void clear_request_type_url();
- const std::string& request_type_url() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_request_type_url(ArgT0&& arg0, ArgT... args);
- std::string* mutable_request_type_url();
- PROTOBUF_NODISCARD std::string* release_request_type_url();
- void set_allocated_request_type_url(std::string* request_type_url);
- private:
- const std::string& _internal_request_type_url() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_request_type_url(const std::string& value);
- std::string* _internal_mutable_request_type_url();
- public:
-
- // string response_type_url = 4;
- void clear_response_type_url();
- const std::string& response_type_url() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_response_type_url(ArgT0&& arg0, ArgT... args);
- std::string* mutable_response_type_url();
- PROTOBUF_NODISCARD std::string* release_response_type_url();
- void set_allocated_response_type_url(std::string* response_type_url);
- private:
- const std::string& _internal_response_type_url() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_response_type_url(const std::string& value);
- std::string* _internal_mutable_response_type_url();
- public:
-
- // bool request_streaming = 3;
- void clear_request_streaming();
- bool request_streaming() const;
- void set_request_streaming(bool value);
- private:
- bool _internal_request_streaming() const;
- void _internal_set_request_streaming(bool value);
- public:
-
- // bool response_streaming = 5;
- void clear_response_streaming();
- bool response_streaming() const;
- void set_response_streaming(bool value);
- private:
- bool _internal_response_streaming() const;
- void _internal_set_response_streaming(bool value);
- public:
-
- // .google.protobuf.Syntax syntax = 7;
- void clear_syntax();
- ::PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
- void set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
- void _internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Method)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr request_type_url_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr response_type_url_;
- bool request_streaming_;
- bool response_streaming_;
- int syntax_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Mixin final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Mixin) */ {
- public:
- inline Mixin() : Mixin(nullptr) {}
- ~Mixin() override;
- explicit PROTOBUF_CONSTEXPR Mixin(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Mixin(const Mixin& from);
- Mixin(Mixin&& from) noexcept
- : Mixin() {
- *this = ::std::move(from);
- }
-
- inline Mixin& operator=(const Mixin& from) {
- CopyFrom(from);
- return *this;
- }
- inline Mixin& operator=(Mixin&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Mixin& default_instance() {
- return *internal_default_instance();
- }
- static inline const Mixin* internal_default_instance() {
- return reinterpret_cast<const Mixin*>(
- &_Mixin_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(Mixin& a, Mixin& b) {
- a.Swap(&b);
- }
- inline void Swap(Mixin* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Mixin* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Mixin* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Mixin>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Mixin& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Mixin& from) {
- Mixin::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Mixin* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Mixin";
- }
- protected:
- explicit Mixin(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kRootFieldNumber = 2,
- };
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // string root = 2;
- void clear_root();
- const std::string& root() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_root(ArgT0&& arg0, ArgT... args);
- std::string* mutable_root();
- PROTOBUF_NODISCARD std::string* release_root();
- void set_allocated_root(std::string* root);
- private:
- const std::string& _internal_root() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_root(const std::string& value);
- std::string* _internal_mutable_root();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Mixin)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr root_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fapi_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Api
-
-// string name = 1;
-inline void Api::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Api::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Api::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Api.name)
-}
-inline std::string* Api::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.name)
- return _s;
-}
-inline const std::string& Api::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Api::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Api::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Api::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Api.name)
- return _impl_.name_.Release();
-}
-inline void Api::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.name)
-}
-
-// repeated .google.protobuf.Method methods = 2;
-inline int Api::_internal_methods_size() const {
- return _impl_.methods_.size();
-}
-inline int Api::methods_size() const {
- return _internal_methods_size();
-}
-inline void Api::clear_methods() {
- _impl_.methods_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Method* Api::mutable_methods(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.methods)
- return _impl_.methods_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Method >*
-Api::mutable_methods() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.methods)
- return &_impl_.methods_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Method& Api::_internal_methods(int index) const {
- return _impl_.methods_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Method& Api::methods(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.methods)
- return _internal_methods(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Method* Api::_internal_add_methods() {
- return _impl_.methods_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Method* Api::add_methods() {
- ::PROTOBUF_NAMESPACE_ID::Method* _add = _internal_add_methods();
- // @@protoc_insertion_point(field_add:google.protobuf.Api.methods)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Method >&
-Api::methods() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Api.methods)
- return _impl_.methods_;
-}
-
-// repeated .google.protobuf.Option options = 3;
-inline int Api::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int Api::options_size() const {
- return _internal_options_size();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Api::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-Api::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Api::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Api::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Api::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Api::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.Api.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-Api::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Api.options)
- return _impl_.options_;
-}
-
-// string version = 4;
-inline void Api::clear_version() {
- _impl_.version_.ClearToEmpty();
-}
-inline const std::string& Api::version() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.version)
- return _internal_version();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Api::set_version(ArgT0&& arg0, ArgT... args) {
-
- _impl_.version_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Api.version)
-}
-inline std::string* Api::mutable_version() {
- std::string* _s = _internal_mutable_version();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.version)
- return _s;
-}
-inline const std::string& Api::_internal_version() const {
- return _impl_.version_.Get();
-}
-inline void Api::_internal_set_version(const std::string& value) {
-
- _impl_.version_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Api::_internal_mutable_version() {
-
- return _impl_.version_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Api::release_version() {
- // @@protoc_insertion_point(field_release:google.protobuf.Api.version)
- return _impl_.version_.Release();
-}
-inline void Api::set_allocated_version(std::string* version) {
- if (version != nullptr) {
-
- } else {
-
- }
- _impl_.version_.SetAllocated(version, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.version_.IsDefault()) {
- _impl_.version_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.version)
-}
-
-// .google.protobuf.SourceContext source_context = 5;
-inline bool Api::_internal_has_source_context() const {
- return this != internal_default_instance() && _impl_.source_context_ != nullptr;
-}
-inline bool Api::has_source_context() const {
- return _internal_has_source_context();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Api::_internal_source_context() const {
- const ::PROTOBUF_NAMESPACE_ID::SourceContext* p = _impl_.source_context_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::SourceContext&>(
- ::PROTOBUF_NAMESPACE_ID::_SourceContext_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Api::source_context() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.source_context)
- return _internal_source_context();
-}
-inline void Api::unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- _impl_.source_context_ = source_context;
- if (source_context) {
-
- } else {
-
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Api.source_context)
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Api::release_source_context() {
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Api::unsafe_arena_release_source_context() {
- // @@protoc_insertion_point(field_release:google.protobuf.Api.source_context)
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Api::_internal_mutable_source_context() {
-
- if (_impl_.source_context_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceContext>(GetArenaForAllocation());
- _impl_.source_context_ = p;
- }
- return _impl_.source_context_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Api::mutable_source_context() {
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _msg = _internal_mutable_source_context();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.source_context)
- return _msg;
-}
-inline void Api::set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- if (source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
- reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_context));
- if (message_arena != submessage_arena) {
- source_context = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, source_context, submessage_arena);
- }
-
- } else {
-
- }
- _impl_.source_context_ = source_context;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Api.source_context)
-}
-
-// repeated .google.protobuf.Mixin mixins = 6;
-inline int Api::_internal_mixins_size() const {
- return _impl_.mixins_.size();
-}
-inline int Api::mixins_size() const {
- return _internal_mixins_size();
-}
-inline void Api::clear_mixins() {
- _impl_.mixins_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Mixin* Api::mutable_mixins(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Api.mixins)
- return _impl_.mixins_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Mixin >*
-Api::mutable_mixins() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Api.mixins)
- return &_impl_.mixins_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Mixin& Api::_internal_mixins(int index) const {
- return _impl_.mixins_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Mixin& Api::mixins(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.mixins)
- return _internal_mixins(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Mixin* Api::_internal_add_mixins() {
- return _impl_.mixins_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Mixin* Api::add_mixins() {
- ::PROTOBUF_NAMESPACE_ID::Mixin* _add = _internal_add_mixins();
- // @@protoc_insertion_point(field_add:google.protobuf.Api.mixins)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Mixin >&
-Api::mixins() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Api.mixins)
- return _impl_.mixins_;
-}
-
-// .google.protobuf.Syntax syntax = 7;
-inline void Api::clear_syntax() {
- _impl_.syntax_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Api::_internal_syntax() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Syntax >(_impl_.syntax_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Api::syntax() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Api.syntax)
- return _internal_syntax();
-}
-inline void Api::_internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
-
- _impl_.syntax_ = value;
-}
-inline void Api::set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
- _internal_set_syntax(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Api.syntax)
-}
-
-// -------------------------------------------------------------------
-
-// Method
-
-// string name = 1;
-inline void Method::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Method::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Method::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Method.name)
-}
-inline std::string* Method::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Method.name)
- return _s;
-}
-inline const std::string& Method::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Method::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Method::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Method::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Method.name)
- return _impl_.name_.Release();
-}
-inline void Method::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.name)
-}
-
-// string request_type_url = 2;
-inline void Method::clear_request_type_url() {
- _impl_.request_type_url_.ClearToEmpty();
-}
-inline const std::string& Method::request_type_url() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.request_type_url)
- return _internal_request_type_url();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Method::set_request_type_url(ArgT0&& arg0, ArgT... args) {
-
- _impl_.request_type_url_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Method.request_type_url)
-}
-inline std::string* Method::mutable_request_type_url() {
- std::string* _s = _internal_mutable_request_type_url();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Method.request_type_url)
- return _s;
-}
-inline const std::string& Method::_internal_request_type_url() const {
- return _impl_.request_type_url_.Get();
-}
-inline void Method::_internal_set_request_type_url(const std::string& value) {
-
- _impl_.request_type_url_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Method::_internal_mutable_request_type_url() {
-
- return _impl_.request_type_url_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Method::release_request_type_url() {
- // @@protoc_insertion_point(field_release:google.protobuf.Method.request_type_url)
- return _impl_.request_type_url_.Release();
-}
-inline void Method::set_allocated_request_type_url(std::string* request_type_url) {
- if (request_type_url != nullptr) {
-
- } else {
-
- }
- _impl_.request_type_url_.SetAllocated(request_type_url, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.request_type_url_.IsDefault()) {
- _impl_.request_type_url_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.request_type_url)
-}
-
-// bool request_streaming = 3;
-inline void Method::clear_request_streaming() {
- _impl_.request_streaming_ = false;
-}
-inline bool Method::_internal_request_streaming() const {
- return _impl_.request_streaming_;
-}
-inline bool Method::request_streaming() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.request_streaming)
- return _internal_request_streaming();
-}
-inline void Method::_internal_set_request_streaming(bool value) {
-
- _impl_.request_streaming_ = value;
-}
-inline void Method::set_request_streaming(bool value) {
- _internal_set_request_streaming(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Method.request_streaming)
-}
-
-// string response_type_url = 4;
-inline void Method::clear_response_type_url() {
- _impl_.response_type_url_.ClearToEmpty();
-}
-inline const std::string& Method::response_type_url() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.response_type_url)
- return _internal_response_type_url();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Method::set_response_type_url(ArgT0&& arg0, ArgT... args) {
-
- _impl_.response_type_url_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Method.response_type_url)
-}
-inline std::string* Method::mutable_response_type_url() {
- std::string* _s = _internal_mutable_response_type_url();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Method.response_type_url)
- return _s;
-}
-inline const std::string& Method::_internal_response_type_url() const {
- return _impl_.response_type_url_.Get();
-}
-inline void Method::_internal_set_response_type_url(const std::string& value) {
-
- _impl_.response_type_url_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Method::_internal_mutable_response_type_url() {
-
- return _impl_.response_type_url_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Method::release_response_type_url() {
- // @@protoc_insertion_point(field_release:google.protobuf.Method.response_type_url)
- return _impl_.response_type_url_.Release();
-}
-inline void Method::set_allocated_response_type_url(std::string* response_type_url) {
- if (response_type_url != nullptr) {
-
- } else {
-
- }
- _impl_.response_type_url_.SetAllocated(response_type_url, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.response_type_url_.IsDefault()) {
- _impl_.response_type_url_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Method.response_type_url)
-}
-
-// bool response_streaming = 5;
-inline void Method::clear_response_streaming() {
- _impl_.response_streaming_ = false;
-}
-inline bool Method::_internal_response_streaming() const {
- return _impl_.response_streaming_;
-}
-inline bool Method::response_streaming() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.response_streaming)
- return _internal_response_streaming();
-}
-inline void Method::_internal_set_response_streaming(bool value) {
-
- _impl_.response_streaming_ = value;
-}
-inline void Method::set_response_streaming(bool value) {
- _internal_set_response_streaming(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Method.response_streaming)
-}
-
-// repeated .google.protobuf.Option options = 6;
-inline int Method::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int Method::options_size() const {
- return _internal_options_size();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Method::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Method.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-Method::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Method.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Method::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Method::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Method::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Method::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.Method.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-Method::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Method.options)
- return _impl_.options_;
-}
-
-// .google.protobuf.Syntax syntax = 7;
-inline void Method::clear_syntax() {
- _impl_.syntax_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Method::_internal_syntax() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Syntax >(_impl_.syntax_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Method::syntax() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Method.syntax)
- return _internal_syntax();
-}
-inline void Method::_internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
-
- _impl_.syntax_ = value;
-}
-inline void Method::set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
- _internal_set_syntax(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Method.syntax)
-}
-
-// -------------------------------------------------------------------
-
-// Mixin
-
-// string name = 1;
-inline void Mixin::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Mixin::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Mixin.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Mixin::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Mixin.name)
-}
-inline std::string* Mixin::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Mixin.name)
- return _s;
-}
-inline const std::string& Mixin::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Mixin::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Mixin::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Mixin::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Mixin.name)
- return _impl_.name_.Release();
-}
-inline void Mixin::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Mixin.name)
-}
-
-// string root = 2;
-inline void Mixin::clear_root() {
- _impl_.root_.ClearToEmpty();
-}
-inline const std::string& Mixin::root() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Mixin.root)
- return _internal_root();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Mixin::set_root(ArgT0&& arg0, ArgT... args) {
-
- _impl_.root_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Mixin.root)
-}
-inline std::string* Mixin::mutable_root() {
- std::string* _s = _internal_mutable_root();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Mixin.root)
- return _s;
-}
-inline const std::string& Mixin::_internal_root() const {
- return _impl_.root_.Get();
-}
-inline void Mixin::_internal_set_root(const std::string& value) {
-
- _impl_.root_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Mixin::_internal_mutable_root() {
-
- return _impl_.root_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Mixin::release_root() {
- // @@protoc_insertion_point(field_release:google.protobuf.Mixin.root)
- return _impl_.root_.Release();
-}
-inline void Mixin::set_allocated_root(std::string* root) {
- if (root != nullptr) {
-
- } else {
-
- }
- _impl_.root_.SetAllocated(root, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.root_.IsDefault()) {
- _impl_.root_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Mixin.root)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fapi_2eproto
diff --git a/include/google/protobuf/api.proto b/include/google/protobuf/api.proto
deleted file mode 100644
index 3d598fc859..0000000000
--- a/include/google/protobuf/api.proto
+++ /dev/null
@@ -1,208 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-import "google/protobuf/source_context.proto";
-import "google/protobuf/type.proto";
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "ApiProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option go_package = "google.golang.org/protobuf/types/known/apipb";
-
-// Api is a light-weight descriptor for an API Interface.
-//
-// Interfaces are also described as "protocol buffer services" in some contexts,
-// such as by the "service" keyword in a .proto file, but they are different
-// from API Services, which represent a concrete implementation of an interface
-// as opposed to simply a description of methods and bindings. They are also
-// sometimes simply referred to as "APIs" in other contexts, such as the name of
-// this message itself. See https://cloud.google.com/apis/design/glossary for
-// detailed terminology.
-message Api {
- // The fully qualified name of this interface, including package name
- // followed by the interface's simple name.
- string name = 1;
-
- // The methods of this interface, in unspecified order.
- repeated Method methods = 2;
-
- // Any metadata attached to the interface.
- repeated Option options = 3;
-
- // A version string for this interface. If specified, must have the form
- // `major-version.minor-version`, as in `1.10`. If the minor version is
- // omitted, it defaults to zero. If the entire version field is empty, the
- // major version is derived from the package name, as outlined below. If the
- // field is not empty, the version in the package name will be verified to be
- // consistent with what is provided here.
- //
- // The versioning schema uses [semantic
- // versioning](http://semver.org) where the major version number
- // indicates a breaking change and the minor version an additive,
- // non-breaking change. Both version numbers are signals to users
- // what to expect from different versions, and should be carefully
- // chosen based on the product plan.
- //
- // The major version is also reflected in the package name of the
- // interface, which must end in `v<major-version>`, as in
- // `google.feature.v1`. For major versions 0 and 1, the suffix can
- // be omitted. Zero major versions must only be used for
- // experimental, non-GA interfaces.
- //
- //
- string version = 4;
-
- // Source context for the protocol buffer service represented by this
- // message.
- SourceContext source_context = 5;
-
- // Included interfaces. See [Mixin][].
- repeated Mixin mixins = 6;
-
- // The source syntax of the service.
- Syntax syntax = 7;
-}
-
-// Method represents a method of an API interface.
-message Method {
- // The simple name of this method.
- string name = 1;
-
- // A URL of the input message type.
- string request_type_url = 2;
-
- // If true, the request is streamed.
- bool request_streaming = 3;
-
- // The URL of the output message type.
- string response_type_url = 4;
-
- // If true, the response is streamed.
- bool response_streaming = 5;
-
- // Any metadata attached to the method.
- repeated Option options = 6;
-
- // The source syntax of this method.
- Syntax syntax = 7;
-}
-
-// Declares an API Interface to be included in this interface. The including
-// interface must redeclare all the methods from the included interface, but
-// documentation and options are inherited as follows:
-//
-// - If after comment and whitespace stripping, the documentation
-// string of the redeclared method is empty, it will be inherited
-// from the original method.
-//
-// - Each annotation belonging to the service config (http,
-// visibility) which is not set in the redeclared method will be
-// inherited.
-//
-// - If an http annotation is inherited, the path pattern will be
-// modified as follows. Any version prefix will be replaced by the
-// version of the including interface plus the [root][] path if
-// specified.
-//
-// Example of a simple mixin:
-//
-// package google.acl.v1;
-// service AccessControl {
-// // Get the underlying ACL object.
-// rpc GetAcl(GetAclRequest) returns (Acl) {
-// option (google.api.http).get = "/v1/{resource=**}:getAcl";
-// }
-// }
-//
-// package google.storage.v2;
-// service Storage {
-// rpc GetAcl(GetAclRequest) returns (Acl);
-//
-// // Get a data record.
-// rpc GetData(GetDataRequest) returns (Data) {
-// option (google.api.http).get = "/v2/{resource=**}";
-// }
-// }
-//
-// Example of a mixin configuration:
-//
-// apis:
-// - name: google.storage.v2.Storage
-// mixins:
-// - name: google.acl.v1.AccessControl
-//
-// The mixin construct implies that all methods in `AccessControl` are
-// also declared with same name and request/response types in
-// `Storage`. A documentation generator or annotation processor will
-// see the effective `Storage.GetAcl` method after inheriting
-// documentation and annotations as follows:
-//
-// service Storage {
-// // Get the underlying ACL object.
-// rpc GetAcl(GetAclRequest) returns (Acl) {
-// option (google.api.http).get = "/v2/{resource=**}:getAcl";
-// }
-// ...
-// }
-//
-// Note how the version in the path pattern changed from `v1` to `v2`.
-//
-// If the `root` field in the mixin is specified, it should be a
-// relative path under which inherited HTTP paths are placed. Example:
-//
-// apis:
-// - name: google.storage.v2.Storage
-// mixins:
-// - name: google.acl.v1.AccessControl
-// root: acls
-//
-// This implies the following inherited HTTP annotation:
-//
-// service Storage {
-// // Get the underlying ACL object.
-// rpc GetAcl(GetAclRequest) returns (Acl) {
-// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
-// }
-// ...
-// }
-message Mixin {
- // The fully qualified name of the interface which is included.
- string name = 1;
-
- // If non-empty specifies a path under which inherited HTTP paths
- // are rooted.
- string root = 2;
-}
diff --git a/include/google/protobuf/arena.h b/include/google/protobuf/arena.h
deleted file mode 100644
index 3b5f16c389..0000000000
--- a/include/google/protobuf/arena.h
+++ /dev/null
@@ -1,851 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file defines an Arena allocator for better allocation performance.
-
-#ifndef GOOGLE_PROTOBUF_ARENA_H__
-#define GOOGLE_PROTOBUF_ARENA_H__
-
-
-#include <limits>
-#include <type_traits>
-#include <utility>
-#if defined(_MSC_VER) && !defined(_LIBCPP_STD_VER) && !_HAS_EXCEPTIONS
-// Work around bugs in MSVC <typeinfo> header when _HAS_EXCEPTIONS=0.
-#include <exception>
-#include <typeinfo>
-namespace std {
-using type_info = ::type_info;
-}
-#else
-#include <typeinfo>
-#endif
-
-#include <type_traits>
-#include <google/protobuf/arena_impl.h>
-#include <google/protobuf/port.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-struct ArenaOptions; // defined below
-class Arena; // defined below
-class Message; // defined in message.h
-class MessageLite;
-template <typename Key, typename T>
-class Map;
-
-namespace arena_metrics {
-
-void EnableArenaMetrics(ArenaOptions* options);
-
-} // namespace arena_metrics
-
-namespace TestUtil {
-class ReflectionTester; // defined in test_util.h
-} // namespace TestUtil
-
-namespace internal {
-
-struct ArenaTestPeer; // defined in arena_test_util.h
-class InternalMetadata; // defined in metadata_lite.h
-class LazyField; // defined in lazy_field.h
-class EpsCopyInputStream; // defined in parse_context.h
-class RepeatedPtrFieldBase; // defined in repeated_ptr_field.h
-
-template <typename Type>
-class GenericTypeHandler; // defined in repeated_field.h
-
-inline PROTOBUF_ALWAYS_INLINE
-void* AlignTo(void* ptr, size_t align) {
- return reinterpret_cast<void*>(
- (reinterpret_cast<uintptr_t>(ptr) + align - 1) & (~align + 1));
-}
-
-// Templated cleanup methods.
-template <typename T>
-void arena_destruct_object(void* object) {
- reinterpret_cast<T*>(object)->~T();
-}
-
-template <bool destructor_skippable, typename T>
-struct ObjectDestructor {
- constexpr static void (*destructor)(void*) = &arena_destruct_object<T>;
-};
-
-template <typename T>
-struct ObjectDestructor<true, T> {
- constexpr static void (*destructor)(void*) = nullptr;
-};
-
-template <typename T>
-void arena_delete_object(void* object) {
- delete reinterpret_cast<T*>(object);
-}
-} // namespace internal
-
-// ArenaOptions provides optional additional parameters to arena construction
-// that control its block-allocation behavior.
-struct ArenaOptions {
- // This defines the size of the first block requested from the system malloc.
- // Subsequent block sizes will increase in a geometric series up to a maximum.
- size_t start_block_size;
-
- // This defines the maximum block size requested from system malloc (unless an
- // individual arena allocation request occurs with a size larger than this
- // maximum). Requested block sizes increase up to this value, then remain
- // here.
- size_t max_block_size;
-
- // An initial block of memory for the arena to use, or NULL for none. If
- // provided, the block must live at least as long as the arena itself. The
- // creator of the Arena retains ownership of the block after the Arena is
- // destroyed.
- char* initial_block;
-
- // The size of the initial block, if provided.
- size_t initial_block_size;
-
- // A function pointer to an alloc method that returns memory blocks of size
- // requested. By default, it contains a ptr to the malloc function.
- //
- // NOTE: block_alloc and dealloc functions are expected to behave like
- // malloc and free, including Asan poisoning.
- void* (*block_alloc)(size_t);
- // A function pointer to a dealloc method that takes ownership of the blocks
- // from the arena. By default, it contains a ptr to a wrapper function that
- // calls free.
- void (*block_dealloc)(void*, size_t);
-
- ArenaOptions()
- : start_block_size(internal::AllocationPolicy::kDefaultStartBlockSize),
- max_block_size(internal::AllocationPolicy::kDefaultMaxBlockSize),
- initial_block(NULL),
- initial_block_size(0),
- block_alloc(nullptr),
- block_dealloc(nullptr),
- make_metrics_collector(nullptr) {}
-
- private:
- // If make_metrics_collector is not nullptr, it will be called at Arena init
- // time. It may return a pointer to a collector instance that will be notified
- // of interesting events related to the arena.
- internal::ArenaMetricsCollector* (*make_metrics_collector)();
-
- internal::ArenaMetricsCollector* MetricsCollector() const {
- return make_metrics_collector ? (*make_metrics_collector)() : nullptr;
- }
-
- internal::AllocationPolicy AllocationPolicy() const {
- internal::AllocationPolicy res;
- res.start_block_size = start_block_size;
- res.max_block_size = max_block_size;
- res.block_alloc = block_alloc;
- res.block_dealloc = block_dealloc;
- res.metrics_collector = MetricsCollector();
- return res;
- }
-
- friend void arena_metrics::EnableArenaMetrics(ArenaOptions*);
-
- friend class Arena;
- friend class ArenaOptionsTestFriend;
-};
-
-// Support for non-RTTI environments. (The metrics hooks API uses type
-// information.)
-#if PROTOBUF_RTTI
-#define RTTI_TYPE_ID(type) (&typeid(type))
-#else
-#define RTTI_TYPE_ID(type) (NULL)
-#endif
-
-// Arena allocator. Arena allocation replaces ordinary (heap-based) allocation
-// with new/delete, and improves performance by aggregating allocations into
-// larger blocks and freeing allocations all at once. Protocol messages are
-// allocated on an arena by using Arena::CreateMessage<T>(Arena*), below, and
-// are automatically freed when the arena is destroyed.
-//
-// This is a thread-safe implementation: multiple threads may allocate from the
-// arena concurrently. Destruction is not thread-safe and the destructing
-// thread must synchronize with users of the arena first.
-//
-// An arena provides two allocation interfaces: CreateMessage<T>, which works
-// for arena-enabled proto2 message types as well as other types that satisfy
-// the appropriate protocol (described below), and Create<T>, which works for
-// any arbitrary type T. CreateMessage<T> is better when the type T supports it,
-// because this interface (i) passes the arena pointer to the created object so
-// that its sub-objects and internal allocations can use the arena too, and (ii)
-// elides the object's destructor call when possible. Create<T> does not place
-// any special requirements on the type T, and will invoke the object's
-// destructor when the arena is destroyed.
-//
-// The arena message allocation protocol, required by
-// CreateMessage<T>(Arena* arena, Args&&... args), is as follows:
-//
-// - The type T must have (at least) two constructors: a constructor callable
-// with `args` (without `arena`), called when a T is allocated on the heap;
-// and a constructor callable with `Arena* arena, Args&&... args`, called when
-// a T is allocated on an arena. If the second constructor is called with a
-// NULL arena pointer, it must be equivalent to invoking the first
-// (`args`-only) constructor.
-//
-// - The type T must have a particular type trait: a nested type
-// |InternalArenaConstructable_|. This is usually a typedef to |void|. If no
-// such type trait exists, then the instantiation CreateMessage<T> will fail
-// to compile.
-//
-// - The type T *may* have the type trait |DestructorSkippable_|. If this type
-// trait is present in the type, then its destructor will not be called if and
-// only if it was passed a non-NULL arena pointer. If this type trait is not
-// present on the type, then its destructor is always called when the
-// containing arena is destroyed.
-//
-// This protocol is implemented by all arena-enabled proto2 message classes as
-// well as protobuf container types like RepeatedPtrField and Map. The protocol
-// is internal to protobuf and is not guaranteed to be stable. Non-proto types
-// should not rely on this protocol.
-class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final {
- public:
- // Default constructor with sensible default options, tuned for average
- // use-cases.
- inline Arena() : impl_() {}
-
- // Construct an arena with default options, except for the supplied
- // initial block. It is more efficient to use this constructor
- // instead of passing ArenaOptions if the only configuration needed
- // by the caller is supplying an initial block.
- inline Arena(char* initial_block, size_t initial_block_size)
- : impl_(initial_block, initial_block_size) {}
-
- // Arena constructor taking custom options. See ArenaOptions above for
- // descriptions of the options available.
- explicit Arena(const ArenaOptions& options)
- : impl_(options.initial_block, options.initial_block_size,
- options.AllocationPolicy()) {}
-
- // Block overhead. Use this as a guide for how much to over-allocate the
- // initial block if you want an allocation of size N to fit inside it.
- //
- // WARNING: if you allocate multiple objects, it is difficult to guarantee
- // that a series of allocations will fit in the initial block, especially if
- // Arena changes its alignment guarantees in the future!
- static const size_t kBlockOverhead =
- internal::ThreadSafeArena::kBlockHeaderSize +
- internal::ThreadSafeArena::kSerialArenaSize;
-
- inline ~Arena() {}
-
- // TODO(protobuf-team): Fix callers to use constructor and delete this method.
- void Init(const ArenaOptions&) {}
-
- // API to create proto2 message objects on the arena. If the arena passed in
- // is NULL, then a heap allocated object is returned. Type T must be a message
- // defined in a .proto file with cc_enable_arenas set to true, otherwise a
- // compilation error will occur.
- //
- // RepeatedField and RepeatedPtrField may also be instantiated directly on an
- // arena with this method.
- //
- // This function also accepts any type T that satisfies the arena message
- // allocation protocol, documented above.
- template <typename T, typename... Args>
- PROTOBUF_ALWAYS_INLINE static T* CreateMessage(Arena* arena, Args&&... args) {
- static_assert(
- InternalHelper<T>::is_arena_constructable::value,
- "CreateMessage can only construct types that are ArenaConstructable");
- // We must delegate to CreateMaybeMessage() and NOT CreateMessageInternal()
- // because protobuf generated classes specialize CreateMaybeMessage() and we
- // need to use that specialization for code size reasons.
- return Arena::CreateMaybeMessage<T>(arena, static_cast<Args&&>(args)...);
- }
-
- // API to create any objects on the arena. Note that only the object will
- // be created on the arena; the underlying ptrs (in case of a proto2 message)
- // will be still heap allocated. Proto messages should usually be allocated
- // with CreateMessage<T>() instead.
- //
- // Note that even if T satisfies the arena message construction protocol
- // (InternalArenaConstructable_ trait and optional DestructorSkippable_
- // trait), as described above, this function does not follow the protocol;
- // instead, it treats T as a black-box type, just as if it did not have these
- // traits. Specifically, T's constructor arguments will always be only those
- // passed to Create<T>() -- no additional arena pointer is implicitly added.
- // Furthermore, the destructor will always be called at arena destruction time
- // (unless the destructor is trivial). Hence, from T's point of view, it is as
- // if the object were allocated on the heap (except that the underlying memory
- // is obtained from the arena).
- template <typename T, typename... Args>
- PROTOBUF_NDEBUG_INLINE static T* Create(Arena* arena, Args&&... args) {
- return CreateInternal<T>(arena, std::is_convertible<T*, MessageLite*>(),
- static_cast<Args&&>(args)...);
- }
-
- // Allocates memory with the specific size and alignment.
- void* AllocateAligned(size_t size, size_t align = 8) {
- if (align <= 8) {
- return AllocateAlignedNoHook(internal::AlignUpTo8(size));
- } else {
- // We are wasting space by over allocating align - 8 bytes. Compared
- // to a dedicated function that takes current alignment in consideration.
- // Such a scheme would only waste (align - 8)/2 bytes on average, but
- // requires a dedicated function in the outline arena allocation
- // functions. Possibly re-evaluate tradeoffs later.
- return internal::AlignTo(AllocateAlignedNoHook(size + align - 8), align);
- }
- }
-
- // Create an array of object type T on the arena *without* invoking the
- // constructor of T. If `arena` is null, then the return value should be freed
- // with `delete[] x;` (or `::operator delete[](x);`).
- // To ensure safe uses, this function checks at compile time
- // (when compiled as C++11) that T is trivially default-constructible and
- // trivially destructible.
- template <typename T>
- PROTOBUF_NDEBUG_INLINE static T* CreateArray(Arena* arena,
- size_t num_elements) {
- static_assert(std::is_trivial<T>::value,
- "CreateArray requires a trivially constructible type");
- static_assert(std::is_trivially_destructible<T>::value,
- "CreateArray requires a trivially destructible type");
- GOOGLE_CHECK_LE(num_elements, std::numeric_limits<size_t>::max() / sizeof(T))
- << "Requested size is too large to fit into size_t.";
- if (arena == NULL) {
- return static_cast<T*>(::operator new[](num_elements * sizeof(T)));
- } else {
- return arena->CreateInternalRawArray<T>(num_elements);
- }
- }
-
- // The following are routines are for monitoring. They will approximate the
- // total sum allocated and used memory, but the exact value is an
- // implementation deal. For instance allocated space depends on growth
- // policies. Do not use these in unit tests.
- // Returns the total space allocated by the arena, which is the sum of the
- // sizes of the underlying blocks.
- uint64_t SpaceAllocated() const { return impl_.SpaceAllocated(); }
- // Returns the total space used by the arena. Similar to SpaceAllocated but
- // does not include free space and block overhead. The total space returned
- // may not include space used by other threads executing concurrently with
- // the call to this method.
- uint64_t SpaceUsed() const { return impl_.SpaceUsed(); }
-
- // Frees all storage allocated by this arena after calling destructors
- // registered with OwnDestructor() and freeing objects registered with Own().
- // Any objects allocated on this arena are unusable after this call. It also
- // returns the total space used by the arena which is the sums of the sizes
- // of the allocated blocks. This method is not thread-safe.
- uint64_t Reset() { return impl_.Reset(); }
-
- // Adds |object| to a list of heap-allocated objects to be freed with |delete|
- // when the arena is destroyed or reset.
- template <typename T>
- PROTOBUF_ALWAYS_INLINE void Own(T* object) {
- OwnInternal(object, std::is_convertible<T*, MessageLite*>());
- }
-
- // Adds |object| to a list of objects whose destructors will be manually
- // called when the arena is destroyed or reset. This differs from Own() in
- // that it does not free the underlying memory with |delete|; hence, it is
- // normally only used for objects that are placement-newed into
- // arena-allocated memory.
- template <typename T>
- PROTOBUF_ALWAYS_INLINE void OwnDestructor(T* object) {
- if (object != NULL) {
- impl_.AddCleanup(object, &internal::arena_destruct_object<T>);
- }
- }
-
- // Adds a custom member function on an object to the list of destructors that
- // will be manually called when the arena is destroyed or reset. This differs
- // from OwnDestructor() in that any member function may be specified, not only
- // the class destructor.
- PROTOBUF_ALWAYS_INLINE void OwnCustomDestructor(void* object,
- void (*destruct)(void*)) {
- impl_.AddCleanup(object, destruct);
- }
-
- // Retrieves the arena associated with |value| if |value| is an arena-capable
- // message, or NULL otherwise. If possible, the call resolves at compile time.
- // Note that we can often devirtualize calls to `value->GetArena()` so usually
- // calling this method is unnecessary.
- template <typename T>
- PROTOBUF_ALWAYS_INLINE static Arena* GetArena(const T* value) {
- return GetArenaInternal(value);
- }
-
- template <typename T>
- class InternalHelper {
- private:
- // Provides access to protected GetOwningArena to generated messages.
- static Arena* GetOwningArena(const T* p) { return p->GetOwningArena(); }
-
- static void InternalSwap(T* a, T* b) { a->InternalSwap(b); }
-
- static Arena* GetArenaForAllocationInternal(
- const T* p, std::true_type /*is_derived_from<MessageLite>*/) {
- return p->GetArenaForAllocation();
- }
-
- static Arena* GetArenaForAllocationInternal(
- const T* p, std::false_type /*is_derived_from<MessageLite>*/) {
- return GetArenaForAllocationForNonMessage(
- p, typename is_arena_constructable::type());
- }
-
- static Arena* GetArenaForAllocationForNonMessage(
- const T* p, std::true_type /*is_arena_constructible*/) {
- return p->GetArena();
- }
-
- static Arena* GetArenaForAllocationForNonMessage(
- const T* p, std::false_type /*is_arena_constructible*/) {
- return GetArenaForAllocationForNonMessageNonArenaConstructible(
- p, typename has_get_arena::type());
- }
-
- static Arena* GetArenaForAllocationForNonMessageNonArenaConstructible(
- const T* p, std::true_type /*has_get_arena*/) {
- return p->GetArena();
- }
-
- static Arena* GetArenaForAllocationForNonMessageNonArenaConstructible(
- const T* /* p */, std::false_type /*has_get_arena*/) {
- return nullptr;
- }
-
- template <typename U>
- static char DestructorSkippable(const typename U::DestructorSkippable_*);
- template <typename U>
- static double DestructorSkippable(...);
-
- typedef std::integral_constant<
- bool, sizeof(DestructorSkippable<T>(static_cast<const T*>(0))) ==
- sizeof(char) ||
- std::is_trivially_destructible<T>::value>
- is_destructor_skippable;
-
- template <typename U>
- static char ArenaConstructable(
- const typename U::InternalArenaConstructable_*);
- template <typename U>
- static double ArenaConstructable(...);
-
- typedef std::integral_constant<bool, sizeof(ArenaConstructable<T>(
- static_cast<const T*>(0))) ==
- sizeof(char)>
- is_arena_constructable;
-
- template <typename U,
- typename std::enable_if<
- std::is_same<Arena*, decltype(std::declval<const U>()
- .GetArena())>::value,
- int>::type = 0>
- static char HasGetArena(decltype(&U::GetArena));
- template <typename U>
- static double HasGetArena(...);
-
- typedef std::integral_constant<bool, sizeof(HasGetArena<T>(nullptr)) ==
- sizeof(char)>
- has_get_arena;
-
- template <typename... Args>
- static T* Construct(void* ptr, Args&&... args) {
- return new (ptr) T(static_cast<Args&&>(args)...);
- }
-
- static inline PROTOBUF_ALWAYS_INLINE T* New() {
- return new T(nullptr);
- }
-
- static Arena* GetArena(const T* p) { return p->GetArena(); }
-
- friend class Arena;
- friend class TestUtil::ReflectionTester;
- };
-
- // Provides access to protected GetOwningArena to generated messages. For
- // internal use only.
- template <typename T>
- static Arena* InternalGetOwningArena(const T* p) {
- return InternalHelper<T>::GetOwningArena(p);
- }
-
- // Provides access to protected GetArenaForAllocation to generated messages.
- // For internal use only.
- template <typename T>
- static Arena* InternalGetArenaForAllocation(const T* p) {
- return InternalHelper<T>::GetArenaForAllocationInternal(
- p, std::is_convertible<T*, MessageLite*>());
- }
-
- // Creates message-owned arena. For internal use only.
- static Arena* InternalCreateMessageOwnedArena() {
- return new Arena(internal::MessageOwned{});
- }
-
- // Checks whether this arena is message-owned. For internal use only.
- bool InternalIsMessageOwnedArena() { return IsMessageOwned(); }
-
- // Helper typetraits that indicates support for arenas in a type T at compile
- // time. This is public only to allow construction of higher-level templated
- // utilities.
- //
- // is_arena_constructable<T>::value is true if the message type T has arena
- // support enabled, and false otherwise.
- //
- // is_destructor_skippable<T>::value is true if the message type T has told
- // the arena that it is safe to skip the destructor, and false otherwise.
- //
- // This is inside Arena because only Arena has the friend relationships
- // necessary to see the underlying generated code traits.
- template <typename T>
- struct is_arena_constructable : InternalHelper<T>::is_arena_constructable {};
- template <typename T>
- struct is_destructor_skippable : InternalHelper<T>::is_destructor_skippable {
- };
-
- private:
- internal::ThreadSafeArena impl_;
-
- template <typename T>
- struct has_get_arena : InternalHelper<T>::has_get_arena {};
-
- // Constructor solely used by message-owned arena.
- inline Arena(internal::MessageOwned) : impl_(internal::MessageOwned{}) {}
-
- // Checks whether this arena is message-owned.
- PROTOBUF_ALWAYS_INLINE bool IsMessageOwned() const {
- return impl_.IsMessageOwned();
- }
-
- void ReturnArrayMemory(void* p, size_t size) {
- impl_.ReturnArrayMemory(p, size);
- }
-
- template <typename T, typename... Args>
- PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena,
- Args&&... args) {
- static_assert(
- InternalHelper<T>::is_arena_constructable::value,
- "CreateMessage can only construct types that are ArenaConstructable");
- if (arena == NULL) {
- return new T(nullptr, static_cast<Args&&>(args)...);
- } else {
- return arena->DoCreateMessage<T>(static_cast<Args&&>(args)...);
- }
- }
-
- // This specialization for no arguments is necessary, because its behavior is
- // slightly different. When the arena pointer is nullptr, it calls T()
- // instead of T(nullptr).
- template <typename T>
- PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
- static_assert(
- InternalHelper<T>::is_arena_constructable::value,
- "CreateMessage can only construct types that are ArenaConstructable");
- if (arena == NULL) {
- // Generated arena constructor T(Arena*) is protected. Call via
- // InternalHelper.
- return InternalHelper<T>::New();
- } else {
- return arena->DoCreateMessage<T>();
- }
- }
-
- // Allocate and also optionally call collector with the allocated type info
- // when allocation recording is enabled.
- PROTOBUF_NDEBUG_INLINE void* AllocateInternal(size_t size, size_t align,
- void (*destructor)(void*),
- const std::type_info* type) {
- // Monitor allocation if needed.
- if (destructor == nullptr) {
- return AllocateAlignedWithHook(size, align, type);
- } else {
- if (align <= 8) {
- auto res = AllocateAlignedWithCleanup(internal::AlignUpTo8(size), type);
- res.second->elem = res.first;
- res.second->cleanup = destructor;
- return res.first;
- } else {
- auto res = AllocateAlignedWithCleanup(size + align - 8, type);
- auto ptr = internal::AlignTo(res.first, align);
- res.second->elem = ptr;
- res.second->cleanup = destructor;
- return ptr;
- }
- }
- }
-
- // CreateMessage<T> requires that T supports arenas, but this private method
- // works whether or not T supports arenas. These are not exposed to user code
- // as it can cause confusing API usages, and end up having double free in
- // user code. These are used only internally from LazyField and Repeated
- // fields, since they are designed to work in all mode combinations.
- template <typename Msg, typename... Args>
- PROTOBUF_ALWAYS_INLINE static Msg* DoCreateMaybeMessage(Arena* arena,
- std::true_type,
- Args&&... args) {
- return CreateMessageInternal<Msg>(arena, std::forward<Args>(args)...);
- }
-
- template <typename T, typename... Args>
- PROTOBUF_ALWAYS_INLINE static T* DoCreateMaybeMessage(Arena* arena,
- std::false_type,
- Args&&... args) {
- return Create<T>(arena, std::forward<Args>(args)...);
- }
-
- template <typename T, typename... Args>
- PROTOBUF_ALWAYS_INLINE static T* CreateMaybeMessage(Arena* arena,
- Args&&... args) {
- return DoCreateMaybeMessage<T>(arena, is_arena_constructable<T>(),
- std::forward<Args>(args)...);
- }
-
- // Just allocate the required size for the given type assuming the
- // type has a trivial constructor.
- template <typename T>
- PROTOBUF_NDEBUG_INLINE T* CreateInternalRawArray(size_t num_elements) {
- GOOGLE_CHECK_LE(num_elements, std::numeric_limits<size_t>::max() / sizeof(T))
- << "Requested size is too large to fit into size_t.";
- // We count on compiler to realize that if sizeof(T) is a multiple of
- // 8 AlignUpTo can be elided.
- const size_t n = sizeof(T) * num_elements;
- return static_cast<T*>(
- AllocateAlignedWithHookForArray(n, alignof(T), RTTI_TYPE_ID(T)));
- }
-
- template <typename T, typename... Args>
- PROTOBUF_NDEBUG_INLINE T* DoCreateMessage(Args&&... args) {
- return InternalHelper<T>::Construct(
- AllocateInternal(sizeof(T), alignof(T),
- internal::ObjectDestructor<
- InternalHelper<T>::is_destructor_skippable::value,
- T>::destructor,
- RTTI_TYPE_ID(T)),
- this, std::forward<Args>(args)...);
- }
-
- // CreateInArenaStorage is used to implement map field. Without it,
- // Map need to call generated message's protected arena constructor,
- // which needs to declare Map as friend of generated message.
- template <typename T, typename... Args>
- static void CreateInArenaStorage(T* ptr, Arena* arena, Args&&... args) {
- CreateInArenaStorageInternal(ptr, arena,
- typename is_arena_constructable<T>::type(),
- std::forward<Args>(args)...);
- if (arena != nullptr) {
- RegisterDestructorInternal(
- ptr, arena,
- typename InternalHelper<T>::is_destructor_skippable::type());
- }
- }
-
- template <typename T, typename... Args>
- static void CreateInArenaStorageInternal(T* ptr, Arena* arena,
- std::true_type, Args&&... args) {
- InternalHelper<T>::Construct(ptr, arena, std::forward<Args>(args)...);
- }
- template <typename T, typename... Args>
- static void CreateInArenaStorageInternal(T* ptr, Arena* /* arena */,
- std::false_type, Args&&... args) {
- new (ptr) T(std::forward<Args>(args)...);
- }
-
- template <typename T>
- static void RegisterDestructorInternal(T* /* ptr */, Arena* /* arena */,
- std::true_type) {}
- template <typename T>
- static void RegisterDestructorInternal(T* ptr, Arena* arena,
- std::false_type) {
- arena->OwnDestructor(ptr);
- }
-
- // These implement Create(). The second parameter has type 'true_type' if T is
- // a subtype of Message and 'false_type' otherwise.
- template <typename T, typename... Args>
- PROTOBUF_ALWAYS_INLINE static T* CreateInternal(Arena* arena, std::true_type,
- Args&&... args) {
- if (arena == nullptr) {
- return new T(std::forward<Args>(args)...);
- } else {
- auto destructor =
- internal::ObjectDestructor<std::is_trivially_destructible<T>::value,
- T>::destructor;
- T* result =
- new (arena->AllocateInternal(sizeof(T), alignof(T), destructor,
- RTTI_TYPE_ID(T)))
- T(std::forward<Args>(args)...);
- return result;
- }
- }
- template <typename T, typename... Args>
- PROTOBUF_ALWAYS_INLINE static T* CreateInternal(Arena* arena, std::false_type,
- Args&&... args) {
- if (arena == nullptr) {
- return new T(std::forward<Args>(args)...);
- } else {
- auto destructor =
- internal::ObjectDestructor<std::is_trivially_destructible<T>::value,
- T>::destructor;
- return new (arena->AllocateInternal(sizeof(T), alignof(T), destructor,
- RTTI_TYPE_ID(T)))
- T(std::forward<Args>(args)...);
- }
- }
-
- // These implement Own(), which registers an object for deletion (destructor
- // call and operator delete()). The second parameter has type 'true_type' if T
- // is a subtype of Message and 'false_type' otherwise. Collapsing
- // all template instantiations to one for generic Message reduces code size,
- // using the virtual destructor instead.
- template <typename T>
- PROTOBUF_ALWAYS_INLINE void OwnInternal(T* object, std::true_type) {
- if (object != NULL) {
- impl_.AddCleanup(object, &internal::arena_delete_object<MessageLite>);
- }
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE void OwnInternal(T* object, std::false_type) {
- if (object != NULL) {
- impl_.AddCleanup(object, &internal::arena_delete_object<T>);
- }
- }
-
- // Implementation for GetArena(). Only message objects with
- // InternalArenaConstructable_ tags can be associated with an arena, and such
- // objects must implement a GetArena() method.
- template <typename T, typename std::enable_if<
- is_arena_constructable<T>::value, int>::type = 0>
- PROTOBUF_ALWAYS_INLINE static Arena* GetArenaInternal(const T* value) {
- return InternalHelper<T>::GetArena(value);
- }
- template <typename T,
- typename std::enable_if<!is_arena_constructable<T>::value &&
- has_get_arena<T>::value,
- int>::type = 0>
- PROTOBUF_ALWAYS_INLINE static Arena* GetArenaInternal(const T* value) {
- return value->GetArena();
- }
- template <typename T,
- typename std::enable_if<!is_arena_constructable<T>::value &&
- !has_get_arena<T>::value,
- int>::type = 0>
- PROTOBUF_ALWAYS_INLINE static Arena* GetArenaInternal(const T* value) {
- (void)value;
- return nullptr;
- }
-
- template <typename T>
- PROTOBUF_ALWAYS_INLINE static Arena* GetOwningArena(const T* value) {
- return GetOwningArenaInternal(
- value, std::is_convertible<T*, MessageLite*>());
- }
-
- // Implementation for GetOwningArena(). All and only message objects have
- // GetOwningArena() method.
- template <typename T>
- PROTOBUF_ALWAYS_INLINE static Arena* GetOwningArenaInternal(
- const T* value, std::true_type) {
- return InternalHelper<T>::GetOwningArena(value);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE static Arena* GetOwningArenaInternal(
- const T* /* value */, std::false_type) {
- return nullptr;
- }
-
- void* AllocateAlignedWithHookForArray(size_t n, size_t align,
- const std::type_info* type) {
- if (align <= 8) {
- return AllocateAlignedWithHookForArray(internal::AlignUpTo8(n), type);
- } else {
- // We are wasting space by over allocating align - 8 bytes. Compared
- // to a dedicated function that takes current alignment in consideration.
- // Such a scheme would only waste (align - 8)/2 bytes on average, but
- // requires a dedicated function in the outline arena allocation
- // functions. Possibly re-evaluate tradeoffs later.
- return internal::AlignTo(
- AllocateAlignedWithHookForArray(n + align - 8, type), align);
- }
- }
-
- void* AllocateAlignedWithHook(size_t n, size_t align,
- const std::type_info* type) {
- if (align <= 8) {
- return AllocateAlignedWithHook(internal::AlignUpTo8(n), type);
- } else {
- // We are wasting space by over allocating align - 8 bytes. Compared
- // to a dedicated function that takes current alignment in consideration.
- // Such a scheme would only waste (align - 8)/2 bytes on average, but
- // requires a dedicated function in the outline arena allocation
- // functions. Possibly re-evaluate tradeoffs later.
- return internal::AlignTo(AllocateAlignedWithHook(n + align - 8, type),
- align);
- }
- }
-
- void* AllocateAlignedNoHook(size_t n);
- void* AllocateAlignedWithHook(size_t n, const std::type_info* type);
- void* AllocateAlignedWithHookForArray(size_t n, const std::type_info* type);
- std::pair<void*, internal::SerialArena::CleanupNode*>
- AllocateAlignedWithCleanup(size_t n, const std::type_info* type);
-
- template <typename Type>
- friend class internal::GenericTypeHandler;
- friend class internal::InternalMetadata; // For user_arena().
- friend class internal::LazyField; // For CreateMaybeMessage.
- friend class internal::EpsCopyInputStream; // For parser performance
- friend class MessageLite;
- template <typename Key, typename T>
- friend class Map;
- template <typename>
- friend class RepeatedField; // For ReturnArrayMemory
- friend class internal::RepeatedPtrFieldBase; // For ReturnArrayMemory
- friend struct internal::ArenaTestPeer;
-};
-
-// Defined above for supporting environments without RTTI.
-#undef RTTI_TYPE_ID
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_ARENA_H__
diff --git a/include/google/protobuf/arena_impl.h b/include/google/protobuf/arena_impl.h
deleted file mode 100644
index 76727688b5..0000000000
--- a/include/google/protobuf/arena_impl.h
+++ /dev/null
@@ -1,686 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file defines an Arena allocator for better allocation performance.
-
-#ifndef GOOGLE_PROTOBUF_ARENA_IMPL_H__
-#define GOOGLE_PROTOBUF_ARENA_IMPL_H__
-
-#include <atomic>
-#include <limits>
-#include <typeinfo>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/port.h>
-
-#ifdef ADDRESS_SANITIZER
-#include <sanitizer/asan_interface.h>
-#endif // ADDRESS_SANITIZER
-
-#include <google/protobuf/arenaz_sampler.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// To prevent sharing cache lines between threads
-#ifdef __cpp_aligned_new
-enum { kCacheAlignment = 64 };
-#else
-enum { kCacheAlignment = alignof(max_align_t) }; // do the best we can
-#endif
-
-inline constexpr size_t AlignUpTo8(size_t n) {
- // Align n to next multiple of 8 (from Hacker's Delight, Chapter 3.)
- return (n + 7) & static_cast<size_t>(-8);
-}
-
-using LifecycleIdAtomic = uint64_t;
-
-// MetricsCollector collects stats for a particular arena.
-class PROTOBUF_EXPORT ArenaMetricsCollector {
- public:
- ArenaMetricsCollector(bool record_allocs) : record_allocs_(record_allocs) {}
-
- // Invoked when the arena is about to be destroyed. This method will
- // typically finalize any metric collection and delete the collector.
- // space_allocated is the space used by the arena.
- virtual void OnDestroy(uint64_t space_allocated) = 0;
-
- // OnReset() is called when the associated arena is reset.
- // space_allocated is the space used by the arena just before the reset.
- virtual void OnReset(uint64_t space_allocated) = 0;
-
- // OnAlloc is called when an allocation happens.
- // type_info is promised to be static - its lifetime extends to
- // match program's lifetime (It is given by typeid operator).
- // Note: typeid(void) will be passed as allocated_type every time we
- // intentionally want to avoid monitoring an allocation. (i.e. internal
- // allocations for managing the arena)
- virtual void OnAlloc(const std::type_info* allocated_type,
- uint64_t alloc_size) = 0;
-
- // Does OnAlloc() need to be called? If false, metric collection overhead
- // will be reduced since we will not do extra work per allocation.
- bool RecordAllocs() { return record_allocs_; }
-
- protected:
- // This class is destructed by the call to OnDestroy().
- ~ArenaMetricsCollector() = default;
- const bool record_allocs_;
-};
-
-struct AllocationPolicy {
- static constexpr size_t kDefaultStartBlockSize = 256;
- static constexpr size_t kDefaultMaxBlockSize = 8192;
-
- size_t start_block_size = kDefaultStartBlockSize;
- size_t max_block_size = kDefaultMaxBlockSize;
- void* (*block_alloc)(size_t) = nullptr;
- void (*block_dealloc)(void*, size_t) = nullptr;
- ArenaMetricsCollector* metrics_collector = nullptr;
-
- bool IsDefault() const {
- return start_block_size == kDefaultMaxBlockSize &&
- max_block_size == kDefaultMaxBlockSize && block_alloc == nullptr &&
- block_dealloc == nullptr && metrics_collector == nullptr;
- }
-};
-
-// Tagged pointer to an AllocationPolicy.
-class TaggedAllocationPolicyPtr {
- public:
- constexpr TaggedAllocationPolicyPtr() : policy_(0) {}
-
- explicit TaggedAllocationPolicyPtr(AllocationPolicy* policy)
- : policy_(reinterpret_cast<uintptr_t>(policy)) {}
-
- void set_policy(AllocationPolicy* policy) {
- auto bits = policy_ & kTagsMask;
- policy_ = reinterpret_cast<uintptr_t>(policy) | bits;
- }
-
- AllocationPolicy* get() {
- return reinterpret_cast<AllocationPolicy*>(policy_ & kPtrMask);
- }
- const AllocationPolicy* get() const {
- return reinterpret_cast<const AllocationPolicy*>(policy_ & kPtrMask);
- }
-
- AllocationPolicy& operator*() { return *get(); }
- const AllocationPolicy& operator*() const { return *get(); }
-
- AllocationPolicy* operator->() { return get(); }
- const AllocationPolicy* operator->() const { return get(); }
-
- bool is_user_owned_initial_block() const {
- return static_cast<bool>(get_mask<kUserOwnedInitialBlock>());
- }
- void set_is_user_owned_initial_block(bool v) {
- set_mask<kUserOwnedInitialBlock>(v);
- }
-
- bool should_record_allocs() const {
- return static_cast<bool>(get_mask<kRecordAllocs>());
- }
- void set_should_record_allocs(bool v) { set_mask<kRecordAllocs>(v); }
-
- uintptr_t get_raw() const { return policy_; }
-
- inline void RecordAlloc(const std::type_info* allocated_type,
- size_t n) const {
- get()->metrics_collector->OnAlloc(allocated_type, n);
- }
-
- private:
- enum : uintptr_t {
- kUserOwnedInitialBlock = 1,
- kRecordAllocs = 2,
- };
-
- static constexpr uintptr_t kTagsMask = 7;
- static constexpr uintptr_t kPtrMask = ~kTagsMask;
-
- template <uintptr_t kMask>
- uintptr_t get_mask() const {
- return policy_ & kMask;
- }
- template <uintptr_t kMask>
- void set_mask(bool v) {
- if (v) {
- policy_ |= kMask;
- } else {
- policy_ &= ~kMask;
- }
- }
- uintptr_t policy_;
-};
-
-enum class AllocationClient { kDefault, kArray };
-
-// A simple arena allocator. Calls to allocate functions must be properly
-// serialized by the caller, hence this class cannot be used as a general
-// purpose allocator in a multi-threaded program. It serves as a building block
-// for ThreadSafeArena, which provides a thread-safe arena allocator.
-//
-// This class manages
-// 1) Arena bump allocation + owning memory blocks.
-// 2) Maintaining a cleanup list.
-// It delagetes the actual memory allocation back to ThreadSafeArena, which
-// contains the information on block growth policy and backing memory allocation
-// used.
-class PROTOBUF_EXPORT SerialArena {
- public:
- struct Memory {
- void* ptr;
- size_t size;
- };
-
- // Node contains the ptr of the object to be cleaned up and the associated
- // cleanup function ptr.
- struct CleanupNode {
- void* elem; // Pointer to the object to be cleaned up.
- void (*cleanup)(void*); // Function pointer to the destructor or deleter.
- };
-
- void CleanupList();
- uint64_t SpaceAllocated() const {
- return space_allocated_.load(std::memory_order_relaxed);
- }
- uint64_t SpaceUsed() const;
-
- bool HasSpace(size_t n) const {
- return n <= static_cast<size_t>(limit_ - ptr_);
- }
-
- // See comments on `cached_blocks_` member for details.
- PROTOBUF_ALWAYS_INLINE void* TryAllocateFromCachedBlock(size_t size) {
- if (PROTOBUF_PREDICT_FALSE(size < 16)) return nullptr;
- // We round up to the next larger block in case the memory doesn't match
- // the pattern we are looking for.
- const size_t index = Bits::Log2FloorNonZero64(size - 1) - 3;
-
- if (index >= cached_block_length_) return nullptr;
- auto& cached_head = cached_blocks_[index];
- if (cached_head == nullptr) return nullptr;
-
- void* ret = cached_head;
-#ifdef ADDRESS_SANITIZER
- ASAN_UNPOISON_MEMORY_REGION(ret, size);
-#endif // ADDRESS_SANITIZER
- cached_head = cached_head->next;
- return ret;
- }
-
- // In kArray mode we look through cached blocks.
- // We do not do this by default because most non-array allocations will not
- // have the right size and will fail to find an appropriate cached block.
- //
- // TODO(sbenza): Evaluate if we should use cached blocks for message types of
- // the right size. We can statically know if the allocation size can benefit
- // from it.
- template <AllocationClient alloc_client = AllocationClient::kDefault>
- void* AllocateAligned(size_t n, const AllocationPolicy* policy) {
- GOOGLE_DCHECK_EQ(internal::AlignUpTo8(n), n); // Must be already aligned.
- GOOGLE_DCHECK_GE(limit_, ptr_);
-
- if (alloc_client == AllocationClient::kArray) {
- if (void* res = TryAllocateFromCachedBlock(n)) {
- return res;
- }
- }
-
- if (PROTOBUF_PREDICT_FALSE(!HasSpace(n))) {
- return AllocateAlignedFallback(n, policy);
- }
- return AllocateFromExisting(n);
- }
-
- private:
- void* AllocateFromExisting(size_t n) {
- void* ret = ptr_;
- ptr_ += n;
-#ifdef ADDRESS_SANITIZER
- ASAN_UNPOISON_MEMORY_REGION(ret, n);
-#endif // ADDRESS_SANITIZER
- return ret;
- }
-
- // See comments on `cached_blocks_` member for details.
- void ReturnArrayMemory(void* p, size_t size) {
- // We only need to check for 32-bit platforms.
- // In 64-bit platforms the minimum allocation size from Repeated*Field will
- // be 16 guaranteed.
- if (sizeof(void*) < 8) {
- if (PROTOBUF_PREDICT_FALSE(size < 16)) return;
- } else {
- GOOGLE_DCHECK(size >= 16);
- }
-
- // We round down to the next smaller block in case the memory doesn't match
- // the pattern we are looking for. eg, someone might have called Reserve()
- // on the repeated field.
- const size_t index = Bits::Log2FloorNonZero64(size) - 4;
-
- if (PROTOBUF_PREDICT_FALSE(index >= cached_block_length_)) {
- // We can't put this object on the freelist so make this object the
- // freelist. It is guaranteed it is larger than the one we have, and
- // large enough to hold another allocation of `size`.
- CachedBlock** new_list = static_cast<CachedBlock**>(p);
- size_t new_size = size / sizeof(CachedBlock*);
-
- std::copy(cached_blocks_, cached_blocks_ + cached_block_length_,
- new_list);
- std::fill(new_list + cached_block_length_, new_list + new_size, nullptr);
- cached_blocks_ = new_list;
- // Make the size fit in uint8_t. This is the power of two, so we don't
- // need anything larger.
- cached_block_length_ =
- static_cast<uint8_t>(std::min(size_t{64}, new_size));
-
- return;
- }
-
- auto& cached_head = cached_blocks_[index];
- auto* new_node = static_cast<CachedBlock*>(p);
- new_node->next = cached_head;
- cached_head = new_node;
-#ifdef ADDRESS_SANITIZER
- ASAN_POISON_MEMORY_REGION(p, size);
-#endif // ADDRESS_SANITIZER
- }
-
- public:
- // Allocate space if the current region provides enough space.
- bool MaybeAllocateAligned(size_t n, void** out) {
- GOOGLE_DCHECK_EQ(internal::AlignUpTo8(n), n); // Must be already aligned.
- GOOGLE_DCHECK_GE(limit_, ptr_);
- if (PROTOBUF_PREDICT_FALSE(!HasSpace(n))) return false;
- *out = AllocateFromExisting(n);
- return true;
- }
-
- std::pair<void*, CleanupNode*> AllocateAlignedWithCleanup(
- size_t n, const AllocationPolicy* policy) {
- GOOGLE_DCHECK_EQ(internal::AlignUpTo8(n), n); // Must be already aligned.
- if (PROTOBUF_PREDICT_FALSE(!HasSpace(n + kCleanupSize))) {
- return AllocateAlignedWithCleanupFallback(n, policy);
- }
- return AllocateFromExistingWithCleanupFallback(n);
- }
-
- private:
- std::pair<void*, CleanupNode*> AllocateFromExistingWithCleanupFallback(
- size_t n) {
- void* ret = ptr_;
- ptr_ += n;
- limit_ -= kCleanupSize;
-#ifdef ADDRESS_SANITIZER
- ASAN_UNPOISON_MEMORY_REGION(ret, n);
- ASAN_UNPOISON_MEMORY_REGION(limit_, kCleanupSize);
-#endif // ADDRESS_SANITIZER
- return CreatePair(ret, reinterpret_cast<CleanupNode*>(limit_));
- }
-
- public:
- void AddCleanup(void* elem, void (*cleanup)(void*),
- const AllocationPolicy* policy) {
- auto res = AllocateAlignedWithCleanup(0, policy);
- res.second->elem = elem;
- res.second->cleanup = cleanup;
- }
-
- void* owner() const { return owner_; }
- SerialArena* next() const { return next_; }
- void set_next(SerialArena* next) { next_ = next; }
-
- private:
- friend class ThreadSafeArena;
- friend class ArenaBenchmark;
-
- // Creates a new SerialArena inside mem using the remaining memory as for
- // future allocations.
- static SerialArena* New(SerialArena::Memory mem, void* owner,
- ThreadSafeArenaStats* stats);
- // Free SerialArena returning the memory passed in to New
- template <typename Deallocator>
- Memory Free(Deallocator deallocator);
-
- // Blocks are variable length malloc-ed objects. The following structure
- // describes the common header for all blocks.
- struct Block {
- Block(Block* next, size_t size) : next(next), size(size), start(nullptr) {}
-
- char* Pointer(size_t n) {
- GOOGLE_DCHECK(n <= size);
- return reinterpret_cast<char*>(this) + n;
- }
-
- Block* const next;
- const size_t size;
- CleanupNode* start;
- // data follows
- };
-
- void* owner_; // &ThreadCache of this thread;
- Block* head_; // Head of linked list of blocks.
- SerialArena* next_; // Next SerialArena in this linked list.
- size_t space_used_ = 0; // Necessary for metrics.
- std::atomic<size_t> space_allocated_;
-
- // Next pointer to allocate from. Always 8-byte aligned. Points inside
- // head_ (and head_->pos will always be non-canonical). We keep these
- // here to reduce indirection.
- char* ptr_;
- // Limiting address up to which memory can be allocated from the head block.
- char* limit_;
- // For holding sampling information. The pointer is owned by the
- // ThreadSafeArena that holds this serial arena.
- ThreadSafeArenaStats* arena_stats_;
-
- // Repeated*Field and Arena play together to reduce memory consumption by
- // reusing blocks. Currently, natural growth of the repeated field types makes
- // them allocate blocks of size `8 + 2^N, N>=3`.
- // When the repeated field grows returns the previous block and we put it in
- // this free list.
- // `cached_blocks_[i]` points to the free list for blocks of size `8+2^(i+3)`.
- // The array of freelists is grown when needed in `ReturnArrayMemory()`.
- struct CachedBlock {
- // Simple linked list.
- CachedBlock* next;
- };
- uint8_t cached_block_length_ = 0;
- CachedBlock** cached_blocks_ = nullptr;
-
- // Constructor is private as only New() should be used.
- inline SerialArena(Block* b, void* owner, ThreadSafeArenaStats* stats);
- void* AllocateAlignedFallback(size_t n, const AllocationPolicy* policy);
- std::pair<void*, CleanupNode*> AllocateAlignedWithCleanupFallback(
- size_t n, const AllocationPolicy* policy);
- void AllocateNewBlock(size_t n, const AllocationPolicy* policy);
-
- std::pair<void*, CleanupNode*> CreatePair(void* ptr, CleanupNode* node) {
- return {ptr, node};
- }
-
- public:
- static constexpr size_t kBlockHeaderSize = AlignUpTo8(sizeof(Block));
- static constexpr size_t kCleanupSize = AlignUpTo8(sizeof(CleanupNode));
-};
-
-// Tag type used to invoke the constructor of message-owned arena.
-// Only message-owned arenas use this constructor for creation.
-// Such constructors are internal implementation details of the library.
-struct MessageOwned {
- explicit MessageOwned() = default;
-};
-
-// This class provides the core Arena memory allocation library. Different
-// implementations only need to implement the public interface below.
-// Arena is not a template type as that would only be useful if all protos
-// in turn would be templates, which will/cannot happen. However separating
-// the memory allocation part from the cruft of the API users expect we can
-// use #ifdef the select the best implementation based on hardware / OS.
-class PROTOBUF_EXPORT ThreadSafeArena {
- public:
- ThreadSafeArena() { Init(); }
-
- // Constructor solely used by message-owned arena.
- ThreadSafeArena(internal::MessageOwned) : tag_and_id_(kMessageOwnedArena) {
- Init();
- }
-
- ThreadSafeArena(char* mem, size_t size) { InitializeFrom(mem, size); }
-
- explicit ThreadSafeArena(void* mem, size_t size,
- const AllocationPolicy& policy) {
- InitializeWithPolicy(mem, size, policy);
- }
-
- // Destructor deletes all owned heap allocated objects, and destructs objects
- // that have non-trivial destructors, except for proto2 message objects whose
- // destructors can be skipped. Also, frees all blocks except the initial block
- // if it was passed in.
- ~ThreadSafeArena();
-
- uint64_t Reset();
-
- uint64_t SpaceAllocated() const;
- uint64_t SpaceUsed() const;
-
- template <AllocationClient alloc_client = AllocationClient::kDefault>
- void* AllocateAligned(size_t n, const std::type_info* type) {
- SerialArena* arena;
- if (PROTOBUF_PREDICT_TRUE(!alloc_policy_.should_record_allocs() &&
- GetSerialArenaFast(&arena))) {
- return arena->AllocateAligned<alloc_client>(n, AllocPolicy());
- } else {
- return AllocateAlignedFallback(n, type);
- }
- }
-
- void ReturnArrayMemory(void* p, size_t size) {
- SerialArena* arena;
- if (PROTOBUF_PREDICT_TRUE(GetSerialArenaFast(&arena))) {
- arena->ReturnArrayMemory(p, size);
- }
- }
-
- // This function allocates n bytes if the common happy case is true and
- // returns true. Otherwise does nothing and returns false. This strange
- // semantics is necessary to allow callers to program functions that only
- // have fallback function calls in tail position. This substantially improves
- // code for the happy path.
- PROTOBUF_NDEBUG_INLINE bool MaybeAllocateAligned(size_t n, void** out) {
- SerialArena* arena;
- if (PROTOBUF_PREDICT_TRUE(!alloc_policy_.should_record_allocs() &&
- GetSerialArenaFromThreadCache(&arena))) {
- return arena->MaybeAllocateAligned(n, out);
- }
- return false;
- }
-
- std::pair<void*, SerialArena::CleanupNode*> AllocateAlignedWithCleanup(
- size_t n, const std::type_info* type);
-
- // Add object pointer and cleanup function pointer to the list.
- void AddCleanup(void* elem, void (*cleanup)(void*));
-
- // Checks whether this arena is message-owned.
- PROTOBUF_ALWAYS_INLINE bool IsMessageOwned() const {
- return tag_and_id_ & kMessageOwnedArena;
- }
-
- private:
- // Unique for each arena. Changes on Reset().
- uint64_t tag_and_id_ = 0;
- // The LSB of tag_and_id_ indicates if the arena is message-owned.
- enum : uint64_t { kMessageOwnedArena = 1 };
-
- TaggedAllocationPolicyPtr alloc_policy_; // Tagged pointer to AllocPolicy.
-
- static_assert(std::is_trivially_destructible<SerialArena>{},
- "SerialArena needs to be trivially destructible.");
- // Pointer to a linked list of SerialArena.
- std::atomic<SerialArena*> threads_;
- std::atomic<SerialArena*> hint_; // Fast thread-local block access
-
- const AllocationPolicy* AllocPolicy() const { return alloc_policy_.get(); }
- void InitializeFrom(void* mem, size_t size);
- void InitializeWithPolicy(void* mem, size_t size, AllocationPolicy policy);
- void* AllocateAlignedFallback(size_t n, const std::type_info* type);
- std::pair<void*, SerialArena::CleanupNode*>
- AllocateAlignedWithCleanupFallback(size_t n, const std::type_info* type);
-
- void Init();
- void SetInitialBlock(void* mem, size_t size);
-
- // Delete or Destruct all objects owned by the arena.
- void CleanupList();
-
- inline uint64_t LifeCycleId() const {
- return tag_and_id_ & ~kMessageOwnedArena;
- }
-
- inline void CacheSerialArena(SerialArena* serial) {
- thread_cache().last_serial_arena = serial;
- thread_cache().last_lifecycle_id_seen = tag_and_id_;
- // TODO(haberman): evaluate whether we would gain efficiency by getting rid
- // of hint_. It's the only write we do to ThreadSafeArena in the allocation
- // path, which will dirty the cache line.
-
- hint_.store(serial, std::memory_order_release);
- }
-
- PROTOBUF_NDEBUG_INLINE bool GetSerialArenaFast(SerialArena** arena) {
- if (GetSerialArenaFromThreadCache(arena)) return true;
-
- // Check whether we own the last accessed SerialArena on this arena. This
- // fast path optimizes the case where a single thread uses multiple arenas.
- ThreadCache* tc = &thread_cache();
- SerialArena* serial = hint_.load(std::memory_order_acquire);
- if (PROTOBUF_PREDICT_TRUE(serial != nullptr && serial->owner() == tc)) {
- *arena = serial;
- return true;
- }
- return false;
- }
-
- PROTOBUF_NDEBUG_INLINE bool GetSerialArenaFromThreadCache(
- SerialArena** arena) {
- // If this thread already owns a block in this arena then try to use that.
- // This fast path optimizes the case where multiple threads allocate from
- // the same arena.
- ThreadCache* tc = &thread_cache();
- if (PROTOBUF_PREDICT_TRUE(tc->last_lifecycle_id_seen == tag_and_id_)) {
- *arena = tc->last_serial_arena;
- return true;
- }
- return false;
- }
- SerialArena* GetSerialArenaFallback(void* me);
-
- template <typename Functor>
- void PerSerialArena(Functor fn) {
- // By omitting an Acquire barrier we ensure that any user code that doesn't
- // properly synchronize Reset() or the destructor will throw a TSAN warning.
- SerialArena* serial = threads_.load(std::memory_order_relaxed);
-
- for (; serial; serial = serial->next()) fn(serial);
- }
-
- // Releases all memory except the first block which it returns. The first
- // block might be owned by the user and thus need some extra checks before
- // deleting.
- SerialArena::Memory Free(size_t* space_allocated);
-
-#ifdef _MSC_VER
-#pragma warning(disable : 4324)
-#endif
- struct alignas(kCacheAlignment) ThreadCache {
-#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL)
- // If we are using the ThreadLocalStorage class to store the ThreadCache,
- // then the ThreadCache's default constructor has to be responsible for
- // initializing it.
- ThreadCache()
- : next_lifecycle_id(0),
- last_lifecycle_id_seen(-1),
- last_serial_arena(nullptr) {}
-#endif
-
- // Number of per-thread lifecycle IDs to reserve. Must be power of two.
- // To reduce contention on a global atomic, each thread reserves a batch of
- // IDs. The following number is calculated based on a stress test with
- // ~6500 threads all frequently allocating a new arena.
- static constexpr size_t kPerThreadIds = 256;
- // Next lifecycle ID available to this thread. We need to reserve a new
- // batch, if `next_lifecycle_id & (kPerThreadIds - 1) == 0`.
- uint64_t next_lifecycle_id;
- // The ThreadCache is considered valid as long as this matches the
- // lifecycle_id of the arena being used.
- uint64_t last_lifecycle_id_seen;
- SerialArena* last_serial_arena;
- };
-
- // Lifecycle_id can be highly contended variable in a situation of lots of
- // arena creation. Make sure that other global variables are not sharing the
- // cacheline.
-#ifdef _MSC_VER
-#pragma warning(disable : 4324)
-#endif
- struct alignas(kCacheAlignment) CacheAlignedLifecycleIdGenerator {
- std::atomic<LifecycleIdAtomic> id;
- };
- static CacheAlignedLifecycleIdGenerator lifecycle_id_generator_;
-#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL)
- // iOS does not support __thread keyword so we use a custom thread local
- // storage class we implemented.
- static ThreadCache& thread_cache();
-#elif defined(PROTOBUF_USE_DLLS)
- // Thread local variables cannot be exposed through DLL interface but we can
- // wrap them in static functions.
- static ThreadCache& thread_cache();
-#else
- static PROTOBUF_THREAD_LOCAL ThreadCache thread_cache_;
- static ThreadCache& thread_cache() { return thread_cache_; }
-#endif
-
- ThreadSafeArenaStatsHandle arena_stats_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ThreadSafeArena);
- // All protos have pointers back to the arena hence Arena must have
- // pointer stability.
- ThreadSafeArena(ThreadSafeArena&&) = delete;
- ThreadSafeArena& operator=(ThreadSafeArena&&) = delete;
-
- public:
- // kBlockHeaderSize is sizeof(Block), aligned up to the nearest multiple of 8
- // to protect the invariant that pos is always at a multiple of 8.
- static constexpr size_t kBlockHeaderSize = SerialArena::kBlockHeaderSize;
- static constexpr size_t kSerialArenaSize =
- (sizeof(SerialArena) + 7) & static_cast<size_t>(-8);
- static_assert(kBlockHeaderSize % 8 == 0,
- "kBlockHeaderSize must be a multiple of 8.");
- static_assert(kSerialArenaSize % 8 == 0,
- "kSerialArenaSize must be a multiple of 8.");
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_ARENA_IMPL_H__
diff --git a/include/google/protobuf/arenastring.h b/include/google/protobuf/arenastring.h
deleted file mode 100644
index 6bc8395f23..0000000000
--- a/include/google/protobuf/arenastring.h
+++ /dev/null
@@ -1,480 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_ARENASTRING_H__
-#define GOOGLE_PROTOBUF_ARENASTRING_H__
-
-#include <algorithm>
-#include <string>
-#include <type_traits>
-#include <utility>
-
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/explicitly_constructed.h>
-
-// must be last:
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-
-namespace google {
-namespace protobuf {
-namespace internal {
-class EpsCopyInputStream;
-
-class SwapFieldHelper;
-
-// Declared in message_lite.h
-PROTOBUF_EXPORT extern ExplicitlyConstructedArenaString
- fixed_address_empty_string;
-
-// Lazy string instance to support string fields with non-empty default.
-// These are initialized on the first call to .get().
-class PROTOBUF_EXPORT LazyString {
- public:
- // We explicitly make LazyString an aggregate so that MSVC can do constant
- // initialization on it without marking it `constexpr`.
- // We do not want to use `constexpr` because it makes it harder to have extern
- // storage for it and causes library bloat.
- struct InitValue {
- const char* ptr;
- size_t size;
- };
- // We keep a union of the initialization value and the std::string to save on
- // space. We don't need the string array after Init() is done.
- union {
- mutable InitValue init_value_;
- alignas(std::string) mutable char string_buf_[sizeof(std::string)];
- };
- mutable std::atomic<const std::string*> inited_;
-
- const std::string& get() const {
- // This check generates less code than a call-once invocation.
- auto* res = inited_.load(std::memory_order_acquire);
- if (PROTOBUF_PREDICT_FALSE(res == nullptr)) return Init();
- return *res;
- }
-
- private:
- // Initialize the string in `string_buf_`, update `inited_` and return it.
- // We return it here to avoid having to read it again in the inlined code.
- const std::string& Init() const;
-};
-
-class TaggedStringPtr {
- public:
- // Bit flags qualifying string properties. We can use 2 bits as
- // ptr_ is guaranteed and enforced to be aligned on 4 byte boundaries.
- enum Flags {
- kArenaBit = 0x1, // ptr is arena allocated
- kMutableBit = 0x2, // ptr contents are fully mutable
- kMask = 0x3 // Bit mask
- };
-
- // Composed logical types
- enum Type {
- // Default strings are immutable and never owned.
- kDefault = 0,
-
- // Allocated strings are mutable and (as the name implies) owned.
- // A heap allocated string must be deleted.
- kAllocated = kMutableBit,
-
- // Mutable arena strings are strings where the string instance is owned
- // by the arena, but the string contents itself are owned by the string
- // instance. Mutable arena string instances need to be destroyed which is
- // typically done through a cleanup action added to the arena owning it.
- kMutableArena = kArenaBit | kMutableBit,
-
- // Fixed size arena strings are strings where both the string instance and
- // the string contents are fully owned by the arena. Fixed size arena
- // strings are a platform and c++ library specific customization. Fixed
- // size arena strings are immutable, with the exception of custom internal
- // updates to the content that fit inside the existing capacity.
- // Fixed size arena strings must never be deleted or destroyed.
- kFixedSizeArena = kArenaBit,
- };
-
- TaggedStringPtr() = default;
- explicit constexpr TaggedStringPtr(ExplicitlyConstructedArenaString* ptr)
- : ptr_(ptr) {}
-
- // Sets the value to `p`, tagging the value as being a 'default' value.
- // See documentation for kDefault for more info.
- inline const std::string* SetDefault(const std::string* p) {
- return TagAs(kDefault, const_cast<std::string*>(p));
- }
-
- // Sets the value to `p`, tagging the value as a heap allocated value.
- // Allocated strings are mutable and (as the name implies) owned.
- // `p` must not be null
- inline std::string* SetAllocated(std::string* p) {
- return TagAs(kAllocated, p);
- }
-
- // Sets the value to `p`, tagging the value as a fixed size arena string.
- // See documentation for kFixedSizeArena for more info.
- // `p` must not be null
- inline std::string* SetFixedSizeArena(std::string* p) {
- return TagAs(kFixedSizeArena, p);
- }
-
- // Sets the value to `p`, tagging the value as a mutable arena string.
- // See documentation for kMutableArena for more info.
- // `p` must not be null
- inline std::string* SetMutableArena(std::string* p) {
- return TagAs(kMutableArena, p);
- }
-
- // Returns true if the contents of the current string are fully mutable.
- inline bool IsMutable() const { return as_int() & kMutableBit; }
-
- // Returns true if the current string is an immutable default value.
- inline bool IsDefault() const { return (as_int() & kMask) == kDefault; }
-
- // If the current string is a heap-allocated mutable value, returns a pointer
- // to it. Returns nullptr otherwise.
- inline std::string *GetIfAllocated() const {
- auto allocated = as_int() ^ kAllocated;
- if (allocated & kMask) return nullptr;
-
- auto ptr = reinterpret_cast<std::string*>(allocated);
- PROTOBUF_ASSUME(ptr != nullptr);
- return ptr;
- }
-
- // Returns true if the current string is an arena allocated value.
- // This means it's either a mutable or fixed size arena string.
- inline bool IsArena() const { return as_int() & kArenaBit; }
-
- // Returns true if the current string is a fixed size arena allocated value.
- inline bool IsFixedSizeArena() const {
- return (as_int() & kMask) == kFixedSizeArena;
- }
-
- // Returns the contained string pointer.
- inline std::string* Get() const {
- return reinterpret_cast<std::string*>(as_int() & ~kMask);
- }
-
- // Returns true if the contained pointer is null, indicating some error.
- // The Null value is only used during parsing for temporary values.
- // A persisted ArenaStringPtr value is never null.
- inline bool IsNull() { return ptr_ == nullptr; }
-
- private:
- static inline void assert_aligned(const void* p) {
- GOOGLE_DCHECK_EQ(reinterpret_cast<uintptr_t>(p) & kMask, 0UL);
- }
-
- inline std::string* TagAs(Type type, std::string* p) {
- GOOGLE_DCHECK(p != nullptr);
- assert_aligned(p);
- ptr_ = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(p) | type);
- return p;
- }
-
- uintptr_t as_int() const { return reinterpret_cast<uintptr_t>(ptr_); }
- void* ptr_;
-};
-
-static_assert(std::is_trivial<TaggedStringPtr>::value,
- "TaggedStringPtr must be trivial");
-
-// This class encapsulates a pointer to a std::string with or without arena
-// owned contents, tagged by the bottom bits of the string pointer. It is a
-// high-level wrapper that almost directly corresponds to the interface required
-// by string fields in generated code. It replaces the old std::string* pointer
-// in such cases.
-//
-// The string pointer is tagged to be either a default, externally owned value,
-// a mutable heap allocated value, or an arena allocated value. The object uses
-// a single global instance of an empty string that is used as the initial
-// default value. Fields that have empty default values directly use this global
-// default. Fields that have non empty default values are supported through
-// lazily initialized default values managed by the LazyString class.
-//
-// Generated code and reflection code both ensure that ptr_ is never null.
-// Because ArenaStringPtr is used in oneof unions, its constructor is a NOP and
-// the field is always manually initialized via method calls.
-//
-// See TaggedStringPtr for more information about the types of string values
-// being held, and the mutable and ownership invariants for each type.
-struct PROTOBUF_EXPORT ArenaStringPtr {
- ArenaStringPtr() = default;
- constexpr ArenaStringPtr(ExplicitlyConstructedArenaString* default_value,
- ConstantInitialized)
- : tagged_ptr_(default_value) {}
-
- // Called from generated code / reflection runtime only. Resets value to point
- // to a default string pointer, with the semantics that this ArenaStringPtr
- // does not own the pointed-to memory. Disregards initial value of ptr_ (so
- // this is the *ONLY* safe method to call after construction or when
- // reinitializing after becoming the active field in a oneof union).
- inline void InitDefault();
-
- // Similar to `InitDefault` except that it allows the default value to be
- // initialized to an externally owned string. This method is called from
- // parsing code. `str` must not be null and outlive this instance.
- inline void InitExternal(const std::string* str);
-
- // Called from generated code / reflection runtime only. Resets the value of
- // this instances to the heap allocated value in `str`. `str` must not be
- // null. Invokes `arena->Own(str)` to transfer ownership into the arena if
- // `arena` is not null, else, `str` will be owned by ArenaStringPtr. This
- // function should only be used to initialize a ArenaStringPtr or on an
- // instance known to not carry any heap allocated value.
- inline void InitAllocated(std::string* str, Arena* arena);
-
- void Set(ConstStringParam value, Arena* arena);
- void Set(std::string&& value, Arena* arena);
- void Set(const char* s, Arena* arena);
- void Set(const char* s, size_t n, Arena* arena);
-
- void SetBytes(ConstStringParam value, Arena* arena);
- void SetBytes(std::string&& value, Arena* arena);
- void SetBytes(const char* s, Arena* arena);
- void SetBytes(const void* p, size_t n, Arena* arena);
-
- template <typename RefWrappedType>
- void Set(std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena) {
- Set(const_string_ref.get(), arena);
- }
-
- // Returns a mutable std::string reference.
- // The version accepting a `LazyString` value is used in the generated code to
- // initialize mutable copies for fields with a non-empty default where the
- // default value is lazily initialized.
- std::string* Mutable(Arena* arena);
- std::string* Mutable(const LazyString& default_value, Arena* arena);
-
- // Gets a mutable pointer with unspecified contents.
- // This function is identical to Mutable(), except it is optimized for the
- // case where the caller is not interested in the current contents. For
- // example, if the current field is not mutable, it will re-initialize the
- // value with an empty string rather than a (non-empty) default value.
- // Likewise, if the current value is a fixed size arena string with contents,
- // it will be initialized into an empty mutable arena string.
- std::string* MutableNoCopy(Arena* arena);
-
- // Basic accessors.
- PROTOBUF_NDEBUG_INLINE const std::string& Get() const {
- // Unconditionally mask away the tag.
- return *tagged_ptr_.Get();
- }
-
- // Returns a pointer to the stored contents for this instance.
- // This method is for internal debugging and tracking purposes only.
- PROTOBUF_NDEBUG_INLINE const std::string* UnsafeGetPointer() const
- PROTOBUF_RETURNS_NONNULL {
- return tagged_ptr_.Get();
- }
-
- // Release returns a std::string* instance that is heap-allocated and is not
- // Own()'d by any arena. If the field is not set, this returns nullptr. The
- // caller retains ownership. Clears this field back to the default state.
- // Used to implement release_<field>() methods on generated classes.
- PROTOBUF_NODISCARD std::string* Release();
-
- // Takes a std::string that is heap-allocated, and takes ownership. The
- // std::string's destructor is registered with the arena. Used to implement
- // set_allocated_<field> in generated classes.
- void SetAllocated(std::string* value, Arena* arena);
-
- // Frees storage (if not on an arena).
- void Destroy();
-
- // Clears content, but keeps allocated std::string, to avoid the overhead of
- // heap operations. After this returns, the content (as seen by the user) will
- // always be the empty std::string. Assumes that |default_value| is an empty
- // std::string.
- void ClearToEmpty();
-
- // Clears content, assuming that the current value is not the empty
- // string default.
- void ClearNonDefaultToEmpty();
-
- // Clears content, but keeps allocated std::string if arena != nullptr, to
- // avoid the overhead of heap operations. After this returns, the content
- // (as seen by the user) will always be equal to |default_value|.
- void ClearToDefault(const LazyString& default_value, ::google::protobuf::Arena* arena);
-
- // Swaps internal pointers. Arena-safety semantics: this is guarded by the
- // logic in Swap()/UnsafeArenaSwap() at the message level, so this method is
- // 'unsafe' if called directly.
- inline PROTOBUF_NDEBUG_INLINE static void InternalSwap(ArenaStringPtr* rhs,
- Arena* rhs_arena,
- ArenaStringPtr* lhs,
- Arena* lhs_arena);
-
- // Internal setter used only at parse time to directly set a donated string
- // value.
- void UnsafeSetTaggedPointer(TaggedStringPtr value) { tagged_ptr_ = value; }
- // Generated code only! An optimization, in certain cases the generated
- // code is certain we can obtain a std::string with no default checks and
- // tag tests.
- std::string* UnsafeMutablePointer() PROTOBUF_RETURNS_NONNULL;
-
- // Returns true if this instances holds an immutable default value.
- inline bool IsDefault() const { return tagged_ptr_.IsDefault(); }
-
- private:
- template <typename... Args>
- inline std::string* NewString(Arena* arena, Args&&... args) {
- if (arena == nullptr) {
- auto* s = new std::string(std::forward<Args>(args)...);
- return tagged_ptr_.SetAllocated(s);
- } else {
- auto* s = Arena::Create<std::string>(arena, std::forward<Args>(args)...);
- return tagged_ptr_.SetMutableArena(s);
- }
- }
-
- TaggedStringPtr tagged_ptr_;
-
- bool IsFixedSizeArena() const { return false; }
-
- // Swaps tagged pointer without debug hardening. This is to allow python
- // protobuf to maintain pointer stability even in DEBUG builds.
- inline PROTOBUF_NDEBUG_INLINE static void UnsafeShallowSwap(
- ArenaStringPtr* rhs, ArenaStringPtr* lhs) {
- std::swap(lhs->tagged_ptr_, rhs->tagged_ptr_);
- }
-
- friend class ::google::protobuf::internal::SwapFieldHelper;
- friend class TcParser;
-
- // Slow paths.
-
- // MutableSlow requires that !IsString() || IsDefault
- // Variadic to support 0 args for empty default and 1 arg for LazyString.
- template <typename... Lazy>
- std::string* MutableSlow(::google::protobuf::Arena* arena, const Lazy&... lazy_default);
-
- friend class EpsCopyInputStream;
-};
-
-inline void ArenaStringPtr::InitDefault() {
- tagged_ptr_ = TaggedStringPtr(&fixed_address_empty_string);
-}
-
-inline void ArenaStringPtr::InitExternal(const std::string* str) {
- tagged_ptr_.SetDefault(str);
-}
-
-inline void ArenaStringPtr::InitAllocated(std::string* str, Arena* arena) {
- if (arena != nullptr) {
- tagged_ptr_.SetMutableArena(str);
- arena->Own(str);
- } else {
- tagged_ptr_.SetAllocated(str);
- }
-}
-
-inline void ArenaStringPtr::Set(const char* s, Arena* arena) {
- Set(ConstStringParam{s}, arena);
-}
-
-inline void ArenaStringPtr::Set(const char* s, size_t n, Arena* arena) {
- Set(ConstStringParam{s, n}, arena);
-}
-
-inline void ArenaStringPtr::SetBytes(ConstStringParam value, Arena* arena) {
- Set(value, arena);
-}
-
-inline void ArenaStringPtr::SetBytes(std::string&& value, Arena* arena) {
- Set(std::move(value), arena);
-}
-
-inline void ArenaStringPtr::SetBytes(const char* s, Arena* arena) {
- Set(s, arena);
-}
-
-inline void ArenaStringPtr::SetBytes(const void* p, size_t n, Arena* arena) {
- Set(ConstStringParam{static_cast<const char*>(p), n}, arena);
-}
-
-// Make sure rhs_arena allocated rhs, and lhs_arena allocated lhs.
-inline PROTOBUF_NDEBUG_INLINE void ArenaStringPtr::InternalSwap( //
- ArenaStringPtr* rhs, Arena* rhs_arena, //
- ArenaStringPtr* lhs, Arena* lhs_arena) {
- // Silence unused variable warnings in release buildls.
- (void)rhs_arena;
- (void)lhs_arena;
- std::swap(lhs->tagged_ptr_, rhs->tagged_ptr_);
-#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- auto force_realloc = [](ArenaStringPtr* p, Arena* arena) {
- if (p->IsDefault()) return;
- std::string* old_value = p->tagged_ptr_.Get();
- std::string* new_value =
- p->IsFixedSizeArena()
- ? Arena::Create<std::string>(arena, *old_value)
- : Arena::Create<std::string>(arena, std::move(*old_value));
- if (arena == nullptr) {
- delete old_value;
- p->tagged_ptr_.SetAllocated(new_value);
- } else {
- p->tagged_ptr_.SetMutableArena(new_value);
- }
- };
- // Because, at this point, tagged_ptr_ has been swapped, arena should also be
- // swapped.
- force_realloc(lhs, rhs_arena);
- force_realloc(rhs, lhs_arena);
-#endif // PROTOBUF_FORCE_COPY_IN_SWAP
-}
-
-inline void ArenaStringPtr::ClearNonDefaultToEmpty() {
- // Unconditionally mask away the tag.
- tagged_ptr_.Get()->clear();
-}
-
-inline std::string* ArenaStringPtr::UnsafeMutablePointer() {
- GOOGLE_DCHECK(tagged_ptr_.IsMutable());
- GOOGLE_DCHECK(tagged_ptr_.Get() != nullptr);
- return tagged_ptr_.Get();
-}
-
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_ARENASTRING_H__
diff --git a/include/google/protobuf/arenaz_sampler.h b/include/google/protobuf/arenaz_sampler.h
deleted file mode 100644
index b04b0cc678..0000000000
--- a/include/google/protobuf/arenaz_sampler.h
+++ /dev/null
@@ -1,207 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_SRC_GOOGLE_PROTOBUF_ARENAZ_SAMPLER_H__
-#define GOOGLE_PROTOBUF_SRC_GOOGLE_PROTOBUF_ARENAZ_SAMPLER_H__
-
-#include <atomic>
-#include <cstddef>
-#include <cstdint>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-#if defined(PROTOBUF_ARENAZ_SAMPLE)
-struct ThreadSafeArenaStats;
-void RecordResetSlow(ThreadSafeArenaStats* info);
-void RecordAllocateSlow(ThreadSafeArenaStats* info, size_t requested,
- size_t allocated, size_t wasted);
-// Stores information about a sampled thread safe arena. All mutations to this
-// *must* be made through `Record*` functions below. All reads from this *must*
-// only occur in the callback to `ThreadSafeArenazSampler::Iterate`.
-struct ThreadSafeArenaStats
- : public absl::profiling_internal::Sample<ThreadSafeArenaStats> {
- // Constructs the object but does not fill in any fields.
- ThreadSafeArenaStats();
- ~ThreadSafeArenaStats();
-
- // Puts the object into a clean state, fills in the logically `const` members,
- // blocking for any readers that are currently sampling the object.
- void PrepareForSampling() ABSL_EXCLUSIVE_LOCKS_REQUIRED(init_mu);
-
- // These fields are mutated by the various Record* APIs and need to be
- // thread-safe.
- std::atomic<int> num_allocations;
- std::atomic<int> num_resets;
- std::atomic<size_t> bytes_requested;
- std::atomic<size_t> bytes_allocated;
- std::atomic<size_t> bytes_wasted;
- // Records the largest size an arena ever had. Maintained across resets.
- std::atomic<size_t> max_bytes_allocated;
- // Bit i when set to 1 indicates that a thread with tid % 63 = i accessed the
- // underlying arena. The field is maintained across resets.
- std::atomic<uint64_t> thread_ids;
-
- // All of the fields below are set by `PrepareForSampling`, they must not
- // be mutated in `Record*` functions. They are logically `const` in that
- // sense. These are guarded by init_mu, but that is not externalized to
- // clients, who can only read them during
- // `ThreadSafeArenazSampler::Iterate` which will hold the lock.
- static constexpr int kMaxStackDepth = 64;
- int32_t depth;
- void* stack[kMaxStackDepth];
- static void RecordAllocateStats(ThreadSafeArenaStats* info, size_t requested,
- size_t allocated, size_t wasted) {
- if (PROTOBUF_PREDICT_TRUE(info == nullptr)) return;
- RecordAllocateSlow(info, requested, allocated, wasted);
- }
-};
-
-ThreadSafeArenaStats* SampleSlow(int64_t* next_sample);
-void UnsampleSlow(ThreadSafeArenaStats* info);
-
-class ThreadSafeArenaStatsHandle {
- public:
- explicit ThreadSafeArenaStatsHandle() = default;
- explicit ThreadSafeArenaStatsHandle(ThreadSafeArenaStats* info)
- : info_(info) {}
-
- ~ThreadSafeArenaStatsHandle() {
- if (PROTOBUF_PREDICT_TRUE(info_ == nullptr)) return;
- UnsampleSlow(info_);
- }
-
- ThreadSafeArenaStatsHandle(ThreadSafeArenaStatsHandle&& other) noexcept
- : info_(absl::exchange(other.info_, nullptr)) {}
-
- ThreadSafeArenaStatsHandle& operator=(
- ThreadSafeArenaStatsHandle&& other) noexcept {
- if (PROTOBUF_PREDICT_FALSE(info_ != nullptr)) {
- UnsampleSlow(info_);
- }
- info_ = absl::exchange(other.info_, nullptr);
- return *this;
- }
-
- void RecordReset() {
- if (PROTOBUF_PREDICT_TRUE(info_ == nullptr)) return;
- RecordResetSlow(info_);
- }
-
- ThreadSafeArenaStats* MutableStats() { return info_; }
-
- friend void swap(ThreadSafeArenaStatsHandle& lhs,
- ThreadSafeArenaStatsHandle& rhs) {
- std::swap(lhs.info_, rhs.info_);
- }
-
- friend class ThreadSafeArenaStatsHandlePeer;
-
- private:
- ThreadSafeArenaStats* info_ = nullptr;
-};
-
-using ThreadSafeArenazSampler =
- ::absl::profiling_internal::SampleRecorder<ThreadSafeArenaStats>;
-
-extern PROTOBUF_THREAD_LOCAL int64_t global_next_sample;
-
-// Returns an RAII sampling handle that manages registration and unregistation
-// with the global sampler.
-inline ThreadSafeArenaStatsHandle Sample() {
- if (PROTOBUF_PREDICT_TRUE(--global_next_sample > 0)) {
- return ThreadSafeArenaStatsHandle(nullptr);
- }
- return ThreadSafeArenaStatsHandle(SampleSlow(&global_next_sample));
-}
-
-#else
-struct ThreadSafeArenaStats {
- static void RecordAllocateStats(ThreadSafeArenaStats*, size_t /*requested*/,
- size_t /*allocated*/, size_t /*wasted*/) {}
-};
-
-ThreadSafeArenaStats* SampleSlow(int64_t* next_sample);
-void UnsampleSlow(ThreadSafeArenaStats* info);
-
-class ThreadSafeArenaStatsHandle {
- public:
- explicit ThreadSafeArenaStatsHandle() = default;
- explicit ThreadSafeArenaStatsHandle(ThreadSafeArenaStats*) {}
-
- void RecordReset() {}
-
- ThreadSafeArenaStats* MutableStats() { return nullptr; }
-
- friend void swap(ThreadSafeArenaStatsHandle&, ThreadSafeArenaStatsHandle&) {}
-
- private:
- friend class ThreadSafeArenaStatsHandlePeer;
-};
-
-class ThreadSafeArenazSampler {
- public:
- void Unregister(ThreadSafeArenaStats*) {}
- void SetMaxSamples(int32_t) {}
-};
-
-// Returns an RAII sampling handle that manages registration and unregistation
-// with the global sampler.
-inline ThreadSafeArenaStatsHandle Sample() {
- return ThreadSafeArenaStatsHandle(nullptr);
-}
-#endif // defined(PROTOBUF_ARENAZ_SAMPLE)
-
-// Returns a global Sampler.
-ThreadSafeArenazSampler& GlobalThreadSafeArenazSampler();
-
-// Enables or disables sampling for thread safe arenas.
-void SetThreadSafeArenazEnabled(bool enabled);
-
-// Sets the rate at which thread safe arena will be sampled.
-void SetThreadSafeArenazSampleParameter(int32_t rate);
-
-// Sets a soft max for the number of samples that will be kept.
-void SetThreadSafeArenazMaxSamples(int32_t max);
-
-// Sets the current value for when arenas should be next sampled.
-void SetThreadSafeArenazGlobalNextSample(int64_t next_sample);
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_SRC_PROTOBUF_ARENAZ_SAMPLER_H__
diff --git a/include/google/protobuf/compiler/code_generator.h b/include/google/protobuf/compiler/code_generator.h
deleted file mode 100644
index 9c0b115cf1..0000000000
--- a/include/google/protobuf/compiler/code_generator.h
+++ /dev/null
@@ -1,207 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Defines the abstract interface implemented by each of the language-specific
-// code generators.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CODE_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_CODE_GENERATOR_H__
-
-#include <string>
-#include <utility>
-#include <vector>
-#include <google/protobuf/stubs/common.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-namespace io {
-class ZeroCopyOutputStream;
-}
-class FileDescriptor;
-class GeneratedCodeInfo;
-
-namespace compiler {
-class AccessInfoMap;
-
-class Version;
-
-// Defined in this file.
-class CodeGenerator;
-class GeneratorContext;
-
-// The abstract interface to a class which generates code implementing a
-// particular proto file in a particular language. A number of these may
-// be registered with CommandLineInterface to support various languages.
-class PROTOC_EXPORT CodeGenerator {
- public:
- inline CodeGenerator() {}
- virtual ~CodeGenerator();
-
- // Generates code for the given proto file, generating one or more files in
- // the given output directory.
- //
- // A parameter to be passed to the generator can be specified on the command
- // line. This is intended to be used to pass generator specific parameters.
- // It is empty if no parameter was given. ParseGeneratorParameter (below),
- // can be used to accept multiple parameters within the single parameter
- // command line flag.
- //
- // Returns true if successful. Otherwise, sets *error to a description of
- // the problem (e.g. "invalid parameter") and returns false.
- virtual bool Generate(const FileDescriptor* file,
- const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const = 0;
-
- // Generates code for all given proto files.
- //
- // WARNING: The canonical code generator design produces one or two output
- // files per input .proto file, and we do not wish to encourage alternate
- // designs.
- //
- // A parameter is given as passed on the command line, as in |Generate()|
- // above.
- //
- // Returns true if successful. Otherwise, sets *error to a description of
- // the problem (e.g. "invalid parameter") and returns false.
- virtual bool GenerateAll(const std::vector<const FileDescriptor*>& files,
- const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const;
-
- // This must be kept in sync with plugin.proto. See that file for
- // documentation on each value.
- enum Feature {
- FEATURE_PROTO3_OPTIONAL = 1,
- };
-
- // Implement this to indicate what features this code generator supports.
- //
- // This must be a bitwise OR of values from the Feature enum above (or zero).
- virtual uint64_t GetSupportedFeatures() const { return 0; }
-
- // This is no longer used, but this class is part of the opensource protobuf
- // library, so it has to remain to keep vtables the same for the current
- // version of the library. When protobufs does a api breaking change, the
- // method can be removed.
- virtual bool HasGenerateAll() const { return true; }
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodeGenerator);
-};
-
-// CodeGenerators generate one or more files in a given directory. This
-// abstract interface represents the directory to which the CodeGenerator is
-// to write and other information about the context in which the Generator
-// runs.
-class PROTOC_EXPORT GeneratorContext {
- public:
- inline GeneratorContext() {
- }
- virtual ~GeneratorContext();
-
- // Opens the given file, truncating it if it exists, and returns a
- // ZeroCopyOutputStream that writes to the file. The caller takes ownership
- // of the returned object. This method never fails (a dummy stream will be
- // returned instead).
- //
- // The filename given should be relative to the root of the source tree.
- // E.g. the C++ generator, when generating code for "foo/bar.proto", will
- // generate the files "foo/bar.pb.h" and "foo/bar.pb.cc"; note that
- // "foo/" is included in these filenames. The filename is not allowed to
- // contain "." or ".." components.
- virtual io::ZeroCopyOutputStream* Open(const std::string& filename) = 0;
-
- // Similar to Open() but the output will be appended to the file if exists
- virtual io::ZeroCopyOutputStream* OpenForAppend(const std::string& filename);
-
- // Creates a ZeroCopyOutputStream which will insert code into the given file
- // at the given insertion point. See plugin.proto (plugin.pb.h) for more
- // information on insertion points. The default implementation
- // assert-fails -- it exists only for backwards-compatibility.
- //
- // WARNING: This feature is currently EXPERIMENTAL and is subject to change.
- virtual io::ZeroCopyOutputStream* OpenForInsert(
- const std::string& filename, const std::string& insertion_point);
-
- // Similar to OpenForInsert, but if `info` is non-empty, will open (or create)
- // filename.pb.meta and insert info at the appropriate place with the
- // necessary shifts. The default implementation ignores `info`.
- //
- // WARNING: This feature will be REMOVED in the near future.
- virtual io::ZeroCopyOutputStream* OpenForInsertWithGeneratedCodeInfo(
- const std::string& filename, const std::string& insertion_point,
- const google::protobuf::GeneratedCodeInfo& info);
-
- // Returns a vector of FileDescriptors for all the files being compiled
- // in this run. Useful for languages, such as Go, that treat files
- // differently when compiled as a set rather than individually.
- virtual void ListParsedFiles(std::vector<const FileDescriptor*>* output);
-
- // Retrieves the version number of the protocol compiler associated with
- // this GeneratorContext.
- virtual void GetCompilerVersion(Version* version) const;
-
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GeneratorContext);
-};
-
-// The type GeneratorContext was once called OutputDirectory. This typedef
-// provides backward compatibility.
-typedef GeneratorContext OutputDirectory;
-
-// Several code generators treat the parameter argument as holding a
-// list of options separated by commas. This helper function parses
-// a set of comma-delimited name/value pairs: e.g.,
-// "foo=bar,baz,moo=corge"
-// parses to the pairs:
-// ("foo", "bar"), ("baz", ""), ("moo", "corge")
-PROTOC_EXPORT void ParseGeneratorParameter(
- const std::string&, std::vector<std::pair<std::string, std::string> >*);
-
-// Strips ".proto" or ".protodevel" from the end of a filename.
-PROTOC_EXPORT std::string StripProto(const std::string& filename);
-
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CODE_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/command_line_interface.h b/include/google/protobuf/compiler/command_line_interface.h
deleted file mode 100644
index e8425508b1..0000000000
--- a/include/google/protobuf/compiler/command_line_interface.h
+++ /dev/null
@@ -1,464 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Implements the Protocol Compiler front-end such that it may be reused by
-// custom compilers written to support other languages.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_COMMAND_LINE_INTERFACE_H__
-#define GOOGLE_PROTOBUF_COMPILER_COMMAND_LINE_INTERFACE_H__
-
-#include <cstdint>
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-#include <unordered_map>
-#include <unordered_set>
-#include <utility>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Descriptor; // descriptor.h
-class DescriptorDatabase; // descriptor_database.h
-class DescriptorPool; // descriptor.h
-class FileDescriptor; // descriptor.h
-class FileDescriptorSet; // descriptor.h
-class FileDescriptorProto; // descriptor.pb.h
-template <typename T>
-class RepeatedPtrField; // repeated_field.h
-class SimpleDescriptorDatabase; // descriptor_database.h
-
-namespace compiler {
-
-class CodeGenerator; // code_generator.h
-class GeneratorContext; // code_generator.h
-class DiskSourceTree; // importer.h
-
-// This class implements the command-line interface to the protocol compiler.
-// It is designed to make it very easy to create a custom protocol compiler
-// supporting the languages of your choice. For example, if you wanted to
-// create a custom protocol compiler binary which includes both the regular
-// C++ support plus support for your own custom output "Foo", you would
-// write a class "FooGenerator" which implements the CodeGenerator interface,
-// then write a main() procedure like this:
-//
-// int main(int argc, char* argv[]) {
-// google::protobuf::compiler::CommandLineInterface cli;
-//
-// // Support generation of C++ source and headers.
-// google::protobuf::compiler::cpp::CppGenerator cpp_generator;
-// cli.RegisterGenerator("--cpp_out", &cpp_generator,
-// "Generate C++ source and header.");
-//
-// // Support generation of Foo code.
-// FooGenerator foo_generator;
-// cli.RegisterGenerator("--foo_out", &foo_generator,
-// "Generate Foo file.");
-//
-// return cli.Run(argc, argv);
-// }
-//
-// The compiler is invoked with syntax like:
-// protoc --cpp_out=outdir --foo_out=outdir --proto_path=src src/foo.proto
-//
-// The .proto file to compile can be specified on the command line using either
-// its physical file path, or a virtual path relative to a directory specified
-// in --proto_path. For example, for src/foo.proto, the following two protoc
-// invocations work the same way:
-// 1. protoc --proto_path=src src/foo.proto (physical file path)
-// 2. protoc --proto_path=src foo.proto (virtual path relative to src)
-//
-// If a file path can be interpreted both as a physical file path and as a
-// relative virtual path, the physical file path takes precedence.
-//
-// For a full description of the command-line syntax, invoke it with --help.
-class PROTOC_EXPORT CommandLineInterface {
- public:
- static const char* const kPathSeparator;
-
- CommandLineInterface();
- ~CommandLineInterface();
-
- // Register a code generator for a language.
- //
- // Parameters:
- // * flag_name: The command-line flag used to specify an output file of
- // this type. The name must start with a '-'. If the name is longer
- // than one letter, it must start with two '-'s.
- // * generator: The CodeGenerator which will be called to generate files
- // of this type.
- // * help_text: Text describing this flag in the --help output.
- //
- // Some generators accept extra parameters. You can specify this parameter
- // on the command-line by placing it before the output directory, separated
- // by a colon:
- // protoc --foo_out=enable_bar:outdir
- // The text before the colon is passed to CodeGenerator::Generate() as the
- // "parameter".
- void RegisterGenerator(const std::string& flag_name, CodeGenerator* generator,
- const std::string& help_text);
-
- // Register a code generator for a language.
- // Besides flag_name you can specify another option_flag_name that could be
- // used to pass extra parameters to the registered code generator.
- // Suppose you have registered a generator by calling:
- // command_line_interface.RegisterGenerator("--foo_out", "--foo_opt", ...)
- // Then you could invoke the compiler with a command like:
- // protoc --foo_out=enable_bar:outdir --foo_opt=enable_baz
- // This will pass "enable_bar,enable_baz" as the parameter to the generator.
- void RegisterGenerator(const std::string& flag_name,
- const std::string& option_flag_name,
- CodeGenerator* generator,
- const std::string& help_text);
-
- // Enables "plugins". In this mode, if a command-line flag ends with "_out"
- // but does not match any registered generator, the compiler will attempt to
- // find a "plugin" to implement the generator. Plugins are just executables.
- // They should live somewhere in the PATH.
- //
- // The compiler determines the executable name to search for by concatenating
- // exe_name_prefix with the unrecognized flag name, removing "_out". So, for
- // example, if exe_name_prefix is "protoc-" and you pass the flag --foo_out,
- // the compiler will try to run the program "protoc-gen-foo".
- //
- // The plugin program should implement the following usage:
- // plugin [--out=OUTDIR] [--parameter=PARAMETER] PROTO_FILES < DESCRIPTORS
- // --out indicates the output directory (as passed to the --foo_out
- // parameter); if omitted, the current directory should be used. --parameter
- // gives the generator parameter, if any was provided (see below). The
- // PROTO_FILES list the .proto files which were given on the compiler
- // command-line; these are the files for which the plugin is expected to
- // generate output code. Finally, DESCRIPTORS is an encoded FileDescriptorSet
- // (as defined in descriptor.proto). This is piped to the plugin's stdin.
- // The set will include descriptors for all the files listed in PROTO_FILES as
- // well as all files that they import. The plugin MUST NOT attempt to read
- // the PROTO_FILES directly -- it must use the FileDescriptorSet.
- //
- // The plugin should generate whatever files are necessary, as code generators
- // normally do. It should write the names of all files it generates to
- // stdout. The names should be relative to the output directory, NOT absolute
- // names or relative to the current directory. If any errors occur, error
- // messages should be written to stderr. If an error is fatal, the plugin
- // should exit with a non-zero exit code.
- //
- // Plugins can have generator parameters similar to normal built-in
- // generators. Extra generator parameters can be passed in via a matching
- // "_opt" parameter. For example:
- // protoc --plug_out=enable_bar:outdir --plug_opt=enable_baz
- // This will pass "enable_bar,enable_baz" as the parameter to the plugin.
- //
- void AllowPlugins(const std::string& exe_name_prefix);
-
- // Run the Protocol Compiler with the given command-line parameters.
- // Returns the error code which should be returned by main().
- //
- // It may not be safe to call Run() in a multi-threaded environment because
- // it calls strerror(). I'm not sure why you'd want to do this anyway.
- int Run(int argc, const char* const argv[]);
-
- // DEPRECATED. Calling this method has no effect. Protocol compiler now
- // always try to find the .proto file relative to the current directory
- // first and if the file is not found, it will then treat the input path
- // as a virtual path.
- void SetInputsAreProtoPathRelative(bool /* enable */) {}
-
- // Provides some text which will be printed when the --version flag is
- // used. The version of libprotoc will also be printed on the next line
- // after this text.
- void SetVersionInfo(const std::string& text) { version_info_ = text; }
-
-
- private:
- // -----------------------------------------------------------------
-
- class ErrorPrinter;
- class GeneratorContextImpl;
- class MemoryOutputStream;
- typedef std::unordered_map<std::string, std::unique_ptr<GeneratorContextImpl>>
- GeneratorContextMap;
-
- // Clear state from previous Run().
- void Clear();
-
- // Remaps the proto file so that it is relative to one of the directories
- // in proto_path_. Returns false if an error occurred.
- bool MakeProtoProtoPathRelative(DiskSourceTree* source_tree,
- std::string* proto,
- DescriptorDatabase* fallback_database);
-
- // Remaps each file in input_files_ so that it is relative to one of the
- // directories in proto_path_. Returns false if an error occurred.
- bool MakeInputsBeProtoPathRelative(DiskSourceTree* source_tree,
- DescriptorDatabase* fallback_database);
-
- // Fails if these files use proto3 optional and the code generator doesn't
- // support it. This is a permanent check.
- bool EnforceProto3OptionalSupport(
- const std::string& codegen_name, uint64_t supported_features,
- const std::vector<const FileDescriptor*>& parsed_files) const;
-
-
- // Return status for ParseArguments() and InterpretArgument().
- enum ParseArgumentStatus {
- PARSE_ARGUMENT_DONE_AND_CONTINUE,
- PARSE_ARGUMENT_DONE_AND_EXIT,
- PARSE_ARGUMENT_FAIL
- };
-
- // Parse all command-line arguments.
- ParseArgumentStatus ParseArguments(int argc, const char* const argv[]);
-
- // Read an argument file and append the file's content to the list of
- // arguments. Return false if the file cannot be read.
- bool ExpandArgumentFile(const std::string& file,
- std::vector<std::string>* arguments);
-
- // Parses a command-line argument into a name/value pair. Returns
- // true if the next argument in the argv should be used as the value,
- // false otherwise.
- //
- // Examples:
- // "-Isrc/protos" ->
- // name = "-I", value = "src/protos"
- // "--cpp_out=src/foo.pb2.cc" ->
- // name = "--cpp_out", value = "src/foo.pb2.cc"
- // "foo.proto" ->
- // name = "", value = "foo.proto"
- bool ParseArgument(const char* arg, std::string* name, std::string* value);
-
- // Interprets arguments parsed with ParseArgument.
- ParseArgumentStatus InterpretArgument(const std::string& name,
- const std::string& value);
-
- // Print the --help text to stderr.
- void PrintHelpText();
-
- // Loads proto_path_ into the provided source_tree.
- bool InitializeDiskSourceTree(DiskSourceTree* source_tree,
- DescriptorDatabase* fallback_database);
-
- // Verify that all the input files exist in the given database.
- bool VerifyInputFilesInDescriptors(DescriptorDatabase* fallback_database);
-
- // Parses input_files_ into parsed_files
- bool ParseInputFiles(DescriptorPool* descriptor_pool,
- DiskSourceTree* source_tree,
- std::vector<const FileDescriptor*>* parsed_files);
-
- // Generate the given output file from the given input.
- struct OutputDirective; // see below
- bool GenerateOutput(const std::vector<const FileDescriptor*>& parsed_files,
- const OutputDirective& output_directive,
- GeneratorContext* generator_context);
- bool GeneratePluginOutput(
- const std::vector<const FileDescriptor*>& parsed_files,
- const std::string& plugin_name, const std::string& parameter,
- GeneratorContext* generator_context, std::string* error);
-
- // Implements --encode and --decode.
- bool EncodeOrDecode(const DescriptorPool* pool);
-
- // Implements the --descriptor_set_out option.
- bool WriteDescriptorSet(
- const std::vector<const FileDescriptor*>& parsed_files);
-
- // Implements the --dependency_out option
- bool GenerateDependencyManifestFile(
- const std::vector<const FileDescriptor*>& parsed_files,
- const GeneratorContextMap& output_directories,
- DiskSourceTree* source_tree);
-
- // Get all transitive dependencies of the given file (including the file
- // itself), adding them to the given list of FileDescriptorProtos. The
- // protos will be ordered such that every file is listed before any file that
- // depends on it, so that you can call DescriptorPool::BuildFile() on them
- // in order. Any files in *already_seen will not be added, and each file
- // added will be inserted into *already_seen. If include_source_code_info is
- // true then include the source code information in the FileDescriptorProtos.
- // If include_json_name is true, populate the json_name field of
- // FieldDescriptorProto for all fields.
- static void GetTransitiveDependencies(
- const FileDescriptor* file, bool include_json_name,
- bool include_source_code_info,
- std::set<const FileDescriptor*>* already_seen,
- RepeatedPtrField<FileDescriptorProto>* output);
-
- // Implements the --print_free_field_numbers. This function prints free field
- // numbers into stdout for the message and it's nested message types in
- // post-order, i.e. nested types first. Printed range are left-right
- // inclusive, i.e. [a, b].
- //
- // Groups:
- // For historical reasons, groups are considered to share the same
- // field number space with the parent message, thus it will not print free
- // field numbers for groups. The field numbers used in the groups are
- // excluded in the free field numbers of the parent message.
- //
- // Extension Ranges:
- // Extension ranges are considered ocuppied field numbers and they will not be
- // listed as free numbers in the output.
- void PrintFreeFieldNumbers(const Descriptor* descriptor);
-
- // -----------------------------------------------------------------
-
- // The name of the executable as invoked (i.e. argv[0]).
- std::string executable_name_;
-
- // Version info set with SetVersionInfo().
- std::string version_info_;
-
- // Registered generators.
- struct GeneratorInfo {
- std::string flag_name;
- std::string option_flag_name;
- CodeGenerator* generator;
- std::string help_text;
- };
- typedef std::map<std::string, GeneratorInfo> GeneratorMap;
- GeneratorMap generators_by_flag_name_;
- GeneratorMap generators_by_option_name_;
- // A map from generator names to the parameters specified using the option
- // flag. For example, if the user invokes the compiler with:
- // protoc --foo_out=outputdir --foo_opt=enable_bar ...
- // Then there will be an entry ("--foo_out", "enable_bar") in this map.
- std::map<std::string, std::string> generator_parameters_;
- // Similar to generator_parameters_, but stores the parameters for plugins.
- std::map<std::string, std::string> plugin_parameters_;
-
- // See AllowPlugins(). If this is empty, plugins aren't allowed.
- std::string plugin_prefix_;
-
- // Maps specific plugin names to files. When executing a plugin, this map
- // is searched first to find the plugin executable. If not found here, the
- // PATH (or other OS-specific search strategy) is searched.
- std::map<std::string, std::string> plugins_;
-
- // Stuff parsed from command line.
- enum Mode {
- MODE_COMPILE, // Normal mode: parse .proto files and compile them.
- MODE_ENCODE, // --encode: read text from stdin, write binary to stdout.
- MODE_DECODE, // --decode: read binary from stdin, write text to stdout.
- MODE_PRINT, // Print mode: print info of the given .proto files and exit.
- };
-
- Mode mode_ = MODE_COMPILE;
-
- enum PrintMode {
- PRINT_NONE, // Not in MODE_PRINT
- PRINT_FREE_FIELDS, // --print_free_fields
- };
-
- PrintMode print_mode_ = PRINT_NONE;
-
- enum ErrorFormat {
- ERROR_FORMAT_GCC, // GCC error output format (default).
- ERROR_FORMAT_MSVS // Visual Studio output (--error_format=msvs).
- };
-
- ErrorFormat error_format_ = ERROR_FORMAT_GCC;
-
- // True if we should treat warnings as errors that fail the compilation.
- bool fatal_warnings_ = false;
-
- std::vector<std::pair<std::string, std::string> >
- proto_path_; // Search path for proto files.
- std::vector<std::string> input_files_; // Names of the input proto files.
-
- // Names of proto files which are allowed to be imported. Used by build
- // systems to enforce depend-on-what-you-import.
- std::set<std::string> direct_dependencies_;
- bool direct_dependencies_explicitly_set_ = false;
-
- // If there's a violation of depend-on-what-you-import, this string will be
- // presented to the user. "%s" will be replaced with the violating import.
- std::string direct_dependencies_violation_msg_;
-
- // output_directives_ lists all the files we are supposed to output and what
- // generator to use for each.
- struct OutputDirective {
- std::string name; // E.g. "--foo_out"
- CodeGenerator* generator; // NULL for plugins
- std::string parameter;
- std::string output_location;
- };
- std::vector<OutputDirective> output_directives_;
-
- // When using --encode or --decode, this names the type we are encoding or
- // decoding. (Empty string indicates --decode_raw.)
- std::string codec_type_;
-
- // If --descriptor_set_in was given, these are filenames containing
- // parsed FileDescriptorSets to be used for loading protos. Otherwise, empty.
- std::vector<std::string> descriptor_set_in_names_;
-
- // If --descriptor_set_out was given, this is the filename to which the
- // FileDescriptorSet should be written. Otherwise, empty.
- std::string descriptor_set_out_name_;
-
- // If --dependency_out was given, this is the path to the file where the
- // dependency file will be written. Otherwise, empty.
- std::string dependency_out_name_;
-
- // True if --include_imports was given, meaning that we should
- // write all transitive dependencies to the DescriptorSet. Otherwise, only
- // the .proto files listed on the command-line are added.
- bool imports_in_descriptor_set_;
-
- // True if --include_source_info was given, meaning that we should not strip
- // SourceCodeInfo from the DescriptorSet.
- bool source_info_in_descriptor_set_ = false;
-
- // Was the --disallow_services flag used?
- bool disallow_services_ = false;
-
- // When using --encode, this will be passed to SetSerializationDeterministic.
- bool deterministic_output_ = false;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CommandLineInterface);
-};
-
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_COMMAND_LINE_INTERFACE_H__
diff --git a/include/google/protobuf/compiler/cpp/cpp_generator.h b/include/google/protobuf/compiler/cpp/cpp_generator.h
deleted file mode 100644
index 1716ab20de..0000000000
--- a/include/google/protobuf/compiler/cpp/cpp_generator.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_CPP_GENERATOR_H_
-#define GOOGLE_PROTOBUF_COMPILER_CPP_CPP_GENERATOR_H_
-
-#include <google/protobuf/compiler/cpp/generator.h>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CPP_CPP_GENERATOR_H_
diff --git a/include/google/protobuf/compiler/cpp/file.h b/include/google/protobuf/compiler/cpp/file.h
deleted file mode 100644
index ca05361b42..0000000000
--- a/include/google/protobuf/compiler/cpp/file.h
+++ /dev/null
@@ -1,209 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__
-#define GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__
-
-#include <algorithm>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/compiler/cpp/field.h>
-#include <google/protobuf/compiler/cpp/helpers.h>
-#include <google/protobuf/compiler/scc.h>
-#include <google/protobuf/compiler/cpp/options.h>
-
-namespace google {
-namespace protobuf {
-class FileDescriptor; // descriptor.h
-namespace io {
-class Printer; // printer.h
-}
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace cpp {
-
-class EnumGenerator; // enum.h
-class MessageGenerator; // message.h
-class ServiceGenerator; // service.h
-class ExtensionGenerator; // extension.h
-
-class FileGenerator {
- public:
- // See generator.cc for the meaning of dllexport_decl.
- FileGenerator(const FileDescriptor* file, const Options& options);
- ~FileGenerator();
-
- // Shared code between the two header generators below.
- void GenerateHeader(io::Printer* printer);
-
- // info_path, if non-empty, should be the path (relative to printer's
- // output) to the metadata file describing this proto header.
- void GenerateProtoHeader(io::Printer* printer, const std::string& info_path);
- // info_path, if non-empty, should be the path (relative to printer's
- // output) to the metadata file describing this PB header.
- void GeneratePBHeader(io::Printer* printer, const std::string& info_path);
- void GenerateSource(io::Printer* printer);
-
- // The following member functions are used when the lite_implicit_weak_fields
- // option is set. In this mode the code is organized a bit differently to
- // promote better linker stripping of unused code. In particular, we generate
- // one .cc file per message, one .cc file per extension, and a main pb.cc file
- // containing everything else.
-
- int NumMessages() const { return message_generators_.size(); }
- int NumExtensions() const { return extension_generators_.size(); }
- // Generates the source file for one message.
- void GenerateSourceForMessage(int idx, io::Printer* printer);
- // Generates the source file for one extension.
- void GenerateSourceForExtension(int idx, io::Printer* printer);
- // Generates a source file containing everything except messages and
- // extensions.
- void GenerateGlobalSource(io::Printer* printer);
-
- private:
- // Internal type used by GenerateForwardDeclarations (defined in file.cc).
- class ForwardDeclarations;
- struct CrossFileReferences;
-
- void IncludeFile(const std::string& google3_name, io::Printer* printer) {
- DoIncludeFile(google3_name, false, printer);
- }
- void IncludeFileAndExport(const std::string& google3_name,
- io::Printer* printer) {
- DoIncludeFile(google3_name, true, printer);
- }
- void DoIncludeFile(const std::string& google3_name, bool do_export,
- io::Printer* printer);
-
- std::string CreateHeaderInclude(const std::string& basename,
- const FileDescriptor* file);
- void GetCrossFileReferencesForField(const FieldDescriptor* field,
- CrossFileReferences* refs);
- void GetCrossFileReferencesForFile(const FileDescriptor* file,
- CrossFileReferences* refs);
- void GenerateInternalForwardDeclarations(const CrossFileReferences& refs,
- io::Printer* printer);
- void GenerateSourceIncludes(io::Printer* printer);
- void GenerateSourcePrelude(io::Printer* printer);
- void GenerateSourceDefaultInstance(int idx, io::Printer* printer);
-
- void GenerateInitForSCC(const SCC* scc, const CrossFileReferences& refs,
- io::Printer* printer);
- void GenerateReflectionInitializationCode(io::Printer* printer);
-
- // For other imports, generates their forward-declarations.
- void GenerateForwardDeclarations(io::Printer* printer);
-
- // Generates top or bottom of a header file.
- void GenerateTopHeaderGuard(io::Printer* printer, bool pb_h);
- void GenerateBottomHeaderGuard(io::Printer* printer, bool pb_h);
-
- // Generates #include directives.
- void GenerateLibraryIncludes(io::Printer* printer);
- void GenerateDependencyIncludes(io::Printer* printer);
-
- // Generate a pragma to pull in metadata using the given info_path (if
- // non-empty). info_path should be relative to printer's output.
- void GenerateMetadataPragma(io::Printer* printer,
- const std::string& info_path);
-
- // Generates a couple of different pieces before definitions:
- void GenerateGlobalStateFunctionDeclarations(io::Printer* printer);
-
- // Generates types for classes.
- void GenerateMessageDefinitions(io::Printer* printer);
-
- void GenerateEnumDefinitions(io::Printer* printer);
-
- // Generates generic service definitions.
- void GenerateServiceDefinitions(io::Printer* printer);
-
- // Generates extension identifiers.
- void GenerateExtensionIdentifiers(io::Printer* printer);
-
- // Generates inline function definitions.
- void GenerateInlineFunctionDefinitions(io::Printer* printer);
-
- void GenerateProto2NamespaceEnumSpecializations(io::Printer* printer);
-
- // Sometimes the names we use in a .proto file happen to be defined as
- // macros on some platforms (e.g., macro/minor used in plugin.proto are
- // defined as macros in sys/types.h on FreeBSD and a few other platforms).
- // To make the generated code compile on these platforms, we either have to
- // undef the macro for these few platforms, or rename the field name for all
- // platforms. Since these names are part of protobuf public API, renaming is
- // generally a breaking change so we prefer the #undef approach.
- void GenerateMacroUndefs(io::Printer* printer);
-
- bool IsDepWeak(const FileDescriptor* dep) const {
- if (weak_deps_.count(dep) != 0) {
- GOOGLE_CHECK(!options_.opensource_runtime);
- return true;
- }
- return false;
- }
-
- std::set<const FileDescriptor*> weak_deps_;
-
- const FileDescriptor* file_;
- const Options options_;
-
- MessageSCCAnalyzer scc_analyzer_;
-
- std::map<std::string, std::string> variables_;
-
- // Contains the post-order walk of all the messages (and child messages) in
- // this file. If you need a pre-order walk just reverse iterate.
- std::vector<std::unique_ptr<MessageGenerator>> message_generators_;
- std::vector<std::unique_ptr<EnumGenerator>> enum_generators_;
- std::vector<std::unique_ptr<ServiceGenerator>> service_generators_;
- std::vector<std::unique_ptr<ExtensionGenerator>> extension_generators_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator);
-};
-
-} // namespace cpp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CPP_FILE_H__
diff --git a/include/google/protobuf/compiler/cpp/generator.h b/include/google/protobuf/compiler/cpp/generator.h
deleted file mode 100644
index 1a374b9f16..0000000000
--- a/include/google/protobuf/compiler/cpp/generator.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Generates C++ code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
-
-#include <string>
-#include <google/protobuf/compiler/code_generator.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace cpp {
-
-// CodeGenerator implementation which generates a C++ source file and
-// header. If you create your own protocol compiler binary and you want
-// it to support C++ output, you can do so by registering an instance of this
-// CodeGenerator with the CommandLineInterface in your main() function.
-class PROTOC_EXPORT CppGenerator : public CodeGenerator {
- public:
- CppGenerator();
- ~CppGenerator() override;
-
- enum class Runtime {
- kGoogle3, // Use the internal google3 runtime.
- kOpensource, // Use the open-source runtime.
-
- // Use the open-source runtime with google3 #include paths. We make these
- // absolute to avoid ambiguity, so the runtime will be #included like:
- // #include "third_party/protobuf/.../google/protobuf/message.h"
- kOpensourceGoogle3
- };
-
- void set_opensource_runtime(bool opensource) {
- opensource_runtime_ = opensource;
- }
-
- // If set to a non-empty string, generated code will do:
- // #include "<BASE>/google/protobuf/message.h"
- // instead of:
- // #include <google/protobuf/message.h>
- // This has no effect if opensource_runtime = false.
- void set_runtime_include_base(const std::string& base) {
- runtime_include_base_ = base;
- }
-
- // implements CodeGenerator ----------------------------------------
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override {
- // We don't fully support this yet, but this is needed to unblock the tests,
- // and we will have full support before the experimental flag is removed.
- return FEATURE_PROTO3_OPTIONAL;
- }
-
- private:
- bool opensource_runtime_ = true;
- std::string runtime_include_base_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CppGenerator);
-};
-
-} // namespace cpp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CPP_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/cpp/helpers.h b/include/google/protobuf/compiler/cpp/helpers.h
deleted file mode 100644
index d8dcda7248..0000000000
--- a/include/google/protobuf/compiler/cpp/helpers.h
+++ /dev/null
@@ -1,1064 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__
-#define GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__
-
-#include <algorithm>
-#include <cstdint>
-#include <iterator>
-#include <map>
-#include <string>
-
-#include <google/protobuf/compiler/scc.h>
-#include <google/protobuf/compiler/code_generator.h>
-#include <google/protobuf/compiler/cpp/names.h>
-#include <google/protobuf/compiler/cpp/options.h>
-#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace cpp {
-
-enum class ArenaDtorNeeds { kNone = 0, kOnDemand = 1, kRequired = 2 };
-
-inline std::string ProtobufNamespace(const Options& /* options */) {
- return "PROTOBUF_NAMESPACE_ID";
-}
-
-inline std::string MacroPrefix(const Options& /* options */) {
- return "GOOGLE_PROTOBUF";
-}
-
-inline std::string DeprecatedAttribute(const Options& /* options */,
- const FieldDescriptor* d) {
- return d->options().deprecated() ? "PROTOBUF_DEPRECATED " : "";
-}
-
-inline std::string DeprecatedAttribute(const Options& /* options */,
- const EnumValueDescriptor* d) {
- return d->options().deprecated() ? "PROTOBUF_DEPRECATED_ENUM " : "";
-}
-
-// Commonly-used separator comments. Thick is a line of '=', thin is a line
-// of '-'.
-extern const char kThickSeparator[];
-extern const char kThinSeparator[];
-
-void SetCommonVars(const Options& options,
- std::map<std::string, std::string>* variables);
-
-// Variables to access message data from the message scope.
-void SetCommonMessageDataVariables(
- const Descriptor* descriptor,
- std::map<std::string, std::string>* variables);
-
-void SetUnknownFieldsVariable(const Descriptor* descriptor,
- const Options& options,
- std::map<std::string, std::string>* variables);
-
-bool GetBootstrapBasename(const Options& options, const std::string& basename,
- std::string* bootstrap_basename);
-bool MaybeBootstrap(const Options& options, GeneratorContext* generator_context,
- bool bootstrap_flag, std::string* basename);
-bool IsBootstrapProto(const Options& options, const FileDescriptor* file);
-
-// Name space of the proto file. This namespace is such that the string
-// "<namespace>::some_name" is the correct fully qualified namespace.
-// This means if the package is empty the namespace is "", and otherwise
-// the namespace is "::foo::bar::...::baz" without trailing semi-colons.
-std::string Namespace(const FileDescriptor* d, const Options& options);
-std::string Namespace(const Descriptor* d, const Options& options);
-std::string Namespace(const FieldDescriptor* d, const Options& options);
-std::string Namespace(const EnumDescriptor* d, const Options& options);
-
-// Returns true if it's safe to reset "field" to zero.
-bool CanInitializeByZeroing(const FieldDescriptor* field);
-
-std::string ClassName(const Descriptor* descriptor);
-std::string ClassName(const EnumDescriptor* enum_descriptor);
-
-std::string QualifiedClassName(const Descriptor* d, const Options& options);
-std::string QualifiedClassName(const EnumDescriptor* d, const Options& options);
-
-std::string QualifiedClassName(const Descriptor* d);
-std::string QualifiedClassName(const EnumDescriptor* d);
-
-// DEPRECATED just use ClassName or QualifiedClassName, a boolean is very
-// unreadable at the callsite.
-// Returns the non-nested type name for the given type. If "qualified" is
-// true, prefix the type with the full namespace. For example, if you had:
-// package foo.bar;
-// message Baz { message Moo {} }
-// Then the qualified ClassName for Moo would be:
-// ::foo::bar::Baz_Moo
-// While the non-qualified version would be:
-// Baz_Moo
-inline std::string ClassName(const Descriptor* descriptor, bool qualified) {
- return qualified ? QualifiedClassName(descriptor, Options())
- : ClassName(descriptor);
-}
-
-inline std::string ClassName(const EnumDescriptor* descriptor, bool qualified) {
- return qualified ? QualifiedClassName(descriptor, Options())
- : ClassName(descriptor);
-}
-
-// Returns the extension name prefixed with the class name if nested but without
-// the package name.
-std::string ExtensionName(const FieldDescriptor* d);
-
-std::string QualifiedExtensionName(const FieldDescriptor* d,
- const Options& options);
-std::string QualifiedExtensionName(const FieldDescriptor* d);
-
-// Type name of default instance.
-std::string DefaultInstanceType(const Descriptor* descriptor,
- const Options& options, bool split = false);
-
-// Non-qualified name of the default_instance of this message.
-std::string DefaultInstanceName(const Descriptor* descriptor,
- const Options& options, bool split = false);
-
-// Non-qualified name of the default instance pointer. This is used only for
-// implicit weak fields, where we need an extra indirection.
-std::string DefaultInstancePtr(const Descriptor* descriptor,
- const Options& options, bool split = false);
-
-// Fully qualified name of the default_instance of this message.
-std::string QualifiedDefaultInstanceName(const Descriptor* descriptor,
- const Options& options,
- bool split = false);
-
-// Fully qualified name of the default instance pointer.
-std::string QualifiedDefaultInstancePtr(const Descriptor* descriptor,
- const Options& options,
- bool split = false);
-
-// DescriptorTable variable name.
-std::string DescriptorTableName(const FileDescriptor* file,
- const Options& options);
-
-// When declaring symbol externs from another file, this macro will supply the
-// dllexport needed for the target file, if any.
-std::string FileDllExport(const FileDescriptor* file, const Options& options);
-
-// Name of the base class: google::protobuf::Message or google::protobuf::MessageLite.
-std::string SuperClassName(const Descriptor* descriptor,
- const Options& options);
-
-// Adds an underscore if necessary to prevent conflicting with a keyword.
-std::string ResolveKeyword(const std::string& name);
-
-// Get the (unqualified) name that should be used for this field in C++ code.
-// The name is coerced to lower-case to emulate proto1 behavior. People
-// should be using lowercase-with-underscores style for proto field names
-// anyway, so normally this just returns field->name().
-std::string FieldName(const FieldDescriptor* field);
-
-// Returns the (unqualified) private member name for this field in C++ code.
-std::string FieldMemberName(const FieldDescriptor* field, bool split);
-
-// Returns an estimate of the compiler's alignment for the field. This
-// can't guarantee to be correct because the generated code could be compiled on
-// different systems with different alignment rules. The estimates below assume
-// 64-bit pointers.
-int EstimateAlignmentSize(const FieldDescriptor* field);
-
-// Get the unqualified name that should be used for a field's field
-// number constant.
-std::string FieldConstantName(const FieldDescriptor* field);
-
-// Returns the scope where the field was defined (for extensions, this is
-// different from the message type to which the field applies).
-inline const Descriptor* FieldScope(const FieldDescriptor* field) {
- return field->is_extension() ? field->extension_scope()
- : field->containing_type();
-}
-
-// Returns the fully-qualified type name field->message_type(). Usually this
-// is just ClassName(field->message_type(), true);
-std::string FieldMessageTypeName(const FieldDescriptor* field,
- const Options& options);
-
-// Get the C++ type name for a primitive type (e.g. "double", "::google::protobuf::int32", etc.).
-const char* PrimitiveTypeName(FieldDescriptor::CppType type);
-std::string PrimitiveTypeName(const Options& options,
- FieldDescriptor::CppType type);
-
-// Get the declared type name in CamelCase format, as is used e.g. for the
-// methods of WireFormat. For example, TYPE_INT32 becomes "Int32".
-const char* DeclaredTypeMethodName(FieldDescriptor::Type type);
-
-// Return the code that evaluates to the number when compiled.
-std::string Int32ToString(int number);
-
-// Get code that evaluates to the field's default value.
-std::string DefaultValue(const Options& options, const FieldDescriptor* field);
-
-// Compatibility function for callers outside proto2.
-std::string DefaultValue(const FieldDescriptor* field);
-
-// Convert a file name into a valid identifier.
-std::string FilenameIdentifier(const std::string& filename);
-
-// For each .proto file generates a unique name. To prevent collisions of
-// symbols in the global namespace
-std::string UniqueName(const std::string& name, const std::string& filename,
- const Options& options);
-inline std::string UniqueName(const std::string& name, const FileDescriptor* d,
- const Options& options) {
- return UniqueName(name, d->name(), options);
-}
-inline std::string UniqueName(const std::string& name, const Descriptor* d,
- const Options& options) {
- return UniqueName(name, d->file(), options);
-}
-inline std::string UniqueName(const std::string& name, const EnumDescriptor* d,
- const Options& options) {
- return UniqueName(name, d->file(), options);
-}
-inline std::string UniqueName(const std::string& name,
- const ServiceDescriptor* d,
- const Options& options) {
- return UniqueName(name, d->file(), options);
-}
-
-// Versions for call sites that only support the internal runtime (like proto1
-// support).
-inline Options InternalRuntimeOptions() {
- Options options;
- options.opensource_runtime = false;
- return options;
-}
-inline std::string UniqueName(const std::string& name,
- const std::string& filename) {
- return UniqueName(name, filename, InternalRuntimeOptions());
-}
-inline std::string UniqueName(const std::string& name,
- const FileDescriptor* d) {
- return UniqueName(name, d->name(), InternalRuntimeOptions());
-}
-inline std::string UniqueName(const std::string& name, const Descriptor* d) {
- return UniqueName(name, d->file(), InternalRuntimeOptions());
-}
-inline std::string UniqueName(const std::string& name,
- const EnumDescriptor* d) {
- return UniqueName(name, d->file(), InternalRuntimeOptions());
-}
-inline std::string UniqueName(const std::string& name,
- const ServiceDescriptor* d) {
- return UniqueName(name, d->file(), InternalRuntimeOptions());
-}
-
-// Return the qualified C++ name for a file level symbol.
-std::string QualifiedFileLevelSymbol(const FileDescriptor* file,
- const std::string& name,
- const Options& options);
-
-// Escape C++ trigraphs by escaping question marks to \?
-std::string EscapeTrigraphs(const std::string& to_escape);
-
-// Escaped function name to eliminate naming conflict.
-std::string SafeFunctionName(const Descriptor* descriptor,
- const FieldDescriptor* field,
- const std::string& prefix);
-
-// Returns true if generated messages have public unknown fields accessors
-inline bool PublicUnknownFieldsAccessors(const Descriptor* message) {
- return message->file()->syntax() != FileDescriptor::SYNTAX_PROTO3;
-}
-
-// Returns the optimize mode for <file>, respecting <options.enforce_lite>.
-FileOptions_OptimizeMode GetOptimizeFor(const FileDescriptor* file,
- const Options& options);
-
-// Determines whether unknown fields will be stored in an UnknownFieldSet or
-// a string.
-inline bool UseUnknownFieldSet(const FileDescriptor* file,
- const Options& options) {
- return GetOptimizeFor(file, options) != FileOptions::LITE_RUNTIME;
-}
-
-inline bool IsWeak(const FieldDescriptor* field, const Options& options) {
- if (field->options().weak()) {
- GOOGLE_CHECK(!options.opensource_runtime);
- return true;
- }
- return false;
-}
-
-bool IsStringInlined(const FieldDescriptor* descriptor, const Options& options);
-
-// For a string field, returns the effective ctype. If the actual ctype is
-// not supported, returns the default of STRING.
-FieldOptions::CType EffectiveStringCType(const FieldDescriptor* field,
- const Options& options);
-
-inline bool IsCord(const FieldDescriptor* field, const Options& options) {
- return field->cpp_type() == FieldDescriptor::CPPTYPE_STRING &&
- EffectiveStringCType(field, options) == FieldOptions::CORD;
-}
-
-inline bool IsString(const FieldDescriptor* field, const Options& options) {
- return field->cpp_type() == FieldDescriptor::CPPTYPE_STRING &&
- EffectiveStringCType(field, options) == FieldOptions::STRING;
-}
-
-inline bool IsStringPiece(const FieldDescriptor* field,
- const Options& options) {
- return field->cpp_type() == FieldDescriptor::CPPTYPE_STRING &&
- EffectiveStringCType(field, options) == FieldOptions::STRING_PIECE;
-}
-
-class MessageSCCAnalyzer;
-
-// Does the given FileDescriptor use lazy fields?
-bool HasLazyFields(const FileDescriptor* file, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-
-// Is the given field a supported lazy field?
-bool IsLazy(const FieldDescriptor* field, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-
-// Is this an explicit (non-profile driven) lazy field, as denoted by
-// lazy/unverified_lazy in the descriptor?
-inline bool IsExplicitLazy(const FieldDescriptor* field) {
- return field->options().lazy() || field->options().unverified_lazy();
-}
-
-bool IsEagerlyVerifiedLazy(const FieldDescriptor* field, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-
-bool IsLazilyVerifiedLazy(const FieldDescriptor* field, const Options& options);
-
-// Is the given message being split (go/pdsplit)?
-bool ShouldSplit(const Descriptor* desc, const Options& options);
-
-// Is the given field being split out?
-bool ShouldSplit(const FieldDescriptor* field, const Options& options);
-
-inline bool IsFieldUsed(const FieldDescriptor* /* field */,
- const Options& /* options */) {
- return true;
-}
-
-// Returns true if "field" is stripped.
-inline bool IsFieldStripped(const FieldDescriptor* /*field*/,
- const Options& /*options*/) {
- return false;
-}
-
-// Does the file contain any definitions that need extension_set.h?
-bool HasExtensionsOrExtendableMessage(const FileDescriptor* file);
-
-// Does the file have any repeated fields, necessitating the file to include
-// repeated_field.h? This does not include repeated extensions, since those are
-// all stored internally in an ExtensionSet, not a separate RepeatedField*.
-bool HasRepeatedFields(const FileDescriptor* file);
-
-// Does the file have any string/bytes fields with ctype=STRING_PIECE? This
-// does not include extensions, since ctype is ignored for extensions.
-bool HasStringPieceFields(const FileDescriptor* file, const Options& options);
-
-// Does the file have any string/bytes fields with ctype=CORD? This does not
-// include extensions, since ctype is ignored for extensions.
-bool HasCordFields(const FileDescriptor* file, const Options& options);
-
-// Does the file have any map fields, necessitating the file to include
-// map_field_inl.h and map.h.
-bool HasMapFields(const FileDescriptor* file);
-
-// Does this file have any enum type definitions?
-bool HasEnumDefinitions(const FileDescriptor* file);
-
-// Does this file have generated parsing, serialization, and other
-// standard methods for which reflection-based fallback implementations exist?
-inline bool HasGeneratedMethods(const FileDescriptor* file,
- const Options& options) {
- return GetOptimizeFor(file, options) != FileOptions::CODE_SIZE;
-}
-
-// Do message classes in this file have descriptor and reflection methods?
-inline bool HasDescriptorMethods(const FileDescriptor* file,
- const Options& options) {
- return GetOptimizeFor(file, options) != FileOptions::LITE_RUNTIME;
-}
-
-// Should we generate generic services for this file?
-inline bool HasGenericServices(const FileDescriptor* file,
- const Options& options) {
- return file->service_count() > 0 &&
- GetOptimizeFor(file, options) != FileOptions::LITE_RUNTIME &&
- file->options().cc_generic_services();
-}
-
-inline bool IsProto2MessageSet(const Descriptor* descriptor,
- const Options& options) {
- return !options.opensource_runtime &&
- options.enforce_mode != EnforceOptimizeMode::kLiteRuntime &&
- !options.lite_implicit_weak_fields &&
- descriptor->options().message_set_wire_format() &&
- descriptor->full_name() == "google.protobuf.bridge.MessageSet";
-}
-
-inline bool IsMapEntryMessage(const Descriptor* descriptor) {
- return descriptor->options().map_entry();
-}
-
-// Returns true if the field's CPPTYPE is string or message.
-bool IsStringOrMessage(const FieldDescriptor* field);
-
-std::string UnderscoresToCamelCase(const std::string& input,
- bool cap_next_letter);
-
-inline bool IsProto3(const FileDescriptor* file) {
- return file->syntax() == FileDescriptor::SYNTAX_PROTO3;
-}
-
-inline bool HasHasbit(const FieldDescriptor* field) {
- // This predicate includes proto3 message fields only if they have "optional".
- // Foo submsg1 = 1; // HasHasbit() == false
- // optional Foo submsg2 = 2; // HasHasbit() == true
- // This is slightly odd, as adding "optional" to a singular proto3 field does
- // not change the semantics or API. However whenever any field in a message
- // has a hasbit, it forces reflection to include hasbit offsets for *all*
- // fields, even if almost all of them are set to -1 (no hasbit). So to avoid
- // causing a sudden size regression for ~all proto3 messages, we give proto3
- // message fields a hasbit only if "optional" is present. If the user is
- // explicitly writing "optional", it is likely they are writing it on
- // primitive fields also.
- return (field->has_optional_keyword() || field->is_required()) &&
- !field->options().weak();
-}
-
-// Returns true if 'enum' semantics are such that unknown values are preserved
-// in the enum field itself, rather than going to the UnknownFieldSet.
-inline bool HasPreservingUnknownEnumSemantics(const FieldDescriptor* field) {
- return field->file()->syntax() == FileDescriptor::SYNTAX_PROTO3;
-}
-
-inline bool IsCrossFileMessage(const FieldDescriptor* field) {
- return field->type() == FieldDescriptor::TYPE_MESSAGE &&
- field->message_type()->file() != field->file();
-}
-
-inline std::string MakeDefaultName(const FieldDescriptor* field) {
- return StrCat("_i_give_permission_to_break_this_code_default_",
- FieldName(field), "_");
-}
-
-// Semantically distinct from MakeDefaultName in that it gives the C++ code
-// referencing a default field from the message scope, rather than just the
-// variable name.
-// For example, declarations of default variables should always use just
-// MakeDefaultName to produce code like:
-// Type _i_give_permission_to_break_this_code_default_field_;
-//
-// Code that references these should use MakeDefaultFieldName, in case the field
-// exists at some nested level like:
-// internal_container_._i_give_permission_to_break_this_code_default_field_;
-inline std::string MakeDefaultFieldName(const FieldDescriptor* field) {
- return StrCat("Impl_::", MakeDefaultName(field));
-}
-
-inline std::string MakeVarintCachedSizeName(const FieldDescriptor* field) {
- return StrCat("_", FieldName(field), "_cached_byte_size_");
-}
-
-// Semantically distinct from MakeVarintCachedSizeName in that it gives the C++
-// code referencing the object from the message scope, rather than just the
-// variable name.
-// For example, declarations of default variables should always use just
-// MakeVarintCachedSizeName to produce code like:
-// Type _field_cached_byte_size_;
-//
-// Code that references these variables should use
-// MakeVarintCachedSizeFieldName, in case the field exists at some nested level
-// like:
-// internal_container_._field_cached_byte_size_;
-inline std::string MakeVarintCachedSizeFieldName(const FieldDescriptor* field,
- bool split) {
- return StrCat("_impl_.", split ? "_split_->" : "", "_",
- FieldName(field), "_cached_byte_size_");
-}
-
-// Note: A lot of libraries detect Any protos based on Descriptor::full_name()
-// while the two functions below use FileDescriptor::name(). In a sane world the
-// two approaches should be equivalent. But if you are dealing with descriptors
-// from untrusted sources, you might need to match semantics across libraries.
-bool IsAnyMessage(const FileDescriptor* descriptor, const Options& options);
-bool IsAnyMessage(const Descriptor* descriptor, const Options& options);
-
-bool IsWellKnownMessage(const FileDescriptor* descriptor);
-
-inline std::string IncludeGuard(const FileDescriptor* file, bool pb_h,
- const Options& options) {
- // If we are generating a .pb.h file and the proto_h option is enabled, then
- // the .pb.h gets an extra suffix.
- std::string filename_identifier = FilenameIdentifier(
- file->name() + (pb_h && options.proto_h ? ".pb.h" : ""));
-
- if (IsWellKnownMessage(file)) {
- // For well-known messages we need third_party/protobuf and net/proto2 to
- // have distinct include guards, because some source files include both and
- // both need to be defined (the third_party copies will be in the
- // google::protobuf_opensource namespace).
- return MacroPrefix(options) + "_INCLUDED_" + filename_identifier;
- } else {
- // Ideally this case would use distinct include guards for opensource and
- // google3 protos also. (The behavior of "first #included wins" is not
- // ideal). But unfortunately some legacy code includes both and depends on
- // the identical include guards to avoid compile errors.
- //
- // We should clean this up so that this case can be removed.
- return "GOOGLE_PROTOBUF_INCLUDED_" + filename_identifier;
- }
-}
-
-// Returns the OptimizeMode for this file, furthermore it updates a status
-// bool if has_opt_codesize_extension is non-null. If this status bool is true
-// it means this file contains an extension that itself is defined as
-// optimized_for = CODE_SIZE.
-FileOptions_OptimizeMode GetOptimizeFor(const FileDescriptor* file,
- const Options& options,
- bool* has_opt_codesize_extension);
-inline FileOptions_OptimizeMode GetOptimizeFor(const FileDescriptor* file,
- const Options& options) {
- return GetOptimizeFor(file, options, nullptr);
-}
-inline bool NeedsEagerDescriptorAssignment(const FileDescriptor* file,
- const Options& options) {
- bool has_opt_codesize_extension;
- if (GetOptimizeFor(file, options, &has_opt_codesize_extension) ==
- FileOptions::CODE_SIZE &&
- has_opt_codesize_extension) {
- // If this filedescriptor contains an extension from another file which
- // is optimized_for = CODE_SIZE. We need to be careful in the ordering so
- // we eagerly build the descriptors in the dependencies before building
- // the descriptors of this file.
- return true;
- } else {
- // If we have a generated code based parser we never need eager
- // initialization of descriptors of our deps.
- return false;
- }
-}
-
-// This orders the messages in a .pb.cc as it's outputted by file.cc
-void FlattenMessagesInFile(const FileDescriptor* file,
- std::vector<const Descriptor*>* result);
-inline std::vector<const Descriptor*> FlattenMessagesInFile(
- const FileDescriptor* file) {
- std::vector<const Descriptor*> result;
- FlattenMessagesInFile(file, &result);
- return result;
-}
-
-template <typename F>
-void ForEachMessage(const Descriptor* descriptor, F&& func) {
- for (int i = 0; i < descriptor->nested_type_count(); i++)
- ForEachMessage(descriptor->nested_type(i), std::forward<F&&>(func));
- func(descriptor);
-}
-
-template <typename F>
-void ForEachMessage(const FileDescriptor* descriptor, F&& func) {
- for (int i = 0; i < descriptor->message_type_count(); i++)
- ForEachMessage(descriptor->message_type(i), std::forward<F&&>(func));
-}
-
-bool HasWeakFields(const Descriptor* desc, const Options& options);
-bool HasWeakFields(const FileDescriptor* desc, const Options& options);
-
-// Returns true if the "required" restriction check should be ignored for the
-// given field.
-inline static bool ShouldIgnoreRequiredFieldCheck(const FieldDescriptor* field,
- const Options& options) {
- // Do not check "required" for lazily verified lazy fields.
- return IsLazilyVerifiedLazy(field, options);
-}
-
-struct MessageAnalysis {
- bool is_recursive = false;
- bool contains_cord = false;
- bool contains_extension = false;
- bool contains_required = false;
- bool contains_weak = false; // Implicit weak as well.
-};
-
-// This class is used in FileGenerator, to ensure linear instead of
-// quadratic performance, if we do this per message we would get O(V*(V+E)).
-// Logically this is just only used in message.cc, but in the header for
-// FileGenerator to help share it.
-class PROTOC_EXPORT MessageSCCAnalyzer {
- public:
- explicit MessageSCCAnalyzer(const Options& options) : options_(options) {}
-
- MessageAnalysis GetSCCAnalysis(const SCC* scc);
-
- bool HasRequiredFields(const Descriptor* descriptor) {
- MessageAnalysis result = GetSCCAnalysis(GetSCC(descriptor));
- return result.contains_required || result.contains_extension;
- }
- bool HasWeakField(const Descriptor* descriptor) {
- MessageAnalysis result = GetSCCAnalysis(GetSCC(descriptor));
- return result.contains_weak;
- }
- const SCC* GetSCC(const Descriptor* descriptor) {
- return analyzer_.GetSCC(descriptor);
- }
-
- private:
- struct DepsGenerator {
- std::vector<const Descriptor*> operator()(const Descriptor* desc) const {
- std::vector<const Descriptor*> deps;
- for (int i = 0; i < desc->field_count(); i++) {
- if (desc->field(i)->message_type()) {
- deps.push_back(desc->field(i)->message_type());
- }
- }
- return deps;
- }
- };
- SCCAnalyzer<DepsGenerator> analyzer_;
- Options options_;
- std::map<const SCC*, MessageAnalysis> analysis_cache_;
-};
-
-void ListAllFields(const Descriptor* d,
- std::vector<const FieldDescriptor*>* fields);
-void ListAllFields(const FileDescriptor* d,
- std::vector<const FieldDescriptor*>* fields);
-
-template <class T>
-void ForEachField(const Descriptor* d, T&& func) {
- for (int i = 0; i < d->nested_type_count(); i++) {
- ForEachField(d->nested_type(i), std::forward<T&&>(func));
- }
- for (int i = 0; i < d->extension_count(); i++) {
- func(d->extension(i));
- }
- for (int i = 0; i < d->field_count(); i++) {
- func(d->field(i));
- }
-}
-
-template <class T>
-void ForEachField(const FileDescriptor* d, T&& func) {
- for (int i = 0; i < d->message_type_count(); i++) {
- ForEachField(d->message_type(i), std::forward<T&&>(func));
- }
- for (int i = 0; i < d->extension_count(); i++) {
- func(d->extension(i));
- }
-}
-
-void ListAllTypesForServices(const FileDescriptor* fd,
- std::vector<const Descriptor*>* types);
-
-// Indicates whether we should use implicit weak fields for this file.
-bool UsingImplicitWeakFields(const FileDescriptor* file,
- const Options& options);
-
-// Indicates whether to treat this field as implicitly weak.
-bool IsImplicitWeakField(const FieldDescriptor* field, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-
-inline bool HasSimpleBaseClass(const Descriptor* desc, const Options& options) {
- if (!HasDescriptorMethods(desc->file(), options)) return false;
- if (desc->extension_range_count() != 0) return false;
- if (desc->field_count() == 0) return true;
- // TODO(jorg): Support additional common message types with only one
- // or two fields
- return false;
-}
-
-inline bool HasSimpleBaseClasses(const FileDescriptor* file,
- const Options& options) {
- bool v = false;
- ForEachMessage(file, [&v, &options](const Descriptor* desc) {
- v |= HasSimpleBaseClass(desc, options);
- });
- return v;
-}
-
-inline std::string SimpleBaseClass(const Descriptor* desc,
- const Options& options) {
- if (!HasDescriptorMethods(desc->file(), options)) return "";
- if (desc->extension_range_count() != 0) return "";
- if (desc->field_count() == 0) {
- return "ZeroFieldsBase";
- }
- // TODO(jorg): Support additional common message types with only one
- // or two fields
- return "";
-}
-
-// Returns true if this message has a _tracker_ field.
-inline bool HasTracker(const Descriptor* desc, const Options& options) {
- return options.field_listener_options.inject_field_listener_events &&
- desc->file()->options().optimize_for() !=
- google::protobuf::FileOptions::LITE_RUNTIME;
-}
-
-// Returns true if this message needs an Impl_ struct for it's data.
-inline bool HasImplData(const Descriptor* desc, const Options& options) {
- return !HasSimpleBaseClass(desc, options);
-}
-
-// Formatter is a functor class which acts as a closure around printer and
-// the variable map. It's much like printer->Print except it supports both named
-// variables that are substituted using a key value map and direct arguments. In
-// the format string $1$, $2$, etc... are substituted for the first, second, ...
-// direct argument respectively in the format call, it accepts both strings and
-// integers. The implementation verifies all arguments are used and are "first"
-// used in order of appearance in the argument list. For example,
-//
-// Format("return array[$1$];", 3) -> "return array[3];"
-// Format("array[$2$] = $1$;", "Bla", 3) -> FATAL error (wrong order)
-// Format("array[$1$] = $2$;", 3, "Bla") -> "array[3] = Bla;"
-//
-// The arguments can be used more than once like
-//
-// Format("array[$1$] = $2$; // Index = $1$", 3, "Bla") ->
-// "array[3] = Bla; // Index = 3"
-//
-// If you use more arguments use the following style to help the reader,
-//
-// Format("int $1$() {\n"
-// " array[$2$] = $3$;\n"
-// " return $4$;"
-// "}\n",
-// funname, // 1
-// idx, // 2
-// varname, // 3
-// retval); // 4
-//
-// but consider using named variables. Named variables like $foo$, with some
-// identifier foo, are looked up in the map. One additional feature is that
-// spaces are accepted between the '$' delimiters, $ foo$ will
-// substitute to " bar" if foo stands for "bar", but in case it's empty
-// will substitute to "". Hence, for example,
-//
-// Format(vars, "$dllexport $void fun();") -> "void fun();"
-// "__declspec(export) void fun();"
-//
-// which is convenient to prevent double, leading or trailing spaces.
-class PROTOC_EXPORT Formatter {
- public:
- explicit Formatter(io::Printer* printer) : printer_(printer) {}
- Formatter(io::Printer* printer,
- const std::map<std::string, std::string>& vars)
- : printer_(printer), vars_(vars) {}
-
- template <typename T>
- void Set(const std::string& key, const T& value) {
- vars_[key] = ToString(value);
- }
-
- void AddMap(const std::map<std::string, std::string>& vars) {
- for (const auto& keyval : vars) vars_[keyval.first] = keyval.second;
- }
-
- template <typename... Args>
- void operator()(const char* format, const Args&... args) const {
- printer_->FormatInternal({ToString(args)...}, vars_, format);
- }
-
- void Indent() const { printer_->Indent(); }
- void Outdent() const { printer_->Outdent(); }
- io::Printer* printer() const { return printer_; }
-
- class PROTOC_EXPORT ScopedIndenter {
- public:
- explicit ScopedIndenter(Formatter* format) : format_(format) {
- format_->Indent();
- }
- ~ScopedIndenter() { format_->Outdent(); }
-
- private:
- Formatter* format_;
- };
-
- PROTOBUF_NODISCARD ScopedIndenter ScopedIndent() {
- return ScopedIndenter(this);
- }
- template <typename... Args>
- PROTOBUF_NODISCARD ScopedIndenter ScopedIndent(const char* format,
- const Args&&... args) {
- (*this)(format, static_cast<Args&&>(args)...);
- return ScopedIndenter(this);
- }
-
- class PROTOC_EXPORT SaveState {
- public:
- explicit SaveState(Formatter* format)
- : format_(format), vars_(format->vars_) {}
- ~SaveState() { format_->vars_.swap(vars_); }
-
- private:
- Formatter* format_;
- std::map<std::string, std::string> vars_;
- };
-
- private:
- io::Printer* printer_;
- std::map<std::string, std::string> vars_;
-
- // Convenience overloads to accept different types as arguments.
- static std::string ToString(const std::string& s) { return s; }
- template <typename I, typename = typename std::enable_if<
- std::is_integral<I>::value>::type>
- static std::string ToString(I x) {
- return StrCat(x);
- }
- static std::string ToString(strings::Hex x) { return StrCat(x); }
- static std::string ToString(const FieldDescriptor* d) { return Payload(d); }
- static std::string ToString(const Descriptor* d) { return Payload(d); }
- static std::string ToString(const EnumDescriptor* d) { return Payload(d); }
- static std::string ToString(const EnumValueDescriptor* d) {
- return Payload(d);
- }
- static std::string ToString(const OneofDescriptor* d) { return Payload(d); }
-
- template <typename Descriptor>
- static std::string Payload(const Descriptor* descriptor) {
- std::vector<int> path;
- descriptor->GetLocationPath(&path);
- GeneratedCodeInfo::Annotation annotation;
- for (int index : path) {
- annotation.add_path(index);
- }
- annotation.set_source_file(descriptor->file()->name());
- return annotation.SerializeAsString();
- }
-};
-
-template <class T>
-void PrintFieldComment(const Formatter& format, const T* field) {
- // Print the field's (or oneof's) proto-syntax definition as a comment.
- // We don't want to print group bodies so we cut off after the first
- // line.
- DebugStringOptions options;
- options.elide_group_body = true;
- options.elide_oneof_body = true;
- std::string def = field->DebugStringWithOptions(options);
- format("// $1$\n", def.substr(0, def.find_first_of('\n')));
-}
-
-class PROTOC_EXPORT NamespaceOpener {
- public:
- explicit NamespaceOpener(const Formatter& format)
- : printer_(format.printer()) {}
- NamespaceOpener(const std::string& name, const Formatter& format)
- : NamespaceOpener(format) {
- ChangeTo(name);
- }
- ~NamespaceOpener() { ChangeTo(""); }
-
- void ChangeTo(const std::string& name) {
- std::vector<std::string> new_stack_ =
- Split(name, "::", true);
- size_t len = std::min(name_stack_.size(), new_stack_.size());
- size_t common_idx = 0;
- while (common_idx < len) {
- if (name_stack_[common_idx] != new_stack_[common_idx]) break;
- common_idx++;
- }
- for (auto it = name_stack_.crbegin();
- it != name_stack_.crend() - common_idx; ++it) {
- if (*it == "PROTOBUF_NAMESPACE_ID") {
- printer_->Print("PROTOBUF_NAMESPACE_CLOSE\n");
- } else {
- printer_->Print("} // namespace $ns$\n", "ns", *it);
- }
- }
- name_stack_.swap(new_stack_);
- for (size_t i = common_idx; i < name_stack_.size(); ++i) {
- if (name_stack_[i] == "PROTOBUF_NAMESPACE_ID") {
- printer_->Print("PROTOBUF_NAMESPACE_OPEN\n");
- } else {
- printer_->Print("namespace $ns$ {\n", "ns", name_stack_[i]);
- }
- }
- }
-
- private:
- io::Printer* printer_;
- std::vector<std::string> name_stack_;
-};
-
-enum class Utf8CheckMode {
- kStrict = 0, // Parsing will fail if non UTF-8 data is in string fields.
- kVerify = 1, // Only log an error but parsing will succeed.
- kNone = 2, // No UTF-8 check.
-};
-
-Utf8CheckMode GetUtf8CheckMode(const FieldDescriptor* field,
- const Options& options);
-
-void GenerateUtf8CheckCodeForString(const FieldDescriptor* field,
- const Options& options, bool for_parse,
- const char* parameters,
- const Formatter& format);
-
-void GenerateUtf8CheckCodeForCord(const FieldDescriptor* field,
- const Options& options, bool for_parse,
- const char* parameters,
- const Formatter& format);
-
-template <typename T>
-struct FieldRangeImpl {
- struct Iterator {
- using iterator_category = std::forward_iterator_tag;
- using value_type = const FieldDescriptor*;
- using difference_type = int;
-
- value_type operator*() { return descriptor->field(idx); }
-
- friend bool operator==(const Iterator& a, const Iterator& b) {
- GOOGLE_DCHECK(a.descriptor == b.descriptor);
- return a.idx == b.idx;
- }
- friend bool operator!=(const Iterator& a, const Iterator& b) {
- return !(a == b);
- }
-
- Iterator& operator++() {
- idx++;
- return *this;
- }
-
- int idx;
- const T* descriptor;
- };
-
- Iterator begin() const { return {0, descriptor}; }
- Iterator end() const { return {descriptor->field_count(), descriptor}; }
-
- const T* descriptor;
-};
-
-template <typename T>
-FieldRangeImpl<T> FieldRange(const T* desc) {
- return {desc};
-}
-
-struct OneOfRangeImpl {
- struct Iterator {
- using iterator_category = std::forward_iterator_tag;
- using value_type = const OneofDescriptor*;
- using difference_type = int;
-
- value_type operator*() { return descriptor->oneof_decl(idx); }
-
- friend bool operator==(const Iterator& a, const Iterator& b) {
- GOOGLE_DCHECK(a.descriptor == b.descriptor);
- return a.idx == b.idx;
- }
- friend bool operator!=(const Iterator& a, const Iterator& b) {
- return !(a == b);
- }
-
- Iterator& operator++() {
- idx++;
- return *this;
- }
-
- int idx;
- const Descriptor* descriptor;
- };
-
- Iterator begin() const { return {0, descriptor}; }
- Iterator end() const {
- return {descriptor->real_oneof_decl_count(), descriptor};
- }
-
- const Descriptor* descriptor;
-};
-
-inline OneOfRangeImpl OneOfRange(const Descriptor* desc) { return {desc}; }
-
-PROTOC_EXPORT std::string StripProto(const std::string& filename);
-
-bool EnableMessageOwnedArena(const Descriptor* desc, const Options& options);
-
-bool EnableMessageOwnedArenaTrial(const Descriptor* desc,
- const Options& options);
-
-bool ShouldVerify(const Descriptor* descriptor, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-bool ShouldVerify(const FileDescriptor* file, const Options& options,
- MessageSCCAnalyzer* scc_analyzer);
-
-// Indicates whether to use predefined verify methods for a given message. If a
-// message is "simple" and needs no special verification per field (e.g. message
-// field, repeated packed, UTF8 string, etc.), we can use either VerifySimple or
-// VerifySimpleAlwaysCheckInt32 methods as all verification can be done based on
-// the wire type.
-//
-// Otherwise, we need "custom" verify methods tailored to a message to pass
-// which field needs a special verification; i.e. InternalVerify.
-enum class VerifySimpleType {
- kSimpleInt32Never, // Use VerifySimple
- kSimpleInt32Always, // Use VerifySimpleAlwaysCheckInt32
- kCustom, // Use InternalVerify and check only for int32
- kCustomInt32Never, // Use InternalVerify but never check for int32
- kCustomInt32Always, // Use InternalVerify and always check for int32
-};
-
-// Returns VerifySimpleType if messages can be verified by predefined methods.
-VerifySimpleType ShouldVerifySimple(const Descriptor* descriptor);
-
-bool IsUtf8String(const FieldDescriptor* field);
-
-bool HasMessageFieldOrExtension(const Descriptor* desc);
-
-} // namespace cpp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CPP_HELPERS_H__
diff --git a/include/google/protobuf/compiler/cpp/names.h b/include/google/protobuf/compiler/cpp/names.h
deleted file mode 100644
index 7404ac530f..0000000000
--- a/include/google/protobuf/compiler/cpp/names.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_NAMES_H__
-#define GOOGLE_PROTOBUF_COMPILER_CPP_NAMES_H__
-
-#include <string>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Descriptor;
-class EnumDescriptor;
-class EnumValueDescriptor;
-class FieldDescriptor;
-
-namespace compiler {
-namespace cpp {
-
-// Returns the unqualified C++ name.
-//
-// For example, if you had:
-// package foo.bar;
-// message Baz { message Moo {} }
-// Then the non-qualified version would be:
-// Baz_Moo
-std::string ClassName(const Descriptor* descriptor);
-std::string ClassName(const EnumDescriptor* enum_descriptor);
-
-// Returns the fully qualified C++ name.
-//
-// For example, if you had:
-// package foo.bar;
-// message Baz { message Moo {} }
-// Then the qualified ClassName for Moo would be:
-// ::foo::bar::Baz_Moo
-std::string QualifiedClassName(const Descriptor* d);
-std::string QualifiedClassName(const EnumDescriptor* d);
-std::string QualifiedExtensionName(const FieldDescriptor* d);
-
-// Get the (unqualified) name that should be used for this field in C++ code.
-// The name is coerced to lower-case to emulate proto1 behavior. People
-// should be using lowercase-with-underscores style for proto field names
-// anyway, so normally this just returns field->name().
-std::string FieldName(const FieldDescriptor* field);
-
-// Requires that this field is in a oneof. Returns the (unqualified) case
-// constant for this field.
-std::string OneofCaseConstantName(const FieldDescriptor* field);
-// Returns the quafilied case constant for this field.
-std::string QualifiedOneofCaseConstantName(const FieldDescriptor* field);
-
-// Get the (unqualified) name that should be used for this enum value in C++
-// code.
-std::string EnumValueName(const EnumValueDescriptor* enum_value);
-
-// Strips ".proto" or ".protodevel" from the end of a filename.
-PROTOC_EXPORT std::string StripProto(const std::string& filename);
-
-} // namespace cpp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CPP_NAMES_H__
diff --git a/include/google/protobuf/compiler/csharp/csharp_doc_comment.h b/include/google/protobuf/compiler/csharp/csharp_doc_comment.h
deleted file mode 100644
index 75eb0ea04d..0000000000
--- a/include/google/protobuf/compiler/csharp/csharp_doc_comment.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CSHARP_DOC_COMMENT_H__
-#define GOOGLE_PROTOBUF_COMPILER_CSHARP_DOC_COMMENT_H__
-
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/descriptor.h>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace csharp {
- void WriteMessageDocComment(io::Printer* printer, const Descriptor* message);
- void WritePropertyDocComment(io::Printer* printer, const FieldDescriptor* field);
- void WriteEnumDocComment(io::Printer* printer, const EnumDescriptor* enumDescriptor);
- void WriteEnumValueDocComment(io::Printer* printer, const EnumValueDescriptor* value);
- void WriteMethodDocComment(io::Printer* printer, const MethodDescriptor* method);
-} // namespace csharp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-#endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_DOC_COMMENT_H__
diff --git a/include/google/protobuf/compiler/csharp/csharp_generator.h b/include/google/protobuf/compiler/csharp/csharp_generator.h
deleted file mode 100644
index f41f9b8358..0000000000
--- a/include/google/protobuf/compiler/csharp/csharp_generator.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Generates C# code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CSHARP_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_CSHARP_GENERATOR_H__
-
-#include <string>
-
-#include <google/protobuf/compiler/code_generator.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace csharp {
-
-// CodeGenerator implementation which generates a C# source file and
-// header. If you create your own protocol compiler binary and you want
-// it to support C# output, you can do so by registering an instance of this
-// CodeGenerator with the CommandLineInterface in your main() function.
-class PROTOC_EXPORT Generator : public CodeGenerator {
- public:
- Generator();
- ~Generator();
- bool Generate(
- const FileDescriptor* file,
- const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
- uint64_t GetSupportedFeatures() const override;
-};
-
-} // namespace csharp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/csharp/csharp_names.h b/include/google/protobuf/compiler/csharp/csharp_names.h
deleted file mode 100644
index 67e53b6401..0000000000
--- a/include/google/protobuf/compiler/csharp/csharp_names.h
+++ /dev/null
@@ -1,109 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Provides a mechanism for mapping a descriptor to the
-// fully-qualified name of the corresponding C# class.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CSHARP_NAMES_H__
-#define GOOGLE_PROTOBUF_COMPILER_CSHARP_NAMES_H__
-
-#include <string>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/common.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Descriptor;
-class EnumDescriptor;
-class FileDescriptor;
-class ServiceDescriptor;
-
-namespace compiler {
-namespace csharp {
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The namespace to use for given file descriptor.
-std::string PROTOC_EXPORT GetFileNamespace(const FileDescriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified C# class name.
-std::string PROTOC_EXPORT GetClassName(const Descriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified name of the C# class that provides
-// access to the file descriptor. Proto compiler generates
-// such class for each .proto file processed.
-std::string PROTOC_EXPORT
-GetReflectionClassName(const FileDescriptor* descriptor);
-
-// Generates output file name for given file descriptor. If generate_directories
-// is true, the output file will be put under directory corresponding to file's
-// namespace. base_namespace can be used to strip some of the top level
-// directories. E.g. for file with namespace "Bar.Foo" and base_namespace="Bar",
-// the resulting file will be put under directory "Foo" (and not "Bar/Foo").
-//
-// Requires:
-// descriptor != NULL
-// error != NULL
-//
-// Returns:
-// The file name to use as output file for given file descriptor. In case
-// of failure, this function will return empty string and error parameter
-// will contain the error message.
-std::string PROTOC_EXPORT GetOutputFile(const FileDescriptor* descriptor,
- const std::string file_extension,
- const bool generate_directories,
- const std::string base_namespace,
- std::string* error);
-
-} // namespace csharp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_NAMES_H__
diff --git a/include/google/protobuf/compiler/csharp/csharp_options.h b/include/google/protobuf/compiler/csharp/csharp_options.h
deleted file mode 100644
index 42ff6d8662..0000000000
--- a/include/google/protobuf/compiler/csharp/csharp_options.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_CSHARP_OPTIONS_H__
-#define GOOGLE_PROTOBUF_COMPILER_CSHARP_OPTIONS_H__
-
-#include <string>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace csharp {
-
-// Generator options (used by csharp_generator.cc):
-struct Options {
- Options() :
- file_extension(".cs"),
- base_namespace(""),
- base_namespace_specified(false),
- internal_access(false),
- serializable(false) {
- }
- // Extension of the generated file. Defaults to ".cs"
- std::string file_extension;
- // Base namespace to use to create directory hierarchy. Defaults to "".
- // This option allows the simple creation of a conventional C# file layout,
- // where directories are created relative to a project-specific base
- // namespace. For example, in a project with a base namespace of PetShop, a
- // proto of user.proto with a C# namespace of PetShop.Model.Shared would
- // generate Model/Shared/User.cs underneath the specified --csharp_out
- // directory.
- //
- // If no base namespace is specified, all files are generated in the
- // --csharp_out directory, with no subdirectories created automatically.
- std::string base_namespace;
- // Whether the base namespace has been explicitly specified by the user.
- // This is required as the base namespace can be explicitly set to the empty
- // string, meaning "create a full directory hierarchy, starting from the first
- // segment of the namespace."
- bool base_namespace_specified;
- // Whether the generated classes should have accessibility level of "internal".
- // Defaults to false that generates "public" classes.
- bool internal_access;
- // Whether the generated classes should have a global::System.Serializable attribute added
- // Defaults to false
- bool serializable;
-};
-
-} // namespace csharp
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_COMPILER_CSHARP_OPTIONS_H__
diff --git a/include/google/protobuf/compiler/importer.h b/include/google/protobuf/compiler/importer.h
deleted file mode 100644
index 2fb88b923e..0000000000
--- a/include/google/protobuf/compiler/importer.h
+++ /dev/null
@@ -1,338 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file is the public interface to the .proto file parser.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_IMPORTER_H__
-#define GOOGLE_PROTOBUF_COMPILER_IMPORTER_H__
-
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include <google/protobuf/compiler/parser.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/descriptor_database.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-namespace io {
-class ZeroCopyInputStream;
-}
-
-namespace compiler {
-
-// Defined in this file.
-class Importer;
-class MultiFileErrorCollector;
-class SourceTree;
-class DiskSourceTree;
-
-// TODO(kenton): Move all SourceTree stuff to a separate file?
-
-// An implementation of DescriptorDatabase which loads files from a SourceTree
-// and parses them.
-//
-// Note: This class is not thread-safe since it maintains a table of source
-// code locations for error reporting. However, when a DescriptorPool wraps
-// a DescriptorDatabase, it uses mutex locking to make sure only one method
-// of the database is called at a time, even if the DescriptorPool is used
-// from multiple threads. Therefore, there is only a problem if you create
-// multiple DescriptorPools wrapping the same SourceTreeDescriptorDatabase
-// and use them from multiple threads.
-//
-// Note: This class does not implement FindFileContainingSymbol() or
-// FindFileContainingExtension(); these will always return false.
-class PROTOBUF_EXPORT SourceTreeDescriptorDatabase : public DescriptorDatabase {
- public:
- SourceTreeDescriptorDatabase(SourceTree* source_tree);
-
- // If non-NULL, fallback_database will be checked if a file doesn't exist in
- // the specified source_tree.
- SourceTreeDescriptorDatabase(SourceTree* source_tree,
- DescriptorDatabase* fallback_database);
- ~SourceTreeDescriptorDatabase() override;
-
- // Instructs the SourceTreeDescriptorDatabase to report any parse errors
- // to the given MultiFileErrorCollector. This should be called before
- // parsing. error_collector must remain valid until either this method
- // is called again or the SourceTreeDescriptorDatabase is destroyed.
- void RecordErrorsTo(MultiFileErrorCollector* error_collector) {
- error_collector_ = error_collector;
- }
-
- // Gets a DescriptorPool::ErrorCollector which records errors to the
- // MultiFileErrorCollector specified with RecordErrorsTo(). This collector
- // has the ability to determine exact line and column numbers of errors
- // from the information given to it by the DescriptorPool.
- DescriptorPool::ErrorCollector* GetValidationErrorCollector() {
- using_validation_error_collector_ = true;
- return &validation_error_collector_;
- }
-
- // implements DescriptorDatabase -----------------------------------
- bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) override;
- bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) override;
- bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) override;
-
- private:
- class SingleFileErrorCollector;
-
- SourceTree* source_tree_;
- DescriptorDatabase* fallback_database_;
- MultiFileErrorCollector* error_collector_;
-
- class PROTOBUF_EXPORT ValidationErrorCollector
- : public DescriptorPool::ErrorCollector {
- public:
- ValidationErrorCollector(SourceTreeDescriptorDatabase* owner);
- ~ValidationErrorCollector() override;
-
- // implements ErrorCollector ---------------------------------------
- void AddError(const std::string& filename, const std::string& element_name,
- const Message* descriptor, ErrorLocation location,
- const std::string& message) override;
-
- void AddWarning(const std::string& filename,
- const std::string& element_name, const Message* descriptor,
- ErrorLocation location,
- const std::string& message) override;
-
- private:
- SourceTreeDescriptorDatabase* owner_;
- };
- friend class ValidationErrorCollector;
-
- bool using_validation_error_collector_;
- SourceLocationTable source_locations_;
- ValidationErrorCollector validation_error_collector_;
-};
-
-// Simple interface for parsing .proto files. This wraps the process
-// of opening the file, parsing it with a Parser, recursively parsing all its
-// imports, and then cross-linking the results to produce a FileDescriptor.
-//
-// This is really just a thin wrapper around SourceTreeDescriptorDatabase.
-// You may find that SourceTreeDescriptorDatabase is more flexible.
-//
-// TODO(kenton): I feel like this class is not well-named.
-class PROTOBUF_EXPORT Importer {
- public:
- Importer(SourceTree* source_tree, MultiFileErrorCollector* error_collector);
- ~Importer();
-
- // Import the given file and build a FileDescriptor representing it. If
- // the file is already in the DescriptorPool, the existing FileDescriptor
- // will be returned. The FileDescriptor is property of the DescriptorPool,
- // and will remain valid until it is destroyed. If any errors occur, they
- // will be reported using the error collector and Import() will return NULL.
- //
- // A particular Importer object will only report errors for a particular
- // file once. All future attempts to import the same file will return NULL
- // without reporting any errors. The idea is that you might want to import
- // a lot of files without seeing the same errors over and over again. If
- // you want to see errors for the same files repeatedly, you can use a
- // separate Importer object to import each one (but use the same
- // DescriptorPool so that they can be cross-linked).
- const FileDescriptor* Import(const std::string& filename);
-
- // The DescriptorPool in which all imported FileDescriptors and their
- // contents are stored.
- inline const DescriptorPool* pool() const { return &pool_; }
-
- void AddUnusedImportTrackFile(const std::string& file_name,
- bool is_error = false);
- void ClearUnusedImportTrackFiles();
-
-
- private:
- SourceTreeDescriptorDatabase database_;
- DescriptorPool pool_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Importer);
-};
-
-// If the importer encounters problems while trying to import the proto files,
-// it reports them to a MultiFileErrorCollector.
-class PROTOBUF_EXPORT MultiFileErrorCollector {
- public:
- inline MultiFileErrorCollector() {}
- virtual ~MultiFileErrorCollector();
-
- // Line and column numbers are zero-based. A line number of -1 indicates
- // an error with the entire file (e.g. "not found").
- virtual void AddError(const std::string& filename, int line, int column,
- const std::string& message) = 0;
-
- virtual void AddWarning(const std::string& /* filename */, int /* line */,
- int /* column */, const std::string& /* message */) {}
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MultiFileErrorCollector);
-};
-
-// Abstract interface which represents a directory tree containing proto files.
-// Used by the default implementation of Importer to resolve import statements
-// Most users will probably want to use the DiskSourceTree implementation,
-// below.
-class PROTOBUF_EXPORT SourceTree {
- public:
- inline SourceTree() {}
- virtual ~SourceTree();
-
- // Open the given file and return a stream that reads it, or NULL if not
- // found. The caller takes ownership of the returned object. The filename
- // must be a path relative to the root of the source tree and must not
- // contain "." or ".." components.
- virtual io::ZeroCopyInputStream* Open(const std::string& filename) = 0;
-
- // If Open() returns NULL, calling this method immediately will return an
- // description of the error.
- // Subclasses should implement this method and return a meaningful value for
- // better error reporting.
- // TODO(xiaofeng): change this to a pure virtual function.
- virtual std::string GetLastErrorMessage();
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(SourceTree);
-};
-
-// An implementation of SourceTree which loads files from locations on disk.
-// Multiple mappings can be set up to map locations in the DiskSourceTree to
-// locations in the physical filesystem.
-class PROTOBUF_EXPORT DiskSourceTree : public SourceTree {
- public:
- DiskSourceTree();
- ~DiskSourceTree() override;
-
- // Map a path on disk to a location in the SourceTree. The path may be
- // either a file or a directory. If it is a directory, the entire tree
- // under it will be mapped to the given virtual location. To map a directory
- // to the root of the source tree, pass an empty string for virtual_path.
- //
- // If multiple mapped paths apply when opening a file, they will be searched
- // in order. For example, if you do:
- // MapPath("bar", "foo/bar");
- // MapPath("", "baz");
- // and then you do:
- // Open("bar/qux");
- // the DiskSourceTree will first try to open foo/bar/qux, then baz/bar/qux,
- // returning the first one that opens successfully.
- //
- // disk_path may be an absolute path or relative to the current directory,
- // just like a path you'd pass to open().
- void MapPath(const std::string& virtual_path, const std::string& disk_path);
-
- // Return type for DiskFileToVirtualFile().
- enum DiskFileToVirtualFileResult {
- SUCCESS,
- SHADOWED,
- CANNOT_OPEN,
- NO_MAPPING
- };
-
- // Given a path to a file on disk, find a virtual path mapping to that
- // file. The first mapping created with MapPath() whose disk_path contains
- // the filename is used. However, that virtual path may not actually be
- // usable to open the given file. Possible return values are:
- // * SUCCESS: The mapping was found. *virtual_file is filled in so that
- // calling Open(*virtual_file) will open the file named by disk_file.
- // * SHADOWED: A mapping was found, but using Open() to open this virtual
- // path will end up returning some different file. This is because some
- // other mapping with a higher precedence also matches this virtual path
- // and maps it to a different file that exists on disk. *virtual_file
- // is filled in as it would be in the SUCCESS case. *shadowing_disk_file
- // is filled in with the disk path of the file which would be opened if
- // you were to call Open(*virtual_file).
- // * CANNOT_OPEN: The mapping was found and was not shadowed, but the
- // file specified cannot be opened. When this value is returned,
- // errno will indicate the reason the file cannot be opened. *virtual_file
- // will be set to the virtual path as in the SUCCESS case, even though
- // it is not useful.
- // * NO_MAPPING: Indicates that no mapping was found which contains this
- // file.
- DiskFileToVirtualFileResult DiskFileToVirtualFile(
- const std::string& disk_file, std::string* virtual_file,
- std::string* shadowing_disk_file);
-
- // Given a virtual path, find the path to the file on disk.
- // Return true and update disk_file with the on-disk path if the file exists.
- // Return false and leave disk_file untouched if the file doesn't exist.
- bool VirtualFileToDiskFile(const std::string& virtual_file,
- std::string* disk_file);
-
- // implements SourceTree -------------------------------------------
- io::ZeroCopyInputStream* Open(const std::string& filename) override;
-
- std::string GetLastErrorMessage() override;
-
- private:
- struct Mapping {
- std::string virtual_path;
- std::string disk_path;
-
- inline Mapping(const std::string& virtual_path_param,
- const std::string& disk_path_param)
- : virtual_path(virtual_path_param), disk_path(disk_path_param) {}
- };
- std::vector<Mapping> mappings_;
- std::string last_error_message_;
-
- // Like Open(), but returns the on-disk path in disk_file if disk_file is
- // non-NULL and the file could be successfully opened.
- io::ZeroCopyInputStream* OpenVirtualFile(const std::string& virtual_file,
- std::string* disk_file);
-
- // Like Open() but given the actual on-disk path.
- io::ZeroCopyInputStream* OpenDiskFile(const std::string& filename);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DiskSourceTree);
-};
-
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_IMPORTER_H__
diff --git a/include/google/protobuf/compiler/java/generator.h b/include/google/protobuf/compiler/java/generator.h
deleted file mode 100644
index bbc71700c6..0000000000
--- a/include/google/protobuf/compiler/java/generator.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Generates Java code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
-
-#include <string>
-#include <google/protobuf/compiler/code_generator.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace java {
-
-// CodeGenerator implementation which generates Java code. If you create your
-// own protocol compiler binary and you want it to support Java output, you
-// can do so by registering an instance of this CodeGenerator with the
-// CommandLineInterface in your main() function.
-class PROTOC_EXPORT JavaGenerator : public CodeGenerator {
- public:
- JavaGenerator();
- ~JavaGenerator() override;
-
- // implements CodeGenerator ----------------------------------------
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* context, std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(JavaGenerator);
-};
-
-} // namespace java
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/java/java_generator.h b/include/google/protobuf/compiler/java/java_generator.h
deleted file mode 100644
index 294b1bde02..0000000000
--- a/include/google/protobuf/compiler/java/java_generator.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_JAVA_GENERATOR_H_
-#define GOOGLE_PROTOBUF_COMPILER_JAVA_JAVA_GENERATOR_H_
-
-#include <google/protobuf/compiler/java/generator.h>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_JAVA_GENERATOR_H_
diff --git a/include/google/protobuf/compiler/java/kotlin_generator.h b/include/google/protobuf/compiler/java/kotlin_generator.h
deleted file mode 100644
index ccd9688ca0..0000000000
--- a/include/google/protobuf/compiler/java/kotlin_generator.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Generates Kotlin code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_KOTLIN_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_JAVA_KOTLIN_GENERATOR_H__
-
-#include <string>
-
-#include <google/protobuf/compiler/code_generator.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace java {
-
-// CodeGenerator implementation which generates Kotlin code. If you create your
-// own protocol compiler binary and you want it to support Kotlin output, you
-// can do so by registering an instance of this CodeGenerator with the
-// CommandLineInterface in your main() function.
-class PROTOC_EXPORT KotlinGenerator : public CodeGenerator {
- public:
- KotlinGenerator();
- ~KotlinGenerator() override;
-
- // implements CodeGenerator ----------------------------------------
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* context, std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(KotlinGenerator);
-};
-
-} // namespace java
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_KOTLIN_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/java/names.h b/include/google/protobuf/compiler/java/names.h
deleted file mode 100644
index 313ace4feb..0000000000
--- a/include/google/protobuf/compiler/java/names.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Provides a mechanism for mapping a descriptor to the
-// fully-qualified name of the corresponding Java class.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_NAMES_H__
-#define GOOGLE_PROTOBUF_COMPILER_JAVA_NAMES_H__
-
-#include <string>
-
-namespace google {
-namespace protobuf {
-
-class Descriptor;
-class EnumDescriptor;
-class FileDescriptor;
-class FieldDescriptor;
-class ServiceDescriptor;
-
-namespace compiler {
-namespace java {
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified Java class name.
-std::string ClassName(const Descriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified Java class name.
-std::string ClassName(const EnumDescriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified Java class name.
-std::string ClassName(const FileDescriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// The fully-qualified Java class name.
-std::string ClassName(const ServiceDescriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-//
-// Returns:
-// Java package name.
-std::string FileJavaPackage(const FileDescriptor* descriptor);
-
-// Requires:
-// descriptor != NULL
-// Returns:
-// Capitalized camel case name field name.
-std::string CapitalizedFieldName(const FieldDescriptor* descriptor);
-
-} // namespace java
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_NAMES_H__
diff --git a/include/google/protobuf/compiler/objectivec/objectivec_generator.h b/include/google/protobuf/compiler/objectivec/objectivec_generator.h
deleted file mode 100644
index 1dbc666af1..0000000000
--- a/include/google/protobuf/compiler/objectivec/objectivec_generator.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Generates ObjectiveC code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_GENERATOR_H__
-
-#include <string>
-#include <google/protobuf/compiler/code_generator.h>
-#include <google/protobuf/descriptor.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace objectivec {
-
-// CodeGenerator implementation which generates a ObjectiveC source file and
-// header. If you create your own protocol compiler binary and you want it to
-// support ObjectiveC output, you can do so by registering an instance of this
-// CodeGenerator with the CommandLineInterface in your main() function.
-class PROTOC_EXPORT ObjectiveCGenerator : public CodeGenerator {
- public:
- ObjectiveCGenerator();
- ~ObjectiveCGenerator();
-
- ObjectiveCGenerator(const ObjectiveCGenerator&) = delete;
- ObjectiveCGenerator& operator=(const ObjectiveCGenerator&) = delete;
-
- // implements CodeGenerator ----------------------------------------
- bool HasGenerateAll() const override;
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* context, std::string* error) const override;
- bool GenerateAll(const std::vector<const FileDescriptor*>& files,
- const std::string& parameter, GeneratorContext* context,
- std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override {
- return FEATURE_PROTO3_OPTIONAL;
- }
-};
-
-} // namespace objectivec
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/objectivec/objectivec_helpers.h b/include/google/protobuf/compiler/objectivec/objectivec_helpers.h
deleted file mode 100644
index d21fed215a..0000000000
--- a/include/google/protobuf/compiler/objectivec/objectivec_helpers.h
+++ /dev/null
@@ -1,353 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Helper functions for generating ObjectiveC code.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
-#define GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
-
-#include <string>
-#include <vector>
-
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace objectivec {
-
-// Get/Set the path to a file to load for objc class prefix lookups.
-std::string PROTOC_EXPORT GetPackageToPrefixMappingsPath();
-void PROTOC_EXPORT SetPackageToPrefixMappingsPath(
- const std::string& file_path);
-// Get/Set if the proto package should be used to make the default prefix for
-// symbols. This will then impact most of the type naming apis below. It is done
-// as a global to not break any other generator reusing the methods since they
-// are exported.
-bool PROTOC_EXPORT UseProtoPackageAsDefaultPrefix();
-void PROTOC_EXPORT SetUseProtoPackageAsDefaultPrefix(bool on_or_off);
-// Get/Set the path to a file to load as exceptions when
-// `UseProtoPackageAsDefaultPrefix()` is `true`. An empty string means there
-// should be no exceptions.
-std::string PROTOC_EXPORT GetProtoPackagePrefixExceptionList();
-void PROTOC_EXPORT SetProtoPackagePrefixExceptionList(
- const std::string& file_path);
-
-// Generator Prefix Validation Options (see objectivec_generator.cc for a
-// description of each):
-struct Options {
- Options();
- std::string expected_prefixes_path;
- std::vector<std::string> expected_prefixes_suppressions;
- bool prefixes_must_be_registered;
- bool require_prefixes;
-};
-
-// Escape C++ trigraphs by escaping question marks to "\?".
-std::string PROTOC_EXPORT EscapeTrigraphs(const std::string& to_escape);
-
-// Remove white space from either end of a StringPiece.
-void PROTOC_EXPORT TrimWhitespace(StringPiece* input);
-
-// Returns true if the name requires a ns_returns_not_retained attribute applied
-// to it.
-bool PROTOC_EXPORT IsRetainedName(const std::string& name);
-
-// Returns true if the name starts with "init" and will need to have special
-// handling under ARC.
-bool PROTOC_EXPORT IsInitName(const std::string& name);
-
-// Gets the objc_class_prefix or the prefix made from the proto package.
-std::string PROTOC_EXPORT FileClassPrefix(const FileDescriptor* file);
-
-// Gets the path of the file we're going to generate (sans the .pb.h
-// extension). The path will be dependent on the objectivec package
-// declared in the proto package.
-std::string PROTOC_EXPORT FilePath(const FileDescriptor* file);
-
-// Just like FilePath(), but without the directory part.
-std::string PROTOC_EXPORT FilePathBasename(const FileDescriptor* file);
-
-// Gets the name of the root class we'll generate in the file. This class
-// is not meant for external consumption, but instead contains helpers that
-// the rest of the classes need
-std::string PROTOC_EXPORT FileClassName(const FileDescriptor* file);
-
-// These return the fully-qualified class name corresponding to the given
-// descriptor.
-std::string PROTOC_EXPORT ClassName(const Descriptor* descriptor);
-std::string PROTOC_EXPORT ClassName(const Descriptor* descriptor,
- std::string* out_suffix_added);
-std::string PROTOC_EXPORT EnumName(const EnumDescriptor* descriptor);
-
-// Returns the fully-qualified name of the enum value corresponding to the
-// the descriptor.
-std::string PROTOC_EXPORT EnumValueName(const EnumValueDescriptor* descriptor);
-
-// Returns the name of the enum value corresponding to the descriptor.
-std::string PROTOC_EXPORT EnumValueShortName(const EnumValueDescriptor* descriptor);
-
-// Reverse what an enum does.
-std::string PROTOC_EXPORT UnCamelCaseEnumShortName(const std::string& name);
-
-// Returns the name to use for the extension (used as the method off the file's
-// Root class).
-std::string PROTOC_EXPORT ExtensionMethodName(const FieldDescriptor* descriptor);
-
-// Returns the transformed field name.
-std::string PROTOC_EXPORT FieldName(const FieldDescriptor* field);
-std::string PROTOC_EXPORT FieldNameCapitalized(const FieldDescriptor* field);
-
-// Returns the transformed oneof name.
-std::string PROTOC_EXPORT OneofEnumName(const OneofDescriptor* descriptor);
-std::string PROTOC_EXPORT OneofName(const OneofDescriptor* descriptor);
-std::string PROTOC_EXPORT OneofNameCapitalized(const OneofDescriptor* descriptor);
-
-// Returns a symbol that can be used in C code to refer to an Objective C
-// class without initializing the class.
-std::string PROTOC_EXPORT ObjCClass(const std::string& class_name);
-
-// Declares an Objective C class without initializing the class so that it can
-// be refrerred to by ObjCClass.
-std::string PROTOC_EXPORT ObjCClassDeclaration(const std::string& class_name);
-
-inline bool HasPreservingUnknownEnumSemantics(const FileDescriptor* file) {
- return file->syntax() == FileDescriptor::SYNTAX_PROTO3;
-}
-
-inline bool IsMapEntryMessage(const Descriptor* descriptor) {
- return descriptor->options().map_entry();
-}
-
-// Reverse of the above.
-std::string PROTOC_EXPORT UnCamelCaseFieldName(const std::string& name,
- const FieldDescriptor* field);
-
-enum ObjectiveCType {
- OBJECTIVECTYPE_INT32,
- OBJECTIVECTYPE_UINT32,
- OBJECTIVECTYPE_INT64,
- OBJECTIVECTYPE_UINT64,
- OBJECTIVECTYPE_FLOAT,
- OBJECTIVECTYPE_DOUBLE,
- OBJECTIVECTYPE_BOOLEAN,
- OBJECTIVECTYPE_STRING,
- OBJECTIVECTYPE_DATA,
- OBJECTIVECTYPE_ENUM,
- OBJECTIVECTYPE_MESSAGE
-};
-
-enum FlagType {
- FLAGTYPE_DESCRIPTOR_INITIALIZATION,
- FLAGTYPE_EXTENSION,
- FLAGTYPE_FIELD
-};
-
-template <class TDescriptor>
-std::string GetOptionalDeprecatedAttribute(const TDescriptor* descriptor,
- const FileDescriptor* file = NULL,
- bool preSpace = true,
- bool postNewline = false) {
- bool isDeprecated = descriptor->options().deprecated();
- // The file is only passed when checking Messages & Enums, so those types
- // get tagged. At the moment, it doesn't seem to make sense to tag every
- // field or enum value with when the file is deprecated.
- bool isFileLevelDeprecation = false;
- if (!isDeprecated && file) {
- isFileLevelDeprecation = file->options().deprecated();
- isDeprecated = isFileLevelDeprecation;
- }
- if (isDeprecated) {
- std::string message;
- const FileDescriptor* sourceFile = descriptor->file();
- if (isFileLevelDeprecation) {
- message = sourceFile->name() + " is deprecated.";
- } else {
- message = descriptor->full_name() + " is deprecated (see " +
- sourceFile->name() + ").";
- }
-
- std::string result = std::string("GPB_DEPRECATED_MSG(\"") + message + "\")";
- if (preSpace) {
- result.insert(0, " ");
- }
- if (postNewline) {
- result.append("\n");
- }
- return result;
- } else {
- return "";
- }
-}
-
-std::string PROTOC_EXPORT GetCapitalizedType(const FieldDescriptor* field);
-
-ObjectiveCType PROTOC_EXPORT
-GetObjectiveCType(FieldDescriptor::Type field_type);
-
-inline ObjectiveCType GetObjectiveCType(const FieldDescriptor* field) {
- return GetObjectiveCType(field->type());
-}
-
-bool PROTOC_EXPORT IsPrimitiveType(const FieldDescriptor* field);
-bool PROTOC_EXPORT IsReferenceType(const FieldDescriptor* field);
-
-std::string PROTOC_EXPORT
-GPBGenericValueFieldName(const FieldDescriptor* field);
-std::string PROTOC_EXPORT DefaultValue(const FieldDescriptor* field);
-bool PROTOC_EXPORT HasNonZeroDefaultValue(const FieldDescriptor* field);
-
-std::string PROTOC_EXPORT
-BuildFlagsString(const FlagType type, const std::vector<std::string>& strings);
-
-// Builds HeaderDoc/appledoc style comments out of the comments in the .proto
-// file.
-std::string PROTOC_EXPORT BuildCommentsString(const SourceLocation& location,
- bool prefer_single_line);
-
-// The name the commonly used by the library when built as a framework.
-// This lines up to the name used in the CocoaPod.
-extern PROTOC_EXPORT const char* const ProtobufLibraryFrameworkName;
-// Returns the CPP symbol name to use as the gate for framework style imports
-// for the given framework name to use.
-std::string PROTOC_EXPORT
-ProtobufFrameworkImportSymbol(const std::string& framework_name);
-
-// Checks if the file is one of the proto's bundled with the library.
-bool PROTOC_EXPORT
-IsProtobufLibraryBundledProtoFile(const FileDescriptor* file);
-
-// Checks the prefix for the given files and outputs any warnings as needed. If
-// there are flat out errors, then out_error is filled in with the first error
-// and the result is false.
-bool PROTOC_EXPORT ValidateObjCClassPrefixes(
- const std::vector<const FileDescriptor*>& files,
- const Options& validation_options, std::string* out_error);
-// Same was the other ValidateObjCClassPrefixes() calls, but the options all
-// come from the environment variables.
-bool PROTOC_EXPORT ValidateObjCClassPrefixes(
- const std::vector<const FileDescriptor*>& files, std::string* out_error);
-
-// Generate decode data needed for ObjC's GPBDecodeTextFormatName() to transform
-// the input into the expected output.
-class PROTOC_EXPORT TextFormatDecodeData {
- public:
- TextFormatDecodeData();
- ~TextFormatDecodeData();
-
- TextFormatDecodeData(const TextFormatDecodeData&) = delete;
- TextFormatDecodeData& operator=(const TextFormatDecodeData&) = delete;
-
- void AddString(int32_t key, const std::string& input_for_decode,
- const std::string& desired_output);
- size_t num_entries() const { return entries_.size(); }
- std::string Data() const;
-
- static std::string DecodeDataForString(const std::string& input_for_decode,
- const std::string& desired_output);
-
- private:
- typedef std::pair<int32_t, std::string> DataEntry;
- std::vector<DataEntry> entries_;
-};
-
-// Helper for parsing simple files.
-class PROTOC_EXPORT LineConsumer {
- public:
- LineConsumer();
- virtual ~LineConsumer();
- virtual bool ConsumeLine(const StringPiece& line, std::string* out_error) = 0;
-};
-
-bool PROTOC_EXPORT ParseSimpleFile(const std::string& path,
- LineConsumer* line_consumer,
- std::string* out_error);
-
-bool PROTOC_EXPORT ParseSimpleStream(io::ZeroCopyInputStream& input_stream,
- const std::string& stream_name,
- LineConsumer* line_consumer,
- std::string* out_error);
-
-// Helper class for parsing framework import mappings and generating
-// import statements.
-class PROTOC_EXPORT ImportWriter {
- public:
- ImportWriter(const std::string& generate_for_named_framework,
- const std::string& named_framework_to_proto_path_mappings_path,
- const std::string& runtime_import_prefix,
- bool include_wkt_imports);
- ~ImportWriter();
-
- void AddFile(const FileDescriptor* file, const std::string& header_extension);
- void Print(io::Printer* printer) const;
-
- static void PrintRuntimeImports(io::Printer* printer,
- const std::vector<std::string>& header_to_import,
- const std::string& runtime_import_prefix,
- bool default_cpp_symbol = false);
-
- private:
- class ProtoFrameworkCollector : public LineConsumer {
- public:
- ProtoFrameworkCollector(std::map<std::string, std::string>* inout_proto_file_to_framework_name)
- : map_(inout_proto_file_to_framework_name) {}
-
- virtual bool ConsumeLine(const StringPiece& line, std::string* out_error) override;
-
- private:
- std::map<std::string, std::string>* map_;
- };
-
- void ParseFrameworkMappings();
-
- const std::string generate_for_named_framework_;
- const std::string named_framework_to_proto_path_mappings_path_;
- const std::string runtime_import_prefix_;
- const bool include_wkt_imports_;
- std::map<std::string, std::string> proto_file_to_framework_name_;
- bool need_to_parse_mapping_file_;
-
- std::vector<std::string> protobuf_imports_;
- std::vector<std::string> other_framework_imports_;
- std::vector<std::string> other_imports_;
-};
-
-} // namespace objectivec
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
diff --git a/include/google/protobuf/compiler/parser.h b/include/google/protobuf/compiler/parser.h
deleted file mode 100644
index d4eb76302c..0000000000
--- a/include/google/protobuf/compiler/parser.h
+++ /dev/null
@@ -1,602 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Implements parsing of .proto files to FileDescriptorProtos.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_PARSER_H__
-#define GOOGLE_PROTOBUF_COMPILER_PARSER_H__
-
-#include <cstdint>
-#include <map>
-#include <string>
-#include <utility>
-
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/tokenizer.h>
-#include <google/protobuf/repeated_field.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Message;
-
-namespace compiler {
-
-// Defined in this file.
-class Parser;
-class SourceLocationTable;
-
-// Implements parsing of protocol definitions (such as .proto files).
-//
-// Note that most users will be more interested in the Importer class.
-// Parser is a lower-level class which simply converts a single .proto file
-// to a FileDescriptorProto. It does not resolve import directives or perform
-// many other kinds of validation needed to construct a complete
-// FileDescriptor.
-class PROTOBUF_EXPORT Parser {
- public:
- Parser();
- ~Parser();
-
- // Parse the entire input and construct a FileDescriptorProto representing
- // it. Returns true if no errors occurred, false otherwise.
- bool Parse(io::Tokenizer* input, FileDescriptorProto* file);
-
- // Optional features:
-
- // DEPRECATED: New code should use the SourceCodeInfo embedded in the
- // FileDescriptorProto.
- //
- // Requests that locations of certain definitions be recorded to the given
- // SourceLocationTable while parsing. This can be used to look up exact line
- // and column numbers for errors reported by DescriptorPool during validation.
- // Set to NULL (the default) to discard source location information.
- void RecordSourceLocationsTo(SourceLocationTable* location_table) {
- source_location_table_ = location_table;
- }
-
- // Requests that errors be recorded to the given ErrorCollector while
- // parsing. Set to NULL (the default) to discard error messages.
- void RecordErrorsTo(io::ErrorCollector* error_collector) {
- error_collector_ = error_collector;
- }
-
- // Returns the identifier used in the "syntax = " declaration, if one was
- // seen during the last call to Parse(), or the empty string otherwise.
- const std::string& GetSyntaxIdentifier() { return syntax_identifier_; }
-
- // If set true, input files will be required to begin with a syntax
- // identifier. Otherwise, files may omit this. If a syntax identifier
- // is provided, it must be 'syntax = "proto2";' and must appear at the
- // top of this file regardless of whether or not it was required.
- void SetRequireSyntaxIdentifier(bool value) {
- require_syntax_identifier_ = value;
- }
-
- // Call SetStopAfterSyntaxIdentifier(true) to tell the parser to stop
- // parsing as soon as it has seen the syntax identifier, or lack thereof.
- // This is useful for quickly identifying the syntax of the file without
- // parsing the whole thing. If this is enabled, no error will be recorded
- // if the syntax identifier is something other than "proto2" (since
- // presumably the caller intends to deal with that), but other kinds of
- // errors (e.g. parse errors) will still be reported. When this is enabled,
- // you may pass a NULL FileDescriptorProto to Parse().
- void SetStopAfterSyntaxIdentifier(bool value) {
- stop_after_syntax_identifier_ = value;
- }
-
- private:
- class LocationRecorder;
- struct MapField;
-
- // =================================================================
- // Error recovery helpers
-
- // Consume the rest of the current statement. This consumes tokens
- // until it sees one of:
- // ';' Consumes the token and returns.
- // '{' Consumes the brace then calls SkipRestOfBlock().
- // '}' Returns without consuming.
- // EOF Returns (can't consume).
- // The Parser often calls SkipStatement() after encountering a syntax
- // error. This allows it to go on parsing the following lines, allowing
- // it to report more than just one error in the file.
- void SkipStatement();
-
- // Consume the rest of the current block, including nested blocks,
- // ending after the closing '}' is encountered and consumed, or at EOF.
- void SkipRestOfBlock();
-
- // -----------------------------------------------------------------
- // Single-token consuming helpers
- //
- // These make parsing code more readable.
-
- // True if the current token is TYPE_END.
- inline bool AtEnd();
-
- // True if the next token matches the given text.
- inline bool LookingAt(const char* text);
- // True if the next token is of the given type.
- inline bool LookingAtType(io::Tokenizer::TokenType token_type);
-
- // If the next token exactly matches the text given, consume it and return
- // true. Otherwise, return false without logging an error.
- bool TryConsume(const char* text);
-
- // These attempt to read some kind of token from the input. If successful,
- // they return true. Otherwise they return false and add the given error
- // to the error list.
-
- // Consume a token with the exact text given.
- bool Consume(const char* text, const char* error);
- // Same as above, but automatically generates the error "Expected \"text\".",
- // where "text" is the expected token text.
- bool Consume(const char* text);
- // Consume a token of type IDENTIFIER and store its text in "output".
- bool ConsumeIdentifier(std::string* output, const char* error);
- // Consume an integer and store its value in "output".
- bool ConsumeInteger(int* output, const char* error);
- // Consume a signed integer and store its value in "output".
- bool ConsumeSignedInteger(int* output, const char* error);
- // Consume a 64-bit integer and store its value in "output". If the value
- // is greater than max_value, an error will be reported.
- bool ConsumeInteger64(uint64_t max_value, uint64_t* output,
- const char* error);
- // Consume a number and store its value in "output". This will accept
- // tokens of either INTEGER or FLOAT type.
- bool ConsumeNumber(double* output, const char* error);
- // Consume a string literal and store its (unescaped) value in "output".
- bool ConsumeString(std::string* output, const char* error);
-
- // Consume a token representing the end of the statement. Comments between
- // this token and the next will be harvested for documentation. The given
- // LocationRecorder should refer to the declaration that was just parsed;
- // it will be populated with these comments.
- //
- // TODO(kenton): The LocationRecorder is const because historically locations
- // have been passed around by const reference, for no particularly good
- // reason. We should probably go through and change them all to mutable
- // pointer to make this more intuitive.
- bool TryConsumeEndOfDeclaration(const char* text,
- const LocationRecorder* location);
- bool TryConsumeEndOfDeclarationFinishScope(const char* text,
- const LocationRecorder* location);
-
- bool ConsumeEndOfDeclaration(const char* text,
- const LocationRecorder* location);
-
- // -----------------------------------------------------------------
- // Error logging helpers
-
- // Invokes error_collector_->AddError(), if error_collector_ is not NULL.
- void AddError(int line, int column, const std::string& error);
-
- // Invokes error_collector_->AddError() with the line and column number
- // of the current token.
- void AddError(const std::string& error);
-
- // Invokes error_collector_->AddWarning() with the line and column number
- // of the current token.
- void AddWarning(const std::string& warning);
-
- // Records a location in the SourceCodeInfo.location table (see
- // descriptor.proto). We use RAII to ensure that the start and end locations
- // are recorded -- the constructor records the start location and the
- // destructor records the end location. Since the parser is
- // recursive-descent, this works out beautifully.
- class PROTOBUF_EXPORT LocationRecorder {
- public:
- // Construct the file's "root" location.
- LocationRecorder(Parser* parser);
-
- // Construct a location that represents a declaration nested within the
- // given parent. E.g. a field's location is nested within the location
- // for a message type. The parent's path will be copied, so you should
- // call AddPath() only to add the path components leading from the parent
- // to the child (as opposed to leading from the root to the child).
- LocationRecorder(const LocationRecorder& parent);
-
- // Convenience constructors that call AddPath() one or two times.
- LocationRecorder(const LocationRecorder& parent, int path1);
- LocationRecorder(const LocationRecorder& parent, int path1, int path2);
-
- // Creates a recorder that generates locations into given source code info.
- LocationRecorder(const LocationRecorder& parent, int path1,
- SourceCodeInfo* source_code_info);
-
- ~LocationRecorder();
-
- // Add a path component. See SourceCodeInfo.Location.path in
- // descriptor.proto.
- void AddPath(int path_component);
-
- // By default the location is considered to start at the current token at
- // the time the LocationRecorder is created. StartAt() sets the start
- // location to the given token instead.
- void StartAt(const io::Tokenizer::Token& token);
-
- // Start at the same location as some other LocationRecorder.
- void StartAt(const LocationRecorder& other);
-
- // By default the location is considered to end at the previous token at
- // the time the LocationRecorder is destroyed. EndAt() sets the end
- // location to the given token instead.
- void EndAt(const io::Tokenizer::Token& token);
-
- // Records the start point of this location to the SourceLocationTable that
- // was passed to RecordSourceLocationsTo(), if any. SourceLocationTable
- // is an older way of keeping track of source locations which is still
- // used in some places.
- void RecordLegacyLocation(
- const Message* descriptor,
- DescriptorPool::ErrorCollector::ErrorLocation location);
- void RecordLegacyImportLocation(const Message* descriptor,
- const std::string& name);
-
- // Returns the number of path components in the recorder's current location.
- int CurrentPathSize() const;
-
- // Attaches leading and trailing comments to the location. The two strings
- // will be swapped into place, so after this is called *leading and
- // *trailing will be empty.
- //
- // TODO(kenton): See comment on TryConsumeEndOfDeclaration(), above, for
- // why this is const.
- void AttachComments(std::string* leading, std::string* trailing,
- std::vector<std::string>* detached_comments) const;
-
- private:
- Parser* parser_;
- SourceCodeInfo* source_code_info_;
- SourceCodeInfo::Location* location_;
-
- void Init(const LocationRecorder& parent, SourceCodeInfo* source_code_info);
- };
-
- // =================================================================
- // Parsers for various language constructs
-
- // Parses the "syntax = \"proto2\";" line at the top of the file. Returns
- // false if it failed to parse or if the syntax identifier was not
- // recognized.
- bool ParseSyntaxIdentifier(const LocationRecorder& parent);
-
- // These methods parse various individual bits of code. They return
- // false if they completely fail to parse the construct. In this case,
- // it is probably necessary to skip the rest of the statement to recover.
- // However, if these methods return true, it does NOT mean that there
- // were no errors; only that there were no *syntax* errors. For instance,
- // if a service method is defined using proper syntax but uses a primitive
- // type as its input or output, ParseMethodField() still returns true
- // and only reports the error by calling AddError(). In practice, this
- // makes logic much simpler for the caller.
-
- // Parse a top-level message, enum, service, etc.
- bool ParseTopLevelStatement(FileDescriptorProto* file,
- const LocationRecorder& root_location);
-
- // Parse various language high-level language construrcts.
- bool ParseMessageDefinition(DescriptorProto* message,
- const LocationRecorder& message_location,
- const FileDescriptorProto* containing_file);
- bool ParseEnumDefinition(EnumDescriptorProto* enum_type,
- const LocationRecorder& enum_location,
- const FileDescriptorProto* containing_file);
- bool ParseServiceDefinition(ServiceDescriptorProto* service,
- const LocationRecorder& service_location,
- const FileDescriptorProto* containing_file);
- bool ParsePackage(FileDescriptorProto* file,
- const LocationRecorder& root_location,
- const FileDescriptorProto* containing_file);
- bool ParseImport(RepeatedPtrField<std::string>* dependency,
- RepeatedField<int32_t>* public_dependency,
- RepeatedField<int32_t>* weak_dependency,
- const LocationRecorder& root_location,
- const FileDescriptorProto* containing_file);
-
- // These methods parse the contents of a message, enum, or service type and
- // add them to the given object. They consume the entire block including
- // the beginning and ending brace.
- bool ParseMessageBlock(DescriptorProto* message,
- const LocationRecorder& message_location,
- const FileDescriptorProto* containing_file);
- bool ParseEnumBlock(EnumDescriptorProto* enum_type,
- const LocationRecorder& enum_location,
- const FileDescriptorProto* containing_file);
- bool ParseServiceBlock(ServiceDescriptorProto* service,
- const LocationRecorder& service_location,
- const FileDescriptorProto* containing_file);
-
- // Parse one statement within a message, enum, or service block, including
- // final semicolon.
- bool ParseMessageStatement(DescriptorProto* message,
- const LocationRecorder& message_location,
- const FileDescriptorProto* containing_file);
- bool ParseEnumStatement(EnumDescriptorProto* message,
- const LocationRecorder& enum_location,
- const FileDescriptorProto* containing_file);
- bool ParseServiceStatement(ServiceDescriptorProto* message,
- const LocationRecorder& service_location,
- const FileDescriptorProto* containing_file);
-
- // Parse a field of a message. If the field is a group, its type will be
- // added to "messages".
- //
- // parent_location and location_field_number_for_nested_type are needed when
- // parsing groups -- we need to generate a nested message type within the
- // parent and record its location accordingly. Since the parent could be
- // either a FileDescriptorProto or a DescriptorProto, we must pass in the
- // correct field number to use.
- bool ParseMessageField(FieldDescriptorProto* field,
- RepeatedPtrField<DescriptorProto>* messages,
- const LocationRecorder& parent_location,
- int location_field_number_for_nested_type,
- const LocationRecorder& field_location,
- const FileDescriptorProto* containing_file);
-
- // Like ParseMessageField() but expects the label has already been filled in
- // by the caller.
- bool ParseMessageFieldNoLabel(FieldDescriptorProto* field,
- RepeatedPtrField<DescriptorProto>* messages,
- const LocationRecorder& parent_location,
- int location_field_number_for_nested_type,
- const LocationRecorder& field_location,
- const FileDescriptorProto* containing_file);
-
- bool ParseMapType(MapField* map_field, FieldDescriptorProto* field,
- LocationRecorder& type_name_location);
-
- // Parse an "extensions" declaration.
- bool ParseExtensions(DescriptorProto* message,
- const LocationRecorder& extensions_location,
- const FileDescriptorProto* containing_file);
-
- // Parse a "reserved" declaration.
- bool ParseReserved(DescriptorProto* message,
- const LocationRecorder& message_location);
- bool ParseReservedNames(DescriptorProto* message,
- const LocationRecorder& parent_location);
- bool ParseReservedNumbers(DescriptorProto* message,
- const LocationRecorder& parent_location);
- bool ParseReserved(EnumDescriptorProto* message,
- const LocationRecorder& message_location);
- bool ParseReservedNames(EnumDescriptorProto* message,
- const LocationRecorder& parent_location);
- bool ParseReservedNumbers(EnumDescriptorProto* message,
- const LocationRecorder& parent_location);
-
- // Parse an "extend" declaration. (See also comments for
- // ParseMessageField().)
- bool ParseExtend(RepeatedPtrField<FieldDescriptorProto>* extensions,
- RepeatedPtrField<DescriptorProto>* messages,
- const LocationRecorder& parent_location,
- int location_field_number_for_nested_type,
- const LocationRecorder& extend_location,
- const FileDescriptorProto* containing_file);
-
- // Parse a "oneof" declaration. The caller is responsible for setting
- // oneof_decl->label() since it will have had to parse the label before it
- // knew it was parsing a oneof.
- bool ParseOneof(OneofDescriptorProto* oneof_decl,
- DescriptorProto* containing_type, int oneof_index,
- const LocationRecorder& oneof_location,
- const LocationRecorder& containing_type_location,
- const FileDescriptorProto* containing_file);
-
- // Parse a single enum value within an enum block.
- bool ParseEnumConstant(EnumValueDescriptorProto* enum_value,
- const LocationRecorder& enum_value_location,
- const FileDescriptorProto* containing_file);
-
- // Parse enum constant options, i.e. the list in square brackets at the end
- // of the enum constant value definition.
- bool ParseEnumConstantOptions(EnumValueDescriptorProto* value,
- const LocationRecorder& enum_value_location,
- const FileDescriptorProto* containing_file);
-
- // Parse a single method within a service definition.
- bool ParseServiceMethod(MethodDescriptorProto* method,
- const LocationRecorder& method_location,
- const FileDescriptorProto* containing_file);
-
- // Parse options of a single method or stream.
- bool ParseMethodOptions(const LocationRecorder& parent_location,
- const FileDescriptorProto* containing_file,
- const int optionsFieldNumber,
- Message* mutable_options);
-
- // Parse "required", "optional", or "repeated" and fill in "label"
- // with the value. Returns true if such a label is consumed.
- bool ParseLabel(FieldDescriptorProto::Label* label,
- const LocationRecorder& field_location);
-
- // Parse a type name and fill in "type" (if it is a primitive) or
- // "type_name" (if it is not) with the type parsed.
- bool ParseType(FieldDescriptorProto::Type* type, std::string* type_name);
- // Parse a user-defined type and fill in "type_name" with the name.
- // If a primitive type is named, it is treated as an error.
- bool ParseUserDefinedType(std::string* type_name);
-
- // Parses field options, i.e. the stuff in square brackets at the end
- // of a field definition. Also parses default value.
- bool ParseFieldOptions(FieldDescriptorProto* field,
- const LocationRecorder& field_location,
- const FileDescriptorProto* containing_file);
-
- // Parse the "default" option. This needs special handling because its
- // type is the field's type.
- bool ParseDefaultAssignment(FieldDescriptorProto* field,
- const LocationRecorder& field_location,
- const FileDescriptorProto* containing_file);
-
- bool ParseJsonName(FieldDescriptorProto* field,
- const LocationRecorder& field_location,
- const FileDescriptorProto* containing_file);
-
- enum OptionStyle {
- OPTION_ASSIGNMENT, // just "name = value"
- OPTION_STATEMENT // "option name = value;"
- };
-
- // Parse a single option name/value pair, e.g. "ctype = CORD". The name
- // identifies a field of the given Message, and the value of that field
- // is set to the parsed value.
- bool ParseOption(Message* options, const LocationRecorder& options_location,
- const FileDescriptorProto* containing_file,
- OptionStyle style);
-
- // Parses a single part of a multipart option name. A multipart name consists
- // of names separated by dots. Each name is either an identifier or a series
- // of identifiers separated by dots and enclosed in parentheses. E.g.,
- // "foo.(bar.baz).moo".
- bool ParseOptionNamePart(UninterpretedOption* uninterpreted_option,
- const LocationRecorder& part_location,
- const FileDescriptorProto* containing_file);
-
- // Parses a string surrounded by balanced braces. Strips off the outer
- // braces and stores the enclosed string in *value.
- // E.g.,
- // { foo } *value gets 'foo'
- // { foo { bar: box } } *value gets 'foo { bar: box }'
- // {} *value gets ''
- //
- // REQUIRES: LookingAt("{")
- // When finished successfully, we are looking at the first token past
- // the ending brace.
- bool ParseUninterpretedBlock(std::string* value);
-
- struct MapField {
- // Whether the field is a map field.
- bool is_map_field;
- // The types of the key and value if they are primitive types.
- FieldDescriptorProto::Type key_type;
- FieldDescriptorProto::Type value_type;
- // Or the type names string if the types are customized types.
- std::string key_type_name;
- std::string value_type_name;
-
- MapField() : is_map_field(false) {}
- };
- // Desugar the map syntax to generate a nested map entry message.
- void GenerateMapEntry(const MapField& map_field, FieldDescriptorProto* field,
- RepeatedPtrField<DescriptorProto>* messages);
-
- // Whether fields without label default to optional fields.
- bool DefaultToOptionalFields() const {
- return syntax_identifier_ == "proto3";
- }
-
- bool ValidateEnum(const EnumDescriptorProto* proto);
-
- // =================================================================
-
- io::Tokenizer* input_;
- io::ErrorCollector* error_collector_;
- SourceCodeInfo* source_code_info_;
- SourceLocationTable* source_location_table_; // legacy
- bool had_errors_;
- bool require_syntax_identifier_;
- bool stop_after_syntax_identifier_;
- std::string syntax_identifier_;
-
- // Leading doc comments for the next declaration. These are not complete
- // yet; use ConsumeEndOfDeclaration() to get the complete comments.
- std::string upcoming_doc_comments_;
-
- // Detached comments are not connected to any syntax entities. Elements in
- // this vector are paragraphs of comments separated by empty lines. The
- // detached comments will be put into the leading_detached_comments field for
- // the next element (See SourceCodeInfo.Location in descriptor.proto), when
- // ConsumeEndOfDeclaration() is called.
- std::vector<std::string> upcoming_detached_comments_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Parser);
-};
-
-// A table mapping (descriptor, ErrorLocation) pairs -- as reported by
-// DescriptorPool when validating descriptors -- to line and column numbers
-// within the original source code.
-//
-// This is semi-obsolete: FileDescriptorProto.source_code_info now contains
-// far more complete information about source locations. However, as of this
-// writing you still need to use SourceLocationTable when integrating with
-// DescriptorPool.
-class PROTOBUF_EXPORT SourceLocationTable {
- public:
- SourceLocationTable();
- ~SourceLocationTable();
-
- // Finds the precise location of the given error and fills in *line and
- // *column with the line and column numbers. If not found, sets *line to
- // -1 and *column to 0 (since line = -1 is used to mean "error has no exact
- // location" in the ErrorCollector interface). Returns true if found, false
- // otherwise.
- bool Find(const Message* descriptor,
- DescriptorPool::ErrorCollector::ErrorLocation location, int* line,
- int* column) const;
- bool FindImport(const Message* descriptor, const std::string& name, int* line,
- int* column) const;
-
- // Adds a location to the table.
- void Add(const Message* descriptor,
- DescriptorPool::ErrorCollector::ErrorLocation location, int line,
- int column);
- void AddImport(const Message* descriptor, const std::string& name, int line,
- int column);
-
- // Clears the contents of the table.
- void Clear();
-
- private:
- typedef std::map<
- std::pair<const Message*, DescriptorPool::ErrorCollector::ErrorLocation>,
- std::pair<int, int> >
- LocationMap;
- LocationMap location_map_;
- std::map<std::pair<const Message*, std::string>, std::pair<int, int> >
- import_location_map_;
-};
-
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PARSER_H__
diff --git a/include/google/protobuf/compiler/php/php_generator.h b/include/google/protobuf/compiler/php/php_generator.h
deleted file mode 100644
index 17cb59c08b..0000000000
--- a/include/google/protobuf/compiler/php/php_generator.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_PHP_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_PHP_GENERATOR_H__
-
-#include <google/protobuf/compiler/code_generator.h>
-#include <google/protobuf/descriptor.h>
-
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace php {
-
-struct Options;
-
-class PROTOC_EXPORT Generator : public CodeGenerator {
- public:
- virtual bool Generate(
- const FileDescriptor* file,
- const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
-
- bool GenerateAll(const std::vector<const FileDescriptor*>& files,
- const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override {
- return FEATURE_PROTO3_OPTIONAL;
- }
-
- private:
- bool Generate(
- const FileDescriptor* file,
- const Options& options,
- GeneratorContext* generator_context,
- std::string* error) const;
-};
-
-// To skip reserved keywords in php, some generated classname are prefixed.
-// Other code generators may need following API to figure out the actual
-// classname.
-PROTOC_EXPORT std::string GeneratedClassName(const Descriptor* desc);
-PROTOC_EXPORT std::string GeneratedClassName(const EnumDescriptor* desc);
-PROTOC_EXPORT std::string GeneratedClassName(const ServiceDescriptor* desc);
-
-inline bool IsWrapperType(const FieldDescriptor* descriptor) {
- return descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
- descriptor->message_type()->file()->name() == "google/protobuf/wrappers.proto";
-}
-
-} // namespace php
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PHP_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/plugin.h b/include/google/protobuf/compiler/plugin.h
deleted file mode 100644
index 611713e2c0..0000000000
--- a/include/google/protobuf/compiler/plugin.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-//
-// Front-end for protoc code generator plugins written in C++.
-//
-// To implement a protoc plugin in C++, simply write an implementation of
-// CodeGenerator, then create a main() function like:
-// int main(int argc, char* argv[]) {
-// MyCodeGenerator generator;
-// return google::protobuf::compiler::PluginMain(argc, argv, &generator);
-// }
-// You must link your plugin against libprotobuf and libprotoc.
-//
-// The core part of PluginMain is to invoke the given CodeGenerator on a
-// CodeGeneratorRequest to generate a CodeGeneratorResponse. This part is
-// abstracted out and made into function GenerateCode so that it can be reused,
-// for example, to implement a variant of PluginMain that does some
-// preprocessing on the input CodeGeneratorRequest before feeding the request
-// to the given code generator.
-//
-// To get protoc to use the plugin, do one of the following:
-// * Place the plugin binary somewhere in the PATH and give it the name
-// "protoc-gen-NAME" (replacing "NAME" with the name of your plugin). If you
-// then invoke protoc with the parameter --NAME_out=OUT_DIR (again, replace
-// "NAME" with your plugin's name), protoc will invoke your plugin to generate
-// the output, which will be placed in OUT_DIR.
-// * Place the plugin binary anywhere, with any name, and pass the --plugin
-// parameter to protoc to direct it to your plugin like so:
-// protoc --plugin=protoc-gen-NAME=path/to/mybinary --NAME_out=OUT_DIR
-// On Windows, make sure to include the .exe suffix:
-// protoc --plugin=protoc-gen-NAME=path/to/mybinary.exe --NAME_out=OUT_DIR
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
-#define GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
-
-#include <string>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-
-class CodeGenerator; // code_generator.h
-class CodeGeneratorRequest;
-class CodeGeneratorResponse;
-
-// Implements main() for a protoc plugin exposing the given code generator.
-PROTOC_EXPORT int PluginMain(int argc, char* argv[],
- const CodeGenerator* generator);
-
-
-// Generates code using the given code generator. Returns true if the code
-// generation is successful. If the code generation fails, error_msg may be
-// populated to describe the failure cause.
-bool GenerateCode(const CodeGeneratorRequest& request,
- const CodeGenerator& generator,
- CodeGeneratorResponse* response, std::string* error_msg);
-
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PLUGIN_H__
diff --git a/include/google/protobuf/compiler/plugin.pb.h b/include/google/protobuf/compiler/plugin.pb.h
deleted file mode 100644
index 40163f87dc..0000000000
--- a/include/google/protobuf/compiler/plugin.pb.h
+++ /dev/null
@@ -1,1901 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/compiler/plugin.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fcompiler_2fplugin_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fcompiler_2fplugin_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-#include <google/protobuf/descriptor.pb.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fcompiler_2fplugin_2eproto PROTOC_EXPORT
-#ifdef major
-#undef major
-#endif
-#ifdef minor
-#undef minor
-#endif
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOC_EXPORT TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto {
- static const uint32_t offsets[];
-};
-PROTOC_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fcompiler_2fplugin_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-namespace compiler {
-class CodeGeneratorRequest;
-struct CodeGeneratorRequestDefaultTypeInternal;
-PROTOC_EXPORT extern CodeGeneratorRequestDefaultTypeInternal _CodeGeneratorRequest_default_instance_;
-class CodeGeneratorResponse;
-struct CodeGeneratorResponseDefaultTypeInternal;
-PROTOC_EXPORT extern CodeGeneratorResponseDefaultTypeInternal _CodeGeneratorResponse_default_instance_;
-class CodeGeneratorResponse_File;
-struct CodeGeneratorResponse_FileDefaultTypeInternal;
-PROTOC_EXPORT extern CodeGeneratorResponse_FileDefaultTypeInternal _CodeGeneratorResponse_File_default_instance_;
-class Version;
-struct VersionDefaultTypeInternal;
-PROTOC_EXPORT extern VersionDefaultTypeInternal _Version_default_instance_;
-} // namespace compiler
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOC_EXPORT ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorRequest>(Arena*);
-template<> PROTOC_EXPORT ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse>(Arena*);
-template<> PROTOC_EXPORT ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File>(Arena*);
-template<> PROTOC_EXPORT ::PROTOBUF_NAMESPACE_ID::compiler::Version* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::compiler::Version>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-namespace compiler {
-
-enum CodeGeneratorResponse_Feature : int {
- CodeGeneratorResponse_Feature_FEATURE_NONE = 0,
- CodeGeneratorResponse_Feature_FEATURE_PROTO3_OPTIONAL = 1
-};
-PROTOC_EXPORT bool CodeGeneratorResponse_Feature_IsValid(int value);
-constexpr CodeGeneratorResponse_Feature CodeGeneratorResponse_Feature_Feature_MIN = CodeGeneratorResponse_Feature_FEATURE_NONE;
-constexpr CodeGeneratorResponse_Feature CodeGeneratorResponse_Feature_Feature_MAX = CodeGeneratorResponse_Feature_FEATURE_PROTO3_OPTIONAL;
-constexpr int CodeGeneratorResponse_Feature_Feature_ARRAYSIZE = CodeGeneratorResponse_Feature_Feature_MAX + 1;
-
-PROTOC_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CodeGeneratorResponse_Feature_descriptor();
-template<typename T>
-inline const std::string& CodeGeneratorResponse_Feature_Name(T enum_t_value) {
- static_assert(::std::is_same<T, CodeGeneratorResponse_Feature>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function CodeGeneratorResponse_Feature_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- CodeGeneratorResponse_Feature_descriptor(), enum_t_value);
-}
-inline bool CodeGeneratorResponse_Feature_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CodeGeneratorResponse_Feature* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<CodeGeneratorResponse_Feature>(
- CodeGeneratorResponse_Feature_descriptor(), name, value);
-}
-// ===================================================================
-
-class PROTOC_EXPORT Version final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.compiler.Version) */ {
- public:
- inline Version() : Version(nullptr) {}
- ~Version() override;
- explicit PROTOBUF_CONSTEXPR Version(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Version(const Version& from);
- Version(Version&& from) noexcept
- : Version() {
- *this = ::std::move(from);
- }
-
- inline Version& operator=(const Version& from) {
- CopyFrom(from);
- return *this;
- }
- inline Version& operator=(Version&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Version& default_instance() {
- return *internal_default_instance();
- }
- static inline const Version* internal_default_instance() {
- return reinterpret_cast<const Version*>(
- &_Version_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Version& a, Version& b) {
- a.Swap(&b);
- }
- inline void Swap(Version* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Version* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Version* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Version>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Version& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Version& from) {
- Version::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Version* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.compiler.Version";
- }
- protected:
- explicit Version(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kSuffixFieldNumber = 4,
- kMajorFieldNumber = 1,
- kMinorFieldNumber = 2,
- kPatchFieldNumber = 3,
- };
- // optional string suffix = 4;
- bool has_suffix() const;
- private:
- bool _internal_has_suffix() const;
- public:
- void clear_suffix();
- const std::string& suffix() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_suffix(ArgT0&& arg0, ArgT... args);
- std::string* mutable_suffix();
- PROTOBUF_NODISCARD std::string* release_suffix();
- void set_allocated_suffix(std::string* suffix);
- private:
- const std::string& _internal_suffix() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_suffix(const std::string& value);
- std::string* _internal_mutable_suffix();
- public:
-
- // optional int32 major = 1;
- bool has_major() const;
- private:
- bool _internal_has_major() const;
- public:
- void clear_major();
- int32_t major() const;
- void set_major(int32_t value);
- private:
- int32_t _internal_major() const;
- void _internal_set_major(int32_t value);
- public:
-
- // optional int32 minor = 2;
- bool has_minor() const;
- private:
- bool _internal_has_minor() const;
- public:
- void clear_minor();
- int32_t minor() const;
- void set_minor(int32_t value);
- private:
- int32_t _internal_minor() const;
- void _internal_set_minor(int32_t value);
- public:
-
- // optional int32 patch = 3;
- bool has_patch() const;
- private:
- bool _internal_has_patch() const;
- public:
- void clear_patch();
- int32_t patch() const;
- void set_patch(int32_t value);
- private:
- int32_t _internal_patch() const;
- void _internal_set_patch(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.compiler.Version)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr suffix_;
- int32_t major_;
- int32_t minor_;
- int32_t patch_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOC_EXPORT CodeGeneratorRequest final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.compiler.CodeGeneratorRequest) */ {
- public:
- inline CodeGeneratorRequest() : CodeGeneratorRequest(nullptr) {}
- ~CodeGeneratorRequest() override;
- explicit PROTOBUF_CONSTEXPR CodeGeneratorRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- CodeGeneratorRequest(const CodeGeneratorRequest& from);
- CodeGeneratorRequest(CodeGeneratorRequest&& from) noexcept
- : CodeGeneratorRequest() {
- *this = ::std::move(from);
- }
-
- inline CodeGeneratorRequest& operator=(const CodeGeneratorRequest& from) {
- CopyFrom(from);
- return *this;
- }
- inline CodeGeneratorRequest& operator=(CodeGeneratorRequest&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const CodeGeneratorRequest& default_instance() {
- return *internal_default_instance();
- }
- static inline const CodeGeneratorRequest* internal_default_instance() {
- return reinterpret_cast<const CodeGeneratorRequest*>(
- &_CodeGeneratorRequest_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(CodeGeneratorRequest& a, CodeGeneratorRequest& b) {
- a.Swap(&b);
- }
- inline void Swap(CodeGeneratorRequest* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(CodeGeneratorRequest* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- CodeGeneratorRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<CodeGeneratorRequest>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const CodeGeneratorRequest& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const CodeGeneratorRequest& from) {
- CodeGeneratorRequest::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(CodeGeneratorRequest* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.compiler.CodeGeneratorRequest";
- }
- protected:
- explicit CodeGeneratorRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFileToGenerateFieldNumber = 1,
- kProtoFileFieldNumber = 15,
- kParameterFieldNumber = 2,
- kCompilerVersionFieldNumber = 3,
- };
- // repeated string file_to_generate = 1;
- int file_to_generate_size() const;
- private:
- int _internal_file_to_generate_size() const;
- public:
- void clear_file_to_generate();
- const std::string& file_to_generate(int index) const;
- std::string* mutable_file_to_generate(int index);
- void set_file_to_generate(int index, const std::string& value);
- void set_file_to_generate(int index, std::string&& value);
- void set_file_to_generate(int index, const char* value);
- void set_file_to_generate(int index, const char* value, size_t size);
- std::string* add_file_to_generate();
- void add_file_to_generate(const std::string& value);
- void add_file_to_generate(std::string&& value);
- void add_file_to_generate(const char* value);
- void add_file_to_generate(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& file_to_generate() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_file_to_generate();
- private:
- const std::string& _internal_file_to_generate(int index) const;
- std::string* _internal_add_file_to_generate();
- public:
-
- // repeated .google.protobuf.FileDescriptorProto proto_file = 15;
- int proto_file_size() const;
- private:
- int _internal_proto_file_size() const;
- public:
- void clear_proto_file();
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* mutable_proto_file(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >*
- mutable_proto_file();
- private:
- const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& _internal_proto_file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* _internal_add_proto_file();
- public:
- const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& proto_file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* add_proto_file();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >&
- proto_file() const;
-
- // optional string parameter = 2;
- bool has_parameter() const;
- private:
- bool _internal_has_parameter() const;
- public:
- void clear_parameter();
- const std::string& parameter() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_parameter(ArgT0&& arg0, ArgT... args);
- std::string* mutable_parameter();
- PROTOBUF_NODISCARD std::string* release_parameter();
- void set_allocated_parameter(std::string* parameter);
- private:
- const std::string& _internal_parameter() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_parameter(const std::string& value);
- std::string* _internal_mutable_parameter();
- public:
-
- // optional .google.protobuf.compiler.Version compiler_version = 3;
- bool has_compiler_version() const;
- private:
- bool _internal_has_compiler_version() const;
- public:
- void clear_compiler_version();
- const ::PROTOBUF_NAMESPACE_ID::compiler::Version& compiler_version() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::compiler::Version* release_compiler_version();
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* mutable_compiler_version();
- void set_allocated_compiler_version(::PROTOBUF_NAMESPACE_ID::compiler::Version* compiler_version);
- private:
- const ::PROTOBUF_NAMESPACE_ID::compiler::Version& _internal_compiler_version() const;
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* _internal_mutable_compiler_version();
- public:
- void unsafe_arena_set_allocated_compiler_version(
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* compiler_version);
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* unsafe_arena_release_compiler_version();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorRequest)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> file_to_generate_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto > proto_file_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr parameter_;
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* compiler_version_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOC_EXPORT CodeGeneratorResponse_File final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.compiler.CodeGeneratorResponse.File) */ {
- public:
- inline CodeGeneratorResponse_File() : CodeGeneratorResponse_File(nullptr) {}
- ~CodeGeneratorResponse_File() override;
- explicit PROTOBUF_CONSTEXPR CodeGeneratorResponse_File(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- CodeGeneratorResponse_File(const CodeGeneratorResponse_File& from);
- CodeGeneratorResponse_File(CodeGeneratorResponse_File&& from) noexcept
- : CodeGeneratorResponse_File() {
- *this = ::std::move(from);
- }
-
- inline CodeGeneratorResponse_File& operator=(const CodeGeneratorResponse_File& from) {
- CopyFrom(from);
- return *this;
- }
- inline CodeGeneratorResponse_File& operator=(CodeGeneratorResponse_File&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const CodeGeneratorResponse_File& default_instance() {
- return *internal_default_instance();
- }
- static inline const CodeGeneratorResponse_File* internal_default_instance() {
- return reinterpret_cast<const CodeGeneratorResponse_File*>(
- &_CodeGeneratorResponse_File_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(CodeGeneratorResponse_File& a, CodeGeneratorResponse_File& b) {
- a.Swap(&b);
- }
- inline void Swap(CodeGeneratorResponse_File* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(CodeGeneratorResponse_File* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- CodeGeneratorResponse_File* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<CodeGeneratorResponse_File>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const CodeGeneratorResponse_File& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const CodeGeneratorResponse_File& from) {
- CodeGeneratorResponse_File::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(CodeGeneratorResponse_File* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.compiler.CodeGeneratorResponse.File";
- }
- protected:
- explicit CodeGeneratorResponse_File(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kInsertionPointFieldNumber = 2,
- kContentFieldNumber = 15,
- kGeneratedCodeInfoFieldNumber = 16,
- };
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional string insertion_point = 2;
- bool has_insertion_point() const;
- private:
- bool _internal_has_insertion_point() const;
- public:
- void clear_insertion_point();
- const std::string& insertion_point() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_insertion_point(ArgT0&& arg0, ArgT... args);
- std::string* mutable_insertion_point();
- PROTOBUF_NODISCARD std::string* release_insertion_point();
- void set_allocated_insertion_point(std::string* insertion_point);
- private:
- const std::string& _internal_insertion_point() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_insertion_point(const std::string& value);
- std::string* _internal_mutable_insertion_point();
- public:
-
- // optional string content = 15;
- bool has_content() const;
- private:
- bool _internal_has_content() const;
- public:
- void clear_content();
- const std::string& content() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_content(ArgT0&& arg0, ArgT... args);
- std::string* mutable_content();
- PROTOBUF_NODISCARD std::string* release_content();
- void set_allocated_content(std::string* content);
- private:
- const std::string& _internal_content() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_content(const std::string& value);
- std::string* _internal_mutable_content();
- public:
-
- // optional .google.protobuf.GeneratedCodeInfo generated_code_info = 16;
- bool has_generated_code_info() const;
- private:
- bool _internal_has_generated_code_info() const;
- public:
- void clear_generated_code_info();
- const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo& generated_code_info() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* release_generated_code_info();
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* mutable_generated_code_info();
- void set_allocated_generated_code_info(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* generated_code_info);
- private:
- const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo& _internal_generated_code_info() const;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* _internal_mutable_generated_code_info();
- public:
- void unsafe_arena_set_allocated_generated_code_info(
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* generated_code_info);
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* unsafe_arena_release_generated_code_info();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse.File)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr insertion_point_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr content_;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* generated_code_info_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOC_EXPORT CodeGeneratorResponse final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.compiler.CodeGeneratorResponse) */ {
- public:
- inline CodeGeneratorResponse() : CodeGeneratorResponse(nullptr) {}
- ~CodeGeneratorResponse() override;
- explicit PROTOBUF_CONSTEXPR CodeGeneratorResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- CodeGeneratorResponse(const CodeGeneratorResponse& from);
- CodeGeneratorResponse(CodeGeneratorResponse&& from) noexcept
- : CodeGeneratorResponse() {
- *this = ::std::move(from);
- }
-
- inline CodeGeneratorResponse& operator=(const CodeGeneratorResponse& from) {
- CopyFrom(from);
- return *this;
- }
- inline CodeGeneratorResponse& operator=(CodeGeneratorResponse&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const CodeGeneratorResponse& default_instance() {
- return *internal_default_instance();
- }
- static inline const CodeGeneratorResponse* internal_default_instance() {
- return reinterpret_cast<const CodeGeneratorResponse*>(
- &_CodeGeneratorResponse_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 3;
-
- friend void swap(CodeGeneratorResponse& a, CodeGeneratorResponse& b) {
- a.Swap(&b);
- }
- inline void Swap(CodeGeneratorResponse* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(CodeGeneratorResponse* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- CodeGeneratorResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<CodeGeneratorResponse>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const CodeGeneratorResponse& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const CodeGeneratorResponse& from) {
- CodeGeneratorResponse::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(CodeGeneratorResponse* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.compiler.CodeGeneratorResponse";
- }
- protected:
- explicit CodeGeneratorResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef CodeGeneratorResponse_File File;
-
- typedef CodeGeneratorResponse_Feature Feature;
- static constexpr Feature FEATURE_NONE =
- CodeGeneratorResponse_Feature_FEATURE_NONE;
- static constexpr Feature FEATURE_PROTO3_OPTIONAL =
- CodeGeneratorResponse_Feature_FEATURE_PROTO3_OPTIONAL;
- static inline bool Feature_IsValid(int value) {
- return CodeGeneratorResponse_Feature_IsValid(value);
- }
- static constexpr Feature Feature_MIN =
- CodeGeneratorResponse_Feature_Feature_MIN;
- static constexpr Feature Feature_MAX =
- CodeGeneratorResponse_Feature_Feature_MAX;
- static constexpr int Feature_ARRAYSIZE =
- CodeGeneratorResponse_Feature_Feature_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- Feature_descriptor() {
- return CodeGeneratorResponse_Feature_descriptor();
- }
- template<typename T>
- static inline const std::string& Feature_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Feature>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Feature_Name.");
- return CodeGeneratorResponse_Feature_Name(enum_t_value);
- }
- static inline bool Feature_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- Feature* value) {
- return CodeGeneratorResponse_Feature_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFileFieldNumber = 15,
- kErrorFieldNumber = 1,
- kSupportedFeaturesFieldNumber = 2,
- };
- // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15;
- int file_size() const;
- private:
- int _internal_file_size() const;
- public:
- void clear_file();
- ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* mutable_file(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File >*
- mutable_file();
- private:
- const ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File& _internal_file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* _internal_add_file();
- public:
- const ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File& file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* add_file();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File >&
- file() const;
-
- // optional string error = 1;
- bool has_error() const;
- private:
- bool _internal_has_error() const;
- public:
- void clear_error();
- const std::string& error() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_error(ArgT0&& arg0, ArgT... args);
- std::string* mutable_error();
- PROTOBUF_NODISCARD std::string* release_error();
- void set_allocated_error(std::string* error);
- private:
- const std::string& _internal_error() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_error(const std::string& value);
- std::string* _internal_mutable_error();
- public:
-
- // optional uint64 supported_features = 2;
- bool has_supported_features() const;
- private:
- bool _internal_has_supported_features() const;
- public:
- void clear_supported_features();
- uint64_t supported_features() const;
- void set_supported_features(uint64_t value);
- private:
- uint64_t _internal_supported_features() const;
- void _internal_set_supported_features(uint64_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.compiler.CodeGeneratorResponse)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File > file_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr error_;
- uint64_t supported_features_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fcompiler_2fplugin_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Version
-
-// optional int32 major = 1;
-inline bool Version::_internal_has_major() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool Version::has_major() const {
- return _internal_has_major();
-}
-inline void Version::clear_major() {
- _impl_.major_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline int32_t Version::_internal_major() const {
- return _impl_.major_;
-}
-inline int32_t Version::major() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.Version.major)
- return _internal_major();
-}
-inline void Version::_internal_set_major(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.major_ = value;
-}
-inline void Version::set_major(int32_t value) {
- _internal_set_major(value);
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.Version.major)
-}
-
-// optional int32 minor = 2;
-inline bool Version::_internal_has_minor() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool Version::has_minor() const {
- return _internal_has_minor();
-}
-inline void Version::clear_minor() {
- _impl_.minor_ = 0;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline int32_t Version::_internal_minor() const {
- return _impl_.minor_;
-}
-inline int32_t Version::minor() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.Version.minor)
- return _internal_minor();
-}
-inline void Version::_internal_set_minor(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.minor_ = value;
-}
-inline void Version::set_minor(int32_t value) {
- _internal_set_minor(value);
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.Version.minor)
-}
-
-// optional int32 patch = 3;
-inline bool Version::_internal_has_patch() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool Version::has_patch() const {
- return _internal_has_patch();
-}
-inline void Version::clear_patch() {
- _impl_.patch_ = 0;
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline int32_t Version::_internal_patch() const {
- return _impl_.patch_;
-}
-inline int32_t Version::patch() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.Version.patch)
- return _internal_patch();
-}
-inline void Version::_internal_set_patch(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.patch_ = value;
-}
-inline void Version::set_patch(int32_t value) {
- _internal_set_patch(value);
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.Version.patch)
-}
-
-// optional string suffix = 4;
-inline bool Version::_internal_has_suffix() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool Version::has_suffix() const {
- return _internal_has_suffix();
-}
-inline void Version::clear_suffix() {
- _impl_.suffix_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& Version::suffix() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.Version.suffix)
- return _internal_suffix();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Version::set_suffix(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.suffix_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.Version.suffix)
-}
-inline std::string* Version::mutable_suffix() {
- std::string* _s = _internal_mutable_suffix();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.Version.suffix)
- return _s;
-}
-inline const std::string& Version::_internal_suffix() const {
- return _impl_.suffix_.Get();
-}
-inline void Version::_internal_set_suffix(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.suffix_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Version::_internal_mutable_suffix() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.suffix_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Version::release_suffix() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.Version.suffix)
- if (!_internal_has_suffix()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.suffix_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.suffix_.IsDefault()) {
- _impl_.suffix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void Version::set_allocated_suffix(std::string* suffix) {
- if (suffix != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.suffix_.SetAllocated(suffix, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.suffix_.IsDefault()) {
- _impl_.suffix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.Version.suffix)
-}
-
-// -------------------------------------------------------------------
-
-// CodeGeneratorRequest
-
-// repeated string file_to_generate = 1;
-inline int CodeGeneratorRequest::_internal_file_to_generate_size() const {
- return _impl_.file_to_generate_.size();
-}
-inline int CodeGeneratorRequest::file_to_generate_size() const {
- return _internal_file_to_generate_size();
-}
-inline void CodeGeneratorRequest::clear_file_to_generate() {
- _impl_.file_to_generate_.Clear();
-}
-inline std::string* CodeGeneratorRequest::add_file_to_generate() {
- std::string* _s = _internal_add_file_to_generate();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
- return _s;
-}
-inline const std::string& CodeGeneratorRequest::_internal_file_to_generate(int index) const {
- return _impl_.file_to_generate_.Get(index);
-}
-inline const std::string& CodeGeneratorRequest::file_to_generate(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
- return _internal_file_to_generate(index);
-}
-inline std::string* CodeGeneratorRequest::mutable_file_to_generate(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
- return _impl_.file_to_generate_.Mutable(index);
-}
-inline void CodeGeneratorRequest::set_file_to_generate(int index, const std::string& value) {
- _impl_.file_to_generate_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::set_file_to_generate(int index, std::string&& value) {
- _impl_.file_to_generate_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::set_file_to_generate(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.file_to_generate_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::set_file_to_generate(int index, const char* value, size_t size) {
- _impl_.file_to_generate_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline std::string* CodeGeneratorRequest::_internal_add_file_to_generate() {
- return _impl_.file_to_generate_.Add();
-}
-inline void CodeGeneratorRequest::add_file_to_generate(const std::string& value) {
- _impl_.file_to_generate_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::add_file_to_generate(std::string&& value) {
- _impl_.file_to_generate_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::add_file_to_generate(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.file_to_generate_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline void CodeGeneratorRequest::add_file_to_generate(const char* value, size_t size) {
- _impl_.file_to_generate_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-CodeGeneratorRequest::file_to_generate() const {
- // @@protoc_insertion_point(field_list:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
- return _impl_.file_to_generate_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-CodeGeneratorRequest::mutable_file_to_generate() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.compiler.CodeGeneratorRequest.file_to_generate)
- return &_impl_.file_to_generate_;
-}
-
-// optional string parameter = 2;
-inline bool CodeGeneratorRequest::_internal_has_parameter() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool CodeGeneratorRequest::has_parameter() const {
- return _internal_has_parameter();
-}
-inline void CodeGeneratorRequest::clear_parameter() {
- _impl_.parameter_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& CodeGeneratorRequest::parameter() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorRequest.parameter)
- return _internal_parameter();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void CodeGeneratorRequest::set_parameter(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.parameter_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorRequest.parameter)
-}
-inline std::string* CodeGeneratorRequest::mutable_parameter() {
- std::string* _s = _internal_mutable_parameter();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorRequest.parameter)
- return _s;
-}
-inline const std::string& CodeGeneratorRequest::_internal_parameter() const {
- return _impl_.parameter_.Get();
-}
-inline void CodeGeneratorRequest::_internal_set_parameter(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.parameter_.Set(value, GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorRequest::_internal_mutable_parameter() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.parameter_.Mutable(GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorRequest::release_parameter() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorRequest.parameter)
- if (!_internal_has_parameter()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.parameter_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.parameter_.IsDefault()) {
- _impl_.parameter_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void CodeGeneratorRequest::set_allocated_parameter(std::string* parameter) {
- if (parameter != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.parameter_.SetAllocated(parameter, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.parameter_.IsDefault()) {
- _impl_.parameter_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorRequest.parameter)
-}
-
-// repeated .google.protobuf.FileDescriptorProto proto_file = 15;
-inline int CodeGeneratorRequest::_internal_proto_file_size() const {
- return _impl_.proto_file_.size();
-}
-inline int CodeGeneratorRequest::proto_file_size() const {
- return _internal_proto_file_size();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* CodeGeneratorRequest::mutable_proto_file(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorRequest.proto_file)
- return _impl_.proto_file_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >*
-CodeGeneratorRequest::mutable_proto_file() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.compiler.CodeGeneratorRequest.proto_file)
- return &_impl_.proto_file_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& CodeGeneratorRequest::_internal_proto_file(int index) const {
- return _impl_.proto_file_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& CodeGeneratorRequest::proto_file(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorRequest.proto_file)
- return _internal_proto_file(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* CodeGeneratorRequest::_internal_add_proto_file() {
- return _impl_.proto_file_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* CodeGeneratorRequest::add_proto_file() {
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* _add = _internal_add_proto_file();
- // @@protoc_insertion_point(field_add:google.protobuf.compiler.CodeGeneratorRequest.proto_file)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >&
-CodeGeneratorRequest::proto_file() const {
- // @@protoc_insertion_point(field_list:google.protobuf.compiler.CodeGeneratorRequest.proto_file)
- return _impl_.proto_file_;
-}
-
-// optional .google.protobuf.compiler.Version compiler_version = 3;
-inline bool CodeGeneratorRequest::_internal_has_compiler_version() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.compiler_version_ != nullptr);
- return value;
-}
-inline bool CodeGeneratorRequest::has_compiler_version() const {
- return _internal_has_compiler_version();
-}
-inline void CodeGeneratorRequest::clear_compiler_version() {
- if (_impl_.compiler_version_ != nullptr) _impl_.compiler_version_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::compiler::Version& CodeGeneratorRequest::_internal_compiler_version() const {
- const ::PROTOBUF_NAMESPACE_ID::compiler::Version* p = _impl_.compiler_version_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::compiler::Version&>(
- ::PROTOBUF_NAMESPACE_ID::compiler::_Version_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::compiler::Version& CodeGeneratorRequest::compiler_version() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorRequest.compiler_version)
- return _internal_compiler_version();
-}
-inline void CodeGeneratorRequest::unsafe_arena_set_allocated_compiler_version(
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* compiler_version) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.compiler_version_);
- }
- _impl_.compiler_version_ = compiler_version;
- if (compiler_version) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.compiler.CodeGeneratorRequest.compiler_version)
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::Version* CodeGeneratorRequest::release_compiler_version() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* temp = _impl_.compiler_version_;
- _impl_.compiler_version_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::Version* CodeGeneratorRequest::unsafe_arena_release_compiler_version() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorRequest.compiler_version)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* temp = _impl_.compiler_version_;
- _impl_.compiler_version_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::Version* CodeGeneratorRequest::_internal_mutable_compiler_version() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.compiler_version_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::compiler::Version>(GetArenaForAllocation());
- _impl_.compiler_version_ = p;
- }
- return _impl_.compiler_version_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::Version* CodeGeneratorRequest::mutable_compiler_version() {
- ::PROTOBUF_NAMESPACE_ID::compiler::Version* _msg = _internal_mutable_compiler_version();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorRequest.compiler_version)
- return _msg;
-}
-inline void CodeGeneratorRequest::set_allocated_compiler_version(::PROTOBUF_NAMESPACE_ID::compiler::Version* compiler_version) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.compiler_version_;
- }
- if (compiler_version) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(compiler_version);
- if (message_arena != submessage_arena) {
- compiler_version = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, compiler_version, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.compiler_version_ = compiler_version;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorRequest.compiler_version)
-}
-
-// -------------------------------------------------------------------
-
-// CodeGeneratorResponse_File
-
-// optional string name = 1;
-inline bool CodeGeneratorResponse_File::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool CodeGeneratorResponse_File::has_name() const {
- return _internal_has_name();
-}
-inline void CodeGeneratorResponse_File::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& CodeGeneratorResponse_File::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.File.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void CodeGeneratorResponse_File::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorResponse.File.name)
-}
-inline std::string* CodeGeneratorResponse_File::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.File.name)
- return _s;
-}
-inline const std::string& CodeGeneratorResponse_File::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void CodeGeneratorResponse_File::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorResponse.File.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void CodeGeneratorResponse_File::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.File.name)
-}
-
-// optional string insertion_point = 2;
-inline bool CodeGeneratorResponse_File::_internal_has_insertion_point() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool CodeGeneratorResponse_File::has_insertion_point() const {
- return _internal_has_insertion_point();
-}
-inline void CodeGeneratorResponse_File::clear_insertion_point() {
- _impl_.insertion_point_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& CodeGeneratorResponse_File::insertion_point() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point)
- return _internal_insertion_point();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void CodeGeneratorResponse_File::set_insertion_point(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.insertion_point_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point)
-}
-inline std::string* CodeGeneratorResponse_File::mutable_insertion_point() {
- std::string* _s = _internal_mutable_insertion_point();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point)
- return _s;
-}
-inline const std::string& CodeGeneratorResponse_File::_internal_insertion_point() const {
- return _impl_.insertion_point_.Get();
-}
-inline void CodeGeneratorResponse_File::_internal_set_insertion_point(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.insertion_point_.Set(value, GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::_internal_mutable_insertion_point() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.insertion_point_.Mutable(GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::release_insertion_point() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point)
- if (!_internal_has_insertion_point()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.insertion_point_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.insertion_point_.IsDefault()) {
- _impl_.insertion_point_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void CodeGeneratorResponse_File::set_allocated_insertion_point(std::string* insertion_point) {
- if (insertion_point != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.insertion_point_.SetAllocated(insertion_point, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.insertion_point_.IsDefault()) {
- _impl_.insertion_point_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point)
-}
-
-// optional string content = 15;
-inline bool CodeGeneratorResponse_File::_internal_has_content() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool CodeGeneratorResponse_File::has_content() const {
- return _internal_has_content();
-}
-inline void CodeGeneratorResponse_File::clear_content() {
- _impl_.content_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& CodeGeneratorResponse_File::content() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.File.content)
- return _internal_content();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void CodeGeneratorResponse_File::set_content(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.content_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorResponse.File.content)
-}
-inline std::string* CodeGeneratorResponse_File::mutable_content() {
- std::string* _s = _internal_mutable_content();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.File.content)
- return _s;
-}
-inline const std::string& CodeGeneratorResponse_File::_internal_content() const {
- return _impl_.content_.Get();
-}
-inline void CodeGeneratorResponse_File::_internal_set_content(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.content_.Set(value, GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::_internal_mutable_content() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.content_.Mutable(GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse_File::release_content() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorResponse.File.content)
- if (!_internal_has_content()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.content_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.content_.IsDefault()) {
- _impl_.content_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void CodeGeneratorResponse_File::set_allocated_content(std::string* content) {
- if (content != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.content_.SetAllocated(content, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.content_.IsDefault()) {
- _impl_.content_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.File.content)
-}
-
-// optional .google.protobuf.GeneratedCodeInfo generated_code_info = 16;
-inline bool CodeGeneratorResponse_File::_internal_has_generated_code_info() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.generated_code_info_ != nullptr);
- return value;
-}
-inline bool CodeGeneratorResponse_File::has_generated_code_info() const {
- return _internal_has_generated_code_info();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo& CodeGeneratorResponse_File::_internal_generated_code_info() const {
- const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* p = _impl_.generated_code_info_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo&>(
- ::PROTOBUF_NAMESPACE_ID::_GeneratedCodeInfo_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo& CodeGeneratorResponse_File::generated_code_info() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info)
- return _internal_generated_code_info();
-}
-inline void CodeGeneratorResponse_File::unsafe_arena_set_allocated_generated_code_info(
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* generated_code_info) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.generated_code_info_);
- }
- _impl_.generated_code_info_ = generated_code_info;
- if (generated_code_info) {
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info)
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* CodeGeneratorResponse_File::release_generated_code_info() {
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* temp = _impl_.generated_code_info_;
- _impl_.generated_code_info_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* CodeGeneratorResponse_File::unsafe_arena_release_generated_code_info() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info)
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* temp = _impl_.generated_code_info_;
- _impl_.generated_code_info_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* CodeGeneratorResponse_File::_internal_mutable_generated_code_info() {
- _impl_._has_bits_[0] |= 0x00000008u;
- if (_impl_.generated_code_info_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo>(GetArenaForAllocation());
- _impl_.generated_code_info_ = p;
- }
- return _impl_.generated_code_info_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* CodeGeneratorResponse_File::mutable_generated_code_info() {
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* _msg = _internal_mutable_generated_code_info();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info)
- return _msg;
-}
-inline void CodeGeneratorResponse_File::set_allocated_generated_code_info(::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* generated_code_info) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.generated_code_info_);
- }
- if (generated_code_info) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
- reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(generated_code_info));
- if (message_arena != submessage_arena) {
- generated_code_info = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, generated_code_info, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- _impl_.generated_code_info_ = generated_code_info;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info)
-}
-
-// -------------------------------------------------------------------
-
-// CodeGeneratorResponse
-
-// optional string error = 1;
-inline bool CodeGeneratorResponse::_internal_has_error() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool CodeGeneratorResponse::has_error() const {
- return _internal_has_error();
-}
-inline void CodeGeneratorResponse::clear_error() {
- _impl_.error_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& CodeGeneratorResponse::error() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.error)
- return _internal_error();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void CodeGeneratorResponse::set_error(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.error_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorResponse.error)
-}
-inline std::string* CodeGeneratorResponse::mutable_error() {
- std::string* _s = _internal_mutable_error();
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.error)
- return _s;
-}
-inline const std::string& CodeGeneratorResponse::_internal_error() const {
- return _impl_.error_.Get();
-}
-inline void CodeGeneratorResponse::_internal_set_error(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.error_.Set(value, GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse::_internal_mutable_error() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.error_.Mutable(GetArenaForAllocation());
-}
-inline std::string* CodeGeneratorResponse::release_error() {
- // @@protoc_insertion_point(field_release:google.protobuf.compiler.CodeGeneratorResponse.error)
- if (!_internal_has_error()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.error_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.error_.IsDefault()) {
- _impl_.error_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void CodeGeneratorResponse::set_allocated_error(std::string* error) {
- if (error != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.error_.SetAllocated(error, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.error_.IsDefault()) {
- _impl_.error_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.compiler.CodeGeneratorResponse.error)
-}
-
-// optional uint64 supported_features = 2;
-inline bool CodeGeneratorResponse::_internal_has_supported_features() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool CodeGeneratorResponse::has_supported_features() const {
- return _internal_has_supported_features();
-}
-inline void CodeGeneratorResponse::clear_supported_features() {
- _impl_.supported_features_ = uint64_t{0u};
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline uint64_t CodeGeneratorResponse::_internal_supported_features() const {
- return _impl_.supported_features_;
-}
-inline uint64_t CodeGeneratorResponse::supported_features() const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.supported_features)
- return _internal_supported_features();
-}
-inline void CodeGeneratorResponse::_internal_set_supported_features(uint64_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.supported_features_ = value;
-}
-inline void CodeGeneratorResponse::set_supported_features(uint64_t value) {
- _internal_set_supported_features(value);
- // @@protoc_insertion_point(field_set:google.protobuf.compiler.CodeGeneratorResponse.supported_features)
-}
-
-// repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15;
-inline int CodeGeneratorResponse::_internal_file_size() const {
- return _impl_.file_.size();
-}
-inline int CodeGeneratorResponse::file_size() const {
- return _internal_file_size();
-}
-inline void CodeGeneratorResponse::clear_file() {
- _impl_.file_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* CodeGeneratorResponse::mutable_file(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.compiler.CodeGeneratorResponse.file)
- return _impl_.file_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File >*
-CodeGeneratorResponse::mutable_file() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.compiler.CodeGeneratorResponse.file)
- return &_impl_.file_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File& CodeGeneratorResponse::_internal_file(int index) const {
- return _impl_.file_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File& CodeGeneratorResponse::file(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.compiler.CodeGeneratorResponse.file)
- return _internal_file(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* CodeGeneratorResponse::_internal_add_file() {
- return _impl_.file_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* CodeGeneratorResponse::add_file() {
- ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File* _add = _internal_add_file();
- // @@protoc_insertion_point(field_add:google.protobuf.compiler.CodeGeneratorResponse.file)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_File >&
-CodeGeneratorResponse::file() const {
- // @@protoc_insertion_point(field_list:google.protobuf.compiler.CodeGeneratorResponse.file)
- return _impl_.file_;
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-} // namespace compiler
-PROTOBUF_NAMESPACE_CLOSE
-
-PROTOBUF_NAMESPACE_OPEN
-
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_Feature> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_Feature>() {
- return ::PROTOBUF_NAMESPACE_ID::compiler::CodeGeneratorResponse_Feature_descriptor();
-}
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fcompiler_2fplugin_2eproto
diff --git a/include/google/protobuf/compiler/plugin.proto b/include/google/protobuf/compiler/plugin.proto
deleted file mode 100644
index 9242aacc5b..0000000000
--- a/include/google/protobuf/compiler/plugin.proto
+++ /dev/null
@@ -1,183 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-//
-// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to
-// change.
-//
-// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is
-// just a program that reads a CodeGeneratorRequest from stdin and writes a
-// CodeGeneratorResponse to stdout.
-//
-// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead
-// of dealing with the raw protocol defined here.
-//
-// A plugin executable needs only to be placed somewhere in the path. The
-// plugin should be named "protoc-gen-$NAME", and will then be used when the
-// flag "--${NAME}_out" is passed to protoc.
-
-syntax = "proto2";
-
-package google.protobuf.compiler;
-option java_package = "com.google.protobuf.compiler";
-option java_outer_classname = "PluginProtos";
-
-option go_package = "google.golang.org/protobuf/types/pluginpb";
-
-import "google/protobuf/descriptor.proto";
-
-// The version number of protocol compiler.
-message Version {
- optional int32 major = 1;
- optional int32 minor = 2;
- optional int32 patch = 3;
- // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
- // be empty for mainline stable releases.
- optional string suffix = 4;
-}
-
-// An encoded CodeGeneratorRequest is written to the plugin's stdin.
-message CodeGeneratorRequest {
- // The .proto files that were explicitly listed on the command-line. The
- // code generator should generate code only for these files. Each file's
- // descriptor will be included in proto_file, below.
- repeated string file_to_generate = 1;
-
- // The generator parameter passed on the command-line.
- optional string parameter = 2;
-
- // FileDescriptorProtos for all files in files_to_generate and everything
- // they import. The files will appear in topological order, so each file
- // appears before any file that imports it.
- //
- // protoc guarantees that all proto_files will be written after
- // the fields above, even though this is not technically guaranteed by the
- // protobuf wire format. This theoretically could allow a plugin to stream
- // in the FileDescriptorProtos and handle them one by one rather than read
- // the entire set into memory at once. However, as of this writing, this
- // is not similarly optimized on protoc's end -- it will store all fields in
- // memory at once before sending them to the plugin.
- //
- // Type names of fields and extensions in the FileDescriptorProto are always
- // fully qualified.
- repeated FileDescriptorProto proto_file = 15;
-
- // The version number of protocol compiler.
- optional Version compiler_version = 3;
-
-}
-
-// The plugin writes an encoded CodeGeneratorResponse to stdout.
-message CodeGeneratorResponse {
- // Error message. If non-empty, code generation failed. The plugin process
- // should exit with status code zero even if it reports an error in this way.
- //
- // This should be used to indicate errors in .proto files which prevent the
- // code generator from generating correct code. Errors which indicate a
- // problem in protoc itself -- such as the input CodeGeneratorRequest being
- // unparseable -- should be reported by writing a message to stderr and
- // exiting with a non-zero status code.
- optional string error = 1;
-
- // A bitmask of supported features that the code generator supports.
- // This is a bitwise "or" of values from the Feature enum.
- optional uint64 supported_features = 2;
-
- // Sync with code_generator.h.
- enum Feature {
- FEATURE_NONE = 0;
- FEATURE_PROTO3_OPTIONAL = 1;
- }
-
- // Represents a single generated file.
- message File {
- // The file name, relative to the output directory. The name must not
- // contain "." or ".." components and must be relative, not be absolute (so,
- // the file cannot lie outside the output directory). "/" must be used as
- // the path separator, not "\".
- //
- // If the name is omitted, the content will be appended to the previous
- // file. This allows the generator to break large files into small chunks,
- // and allows the generated text to be streamed back to protoc so that large
- // files need not reside completely in memory at one time. Note that as of
- // this writing protoc does not optimize for this -- it will read the entire
- // CodeGeneratorResponse before writing files to disk.
- optional string name = 1;
-
- // If non-empty, indicates that the named file should already exist, and the
- // content here is to be inserted into that file at a defined insertion
- // point. This feature allows a code generator to extend the output
- // produced by another code generator. The original generator may provide
- // insertion points by placing special annotations in the file that look
- // like:
- // @@protoc_insertion_point(NAME)
- // The annotation can have arbitrary text before and after it on the line,
- // which allows it to be placed in a comment. NAME should be replaced with
- // an identifier naming the point -- this is what other generators will use
- // as the insertion_point. Code inserted at this point will be placed
- // immediately above the line containing the insertion point (thus multiple
- // insertions to the same point will come out in the order they were added).
- // The double-@ is intended to make it unlikely that the generated code
- // could contain things that look like insertion points by accident.
- //
- // For example, the C++ code generator places the following line in the
- // .pb.h files that it generates:
- // // @@protoc_insertion_point(namespace_scope)
- // This line appears within the scope of the file's package namespace, but
- // outside of any particular class. Another plugin can then specify the
- // insertion_point "namespace_scope" to generate additional classes or
- // other declarations that should be placed in this scope.
- //
- // Note that if the line containing the insertion point begins with
- // whitespace, the same whitespace will be added to every line of the
- // inserted text. This is useful for languages like Python, where
- // indentation matters. In these languages, the insertion point comment
- // should be indented the same amount as any inserted code will need to be
- // in order to work correctly in that context.
- //
- // The code generator that generates the initial file and the one which
- // inserts into it must both run as part of a single invocation of protoc.
- // Code generators are executed in the order in which they appear on the
- // command line.
- //
- // If |insertion_point| is present, |name| must also be present.
- optional string insertion_point = 2;
-
- // The file contents.
- optional string content = 15;
-
- // Information describing the file content being inserted. If an insertion
- // point is used, this information will be appropriately offset and inserted
- // into the code generation metadata for the generated files.
- optional GeneratedCodeInfo generated_code_info = 16;
- }
- repeated File file = 15;
-}
diff --git a/include/google/protobuf/compiler/python/generator.h b/include/google/protobuf/compiler/python/generator.h
deleted file mode 100644
index f1fecbc735..0000000000
--- a/include/google/protobuf/compiler/python/generator.h
+++ /dev/null
@@ -1,185 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: robinson@google.com (Will Robinson)
-//
-// Generates Python code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
-
-#include <string>
-
-#include <google/protobuf/stubs/mutex.h>
-#include <google/protobuf/compiler/code_generator.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Descriptor;
-class EnumDescriptor;
-class EnumValueDescriptor;
-class FieldDescriptor;
-class OneofDescriptor;
-class ServiceDescriptor;
-
-namespace io {
-class Printer;
-}
-
-namespace compiler {
-namespace python {
-
-// CodeGenerator implementation for generated Python protocol buffer classes.
-// If you create your own protocol compiler binary and you want it to support
-// Python output, you can do so by registering an instance of this
-// CodeGenerator with the CommandLineInterface in your main() function.
-class PROTOC_EXPORT Generator : public CodeGenerator {
- public:
- Generator();
- ~Generator() override;
-
- // CodeGenerator methods.
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
-
- uint64_t GetSupportedFeatures() const override;
-
- private:
- void PrintImports() const;
- void PrintFileDescriptor() const;
- void PrintAllNestedEnumsInFile() const;
- void PrintNestedEnums(const Descriptor& descriptor) const;
- void PrintEnum(const EnumDescriptor& enum_descriptor) const;
-
- void PrintFieldDescriptor(const FieldDescriptor& field,
- bool is_extension) const;
- void PrintFieldDescriptorsInDescriptor(
- const Descriptor& message_descriptor, bool is_extension,
- const std::string& list_variable_name, int (Descriptor::*CountFn)() const,
- const FieldDescriptor* (Descriptor::*GetterFn)(int)const) const;
- void PrintFieldsInDescriptor(const Descriptor& message_descriptor) const;
- void PrintExtensionsInDescriptor(const Descriptor& message_descriptor) const;
- void PrintMessageDescriptors() const;
- void PrintDescriptor(const Descriptor& message_descriptor) const;
- void PrintNestedDescriptors(const Descriptor& containing_descriptor) const;
-
- void PrintMessages() const;
- void PrintMessage(const Descriptor& message_descriptor,
- const std::string& prefix,
- std::vector<std::string>* to_register,
- bool is_nested) const;
- void PrintNestedMessages(const Descriptor& containing_descriptor,
- const std::string& prefix,
- std::vector<std::string>* to_register) const;
-
- void FixForeignFieldsInDescriptors() const;
- void FixForeignFieldsInDescriptor(
- const Descriptor& descriptor,
- const Descriptor* containing_descriptor) const;
- void FixForeignFieldsInField(const Descriptor* containing_type,
- const FieldDescriptor& field,
- const std::string& python_dict_name) const;
- void AddMessageToFileDescriptor(const Descriptor& descriptor) const;
- void AddEnumToFileDescriptor(const EnumDescriptor& descriptor) const;
- void AddExtensionToFileDescriptor(const FieldDescriptor& descriptor) const;
- void AddServiceToFileDescriptor(const ServiceDescriptor& descriptor) const;
- std::string FieldReferencingExpression(
- const Descriptor* containing_type, const FieldDescriptor& field,
- const std::string& python_dict_name) const;
- template <typename DescriptorT>
- void FixContainingTypeInDescriptor(
- const DescriptorT& descriptor,
- const Descriptor* containing_descriptor) const;
-
- void FixForeignFieldsInExtensions() const;
- void FixForeignFieldsInExtension(
- const FieldDescriptor& extension_field) const;
- void FixForeignFieldsInNestedExtensions(const Descriptor& descriptor) const;
-
- void PrintServices() const;
- void PrintServiceDescriptors() const;
- void PrintServiceDescriptor(const ServiceDescriptor& descriptor) const;
- void PrintServiceClass(const ServiceDescriptor& descriptor) const;
- void PrintServiceStub(const ServiceDescriptor& descriptor) const;
- void PrintDescriptorKeyAndModuleName(
- const ServiceDescriptor& descriptor) const;
-
- void PrintEnumValueDescriptor(const EnumValueDescriptor& descriptor) const;
- std::string OptionsValue(const std::string& serialized_options) const;
- bool GeneratingDescriptorProto() const;
-
- template <typename DescriptorT>
- std::string ModuleLevelDescriptorName(const DescriptorT& descriptor) const;
- std::string ModuleLevelMessageName(const Descriptor& descriptor) const;
- std::string ModuleLevelServiceDescriptorName(
- const ServiceDescriptor& descriptor) const;
-
- template <typename DescriptorT, typename DescriptorProtoT>
- void PrintSerializedPbInterval(const DescriptorT& descriptor,
- DescriptorProtoT& proto,
- const std::string& name) const;
-
- void FixAllDescriptorOptions() const;
- void FixOptionsForField(const FieldDescriptor& field) const;
- void FixOptionsForOneof(const OneofDescriptor& oneof) const;
- void FixOptionsForEnum(const EnumDescriptor& descriptor) const;
- void FixOptionsForService(const ServiceDescriptor& descriptor) const;
- void FixOptionsForMessage(const Descriptor& descriptor) const;
-
- void SetSerializedPbInterval() const;
- void SetMessagePbInterval(const Descriptor& descriptor) const;
-
- void CopyPublicDependenciesAliases(const std::string& copy_from,
- const FileDescriptor* file) const;
-
- // Very coarse-grained lock to ensure that Generate() is reentrant.
- // Guards file_, printer_ and file_descriptor_serialized_.
- mutable Mutex mutex_;
- mutable const FileDescriptor* file_; // Set in Generate(). Under mutex_.
- mutable std::string file_descriptor_serialized_;
- mutable io::Printer* printer_; // Set in Generate(). Under mutex_.
- mutable bool pure_python_workable_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Generator);
-};
-
-} // namespace python
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PYTHON_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/python/pyi_generator.h b/include/google/protobuf/compiler/python/pyi_generator.h
deleted file mode 100644
index 9611ed43d1..0000000000
--- a/include/google/protobuf/compiler/python/pyi_generator.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jieluo@google.com (Jie Luo)
-//
-// Generates Python stub (.pyi) for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_PYTHON_PYI_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_PYTHON_PYI_GENERATOR_H__
-
-#include <map>
-#include <set>
-#include <string>
-
-#include <google/protobuf/stubs/mutex.h>
-#include <google/protobuf/compiler/code_generator.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-class Descriptor;
-class EnumDescriptor;
-class FieldDescriptor;
-class MethodDescriptor;
-class ServiceDescriptor;
-
-namespace io {
-class Printer;
-}
-
-namespace compiler {
-namespace python {
-
-class PROTOC_EXPORT PyiGenerator : public google::protobuf::compiler::CodeGenerator {
- public:
- PyiGenerator();
- ~PyiGenerator() override;
-
- // CodeGenerator methods.
- uint64_t GetSupportedFeatures() const override {
- // Code generators must explicitly support proto3 optional.
- return CodeGenerator::FEATURE_PROTO3_OPTIONAL;
- }
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
-
- private:
- void PrintImportForDescriptor(const FileDescriptor& desc,
- std::map<std::string, std::string>* import_map,
- std::set<std::string>* seen_aliases) const;
- void PrintImports(std::map<std::string, std::string>* item_map,
- std::map<std::string, std::string>* import_map) const;
- void PrintEnum(const EnumDescriptor& enum_descriptor) const;
- void AddEnumValue(const EnumDescriptor& enum_descriptor,
- std::map<std::string, std::string>* item_map,
- const std::map<std::string, std::string>& import_map) const;
- void PrintTopLevelEnums() const;
- template <typename DescriptorT>
- void AddExtensions(const DescriptorT& descriptor,
- std::map<std::string, std::string>* item_map) const;
- void PrintMessages(
- const std::map<std::string, std::string>& import_map) const;
- void PrintMessage(const Descriptor& message_descriptor, bool is_nested,
- const std::map<std::string, std::string>& import_map) const;
- void PrintServices() const;
- void PrintItemMap(const std::map<std::string, std::string>& item_map) const;
- std::string GetFieldType(
- const FieldDescriptor& field_des, const Descriptor& containing_des,
- const std::map<std::string, std::string>& import_map) const;
- template <typename DescriptorT>
- std::string ModuleLevelName(
- const DescriptorT& descriptor,
- const std::map<std::string, std::string>& import_map) const;
-
- // Very coarse-grained lock to ensure that Generate() is reentrant.
- // Guards file_ and printer_.
- mutable Mutex mutex_;
- mutable const FileDescriptor* file_; // Set in Generate(). Under mutex_.
- mutable io::Printer* printer_; // Set in Generate(). Under mutex_.
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PyiGenerator);
-};
-
-} // namespace python
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PYTHON_PYI_GENERATOR_H__
diff --git a/include/google/protobuf/compiler/python/python_generator.h b/include/google/protobuf/compiler/python/python_generator.h
deleted file mode 100644
index 21d48cd9a0..0000000000
--- a/include/google/protobuf/compiler/python/python_generator.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GOOGLE_PROTOBUF_COMPILER_PYTHON_PYTHON_GENERATOR_H_
-#define GOOGLE_PROTOBUF_COMPILER_PYTHON_PYTHON_GENERATOR_H_
-
-#include <google/protobuf/compiler/python/generator.h>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_PYTHON_PYTHON_GENERATOR_H_
diff --git a/include/google/protobuf/compiler/ruby/ruby_generator.h b/include/google/protobuf/compiler/ruby/ruby_generator.h
deleted file mode 100644
index 647bb83606..0000000000
--- a/include/google/protobuf/compiler/ruby/ruby_generator.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Generates Ruby code for a given .proto file.
-
-#ifndef GOOGLE_PROTOBUF_COMPILER_RUBY_GENERATOR_H__
-#define GOOGLE_PROTOBUF_COMPILER_RUBY_GENERATOR_H__
-
-#include <string>
-
-#include <google/protobuf/compiler/code_generator.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace compiler {
-namespace ruby {
-
-// CodeGenerator implementation for generated Ruby protocol buffer classes.
-// If you create your own protocol compiler binary and you want it to support
-// Ruby output, you can do so by registering an instance of this
-// CodeGenerator with the CommandLineInterface in your main() function.
-class PROTOC_EXPORT Generator : public CodeGenerator {
- bool Generate(const FileDescriptor* file, const std::string& parameter,
- GeneratorContext* generator_context,
- std::string* error) const override;
- uint64_t GetSupportedFeatures() const override {
- return FEATURE_PROTO3_OPTIONAL;
- }
-};
-
-} // namespace ruby
-} // namespace compiler
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMPILER_RUBY_GENERATOR_H__
diff --git a/include/google/protobuf/descriptor.h b/include/google/protobuf/descriptor.h
deleted file mode 100644
index 1b8728ec63..0000000000
--- a/include/google/protobuf/descriptor.h
+++ /dev/null
@@ -1,2440 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains classes which describe a type of protocol message.
-// You can use a message's descriptor to learn at runtime what fields
-// it contains and what the types of those fields are. The Message
-// interface also allows you to dynamically access and modify individual
-// fields by passing the FieldDescriptor of the field you are interested
-// in.
-//
-// Most users will not care about descriptors, because they will write
-// code specific to certain protocol types and will simply use the classes
-// generated by the protocol compiler directly. Advanced users who want
-// to operate on arbitrary types (not known at compile time) may want to
-// read descriptors in order to learn about the contents of a message.
-// A very small number of users will want to construct their own
-// Descriptors, either because they are implementing Message manually or
-// because they are writing something like the protocol compiler.
-//
-// For an example of how you might use descriptors, see the code example
-// at the top of message.h.
-
-#ifndef GOOGLE_PROTOBUF_DESCRIPTOR_H__
-#define GOOGLE_PROTOBUF_DESCRIPTOR_H__
-
-
-#include <atomic>
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/mutex.h>
-#include <google/protobuf/stubs/once.h>
-#include <google/protobuf/port.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-// TYPE_BOOL is defined in the MacOS's ConditionalMacros.h.
-#ifdef TYPE_BOOL
-#undef TYPE_BOOL
-#endif // TYPE_BOOL
-
-#ifdef SWIG
-#define PROTOBUF_EXPORT
-#endif
-
-
-namespace google {
-namespace protobuf {
-
-// Defined in this file.
-class Descriptor;
-class FieldDescriptor;
-class OneofDescriptor;
-class EnumDescriptor;
-class EnumValueDescriptor;
-class ServiceDescriptor;
-class MethodDescriptor;
-class FileDescriptor;
-class DescriptorDatabase;
-class DescriptorPool;
-
-// Defined in descriptor.proto
-class DescriptorProto;
-class DescriptorProto_ExtensionRange;
-class FieldDescriptorProto;
-class OneofDescriptorProto;
-class EnumDescriptorProto;
-class EnumValueDescriptorProto;
-class ServiceDescriptorProto;
-class MethodDescriptorProto;
-class FileDescriptorProto;
-class MessageOptions;
-class FieldOptions;
-class OneofOptions;
-class EnumOptions;
-class EnumValueOptions;
-class ExtensionRangeOptions;
-class ServiceOptions;
-class MethodOptions;
-class FileOptions;
-class UninterpretedOption;
-class SourceCodeInfo;
-
-// Defined in message.h
-class Message;
-class Reflection;
-
-// Defined in descriptor.cc
-class DescriptorBuilder;
-class FileDescriptorTables;
-class Symbol;
-
-// Defined in unknown_field_set.h.
-class UnknownField;
-
-// Defined in command_line_interface.cc
-namespace compiler {
-class CommandLineInterface;
-namespace cpp {
-// Defined in helpers.h
-class Formatter;
-} // namespace cpp
-} // namespace compiler
-
-namespace descriptor_unittest {
-class DescriptorTest;
-} // namespace descriptor_unittest
-
-// Defined in printer.h
-namespace io {
-class Printer;
-} // namespace io
-
-// NB, all indices are zero-based.
-struct SourceLocation {
- int start_line;
- int end_line;
- int start_column;
- int end_column;
-
- // Doc comments found at the source location.
- // See the comments in SourceCodeInfo.Location (descriptor.proto) for details.
- std::string leading_comments;
- std::string trailing_comments;
- std::vector<std::string> leading_detached_comments;
-};
-
-// Options when generating machine-parsable output from a descriptor with
-// DebugString().
-struct DebugStringOptions {
- // include original user comments as recorded in SourceLocation entries. N.B.
- // that this must be |false| by default: several other pieces of code (for
- // example, the C++ code generation for fields in the proto compiler) rely on
- // DebugString() output being unobstructed by user comments.
- bool include_comments;
- // If true, elide the braced body in the debug string.
- bool elide_group_body;
- bool elide_oneof_body;
-
- DebugStringOptions()
- : include_comments(false),
- elide_group_body(false),
- elide_oneof_body(false) {
- }
-};
-
-// A class to handle the simplest cases of a lazily linked descriptor
-// for a message type that isn't built at the time of cross linking,
-// which is needed when a pool has lazily_build_dependencies_ set.
-// Must be instantiated as mutable in a descriptor.
-namespace internal {
-
-// The classes in this file represent a significant memory footprint for the
-// library. We make sure we are not accidentally making them larger by
-// hardcoding the struct size for a specific platform. Use as:
-//
-// PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(type, expected_size_in_x84-64);
-//
-
-#if !defined(PROTOBUF_INTERNAL_CHECK_CLASS_SIZE)
-#define PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(t, expected)
-#endif
-
-class FlatAllocator;
-
-class PROTOBUF_EXPORT LazyDescriptor {
- public:
- // Init function to be called at init time of a descriptor containing
- // a LazyDescriptor.
- void Init() {
- descriptor_ = nullptr;
- once_ = nullptr;
- }
-
- // Sets the value of the descriptor if it is known during the descriptor
- // building process. Not thread safe, should only be called during the
- // descriptor build process. Should not be called after SetLazy has been
- // called.
- void Set(const Descriptor* descriptor);
-
- // Sets the information needed to lazily cross link the descriptor at a later
- // time, SetLazy is not thread safe, should be called only once at descriptor
- // build time if the symbol wasn't found and building of the file containing
- // that type is delayed because lazily_build_dependencies_ is set on the pool.
- // Should not be called after Set() has been called.
- void SetLazy(StringPiece name, const FileDescriptor* file);
-
- // Returns the current value of the descriptor, thread-safe. If SetLazy(...)
- // has been called, will do a one-time cross link of the type specified,
- // building the descriptor file that contains the type if necessary.
- inline const Descriptor* Get(const ServiceDescriptor* service) {
- Once(service);
- return descriptor_;
- }
-
- private:
- void Once(const ServiceDescriptor* service);
-
- const Descriptor* descriptor_;
- // The once_ flag is followed by a NUL terminated string for the type name.
- internal::once_flag* once_;
-};
-
-class PROTOBUF_EXPORT SymbolBase {
- private:
- friend class google::protobuf::Symbol;
- uint8_t symbol_type_;
-};
-
-// Some types have more than one SymbolBase because they have multiple
-// identities in the table. We can't have duplicate direct bases, so we use this
-// intermediate base to do so.
-// See BuildEnumValue for details.
-template <int N>
-class PROTOBUF_EXPORT SymbolBaseN : public SymbolBase {};
-
-} // namespace internal
-
-// Describes a type of protocol message, or a particular group within a
-// message. To obtain the Descriptor for a given message object, call
-// Message::GetDescriptor(). Generated message classes also have a
-// static method called descriptor() which returns the type's descriptor.
-// Use DescriptorPool to construct your own descriptors.
-class PROTOBUF_EXPORT Descriptor : private internal::SymbolBase {
- public:
- typedef DescriptorProto Proto;
-
- // The name of the message type, not including its scope.
- const std::string& name() const;
-
- // The fully-qualified name of the message type, scope delimited by
- // periods. For example, message type "Foo" which is declared in package
- // "bar" has full name "bar.Foo". If a type "Baz" is nested within
- // Foo, Baz's full_name is "bar.Foo.Baz". To get only the part that
- // comes after the last '.', use name().
- const std::string& full_name() const;
-
- // Index of this descriptor within the file or containing type's message
- // type array.
- int index() const;
-
- // The .proto file in which this message type was defined. Never nullptr.
- const FileDescriptor* file() const;
-
- // If this Descriptor describes a nested type, this returns the type
- // in which it is nested. Otherwise, returns nullptr.
- const Descriptor* containing_type() const;
-
- // Get options for this message type. These are specified in the .proto file
- // by placing lines like "option foo = 1234;" in the message definition.
- // Allowed options are defined by MessageOptions in descriptor.proto, and any
- // available extensions of that message.
- const MessageOptions& options() const;
-
- // Write the contents of this Descriptor into the given DescriptorProto.
- // The target DescriptorProto must be clear before calling this; if it
- // isn't, the result may be garbage.
- void CopyTo(DescriptorProto* proto) const;
-
- // Write the contents of this descriptor in a human-readable form. Output
- // will be suitable for re-parsing.
- std::string DebugString() const;
-
- // Similar to DebugString(), but additionally takes options (e.g.,
- // include original user comments in output).
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Returns true if this is a placeholder for an unknown type. This will
- // only be the case if this descriptor comes from a DescriptorPool
- // with AllowUnknownDependencies() set.
- bool is_placeholder() const;
-
- enum WellKnownType {
- WELLKNOWNTYPE_UNSPECIFIED, // Not a well-known type.
-
- // Wrapper types.
- WELLKNOWNTYPE_DOUBLEVALUE, // google.protobuf.DoubleValue
- WELLKNOWNTYPE_FLOATVALUE, // google.protobuf.FloatValue
- WELLKNOWNTYPE_INT64VALUE, // google.protobuf.Int64Value
- WELLKNOWNTYPE_UINT64VALUE, // google.protobuf.UInt64Value
- WELLKNOWNTYPE_INT32VALUE, // google.protobuf.Int32Value
- WELLKNOWNTYPE_UINT32VALUE, // google.protobuf.UInt32Value
- WELLKNOWNTYPE_STRINGVALUE, // google.protobuf.StringValue
- WELLKNOWNTYPE_BYTESVALUE, // google.protobuf.BytesValue
- WELLKNOWNTYPE_BOOLVALUE, // google.protobuf.BoolValue
-
- // Other well known types.
- WELLKNOWNTYPE_ANY, // google.protobuf.Any
- WELLKNOWNTYPE_FIELDMASK, // google.protobuf.FieldMask
- WELLKNOWNTYPE_DURATION, // google.protobuf.Duration
- WELLKNOWNTYPE_TIMESTAMP, // google.protobuf.Timestamp
- WELLKNOWNTYPE_VALUE, // google.protobuf.Value
- WELLKNOWNTYPE_LISTVALUE, // google.protobuf.ListValue
- WELLKNOWNTYPE_STRUCT, // google.protobuf.Struct
-
- // New well-known types may be added in the future.
- // Please make sure any switch() statements have a 'default' case.
- __WELLKNOWNTYPE__DO_NOT_USE__ADD_DEFAULT_INSTEAD__,
- };
-
- WellKnownType well_known_type() const;
-
- // Field stuff -----------------------------------------------------
-
- // The number of fields in this message type.
- int field_count() const;
- // Gets a field by index, where 0 <= index < field_count().
- // These are returned in the order they were defined in the .proto file.
- const FieldDescriptor* field(int index) const;
-
- // Looks up a field by declared tag number. Returns nullptr if no such field
- // exists.
- const FieldDescriptor* FindFieldByNumber(int number) const;
- // Looks up a field by name. Returns nullptr if no such field exists.
- const FieldDescriptor* FindFieldByName(ConstStringParam name) const;
-
- // Looks up a field by lowercased name (as returned by lowercase_name()).
- // This lookup may be ambiguous if multiple field names differ only by case,
- // in which case the field returned is chosen arbitrarily from the matches.
- const FieldDescriptor* FindFieldByLowercaseName(
- ConstStringParam lowercase_name) const;
-
- // Looks up a field by camel-case name (as returned by camelcase_name()).
- // This lookup may be ambiguous if multiple field names differ in a way that
- // leads them to have identical camel-case names, in which case the field
- // returned is chosen arbitrarily from the matches.
- const FieldDescriptor* FindFieldByCamelcaseName(
- ConstStringParam camelcase_name) const;
-
- // The number of oneofs in this message type.
- int oneof_decl_count() const;
- // The number of oneofs in this message type, excluding synthetic oneofs.
- // Real oneofs always come first, so iterating up to real_oneof_decl_cout()
- // will yield all real oneofs.
- int real_oneof_decl_count() const;
- // Get a oneof by index, where 0 <= index < oneof_decl_count().
- // These are returned in the order they were defined in the .proto file.
- const OneofDescriptor* oneof_decl(int index) const;
-
- // Looks up a oneof by name. Returns nullptr if no such oneof exists.
- const OneofDescriptor* FindOneofByName(ConstStringParam name) const;
-
- // Nested type stuff -----------------------------------------------
-
- // The number of nested types in this message type.
- int nested_type_count() const;
- // Gets a nested type by index, where 0 <= index < nested_type_count().
- // These are returned in the order they were defined in the .proto file.
- const Descriptor* nested_type(int index) const;
-
- // Looks up a nested type by name. Returns nullptr if no such nested type
- // exists.
- const Descriptor* FindNestedTypeByName(ConstStringParam name) const;
-
- // Enum stuff ------------------------------------------------------
-
- // The number of enum types in this message type.
- int enum_type_count() const;
- // Gets an enum type by index, where 0 <= index < enum_type_count().
- // These are returned in the order they were defined in the .proto file.
- const EnumDescriptor* enum_type(int index) const;
-
- // Looks up an enum type by name. Returns nullptr if no such enum type
- // exists.
- const EnumDescriptor* FindEnumTypeByName(ConstStringParam name) const;
-
- // Looks up an enum value by name, among all enum types in this message.
- // Returns nullptr if no such value exists.
- const EnumValueDescriptor* FindEnumValueByName(ConstStringParam name) const;
-
- // Extensions ------------------------------------------------------
-
- // A range of field numbers which are designated for third-party
- // extensions.
- struct ExtensionRange {
- typedef DescriptorProto_ExtensionRange Proto;
-
- typedef ExtensionRangeOptions OptionsType;
-
- // See Descriptor::CopyTo().
- void CopyTo(DescriptorProto_ExtensionRange* proto) const;
-
- int start; // inclusive
- int end; // exclusive
-
- const ExtensionRangeOptions* options_;
- };
-
- // The number of extension ranges in this message type.
- int extension_range_count() const;
- // Gets an extension range by index, where 0 <= index <
- // extension_range_count(). These are returned in the order they were defined
- // in the .proto file.
- const ExtensionRange* extension_range(int index) const;
-
- // Returns true if the number is in one of the extension ranges.
- bool IsExtensionNumber(int number) const;
-
- // Returns nullptr if no extension range contains the given number.
- const ExtensionRange* FindExtensionRangeContainingNumber(int number) const;
-
- // The number of extensions defined nested within this message type's scope.
- // See doc:
- // https://developers.google.com/protocol-buffers/docs/proto#nested-extensions
- //
- // Note that the extensions may be extending *other* messages.
- //
- // For example:
- // message M1 {
- // extensions 1 to max;
- // }
- //
- // message M2 {
- // extend M1 {
- // optional int32 foo = 1;
- // }
- // }
- //
- // In this case,
- // DescriptorPool::generated_pool()
- // ->FindMessageTypeByName("M2")
- // ->extension(0)
- // will return "foo", even though "foo" is an extension of M1.
- // To find all known extensions of a given message, instead use
- // DescriptorPool::FindAllExtensions.
- int extension_count() const;
- // Get an extension by index, where 0 <= index < extension_count().
- // These are returned in the order they were defined in the .proto file.
- const FieldDescriptor* extension(int index) const;
-
- // Looks up a named extension (which extends some *other* message type)
- // defined within this message type's scope.
- const FieldDescriptor* FindExtensionByName(ConstStringParam name) const;
-
- // Similar to FindFieldByLowercaseName(), but finds extensions defined within
- // this message type's scope.
- const FieldDescriptor* FindExtensionByLowercaseName(
- ConstStringParam name) const;
-
- // Similar to FindFieldByCamelcaseName(), but finds extensions defined within
- // this message type's scope.
- const FieldDescriptor* FindExtensionByCamelcaseName(
- ConstStringParam name) const;
-
- // Reserved fields -------------------------------------------------
-
- // A range of reserved field numbers.
- struct ReservedRange {
- int start; // inclusive
- int end; // exclusive
- };
-
- // The number of reserved ranges in this message type.
- int reserved_range_count() const;
- // Gets an reserved range by index, where 0 <= index <
- // reserved_range_count(). These are returned in the order they were defined
- // in the .proto file.
- const ReservedRange* reserved_range(int index) const;
-
- // Returns true if the number is in one of the reserved ranges.
- bool IsReservedNumber(int number) const;
-
- // Returns nullptr if no reserved range contains the given number.
- const ReservedRange* FindReservedRangeContainingNumber(int number) const;
-
- // The number of reserved field names in this message type.
- int reserved_name_count() const;
-
- // Gets a reserved name by index, where 0 <= index < reserved_name_count().
- const std::string& reserved_name(int index) const;
-
- // Returns true if the field name is reserved.
- bool IsReservedName(ConstStringParam name) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this message declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- // Maps --------------------------------------------------------------
-
- // Returns the FieldDescriptor for the "key" field. If this isn't a map entry
- // field, returns nullptr.
- const FieldDescriptor* map_key() const;
-
- // Returns the FieldDescriptor for the "value" field. If this isn't a map
- // entry field, returns nullptr.
- const FieldDescriptor* map_value() const;
-
- private:
- friend class Symbol;
- typedef MessageOptions OptionsType;
-
- // Allows tests to test CopyTo(proto, true).
- friend class descriptor_unittest::DescriptorTest;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // Fill the json_name field of FieldDescriptorProto.
- void CopyJsonNameTo(DescriptorProto* proto) const;
-
- // Internal version of DebugString; controls the level of indenting for
- // correct depth. Takes |options| to control debug-string options, and
- // |include_opening_clause| to indicate whether the "message ... " part of the
- // clause has already been generated (this varies depending on context).
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options,
- bool include_opening_clause) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- // True if this is a placeholder for an unknown type.
- bool is_placeholder_ : 1;
- // True if this is a placeholder and the type name wasn't fully-qualified.
- bool is_unqualified_placeholder_ : 1;
- // Well known type. Stored like this to conserve space.
- uint8_t well_known_type_ : 5;
-
- // This points to the last field _number_ that is part of the sequence
- // starting at 1, where
- // `desc->field(i)->number() == i + 1`
- // A value of `0` means no field matches. That is, there are no fields or the
- // first field is not field `1`.
- // Uses 16-bit to avoid extra padding. Unlikely to have more than 2^16
- // sequentially numbered fields in a message.
- uint16_t sequential_field_limit_;
-
- int field_count_;
-
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const FileDescriptor* file_;
- const Descriptor* containing_type_;
- const MessageOptions* options_;
-
- // These arrays are separated from their sizes to minimize padding on 64-bit.
- FieldDescriptor* fields_;
- OneofDescriptor* oneof_decls_;
- Descriptor* nested_types_;
- EnumDescriptor* enum_types_;
- ExtensionRange* extension_ranges_;
- FieldDescriptor* extensions_;
- ReservedRange* reserved_ranges_;
- const std::string** reserved_names_;
-
- int oneof_decl_count_;
- int real_oneof_decl_count_;
- int nested_type_count_;
- int enum_type_count_;
- int extension_range_count_;
- int extension_count_;
- int reserved_range_count_;
- int reserved_name_count_;
-
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<Descriptor>() and AllocateArray<Descriptor>() in descriptor.cc
- // and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- Descriptor() {}
- friend class DescriptorBuilder;
- friend class DescriptorPool;
- friend class EnumDescriptor;
- friend class FieldDescriptor;
- friend class FileDescriptorTables;
- friend class OneofDescriptor;
- friend class MethodDescriptor;
- friend class FileDescriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Descriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(Descriptor, 136);
-
-// Describes a single field of a message. To get the descriptor for a given
-// field, first get the Descriptor for the message in which it is defined,
-// then call Descriptor::FindFieldByName(). To get a FieldDescriptor for
-// an extension, do one of the following:
-// - Get the Descriptor or FileDescriptor for its containing scope, then
-// call Descriptor::FindExtensionByName() or
-// FileDescriptor::FindExtensionByName().
-// - Given a DescriptorPool, call DescriptorPool::FindExtensionByNumber() or
-// DescriptorPool::FindExtensionByPrintableName().
-// Use DescriptorPool to construct your own descriptors.
-class PROTOBUF_EXPORT FieldDescriptor : private internal::SymbolBase {
- public:
- typedef FieldDescriptorProto Proto;
-
- // Identifies a field type. 0 is reserved for errors. The order is weird
- // for historical reasons. Types 12 and up are new in proto2.
- enum Type {
- TYPE_DOUBLE = 1, // double, exactly eight bytes on the wire.
- TYPE_FLOAT = 2, // float, exactly four bytes on the wire.
- TYPE_INT64 = 3, // int64, varint on the wire. Negative numbers
- // take 10 bytes. Use TYPE_SINT64 if negative
- // values are likely.
- TYPE_UINT64 = 4, // uint64, varint on the wire.
- TYPE_INT32 = 5, // int32, varint on the wire. Negative numbers
- // take 10 bytes. Use TYPE_SINT32 if negative
- // values are likely.
- TYPE_FIXED64 = 6, // uint64, exactly eight bytes on the wire.
- TYPE_FIXED32 = 7, // uint32, exactly four bytes on the wire.
- TYPE_BOOL = 8, // bool, varint on the wire.
- TYPE_STRING = 9, // UTF-8 text.
- TYPE_GROUP = 10, // Tag-delimited message. Deprecated.
- TYPE_MESSAGE = 11, // Length-delimited message.
-
- TYPE_BYTES = 12, // Arbitrary byte array.
- TYPE_UINT32 = 13, // uint32, varint on the wire
- TYPE_ENUM = 14, // Enum, varint on the wire
- TYPE_SFIXED32 = 15, // int32, exactly four bytes on the wire
- TYPE_SFIXED64 = 16, // int64, exactly eight bytes on the wire
- TYPE_SINT32 = 17, // int32, ZigZag-encoded varint on the wire
- TYPE_SINT64 = 18, // int64, ZigZag-encoded varint on the wire
-
- MAX_TYPE = 18, // Constant useful for defining lookup tables
- // indexed by Type.
- };
-
- // Specifies the C++ data type used to represent the field. There is a
- // fixed mapping from Type to CppType where each Type maps to exactly one
- // CppType. 0 is reserved for errors.
- enum CppType {
- CPPTYPE_INT32 = 1, // TYPE_INT32, TYPE_SINT32, TYPE_SFIXED32
- CPPTYPE_INT64 = 2, // TYPE_INT64, TYPE_SINT64, TYPE_SFIXED64
- CPPTYPE_UINT32 = 3, // TYPE_UINT32, TYPE_FIXED32
- CPPTYPE_UINT64 = 4, // TYPE_UINT64, TYPE_FIXED64
- CPPTYPE_DOUBLE = 5, // TYPE_DOUBLE
- CPPTYPE_FLOAT = 6, // TYPE_FLOAT
- CPPTYPE_BOOL = 7, // TYPE_BOOL
- CPPTYPE_ENUM = 8, // TYPE_ENUM
- CPPTYPE_STRING = 9, // TYPE_STRING, TYPE_BYTES
- CPPTYPE_MESSAGE = 10, // TYPE_MESSAGE, TYPE_GROUP
-
- MAX_CPPTYPE = 10, // Constant useful for defining lookup tables
- // indexed by CppType.
- };
-
- // Identifies whether the field is optional, required, or repeated. 0 is
- // reserved for errors.
- enum Label {
- LABEL_OPTIONAL = 1, // optional
- LABEL_REQUIRED = 2, // required
- LABEL_REPEATED = 3, // repeated
-
- MAX_LABEL = 3, // Constant useful for defining lookup tables
- // indexed by Label.
- };
-
- // Valid field numbers are positive integers up to kMaxNumber.
- static const int kMaxNumber = (1 << 29) - 1;
-
- // First field number reserved for the protocol buffer library implementation.
- // Users may not declare fields that use reserved numbers.
- static const int kFirstReservedNumber = 19000;
- // Last field number reserved for the protocol buffer library implementation.
- // Users may not declare fields that use reserved numbers.
- static const int kLastReservedNumber = 19999;
-
- const std::string& name() const; // Name of this field within the message.
- const std::string& full_name() const; // Fully-qualified name of the field.
- const std::string& json_name() const; // JSON name of this field.
- const FileDescriptor* file() const; // File in which this field was defined.
- bool is_extension() const; // Is this an extension field?
- int number() const; // Declared tag number.
-
- // Same as name() except converted to lower-case. This (and especially the
- // FindFieldByLowercaseName() method) can be useful when parsing formats
- // which prefer to use lowercase naming style. (Although, technically
- // field names should be lowercased anyway according to the protobuf style
- // guide, so this only makes a difference when dealing with old .proto files
- // which do not follow the guide.)
- const std::string& lowercase_name() const;
-
- // Same as name() except converted to camel-case. In this conversion, any
- // time an underscore appears in the name, it is removed and the next
- // letter is capitalized. Furthermore, the first letter of the name is
- // lower-cased. Examples:
- // FooBar -> fooBar
- // foo_bar -> fooBar
- // fooBar -> fooBar
- // This (and especially the FindFieldByCamelcaseName() method) can be useful
- // when parsing formats which prefer to use camel-case naming style.
- const std::string& camelcase_name() const;
-
- Type type() const; // Declared type of this field.
- const char* type_name() const; // Name of the declared type.
- CppType cpp_type() const; // C++ type of this field.
- const char* cpp_type_name() const; // Name of the C++ type.
- Label label() const; // optional/required/repeated
-
- bool is_required() const; // shorthand for label() == LABEL_REQUIRED
- bool is_optional() const; // shorthand for label() == LABEL_OPTIONAL
- bool is_repeated() const; // shorthand for label() == LABEL_REPEATED
- bool is_packable() const; // shorthand for is_repeated() &&
- // IsTypePackable(type())
- bool is_packed() const; // shorthand for is_packable() &&
- // options().packed()
- bool is_map() const; // shorthand for type() == TYPE_MESSAGE &&
- // message_type()->options().map_entry()
-
- // Returns true if this field was syntactically written with "optional" in the
- // .proto file. Excludes singular proto3 fields that do not have a label.
- bool has_optional_keyword() const;
-
- // Returns true if this field tracks presence, ie. does the field
- // distinguish between "unset" and "present with default value."
- // This includes required, optional, and oneof fields. It excludes maps,
- // repeated fields, and singular proto3 fields without "optional".
- //
- // For fields where has_presence() == true, the return value of
- // Reflection::HasField() is semantically meaningful.
- bool has_presence() const;
-
- // Index of this field within the message's field array, or the file or
- // extension scope's extensions array.
- int index() const;
-
- // Does this field have an explicitly-declared default value?
- bool has_default_value() const;
-
- // Whether the user has specified the json_name field option in the .proto
- // file.
- bool has_json_name() const;
-
- // Get the field default value if cpp_type() == CPPTYPE_INT32. If no
- // explicit default was defined, the default is 0.
- int32_t default_value_int32_t() const;
- int32_t default_value_int32() const { return default_value_int32_t(); }
- // Get the field default value if cpp_type() == CPPTYPE_INT64. If no
- // explicit default was defined, the default is 0.
- int64_t default_value_int64_t() const;
- int64_t default_value_int64() const { return default_value_int64_t(); }
- // Get the field default value if cpp_type() == CPPTYPE_UINT32. If no
- // explicit default was defined, the default is 0.
- uint32_t default_value_uint32_t() const;
- uint32_t default_value_uint32() const { return default_value_uint32_t(); }
- // Get the field default value if cpp_type() == CPPTYPE_UINT64. If no
- // explicit default was defined, the default is 0.
- uint64_t default_value_uint64_t() const;
- uint64_t default_value_uint64() const { return default_value_uint64_t(); }
- // Get the field default value if cpp_type() == CPPTYPE_FLOAT. If no
- // explicit default was defined, the default is 0.0.
- float default_value_float() const;
- // Get the field default value if cpp_type() == CPPTYPE_DOUBLE. If no
- // explicit default was defined, the default is 0.0.
- double default_value_double() const;
- // Get the field default value if cpp_type() == CPPTYPE_BOOL. If no
- // explicit default was defined, the default is false.
- bool default_value_bool() const;
- // Get the field default value if cpp_type() == CPPTYPE_ENUM. If no
- // explicit default was defined, the default is the first value defined
- // in the enum type (all enum types are required to have at least one value).
- // This never returns nullptr.
- const EnumValueDescriptor* default_value_enum() const;
- // Get the field default value if cpp_type() == CPPTYPE_STRING. If no
- // explicit default was defined, the default is the empty string.
- const std::string& default_value_string() const;
-
- // The Descriptor for the message of which this is a field. For extensions,
- // this is the extended type. Never nullptr.
- const Descriptor* containing_type() const;
-
- // If the field is a member of a oneof, this is the one, otherwise this is
- // nullptr.
- const OneofDescriptor* containing_oneof() const;
-
- // If the field is a member of a non-synthetic oneof, returns the descriptor
- // for the oneof, otherwise returns nullptr.
- const OneofDescriptor* real_containing_oneof() const;
-
- // If the field is a member of a oneof, returns the index in that oneof.
- int index_in_oneof() const;
-
- // An extension may be declared within the scope of another message. If this
- // field is an extension (is_extension() is true), then extension_scope()
- // returns that message, or nullptr if the extension was declared at global
- // scope. If this is not an extension, extension_scope() is undefined (may
- // assert-fail).
- const Descriptor* extension_scope() const;
-
- // If type is TYPE_MESSAGE or TYPE_GROUP, returns a descriptor for the
- // message or the group type. Otherwise, returns null.
- const Descriptor* message_type() const;
- // If type is TYPE_ENUM, returns a descriptor for the enum. Otherwise,
- // returns null.
- const EnumDescriptor* enum_type() const;
-
- // Get the FieldOptions for this field. This includes things listed in
- // square brackets after the field definition. E.g., the field:
- // optional string text = 1 [ctype=CORD];
- // has the "ctype" option set. Allowed options are defined by FieldOptions in
- // descriptor.proto, and any available extensions of that message.
- const FieldOptions& options() const;
-
- // See Descriptor::CopyTo().
- void CopyTo(FieldDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Helper method to get the CppType for a particular Type.
- static CppType TypeToCppType(Type type);
-
- // Helper method to get the name of a Type.
- static const char* TypeName(Type type);
-
- // Helper method to get the name of a CppType.
- static const char* CppTypeName(CppType cpp_type);
-
- // Return true iff [packed = true] is valid for fields of this type.
- static inline bool IsTypePackable(Type field_type);
-
- // Returns full_name() except if the field is a MessageSet extension,
- // in which case it returns the full_name() of the containing message type
- // for backwards compatibility with proto1.
- //
- // A MessageSet extension is defined as an optional message extension
- // whose containing type has the message_set_wire_format option set.
- // This should be true of extensions of google.protobuf.bridge.MessageSet;
- // by convention, such extensions are named "message_set_extension".
- //
- // The opposite operation (looking up an extension's FieldDescriptor given
- // its printable name) can be accomplished with
- // message->file()->pool()->FindExtensionByPrintableName(message, name)
- // where the extension extends "message".
- const std::string& PrintableNameForExtension() const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this field declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef FieldOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
- friend class Reflection;
-
- // Fill the json_name field of FieldDescriptorProto.
- void CopyJsonNameTo(FieldDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options) const;
-
- // formats the default value appropriately and returns it as a string.
- // Must have a default value to call this. If quote_string_type is true, then
- // types of CPPTYPE_STRING whill be surrounded by quotes and CEscaped.
- std::string DefaultValueAsString(bool quote_string_type) const;
-
- // Helper function that returns the field type name for DebugString.
- std::string FieldTypeNameDebugString() const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- // Returns true if this is a map message type.
- bool is_map_message_type() const;
-
- bool has_default_value_ : 1;
- bool proto3_optional_ : 1;
- // Whether the user has specified the json_name field option in the .proto
- // file.
- bool has_json_name_ : 1;
- bool is_extension_ : 1;
- bool is_oneof_ : 1;
-
- // Actually a `Label` but stored as uint8_t to save space.
- uint8_t label_ : 2;
-
- // Actually a `Type`, but stored as uint8_t to save space.
- mutable uint8_t type_;
-
- // Logically:
- // all_names_ = [name, full_name, lower, camel, json]
- // However:
- // duplicates will be omitted, so lower/camel/json might be in the same
- // position.
- // We store the true offset for each name here, and the bit width must be
- // large enough to account for the worst case where all names are present.
- uint8_t lowercase_name_index_ : 2;
- uint8_t camelcase_name_index_ : 2;
- uint8_t json_name_index_ : 3;
- // Sadly, `number_` located here to reduce padding. Unrelated to all_names_
- // and its indices above.
- int number_;
- const std::string* all_names_;
- const FileDescriptor* file_;
-
- // The once_flag is followed by a NUL terminated string for the type name and
- // enum default value (or empty string if no default enum).
- internal::once_flag* type_once_;
- static void TypeOnceInit(const FieldDescriptor* to_init);
- void InternalTypeOnceInit() const;
- const Descriptor* containing_type_;
- union {
- const OneofDescriptor* containing_oneof;
- const Descriptor* extension_scope;
- } scope_;
- union {
- mutable const Descriptor* message_type;
- mutable const EnumDescriptor* enum_type;
- } type_descriptor_;
- const FieldOptions* options_;
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<FieldDescriptor>() and AllocateArray<FieldDescriptor>() in
- // descriptor.cc and update them to initialize the field.
-
- union {
- int32_t default_value_int32_t_;
- int64_t default_value_int64_t_;
- uint32_t default_value_uint32_t_;
- uint64_t default_value_uint64_t_;
- float default_value_float_;
- double default_value_double_;
- bool default_value_bool_;
-
- mutable const EnumValueDescriptor* default_value_enum_;
- const std::string* default_value_string_;
- mutable std::atomic<const Message*> default_generated_instance_;
- };
-
- static const CppType kTypeToCppTypeMap[MAX_TYPE + 1];
-
- static const char* const kTypeToName[MAX_TYPE + 1];
-
- static const char* const kCppTypeToName[MAX_CPPTYPE + 1];
-
- static const char* const kLabelToName[MAX_LABEL + 1];
-
- // Must be constructed using DescriptorPool.
- FieldDescriptor() {}
- friend class DescriptorBuilder;
- friend class FileDescriptor;
- friend class Descriptor;
- friend class OneofDescriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(FieldDescriptor, 72);
-
-// Describes a oneof defined in a message type.
-class PROTOBUF_EXPORT OneofDescriptor : private internal::SymbolBase {
- public:
- typedef OneofDescriptorProto Proto;
-
- const std::string& name() const; // Name of this oneof.
- const std::string& full_name() const; // Fully-qualified name of the oneof.
-
- // Index of this oneof within the message's oneof array.
- int index() const;
-
- // Returns whether this oneof was inserted by the compiler to wrap a proto3
- // optional field. If this returns true, code generators should *not* emit it.
- bool is_synthetic() const;
-
- // The .proto file in which this oneof was defined. Never nullptr.
- const FileDescriptor* file() const;
- // The Descriptor for the message containing this oneof.
- const Descriptor* containing_type() const;
-
- // The number of (non-extension) fields which are members of this oneof.
- int field_count() const;
- // Get a member of this oneof, in the order in which they were declared in the
- // .proto file. Does not include extensions.
- const FieldDescriptor* field(int index) const;
-
- const OneofOptions& options() const;
-
- // See Descriptor::CopyTo().
- void CopyTo(OneofDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this oneof declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef OneofOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // See Descriptor::DebugString().
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- int field_count_;
-
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const Descriptor* containing_type_;
- const OneofOptions* options_;
- const FieldDescriptor* fields_;
-
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<OneofDescriptor>() and AllocateArray<OneofDescriptor>()
- // in descriptor.cc and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- OneofDescriptor() {}
- friend class DescriptorBuilder;
- friend class Descriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OneofDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(OneofDescriptor, 40);
-
-// Describes an enum type defined in a .proto file. To get the EnumDescriptor
-// for a generated enum type, call TypeName_descriptor(). Use DescriptorPool
-// to construct your own descriptors.
-class PROTOBUF_EXPORT EnumDescriptor : private internal::SymbolBase {
- public:
- typedef EnumDescriptorProto Proto;
-
- // The name of this enum type in the containing scope.
- const std::string& name() const;
-
- // The fully-qualified name of the enum type, scope delimited by periods.
- const std::string& full_name() const;
-
- // Index of this enum within the file or containing message's enum array.
- int index() const;
-
- // The .proto file in which this enum type was defined. Never nullptr.
- const FileDescriptor* file() const;
-
- // The number of values for this EnumDescriptor. Guaranteed to be greater
- // than zero.
- int value_count() const;
- // Gets a value by index, where 0 <= index < value_count().
- // These are returned in the order they were defined in the .proto file.
- const EnumValueDescriptor* value(int index) const;
-
- // Looks up a value by name. Returns nullptr if no such value exists.
- const EnumValueDescriptor* FindValueByName(ConstStringParam name) const;
- // Looks up a value by number. Returns nullptr if no such value exists. If
- // multiple values have this number, the first one defined is returned.
- const EnumValueDescriptor* FindValueByNumber(int number) const;
-
- // If this enum type is nested in a message type, this is that message type.
- // Otherwise, nullptr.
- const Descriptor* containing_type() const;
-
- // Get options for this enum type. These are specified in the .proto file by
- // placing lines like "option foo = 1234;" in the enum definition. Allowed
- // options are defined by EnumOptions in descriptor.proto, and any available
- // extensions of that message.
- const EnumOptions& options() const;
-
- // See Descriptor::CopyTo().
- void CopyTo(EnumDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Returns true if this is a placeholder for an unknown enum. This will
- // only be the case if this descriptor comes from a DescriptorPool
- // with AllowUnknownDependencies() set.
- bool is_placeholder() const;
-
- // Reserved fields -------------------------------------------------
-
- // A range of reserved field numbers.
- struct ReservedRange {
- int start; // inclusive
- int end; // inclusive
- };
-
- // The number of reserved ranges in this message type.
- int reserved_range_count() const;
- // Gets an reserved range by index, where 0 <= index <
- // reserved_range_count(). These are returned in the order they were defined
- // in the .proto file.
- const EnumDescriptor::ReservedRange* reserved_range(int index) const;
-
- // Returns true if the number is in one of the reserved ranges.
- bool IsReservedNumber(int number) const;
-
- // Returns nullptr if no reserved range contains the given number.
- const EnumDescriptor::ReservedRange* FindReservedRangeContainingNumber(
- int number) const;
-
- // The number of reserved field names in this message type.
- int reserved_name_count() const;
-
- // Gets a reserved name by index, where 0 <= index < reserved_name_count().
- const std::string& reserved_name(int index) const;
-
- // Returns true if the field name is reserved.
- bool IsReservedName(ConstStringParam name) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this enum declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef EnumOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // Allow access to FindValueByNumberCreatingIfUnknown.
- friend class descriptor_unittest::DescriptorTest;
-
- // Looks up a value by number. If the value does not exist, dynamically
- // creates a new EnumValueDescriptor for that value, assuming that it was
- // unknown. If a new descriptor is created, this is done in a thread-safe way,
- // and future calls will return the same value descriptor pointer.
- //
- // This is private but is used by Reflection (which is friended below) to
- // return a valid EnumValueDescriptor from GetEnum() when this feature is
- // enabled.
- const EnumValueDescriptor* FindValueByNumberCreatingIfUnknown(
- int number) const;
-
- // See Descriptor::DebugString().
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- // True if this is a placeholder for an unknown type.
- bool is_placeholder_ : 1;
- // True if this is a placeholder and the type name wasn't fully-qualified.
- bool is_unqualified_placeholder_ : 1;
-
- // This points to the last value _index_ that is part of the sequence starting
- // with the first label, where
- // `enum->value(i)->number() == enum->value(0)->number() + i`
- // We measure relative to the first label to adapt to enum labels starting at
- // 0 or 1.
- // Uses 16-bit to avoid extra padding. Unlikely to have more than 2^15
- // sequentially numbered labels in an enum.
- int16_t sequential_value_limit_;
-
- int value_count_;
-
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const FileDescriptor* file_;
- const Descriptor* containing_type_;
- const EnumOptions* options_;
- EnumValueDescriptor* values_;
-
- int reserved_range_count_;
- int reserved_name_count_;
- EnumDescriptor::ReservedRange* reserved_ranges_;
- const std::string** reserved_names_;
-
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<EnumDescriptor>() and AllocateArray<EnumDescriptor>() in
- // descriptor.cc and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- EnumDescriptor() {}
- friend class DescriptorBuilder;
- friend class Descriptor;
- friend class FieldDescriptor;
- friend class FileDescriptorTables;
- friend class EnumValueDescriptor;
- friend class FileDescriptor;
- friend class DescriptorPool;
- friend class Reflection;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(EnumDescriptor, 72);
-
-// Describes an individual enum constant of a particular type. To get the
-// EnumValueDescriptor for a given enum value, first get the EnumDescriptor
-// for its type, then use EnumDescriptor::FindValueByName() or
-// EnumDescriptor::FindValueByNumber(). Use DescriptorPool to construct
-// your own descriptors.
-class PROTOBUF_EXPORT EnumValueDescriptor : private internal::SymbolBaseN<0>,
- private internal::SymbolBaseN<1> {
- public:
- typedef EnumValueDescriptorProto Proto;
-
- const std::string& name() const; // Name of this enum constant.
- int index() const; // Index within the enums's Descriptor.
- int number() const; // Numeric value of this enum constant.
-
- // The full_name of an enum value is a sibling symbol of the enum type.
- // e.g. the full name of FieldDescriptorProto::TYPE_INT32 is actually
- // "google.protobuf.FieldDescriptorProto.TYPE_INT32", NOT
- // "google.protobuf.FieldDescriptorProto.Type.TYPE_INT32". This is to conform
- // with C++ scoping rules for enums.
- const std::string& full_name() const;
-
- // The .proto file in which this value was defined. Never nullptr.
- const FileDescriptor* file() const;
- // The type of this value. Never nullptr.
- const EnumDescriptor* type() const;
-
- // Get options for this enum value. These are specified in the .proto file by
- // adding text like "[foo = 1234]" after an enum value definition. Allowed
- // options are defined by EnumValueOptions in descriptor.proto, and any
- // available extensions of that message.
- const EnumValueOptions& options() const;
-
- // See Descriptor::CopyTo().
- void CopyTo(EnumValueDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this enum value declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef EnumValueOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // See Descriptor::DebugString().
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- int number_;
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const EnumDescriptor* type_;
- const EnumValueOptions* options_;
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<EnumValueDescriptor>() and AllocateArray<EnumValueDescriptor>()
- // in descriptor.cc and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- EnumValueDescriptor() {}
- friend class DescriptorBuilder;
- friend class EnumDescriptor;
- friend class DescriptorPool;
- friend class FileDescriptorTables;
- friend class Reflection;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumValueDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(EnumValueDescriptor, 32);
-
-// Describes an RPC service. Use DescriptorPool to construct your own
-// descriptors.
-class PROTOBUF_EXPORT ServiceDescriptor : private internal::SymbolBase {
- public:
- typedef ServiceDescriptorProto Proto;
-
- // The name of the service, not including its containing scope.
- const std::string& name() const;
- // The fully-qualified name of the service, scope delimited by periods.
- const std::string& full_name() const;
- // Index of this service within the file's services array.
- int index() const;
-
- // The .proto file in which this service was defined. Never nullptr.
- const FileDescriptor* file() const;
-
- // Get options for this service type. These are specified in the .proto file
- // by placing lines like "option foo = 1234;" in the service definition.
- // Allowed options are defined by ServiceOptions in descriptor.proto, and any
- // available extensions of that message.
- const ServiceOptions& options() const;
-
- // The number of methods this service defines.
- int method_count() const;
- // Gets a MethodDescriptor by index, where 0 <= index < method_count().
- // These are returned in the order they were defined in the .proto file.
- const MethodDescriptor* method(int index) const;
-
- // Look up a MethodDescriptor by name.
- const MethodDescriptor* FindMethodByName(ConstStringParam name) const;
-
- // See Descriptor::CopyTo().
- void CopyTo(ServiceDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this service declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef ServiceOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // See Descriptor::DebugString().
- void DebugString(std::string* contents,
- const DebugStringOptions& options) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const FileDescriptor* file_;
- const ServiceOptions* options_;
- MethodDescriptor* methods_;
- int method_count_;
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<ServiceDescriptor>() and AllocateArray<ServiceDescriptor>() in
- // descriptor.cc and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- ServiceDescriptor() {}
- friend class DescriptorBuilder;
- friend class FileDescriptor;
- friend class MethodDescriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ServiceDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(ServiceDescriptor, 48);
-
-// Describes an individual service method. To obtain a MethodDescriptor given
-// a service, first get its ServiceDescriptor, then call
-// ServiceDescriptor::FindMethodByName(). Use DescriptorPool to construct your
-// own descriptors.
-class PROTOBUF_EXPORT MethodDescriptor : private internal::SymbolBase {
- public:
- typedef MethodDescriptorProto Proto;
-
- // Name of this method, not including containing scope.
- const std::string& name() const;
- // The fully-qualified name of the method, scope delimited by periods.
- const std::string& full_name() const;
- // Index within the service's Descriptor.
- int index() const;
-
- // The .proto file in which this method was defined. Never nullptr.
- const FileDescriptor* file() const;
- // Gets the service to which this method belongs. Never nullptr.
- const ServiceDescriptor* service() const;
-
- // Gets the type of protocol message which this method accepts as input.
- const Descriptor* input_type() const;
- // Gets the type of protocol message which this message produces as output.
- const Descriptor* output_type() const;
-
- // Gets whether the client streams multiple requests.
- bool client_streaming() const;
- // Gets whether the server streams multiple responses.
- bool server_streaming() const;
-
- // Get options for this method. These are specified in the .proto file by
- // placing lines like "option foo = 1234;" in curly-braces after a method
- // declaration. Allowed options are defined by MethodOptions in
- // descriptor.proto, and any available extensions of that message.
- const MethodOptions& options() const;
-
- // See Descriptor::CopyTo().
- void CopyTo(MethodDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Source Location ---------------------------------------------------
-
- // Updates |*out_location| to the source location of the complete
- // extent of this method declaration. Returns false and leaves
- // |*out_location| unchanged iff location information was not available.
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef MethodOptions OptionsType;
-
- // Allows access to GetLocationPath for annotations.
- friend class io::Printer;
- friend class compiler::cpp::Formatter;
-
- // See Descriptor::DebugString().
- void DebugString(int depth, std::string* contents,
- const DebugStringOptions& options) const;
-
- // Walks up the descriptor tree to generate the source location path
- // to this descriptor from the file root.
- void GetLocationPath(std::vector<int>* output) const;
-
- bool client_streaming_;
- bool server_streaming_;
- // all_names_ = [name, full_name]
- const std::string* all_names_;
- const ServiceDescriptor* service_;
- mutable internal::LazyDescriptor input_type_;
- mutable internal::LazyDescriptor output_type_;
- const MethodOptions* options_;
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<MethodDescriptor>() and AllocateArray<MethodDescriptor>() in
- // descriptor.cc and update them to initialize the field.
-
- // Must be constructed using DescriptorPool.
- MethodDescriptor() {}
- friend class DescriptorBuilder;
- friend class ServiceDescriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MethodDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(MethodDescriptor, 64);
-
-// Describes a whole .proto file. To get the FileDescriptor for a compiled-in
-// file, get the descriptor for something defined in that file and call
-// descriptor->file(). Use DescriptorPool to construct your own descriptors.
-class PROTOBUF_EXPORT FileDescriptor : private internal::SymbolBase {
- public:
- typedef FileDescriptorProto Proto;
-
- // The filename, relative to the source tree.
- // e.g. "foo/bar/baz.proto"
- const std::string& name() const;
-
- // The package, e.g. "google.protobuf.compiler".
- const std::string& package() const;
-
- // The DescriptorPool in which this FileDescriptor and all its contents were
- // allocated. Never nullptr.
- const DescriptorPool* pool() const;
-
- // The number of files imported by this one.
- int dependency_count() const;
- // Gets an imported file by index, where 0 <= index < dependency_count().
- // These are returned in the order they were defined in the .proto file.
- const FileDescriptor* dependency(int index) const;
-
- // The number of files public imported by this one.
- // The public dependency list is a subset of the dependency list.
- int public_dependency_count() const;
- // Gets a public imported file by index, where 0 <= index <
- // public_dependency_count().
- // These are returned in the order they were defined in the .proto file.
- const FileDescriptor* public_dependency(int index) const;
-
- // The number of files that are imported for weak fields.
- // The weak dependency list is a subset of the dependency list.
- int weak_dependency_count() const;
- // Gets a weak imported file by index, where 0 <= index <
- // weak_dependency_count().
- // These are returned in the order they were defined in the .proto file.
- const FileDescriptor* weak_dependency(int index) const;
-
- // Number of top-level message types defined in this file. (This does not
- // include nested types.)
- int message_type_count() const;
- // Gets a top-level message type, where 0 <= index < message_type_count().
- // These are returned in the order they were defined in the .proto file.
- const Descriptor* message_type(int index) const;
-
- // Number of top-level enum types defined in this file. (This does not
- // include nested types.)
- int enum_type_count() const;
- // Gets a top-level enum type, where 0 <= index < enum_type_count().
- // These are returned in the order they were defined in the .proto file.
- const EnumDescriptor* enum_type(int index) const;
-
- // Number of services defined in this file.
- int service_count() const;
- // Gets a service, where 0 <= index < service_count().
- // These are returned in the order they were defined in the .proto file.
- const ServiceDescriptor* service(int index) const;
-
- // Number of extensions defined at file scope. (This does not include
- // extensions nested within message types.)
- int extension_count() const;
- // Gets an extension's descriptor, where 0 <= index < extension_count().
- // These are returned in the order they were defined in the .proto file.
- const FieldDescriptor* extension(int index) const;
-
- // Get options for this file. These are specified in the .proto file by
- // placing lines like "option foo = 1234;" at the top level, outside of any
- // other definitions. Allowed options are defined by FileOptions in
- // descriptor.proto, and any available extensions of that message.
- const FileOptions& options() const;
-
- // Syntax of this file.
- enum Syntax {
- SYNTAX_UNKNOWN = 0,
- SYNTAX_PROTO2 = 2,
- SYNTAX_PROTO3 = 3,
- };
- Syntax syntax() const;
- static const char* SyntaxName(Syntax syntax);
-
- // Find a top-level message type by name (not full_name). Returns nullptr if
- // not found.
- const Descriptor* FindMessageTypeByName(ConstStringParam name) const;
- // Find a top-level enum type by name. Returns nullptr if not found.
- const EnumDescriptor* FindEnumTypeByName(ConstStringParam name) const;
- // Find an enum value defined in any top-level enum by name. Returns nullptr
- // if not found.
- const EnumValueDescriptor* FindEnumValueByName(ConstStringParam name) const;
- // Find a service definition by name. Returns nullptr if not found.
- const ServiceDescriptor* FindServiceByName(ConstStringParam name) const;
- // Find a top-level extension definition by name. Returns nullptr if not
- // found.
- const FieldDescriptor* FindExtensionByName(ConstStringParam name) const;
- // Similar to FindExtensionByName(), but searches by lowercased-name. See
- // Descriptor::FindFieldByLowercaseName().
- const FieldDescriptor* FindExtensionByLowercaseName(
- ConstStringParam name) const;
- // Similar to FindExtensionByName(), but searches by camelcased-name. See
- // Descriptor::FindFieldByCamelcaseName().
- const FieldDescriptor* FindExtensionByCamelcaseName(
- ConstStringParam name) const;
-
- // See Descriptor::CopyTo().
- // Notes:
- // - This method does NOT copy source code information since it is relatively
- // large and rarely needed. See CopySourceCodeInfoTo() below.
- void CopyTo(FileDescriptorProto* proto) const;
- // Write the source code information of this FileDescriptor into the given
- // FileDescriptorProto. See CopyTo() above.
- void CopySourceCodeInfoTo(FileDescriptorProto* proto) const;
- // Fill the json_name field of FieldDescriptorProto for all fields. Can only
- // be called after CopyTo().
- void CopyJsonNameTo(FileDescriptorProto* proto) const;
-
- // See Descriptor::DebugString().
- std::string DebugString() const;
-
- // See Descriptor::DebugStringWithOptions().
- std::string DebugStringWithOptions(const DebugStringOptions& options) const;
-
- // Returns true if this is a placeholder for an unknown file. This will
- // only be the case if this descriptor comes from a DescriptorPool
- // with AllowUnknownDependencies() set.
- bool is_placeholder() const;
-
- // Updates |*out_location| to the source location of the complete extent of
- // this file declaration (namely, the empty path).
- bool GetSourceLocation(SourceLocation* out_location) const;
-
- // Updates |*out_location| to the source location of the complete
- // extent of the declaration or declaration-part denoted by |path|.
- // Returns false and leaves |*out_location| unchanged iff location
- // information was not available. (See SourceCodeInfo for
- // description of path encoding.)
- bool GetSourceLocation(const std::vector<int>& path,
- SourceLocation* out_location) const;
-
- private:
- friend class Symbol;
- typedef FileOptions OptionsType;
-
- bool is_placeholder_;
- // Indicates the FileDescriptor is completed building. Used to verify
- // that type accessor functions that can possibly build a dependent file
- // aren't called during the process of building the file.
- bool finished_building_;
- // Actually a `Syntax` but stored as uint8_t to save space.
- uint8_t syntax_;
- // This one is here to fill the padding.
- int extension_count_;
-
- const std::string* name_;
- const std::string* package_;
- const DescriptorPool* pool_;
-
- // dependencies_once_ contain a once_flag followed by N NUL terminated
- // strings. Dependencies that do not need to be loaded will be empty. ie just
- // {'\0'}
- internal::once_flag* dependencies_once_;
- static void DependenciesOnceInit(const FileDescriptor* to_init);
- void InternalDependenciesOnceInit() const;
-
- // These are arranged to minimize padding on 64-bit.
- int dependency_count_;
- int public_dependency_count_;
- int weak_dependency_count_;
- int message_type_count_;
- int enum_type_count_;
- int service_count_;
-
- mutable const FileDescriptor** dependencies_;
- int* public_dependencies_;
- int* weak_dependencies_;
- Descriptor* message_types_;
- EnumDescriptor* enum_types_;
- ServiceDescriptor* services_;
- FieldDescriptor* extensions_;
- const FileOptions* options_;
-
- const FileDescriptorTables* tables_;
- const SourceCodeInfo* source_code_info_;
-
- // IMPORTANT: If you add a new field, make sure to search for all instances
- // of Allocate<FileDescriptor>() and AllocateArray<FileDescriptor>() in
- // descriptor.cc and update them to initialize the field.
-
- FileDescriptor() {}
- friend class DescriptorBuilder;
- friend class DescriptorPool;
- friend class Descriptor;
- friend class FieldDescriptor;
- friend class internal::LazyDescriptor;
- friend class OneofDescriptor;
- friend class EnumDescriptor;
- friend class EnumValueDescriptor;
- friend class MethodDescriptor;
- friend class ServiceDescriptor;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileDescriptor);
-};
-
-PROTOBUF_INTERNAL_CHECK_CLASS_SIZE(FileDescriptor, 144);
-
-// ===================================================================
-
-// Used to construct descriptors.
-//
-// Normally you won't want to build your own descriptors. Message classes
-// constructed by the protocol compiler will provide them for you. However,
-// if you are implementing Message on your own, or if you are writing a
-// program which can operate on totally arbitrary types and needs to load
-// them from some sort of database, you might need to.
-//
-// Since Descriptors are composed of a whole lot of cross-linked bits of
-// data that would be a pain to put together manually, the
-// DescriptorPool class is provided to make the process easier. It can
-// take a FileDescriptorProto (defined in descriptor.proto), validate it,
-// and convert it to a set of nicely cross-linked Descriptors.
-//
-// DescriptorPool also helps with memory management. Descriptors are
-// composed of many objects containing static data and pointers to each
-// other. In all likelihood, when it comes time to delete this data,
-// you'll want to delete it all at once. In fact, it is not uncommon to
-// have a whole pool of descriptors all cross-linked with each other which
-// you wish to delete all at once. This class represents such a pool, and
-// handles the memory management for you.
-//
-// You can also search for descriptors within a DescriptorPool by name, and
-// extensions by number.
-class PROTOBUF_EXPORT DescriptorPool {
- public:
- // Create a normal, empty DescriptorPool.
- DescriptorPool();
-
- // Constructs a DescriptorPool that, when it can't find something among the
- // descriptors already in the pool, looks for it in the given
- // DescriptorDatabase.
- // Notes:
- // - If a DescriptorPool is constructed this way, its BuildFile*() methods
- // must not be called (they will assert-fail). The only way to populate
- // the pool with descriptors is to call the Find*By*() methods.
- // - The Find*By*() methods may block the calling thread if the
- // DescriptorDatabase blocks. This in turn means that parsing messages
- // may block if they need to look up extensions.
- // - The Find*By*() methods will use mutexes for thread-safety, thus making
- // them slower even when they don't have to fall back to the database.
- // In fact, even the Find*By*() methods of descriptor objects owned by
- // this pool will be slower, since they will have to obtain locks too.
- // - An ErrorCollector may optionally be given to collect validation errors
- // in files loaded from the database. If not given, errors will be printed
- // to GOOGLE_LOG(ERROR). Remember that files are built on-demand, so this
- // ErrorCollector may be called from any thread that calls one of the
- // Find*By*() methods.
- // - The DescriptorDatabase must not be mutated during the lifetime of
- // the DescriptorPool. Even if the client takes care to avoid data races,
- // changes to the content of the DescriptorDatabase may not be reflected
- // in subsequent lookups in the DescriptorPool.
- class ErrorCollector;
- explicit DescriptorPool(DescriptorDatabase* fallback_database,
- ErrorCollector* error_collector = nullptr);
-
- ~DescriptorPool();
-
- // Get a pointer to the generated pool. Generated protocol message classes
- // which are compiled into the binary will allocate their descriptors in
- // this pool. Do not add your own descriptors to this pool.
- static const DescriptorPool* generated_pool();
-
-
- // Find a FileDescriptor in the pool by file name. Returns nullptr if not
- // found.
- const FileDescriptor* FindFileByName(ConstStringParam name) const;
-
- // Find the FileDescriptor in the pool which defines the given symbol.
- // If any of the Find*ByName() methods below would succeed, then this is
- // equivalent to calling that method and calling the result's file() method.
- // Otherwise this returns nullptr.
- const FileDescriptor* FindFileContainingSymbol(
- ConstStringParam symbol_name) const;
-
- // Looking up descriptors ------------------------------------------
- // These find descriptors by fully-qualified name. These will find both
- // top-level descriptors and nested descriptors. They return nullptr if not
- // found.
-
- const Descriptor* FindMessageTypeByName(ConstStringParam name) const;
- const FieldDescriptor* FindFieldByName(ConstStringParam name) const;
- const FieldDescriptor* FindExtensionByName(ConstStringParam name) const;
- const OneofDescriptor* FindOneofByName(ConstStringParam name) const;
- const EnumDescriptor* FindEnumTypeByName(ConstStringParam name) const;
- const EnumValueDescriptor* FindEnumValueByName(ConstStringParam name) const;
- const ServiceDescriptor* FindServiceByName(ConstStringParam name) const;
- const MethodDescriptor* FindMethodByName(ConstStringParam name) const;
-
- // Finds an extension of the given type by number. The extendee must be
- // a member of this DescriptorPool or one of its underlays.
- const FieldDescriptor* FindExtensionByNumber(const Descriptor* extendee,
- int number) const;
-
- // Finds an extension of the given type by its printable name.
- // See comments above PrintableNameForExtension() for the definition of
- // "printable name". The extendee must be a member of this DescriptorPool
- // or one of its underlays. Returns nullptr if there is no known message
- // extension with the given printable name.
- const FieldDescriptor* FindExtensionByPrintableName(
- const Descriptor* extendee, ConstStringParam printable_name) const;
-
- // Finds extensions of extendee. The extensions will be appended to
- // out in an undefined order. Only extensions defined directly in
- // this DescriptorPool or one of its underlays are guaranteed to be
- // found: extensions defined in the fallback database might not be found
- // depending on the database implementation.
- void FindAllExtensions(const Descriptor* extendee,
- std::vector<const FieldDescriptor*>* out) const;
-
- // Building descriptors --------------------------------------------
-
- // When converting a FileDescriptorProto to a FileDescriptor, various
- // errors might be detected in the input. The caller may handle these
- // programmatically by implementing an ErrorCollector.
- class PROTOBUF_EXPORT ErrorCollector {
- public:
- inline ErrorCollector() {}
- virtual ~ErrorCollector();
-
- // These constants specify what exact part of the construct is broken.
- // This is useful e.g. for mapping the error back to an exact location
- // in a .proto file.
- enum ErrorLocation {
- NAME, // the symbol name, or the package name for files
- NUMBER, // field or extension range number
- TYPE, // field type
- EXTENDEE, // field extendee
- DEFAULT_VALUE, // field default value
- INPUT_TYPE, // method input type
- OUTPUT_TYPE, // method output type
- OPTION_NAME, // name in assignment
- OPTION_VALUE, // value in option assignment
- IMPORT, // import error
- OTHER // some other problem
- };
-
- // Reports an error in the FileDescriptorProto. Use this function if the
- // problem occurred should interrupt building the FileDescriptorProto.
- virtual void AddError(
- const std::string& filename, // File name in which the error occurred.
- const std::string& element_name, // Full name of the erroneous element.
- const Message* descriptor, // Descriptor of the erroneous element.
- ErrorLocation location, // One of the location constants, above.
- const std::string& message // Human-readable error message.
- ) = 0;
-
- // Reports a warning in the FileDescriptorProto. Use this function if the
- // problem occurred should NOT interrupt building the FileDescriptorProto.
- virtual void AddWarning(
- const std::string& /*filename*/, // File name in which the error
- // occurred.
- const std::string& /*element_name*/, // Full name of the erroneous
- // element.
- const Message* /*descriptor*/, // Descriptor of the erroneous element.
- ErrorLocation /*location*/, // One of the location constants, above.
- const std::string& /*message*/ // Human-readable error message.
- ) {}
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ErrorCollector);
- };
-
- // Convert the FileDescriptorProto to real descriptors and place them in
- // this DescriptorPool. All dependencies of the file must already be in
- // the pool. Returns the resulting FileDescriptor, or nullptr if there were
- // problems with the input (e.g. the message was invalid, or dependencies
- // were missing). Details about the errors are written to GOOGLE_LOG(ERROR).
- const FileDescriptor* BuildFile(const FileDescriptorProto& proto);
-
- // Same as BuildFile() except errors are sent to the given ErrorCollector.
- const FileDescriptor* BuildFileCollectingErrors(
- const FileDescriptorProto& proto, ErrorCollector* error_collector);
-
- // By default, it is an error if a FileDescriptorProto contains references
- // to types or other files that are not found in the DescriptorPool (or its
- // backing DescriptorDatabase, if any). If you call
- // AllowUnknownDependencies(), however, then unknown types and files
- // will be replaced by placeholder descriptors (which can be identified by
- // the is_placeholder() method). This can allow you to
- // perform some useful operations with a .proto file even if you do not
- // have access to other .proto files on which it depends. However, some
- // heuristics must be used to fill in the gaps in information, and these
- // can lead to descriptors which are inaccurate. For example, the
- // DescriptorPool may be forced to guess whether an unknown type is a message
- // or an enum, as well as what package it resides in. Furthermore,
- // placeholder types will not be discoverable via FindMessageTypeByName()
- // and similar methods, which could confuse some descriptor-based algorithms.
- // Generally, the results of this option should be handled with extreme care.
- void AllowUnknownDependencies() { allow_unknown_ = true; }
-
- // By default, weak imports are allowed to be missing, in which case we will
- // use a placeholder for the dependency and convert the field to be an Empty
- // message field. If you call EnforceWeakDependencies(true), however, the
- // DescriptorPool will report a import not found error.
- void EnforceWeakDependencies(bool enforce) { enforce_weak_ = enforce; }
-
- // Internal stuff --------------------------------------------------
- // These methods MUST NOT be called from outside the proto2 library.
- // These methods may contain hidden pitfalls and may be removed in a
- // future library version.
-
- // Create a DescriptorPool which is overlaid on top of some other pool.
- // If you search for a descriptor in the overlay and it is not found, the
- // underlay will be searched as a backup. If the underlay has its own
- // underlay, that will be searched next, and so on. This also means that
- // files built in the overlay will be cross-linked with the underlay's
- // descriptors if necessary. The underlay remains property of the caller;
- // it must remain valid for the lifetime of the newly-constructed pool.
- //
- // Example: Say you want to parse a .proto file at runtime in order to use
- // its type with a DynamicMessage. Say this .proto file has dependencies,
- // but you know that all the dependencies will be things that are already
- // compiled into the binary. For ease of use, you'd like to load the types
- // right out of generated_pool() rather than have to parse redundant copies
- // of all these .protos and runtime. But, you don't want to add the parsed
- // types directly into generated_pool(): this is not allowed, and would be
- // bad design anyway. So, instead, you could use generated_pool() as an
- // underlay for a new DescriptorPool in which you add only the new file.
- //
- // WARNING: Use of underlays can lead to many subtle gotchas. Instead,
- // try to formulate what you want to do in terms of DescriptorDatabases.
- explicit DescriptorPool(const DescriptorPool* underlay);
-
- // Called by generated classes at init time to add their descriptors to
- // generated_pool. Do NOT call this in your own code! filename must be a
- // permanent string (e.g. a string literal).
- static void InternalAddGeneratedFile(const void* encoded_file_descriptor,
- int size);
-
- // Disallow [enforce_utf8 = false] in .proto files.
- void DisallowEnforceUtf8() { disallow_enforce_utf8_ = true; }
-
-
- // For internal use only: Gets a non-const pointer to the generated pool.
- // This is called at static-initialization time only, so thread-safety is
- // not a concern. If both an underlay and a fallback database are present,
- // the underlay takes precedence.
- static DescriptorPool* internal_generated_pool();
-
- // For internal use only: Gets a non-const pointer to the generated
- // descriptor database.
- // Only used for testing.
- static DescriptorDatabase* internal_generated_database();
-
- // For internal use only: Changes the behavior of BuildFile() such that it
- // allows the file to make reference to message types declared in other files
- // which it did not officially declare as dependencies.
- void InternalDontEnforceDependencies();
-
- // For internal use only: Enables lazy building of dependencies of a file.
- // Delay the building of dependencies of a file descriptor until absolutely
- // necessary, like when message_type() is called on a field that is defined
- // in that dependency's file. This will cause functional issues if a proto
- // or one of its dependencies has errors. Should only be enabled for the
- // generated_pool_ (because no descriptor build errors are guaranteed by
- // the compilation generation process), testing, or if a lack of descriptor
- // build errors can be guaranteed for a pool.
- void InternalSetLazilyBuildDependencies() {
- lazily_build_dependencies_ = true;
- // This needs to be set when lazily building dependencies, as it breaks
- // dependency checking.
- InternalDontEnforceDependencies();
- }
-
- // For internal use only.
- void internal_set_underlay(const DescriptorPool* underlay) {
- underlay_ = underlay;
- }
-
- // For internal (unit test) use only: Returns true if a FileDescriptor has
- // been constructed for the given file, false otherwise. Useful for testing
- // lazy descriptor initialization behavior.
- bool InternalIsFileLoaded(ConstStringParam filename) const;
-
- // Add a file to unused_import_track_files_. DescriptorBuilder will log
- // warnings or errors for those files if there is any unused import.
- void AddUnusedImportTrackFile(ConstStringParam file_name,
- bool is_error = false);
- void ClearUnusedImportTrackFiles();
-
- private:
- friend class Descriptor;
- friend class internal::LazyDescriptor;
- friend class FieldDescriptor;
- friend class EnumDescriptor;
- friend class ServiceDescriptor;
- friend class MethodDescriptor;
- friend class FileDescriptor;
- friend class DescriptorBuilder;
- friend class FileDescriptorTables;
-
- // Return true if the given name is a sub-symbol of any non-package
- // descriptor that already exists in the descriptor pool. (The full
- // definition of such types is already known.)
- bool IsSubSymbolOfBuiltType(StringPiece name) const;
-
- // Tries to find something in the fallback database and link in the
- // corresponding proto file. Returns true if successful, in which case
- // the caller should search for the thing again. These are declared
- // const because they are called by (semantically) const methods.
- bool TryFindFileInFallbackDatabase(StringPiece name) const;
- bool TryFindSymbolInFallbackDatabase(StringPiece name) const;
- bool TryFindExtensionInFallbackDatabase(const Descriptor* containing_type,
- int field_number) const;
-
- // This internal find extension method only check with its table and underlay
- // descriptor_pool's table. It does not check with fallback DB and no
- // additional proto file will be build in this method.
- const FieldDescriptor* InternalFindExtensionByNumberNoLock(
- const Descriptor* extendee, int number) const;
-
- // Like BuildFile() but called internally when the file has been loaded from
- // fallback_database_. Declared const because it is called by (semantically)
- // const methods.
- const FileDescriptor* BuildFileFromDatabase(
- const FileDescriptorProto& proto) const;
-
- // Helper for when lazily_build_dependencies_ is set, can look up a symbol
- // after the file's descriptor is built, and can build the file where that
- // symbol is defined if necessary. Will create a placeholder if the type
- // doesn't exist in the fallback database, or the file doesn't build
- // successfully.
- Symbol CrossLinkOnDemandHelper(StringPiece name,
- bool expecting_enum) const;
-
- // Create a placeholder FileDescriptor of the specified name
- FileDescriptor* NewPlaceholderFile(StringPiece name) const;
- FileDescriptor* NewPlaceholderFileWithMutexHeld(
- StringPiece name, internal::FlatAllocator& alloc) const;
-
- enum PlaceholderType {
- PLACEHOLDER_MESSAGE,
- PLACEHOLDER_ENUM,
- PLACEHOLDER_EXTENDABLE_MESSAGE
- };
- // Create a placeholder Descriptor of the specified name
- Symbol NewPlaceholder(StringPiece name,
- PlaceholderType placeholder_type) const;
- Symbol NewPlaceholderWithMutexHeld(StringPiece name,
- PlaceholderType placeholder_type) const;
-
- // If fallback_database_ is nullptr, this is nullptr. Otherwise, this is a
- // mutex which must be locked while accessing tables_.
- internal::WrappedMutex* mutex_;
-
- // See constructor.
- DescriptorDatabase* fallback_database_;
- ErrorCollector* default_error_collector_;
- const DescriptorPool* underlay_;
-
- // This class contains a lot of hash maps with complicated types that
- // we'd like to keep out of the header.
- class Tables;
- std::unique_ptr<Tables> tables_;
-
- bool enforce_dependencies_;
- bool lazily_build_dependencies_;
- bool allow_unknown_;
- bool enforce_weak_;
- bool disallow_enforce_utf8_;
-
- // Set of files to track for unused imports. The bool value when true means
- // unused imports are treated as errors (and as warnings when false).
- std::map<std::string, bool> unused_import_track_files_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DescriptorPool);
-};
-
-
-// inline methods ====================================================
-
-// These macros makes this repetitive code more readable.
-#define PROTOBUF_DEFINE_ACCESSOR(CLASS, FIELD, TYPE) \
- inline TYPE CLASS::FIELD() const { return FIELD##_; }
-
-// Strings fields are stored as pointers but returned as const references.
-#define PROTOBUF_DEFINE_STRING_ACCESSOR(CLASS, FIELD) \
- inline const std::string& CLASS::FIELD() const { return *FIELD##_; }
-
-// Name and full name are stored in a single array to save space.
-#define PROTOBUF_DEFINE_NAME_ACCESSOR(CLASS) \
- inline const std::string& CLASS::name() const { return all_names_[0]; } \
- inline const std::string& CLASS::full_name() const { return all_names_[1]; }
-
-// Arrays take an index parameter, obviously.
-#define PROTOBUF_DEFINE_ARRAY_ACCESSOR(CLASS, FIELD, TYPE) \
- inline TYPE CLASS::FIELD(int index) const { return FIELD##s_ + index; }
-
-#define PROTOBUF_DEFINE_OPTIONS_ACCESSOR(CLASS, TYPE) \
- inline const TYPE& CLASS::options() const { return *options_; }
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(Descriptor)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, file, const FileDescriptor*)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, containing_type, const Descriptor*)
-
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, field_count, int)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, oneof_decl_count, int)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, real_oneof_decl_count, int)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, nested_type_count, int)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, enum_type_count, int)
-
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, field, const FieldDescriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, oneof_decl, const OneofDescriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, nested_type, const Descriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, enum_type, const EnumDescriptor*)
-
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, extension_range_count, int)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, extension_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, extension_range,
- const Descriptor::ExtensionRange*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, extension, const FieldDescriptor*)
-
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, reserved_range_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(Descriptor, reserved_range,
- const Descriptor::ReservedRange*)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, reserved_name_count, int)
-
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(Descriptor, MessageOptions)
-PROTOBUF_DEFINE_ACCESSOR(Descriptor, is_placeholder, bool)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(FieldDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, file, const FileDescriptor*)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, number, int)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, is_extension, bool)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, containing_type, const Descriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FieldDescriptor, FieldOptions)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, has_default_value, bool)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, has_json_name, bool)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_int32_t, int32_t)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_int64_t, int64_t)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_uint32_t, uint32_t)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_uint64_t, uint64_t)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_float, float)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_double, double)
-PROTOBUF_DEFINE_ACCESSOR(FieldDescriptor, default_value_bool, bool)
-PROTOBUF_DEFINE_STRING_ACCESSOR(FieldDescriptor, default_value_string)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(OneofDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(OneofDescriptor, containing_type, const Descriptor*)
-PROTOBUF_DEFINE_ACCESSOR(OneofDescriptor, field_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(OneofDescriptor, field, const FieldDescriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(OneofDescriptor, OneofOptions)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(EnumDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, file, const FileDescriptor*)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, containing_type, const Descriptor*)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, value_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(EnumDescriptor, value,
- const EnumValueDescriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumDescriptor, EnumOptions)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, is_placeholder, bool)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, reserved_range_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(EnumDescriptor, reserved_range,
- const EnumDescriptor::ReservedRange*)
-PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, reserved_name_count, int)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(EnumValueDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(EnumValueDescriptor, number, int)
-PROTOBUF_DEFINE_ACCESSOR(EnumValueDescriptor, type, const EnumDescriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(EnumValueDescriptor, EnumValueOptions)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(ServiceDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(ServiceDescriptor, file, const FileDescriptor*)
-PROTOBUF_DEFINE_ACCESSOR(ServiceDescriptor, method_count, int)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(ServiceDescriptor, method,
- const MethodDescriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(ServiceDescriptor, ServiceOptions)
-
-PROTOBUF_DEFINE_NAME_ACCESSOR(MethodDescriptor)
-PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, service, const ServiceDescriptor*)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(MethodDescriptor, MethodOptions)
-PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, client_streaming, bool)
-PROTOBUF_DEFINE_ACCESSOR(MethodDescriptor, server_streaming, bool)
-
-PROTOBUF_DEFINE_STRING_ACCESSOR(FileDescriptor, name)
-PROTOBUF_DEFINE_STRING_ACCESSOR(FileDescriptor, package)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, pool, const DescriptorPool*)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, dependency_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, public_dependency_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, weak_dependency_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, message_type_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, enum_type_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, service_count, int)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, extension_count, int)
-PROTOBUF_DEFINE_OPTIONS_ACCESSOR(FileDescriptor, FileOptions)
-PROTOBUF_DEFINE_ACCESSOR(FileDescriptor, is_placeholder, bool)
-
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, message_type, const Descriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, enum_type, const EnumDescriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, service,
- const ServiceDescriptor*)
-PROTOBUF_DEFINE_ARRAY_ACCESSOR(FileDescriptor, extension,
- const FieldDescriptor*)
-
-#undef PROTOBUF_DEFINE_ACCESSOR
-#undef PROTOBUF_DEFINE_STRING_ACCESSOR
-#undef PROTOBUF_DEFINE_ARRAY_ACCESSOR
-
-// A few accessors differ from the macros...
-
-inline Descriptor::WellKnownType Descriptor::well_known_type() const {
- return static_cast<Descriptor::WellKnownType>(well_known_type_);
-}
-
-inline bool Descriptor::IsExtensionNumber(int number) const {
- return FindExtensionRangeContainingNumber(number) != nullptr;
-}
-
-inline bool Descriptor::IsReservedNumber(int number) const {
- return FindReservedRangeContainingNumber(number) != nullptr;
-}
-
-inline bool Descriptor::IsReservedName(ConstStringParam name) const {
- for (int i = 0; i < reserved_name_count(); i++) {
- if (name == static_cast<ConstStringParam>(reserved_name(i))) {
- return true;
- }
- }
- return false;
-}
-
-// Can't use PROTOBUF_DEFINE_ARRAY_ACCESSOR because reserved_names_ is actually
-// an array of pointers rather than the usual array of objects.
-inline const std::string& Descriptor::reserved_name(int index) const {
- return *reserved_names_[index];
-}
-
-inline bool EnumDescriptor::IsReservedNumber(int number) const {
- return FindReservedRangeContainingNumber(number) != nullptr;
-}
-
-inline bool EnumDescriptor::IsReservedName(ConstStringParam name) const {
- for (int i = 0; i < reserved_name_count(); i++) {
- if (name == static_cast<ConstStringParam>(reserved_name(i))) {
- return true;
- }
- }
- return false;
-}
-
-// Can't use PROTOBUF_DEFINE_ARRAY_ACCESSOR because reserved_names_ is actually
-// an array of pointers rather than the usual array of objects.
-inline const std::string& EnumDescriptor::reserved_name(int index) const {
- return *reserved_names_[index];
-}
-
-inline const std::string& FieldDescriptor::lowercase_name() const {
- return all_names_[lowercase_name_index_];
-}
-
-inline const std::string& FieldDescriptor::camelcase_name() const {
- return all_names_[camelcase_name_index_];
-}
-
-inline const std::string& FieldDescriptor::json_name() const {
- return all_names_[json_name_index_];
-}
-
-inline const OneofDescriptor* FieldDescriptor::containing_oneof() const {
- return is_oneof_ ? scope_.containing_oneof : nullptr;
-}
-
-inline int FieldDescriptor::index_in_oneof() const {
- GOOGLE_DCHECK(is_oneof_);
- return static_cast<int>(this - scope_.containing_oneof->field(0));
-}
-
-inline const Descriptor* FieldDescriptor::extension_scope() const {
- GOOGLE_CHECK(is_extension_);
- return scope_.extension_scope;
-}
-
-inline FieldDescriptor::Label FieldDescriptor::label() const {
- return static_cast<Label>(label_);
-}
-
-inline FieldDescriptor::Type FieldDescriptor::type() const {
- if (type_once_) {
- internal::call_once(*type_once_, &FieldDescriptor::TypeOnceInit, this);
- }
- return static_cast<Type>(type_);
-}
-
-inline bool FieldDescriptor::is_required() const {
- return label() == LABEL_REQUIRED;
-}
-
-inline bool FieldDescriptor::is_optional() const {
- return label() == LABEL_OPTIONAL;
-}
-
-inline bool FieldDescriptor::is_repeated() const {
- return label() == LABEL_REPEATED;
-}
-
-inline bool FieldDescriptor::is_packable() const {
- return is_repeated() && IsTypePackable(type());
-}
-
-inline bool FieldDescriptor::is_map() const {
- return type() == TYPE_MESSAGE && is_map_message_type();
-}
-
-inline bool FieldDescriptor::has_optional_keyword() const {
- return proto3_optional_ ||
- (file()->syntax() == FileDescriptor::SYNTAX_PROTO2 && is_optional() &&
- !containing_oneof());
-}
-
-inline const OneofDescriptor* FieldDescriptor::real_containing_oneof() const {
- auto* oneof = containing_oneof();
- return oneof && !oneof->is_synthetic() ? oneof : nullptr;
-}
-
-inline bool FieldDescriptor::has_presence() const {
- if (is_repeated()) return false;
- return cpp_type() == CPPTYPE_MESSAGE || containing_oneof() ||
- file()->syntax() == FileDescriptor::SYNTAX_PROTO2;
-}
-
-// To save space, index() is computed by looking at the descriptor's position
-// in the parent's array of children.
-inline int FieldDescriptor::index() const {
- if (!is_extension_) {
- return static_cast<int>(this - containing_type()->fields_);
- } else if (extension_scope() != nullptr) {
- return static_cast<int>(this - extension_scope()->extensions_);
- } else {
- return static_cast<int>(this - file_->extensions_);
- }
-}
-
-inline int Descriptor::index() const {
- if (containing_type_ == nullptr) {
- return static_cast<int>(this - file_->message_types_);
- } else {
- return static_cast<int>(this - containing_type_->nested_types_);
- }
-}
-
-inline const FileDescriptor* OneofDescriptor::file() const {
- return containing_type()->file();
-}
-
-inline int OneofDescriptor::index() const {
- return static_cast<int>(this - containing_type_->oneof_decls_);
-}
-
-inline bool OneofDescriptor::is_synthetic() const {
- return field_count() == 1 && field(0)->proto3_optional_;
-}
-
-inline int EnumDescriptor::index() const {
- if (containing_type_ == nullptr) {
- return static_cast<int>(this - file_->enum_types_);
- } else {
- return static_cast<int>(this - containing_type_->enum_types_);
- }
-}
-
-inline const FileDescriptor* EnumValueDescriptor::file() const {
- return type()->file();
-}
-
-inline int EnumValueDescriptor::index() const {
- return static_cast<int>(this - type_->values_);
-}
-
-inline int ServiceDescriptor::index() const {
- return static_cast<int>(this - file_->services_);
-}
-
-inline const FileDescriptor* MethodDescriptor::file() const {
- return service()->file();
-}
-
-inline int MethodDescriptor::index() const {
- return static_cast<int>(this - service_->methods_);
-}
-
-inline const char* FieldDescriptor::type_name() const {
- return kTypeToName[type()];
-}
-
-inline FieldDescriptor::CppType FieldDescriptor::cpp_type() const {
- return kTypeToCppTypeMap[type()];
-}
-
-inline const char* FieldDescriptor::cpp_type_name() const {
- return kCppTypeToName[kTypeToCppTypeMap[type()]];
-}
-
-inline FieldDescriptor::CppType FieldDescriptor::TypeToCppType(Type type) {
- return kTypeToCppTypeMap[type];
-}
-
-inline const char* FieldDescriptor::TypeName(Type type) {
- return kTypeToName[type];
-}
-
-inline const char* FieldDescriptor::CppTypeName(CppType cpp_type) {
- return kCppTypeToName[cpp_type];
-}
-
-inline bool FieldDescriptor::IsTypePackable(Type field_type) {
- return (field_type != FieldDescriptor::TYPE_STRING &&
- field_type != FieldDescriptor::TYPE_GROUP &&
- field_type != FieldDescriptor::TYPE_MESSAGE &&
- field_type != FieldDescriptor::TYPE_BYTES);
-}
-
-inline const FileDescriptor* FileDescriptor::public_dependency(
- int index) const {
- return dependency(public_dependencies_[index]);
-}
-
-inline const FileDescriptor* FileDescriptor::weak_dependency(int index) const {
- return dependency(weak_dependencies_[index]);
-}
-
-inline FileDescriptor::Syntax FileDescriptor::syntax() const {
- return static_cast<Syntax>(syntax_);
-}
-
-} // namespace protobuf
-} // namespace google
-
-#undef PROTOBUF_INTERNAL_CHECK_CLASS_SIZE
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_DESCRIPTOR_H__
diff --git a/include/google/protobuf/descriptor.pb.h b/include/google/protobuf/descriptor.pb.h
deleted file mode 100644
index 27c3ce49e6..0000000000
--- a/include/google/protobuf/descriptor.pb.h
+++ /dev/null
@@ -1,14821 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/descriptor.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fdescriptor_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fdescriptor_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fdescriptor_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fdescriptor_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fdescriptor_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class DescriptorProto;
-struct DescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern DescriptorProtoDefaultTypeInternal _DescriptorProto_default_instance_;
-class DescriptorProto_ExtensionRange;
-struct DescriptorProto_ExtensionRangeDefaultTypeInternal;
-PROTOBUF_EXPORT extern DescriptorProto_ExtensionRangeDefaultTypeInternal _DescriptorProto_ExtensionRange_default_instance_;
-class DescriptorProto_ReservedRange;
-struct DescriptorProto_ReservedRangeDefaultTypeInternal;
-PROTOBUF_EXPORT extern DescriptorProto_ReservedRangeDefaultTypeInternal _DescriptorProto_ReservedRange_default_instance_;
-class EnumDescriptorProto;
-struct EnumDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumDescriptorProtoDefaultTypeInternal _EnumDescriptorProto_default_instance_;
-class EnumDescriptorProto_EnumReservedRange;
-struct EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal _EnumDescriptorProto_EnumReservedRange_default_instance_;
-class EnumOptions;
-struct EnumOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumOptionsDefaultTypeInternal _EnumOptions_default_instance_;
-class EnumValueDescriptorProto;
-struct EnumValueDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumValueDescriptorProtoDefaultTypeInternal _EnumValueDescriptorProto_default_instance_;
-class EnumValueOptions;
-struct EnumValueOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumValueOptionsDefaultTypeInternal _EnumValueOptions_default_instance_;
-class ExtensionRangeOptions;
-struct ExtensionRangeOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern ExtensionRangeOptionsDefaultTypeInternal _ExtensionRangeOptions_default_instance_;
-class FieldDescriptorProto;
-struct FieldDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern FieldDescriptorProtoDefaultTypeInternal _FieldDescriptorProto_default_instance_;
-class FieldOptions;
-struct FieldOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern FieldOptionsDefaultTypeInternal _FieldOptions_default_instance_;
-class FileDescriptorProto;
-struct FileDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern FileDescriptorProtoDefaultTypeInternal _FileDescriptorProto_default_instance_;
-class FileDescriptorSet;
-struct FileDescriptorSetDefaultTypeInternal;
-PROTOBUF_EXPORT extern FileDescriptorSetDefaultTypeInternal _FileDescriptorSet_default_instance_;
-class FileOptions;
-struct FileOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern FileOptionsDefaultTypeInternal _FileOptions_default_instance_;
-class GeneratedCodeInfo;
-struct GeneratedCodeInfoDefaultTypeInternal;
-PROTOBUF_EXPORT extern GeneratedCodeInfoDefaultTypeInternal _GeneratedCodeInfo_default_instance_;
-class GeneratedCodeInfo_Annotation;
-struct GeneratedCodeInfo_AnnotationDefaultTypeInternal;
-PROTOBUF_EXPORT extern GeneratedCodeInfo_AnnotationDefaultTypeInternal _GeneratedCodeInfo_Annotation_default_instance_;
-class MessageOptions;
-struct MessageOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern MessageOptionsDefaultTypeInternal _MessageOptions_default_instance_;
-class MethodDescriptorProto;
-struct MethodDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern MethodDescriptorProtoDefaultTypeInternal _MethodDescriptorProto_default_instance_;
-class MethodOptions;
-struct MethodOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern MethodOptionsDefaultTypeInternal _MethodOptions_default_instance_;
-class OneofDescriptorProto;
-struct OneofDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern OneofDescriptorProtoDefaultTypeInternal _OneofDescriptorProto_default_instance_;
-class OneofOptions;
-struct OneofOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern OneofOptionsDefaultTypeInternal _OneofOptions_default_instance_;
-class ServiceDescriptorProto;
-struct ServiceDescriptorProtoDefaultTypeInternal;
-PROTOBUF_EXPORT extern ServiceDescriptorProtoDefaultTypeInternal _ServiceDescriptorProto_default_instance_;
-class ServiceOptions;
-struct ServiceOptionsDefaultTypeInternal;
-PROTOBUF_EXPORT extern ServiceOptionsDefaultTypeInternal _ServiceOptions_default_instance_;
-class SourceCodeInfo;
-struct SourceCodeInfoDefaultTypeInternal;
-PROTOBUF_EXPORT extern SourceCodeInfoDefaultTypeInternal _SourceCodeInfo_default_instance_;
-class SourceCodeInfo_Location;
-struct SourceCodeInfo_LocationDefaultTypeInternal;
-PROTOBUF_EXPORT extern SourceCodeInfo_LocationDefaultTypeInternal _SourceCodeInfo_Location_default_instance_;
-class UninterpretedOption;
-struct UninterpretedOptionDefaultTypeInternal;
-PROTOBUF_EXPORT extern UninterpretedOptionDefaultTypeInternal _UninterpretedOption_default_instance_;
-class UninterpretedOption_NamePart;
-struct UninterpretedOption_NamePartDefaultTypeInternal;
-PROTOBUF_EXPORT extern UninterpretedOption_NamePartDefaultTypeInternal _UninterpretedOption_NamePart_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::DescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::DescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumValueOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FieldOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FileDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FileDescriptorSet* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FileDescriptorSet>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FileOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FileOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::MessageOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MessageOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::MethodOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MethodOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::OneofOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::OneofOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::ServiceOptions* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ServiceOptions>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceCodeInfo>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::UninterpretedOption>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-enum FieldDescriptorProto_Type : int {
- FieldDescriptorProto_Type_TYPE_DOUBLE = 1,
- FieldDescriptorProto_Type_TYPE_FLOAT = 2,
- FieldDescriptorProto_Type_TYPE_INT64 = 3,
- FieldDescriptorProto_Type_TYPE_UINT64 = 4,
- FieldDescriptorProto_Type_TYPE_INT32 = 5,
- FieldDescriptorProto_Type_TYPE_FIXED64 = 6,
- FieldDescriptorProto_Type_TYPE_FIXED32 = 7,
- FieldDescriptorProto_Type_TYPE_BOOL = 8,
- FieldDescriptorProto_Type_TYPE_STRING = 9,
- FieldDescriptorProto_Type_TYPE_GROUP = 10,
- FieldDescriptorProto_Type_TYPE_MESSAGE = 11,
- FieldDescriptorProto_Type_TYPE_BYTES = 12,
- FieldDescriptorProto_Type_TYPE_UINT32 = 13,
- FieldDescriptorProto_Type_TYPE_ENUM = 14,
- FieldDescriptorProto_Type_TYPE_SFIXED32 = 15,
- FieldDescriptorProto_Type_TYPE_SFIXED64 = 16,
- FieldDescriptorProto_Type_TYPE_SINT32 = 17,
- FieldDescriptorProto_Type_TYPE_SINT64 = 18
-};
-PROTOBUF_EXPORT bool FieldDescriptorProto_Type_IsValid(int value);
-constexpr FieldDescriptorProto_Type FieldDescriptorProto_Type_Type_MIN = FieldDescriptorProto_Type_TYPE_DOUBLE;
-constexpr FieldDescriptorProto_Type FieldDescriptorProto_Type_Type_MAX = FieldDescriptorProto_Type_TYPE_SINT64;
-constexpr int FieldDescriptorProto_Type_Type_ARRAYSIZE = FieldDescriptorProto_Type_Type_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldDescriptorProto_Type_descriptor();
-template<typename T>
-inline const std::string& FieldDescriptorProto_Type_Name(T enum_t_value) {
- static_assert(::std::is_same<T, FieldDescriptorProto_Type>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function FieldDescriptorProto_Type_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- FieldDescriptorProto_Type_descriptor(), enum_t_value);
-}
-inline bool FieldDescriptorProto_Type_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FieldDescriptorProto_Type* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldDescriptorProto_Type>(
- FieldDescriptorProto_Type_descriptor(), name, value);
-}
-enum FieldDescriptorProto_Label : int {
- FieldDescriptorProto_Label_LABEL_OPTIONAL = 1,
- FieldDescriptorProto_Label_LABEL_REQUIRED = 2,
- FieldDescriptorProto_Label_LABEL_REPEATED = 3
-};
-PROTOBUF_EXPORT bool FieldDescriptorProto_Label_IsValid(int value);
-constexpr FieldDescriptorProto_Label FieldDescriptorProto_Label_Label_MIN = FieldDescriptorProto_Label_LABEL_OPTIONAL;
-constexpr FieldDescriptorProto_Label FieldDescriptorProto_Label_Label_MAX = FieldDescriptorProto_Label_LABEL_REPEATED;
-constexpr int FieldDescriptorProto_Label_Label_ARRAYSIZE = FieldDescriptorProto_Label_Label_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldDescriptorProto_Label_descriptor();
-template<typename T>
-inline const std::string& FieldDescriptorProto_Label_Name(T enum_t_value) {
- static_assert(::std::is_same<T, FieldDescriptorProto_Label>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function FieldDescriptorProto_Label_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- FieldDescriptorProto_Label_descriptor(), enum_t_value);
-}
-inline bool FieldDescriptorProto_Label_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FieldDescriptorProto_Label* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldDescriptorProto_Label>(
- FieldDescriptorProto_Label_descriptor(), name, value);
-}
-enum FileOptions_OptimizeMode : int {
- FileOptions_OptimizeMode_SPEED = 1,
- FileOptions_OptimizeMode_CODE_SIZE = 2,
- FileOptions_OptimizeMode_LITE_RUNTIME = 3
-};
-PROTOBUF_EXPORT bool FileOptions_OptimizeMode_IsValid(int value);
-constexpr FileOptions_OptimizeMode FileOptions_OptimizeMode_OptimizeMode_MIN = FileOptions_OptimizeMode_SPEED;
-constexpr FileOptions_OptimizeMode FileOptions_OptimizeMode_OptimizeMode_MAX = FileOptions_OptimizeMode_LITE_RUNTIME;
-constexpr int FileOptions_OptimizeMode_OptimizeMode_ARRAYSIZE = FileOptions_OptimizeMode_OptimizeMode_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FileOptions_OptimizeMode_descriptor();
-template<typename T>
-inline const std::string& FileOptions_OptimizeMode_Name(T enum_t_value) {
- static_assert(::std::is_same<T, FileOptions_OptimizeMode>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function FileOptions_OptimizeMode_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- FileOptions_OptimizeMode_descriptor(), enum_t_value);
-}
-inline bool FileOptions_OptimizeMode_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FileOptions_OptimizeMode* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FileOptions_OptimizeMode>(
- FileOptions_OptimizeMode_descriptor(), name, value);
-}
-enum FieldOptions_CType : int {
- FieldOptions_CType_STRING = 0,
- FieldOptions_CType_CORD = 1,
- FieldOptions_CType_STRING_PIECE = 2
-};
-PROTOBUF_EXPORT bool FieldOptions_CType_IsValid(int value);
-constexpr FieldOptions_CType FieldOptions_CType_CType_MIN = FieldOptions_CType_STRING;
-constexpr FieldOptions_CType FieldOptions_CType_CType_MAX = FieldOptions_CType_STRING_PIECE;
-constexpr int FieldOptions_CType_CType_ARRAYSIZE = FieldOptions_CType_CType_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldOptions_CType_descriptor();
-template<typename T>
-inline const std::string& FieldOptions_CType_Name(T enum_t_value) {
- static_assert(::std::is_same<T, FieldOptions_CType>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function FieldOptions_CType_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- FieldOptions_CType_descriptor(), enum_t_value);
-}
-inline bool FieldOptions_CType_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FieldOptions_CType* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldOptions_CType>(
- FieldOptions_CType_descriptor(), name, value);
-}
-enum FieldOptions_JSType : int {
- FieldOptions_JSType_JS_NORMAL = 0,
- FieldOptions_JSType_JS_STRING = 1,
- FieldOptions_JSType_JS_NUMBER = 2
-};
-PROTOBUF_EXPORT bool FieldOptions_JSType_IsValid(int value);
-constexpr FieldOptions_JSType FieldOptions_JSType_JSType_MIN = FieldOptions_JSType_JS_NORMAL;
-constexpr FieldOptions_JSType FieldOptions_JSType_JSType_MAX = FieldOptions_JSType_JS_NUMBER;
-constexpr int FieldOptions_JSType_JSType_ARRAYSIZE = FieldOptions_JSType_JSType_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FieldOptions_JSType_descriptor();
-template<typename T>
-inline const std::string& FieldOptions_JSType_Name(T enum_t_value) {
- static_assert(::std::is_same<T, FieldOptions_JSType>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function FieldOptions_JSType_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- FieldOptions_JSType_descriptor(), enum_t_value);
-}
-inline bool FieldOptions_JSType_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FieldOptions_JSType* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FieldOptions_JSType>(
- FieldOptions_JSType_descriptor(), name, value);
-}
-enum MethodOptions_IdempotencyLevel : int {
- MethodOptions_IdempotencyLevel_IDEMPOTENCY_UNKNOWN = 0,
- MethodOptions_IdempotencyLevel_NO_SIDE_EFFECTS = 1,
- MethodOptions_IdempotencyLevel_IDEMPOTENT = 2
-};
-PROTOBUF_EXPORT bool MethodOptions_IdempotencyLevel_IsValid(int value);
-constexpr MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel_IdempotencyLevel_MIN = MethodOptions_IdempotencyLevel_IDEMPOTENCY_UNKNOWN;
-constexpr MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel_IdempotencyLevel_MAX = MethodOptions_IdempotencyLevel_IDEMPOTENT;
-constexpr int MethodOptions_IdempotencyLevel_IdempotencyLevel_ARRAYSIZE = MethodOptions_IdempotencyLevel_IdempotencyLevel_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MethodOptions_IdempotencyLevel_descriptor();
-template<typename T>
-inline const std::string& MethodOptions_IdempotencyLevel_Name(T enum_t_value) {
- static_assert(::std::is_same<T, MethodOptions_IdempotencyLevel>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function MethodOptions_IdempotencyLevel_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- MethodOptions_IdempotencyLevel_descriptor(), enum_t_value);
-}
-inline bool MethodOptions_IdempotencyLevel_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MethodOptions_IdempotencyLevel* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MethodOptions_IdempotencyLevel>(
- MethodOptions_IdempotencyLevel_descriptor(), name, value);
-}
-// ===================================================================
-
-class PROTOBUF_EXPORT FileDescriptorSet final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FileDescriptorSet) */ {
- public:
- inline FileDescriptorSet() : FileDescriptorSet(nullptr) {}
- ~FileDescriptorSet() override;
- explicit PROTOBUF_CONSTEXPR FileDescriptorSet(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FileDescriptorSet(const FileDescriptorSet& from);
- FileDescriptorSet(FileDescriptorSet&& from) noexcept
- : FileDescriptorSet() {
- *this = ::std::move(from);
- }
-
- inline FileDescriptorSet& operator=(const FileDescriptorSet& from) {
- CopyFrom(from);
- return *this;
- }
- inline FileDescriptorSet& operator=(FileDescriptorSet&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FileDescriptorSet& default_instance() {
- return *internal_default_instance();
- }
- static inline const FileDescriptorSet* internal_default_instance() {
- return reinterpret_cast<const FileDescriptorSet*>(
- &_FileDescriptorSet_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(FileDescriptorSet& a, FileDescriptorSet& b) {
- a.Swap(&b);
- }
- inline void Swap(FileDescriptorSet* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FileDescriptorSet* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FileDescriptorSet* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FileDescriptorSet>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FileDescriptorSet& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FileDescriptorSet& from) {
- FileDescriptorSet::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FileDescriptorSet* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FileDescriptorSet";
- }
- protected:
- explicit FileDescriptorSet(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFileFieldNumber = 1,
- };
- // repeated .google.protobuf.FileDescriptorProto file = 1;
- int file_size() const;
- private:
- int _internal_file_size() const;
- public:
- void clear_file();
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* mutable_file(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >*
- mutable_file();
- private:
- const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& _internal_file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* _internal_add_file();
- public:
- const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& file(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* add_file();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >&
- file() const;
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto > file_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT FileDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FileDescriptorProto) */ {
- public:
- inline FileDescriptorProto() : FileDescriptorProto(nullptr) {}
- ~FileDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR FileDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FileDescriptorProto(const FileDescriptorProto& from);
- FileDescriptorProto(FileDescriptorProto&& from) noexcept
- : FileDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline FileDescriptorProto& operator=(const FileDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline FileDescriptorProto& operator=(FileDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FileDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const FileDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const FileDescriptorProto*>(
- &_FileDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(FileDescriptorProto& a, FileDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(FileDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FileDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FileDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FileDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FileDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FileDescriptorProto& from) {
- FileDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FileDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FileDescriptorProto";
- }
- protected:
- explicit FileDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kDependencyFieldNumber = 3,
- kMessageTypeFieldNumber = 4,
- kEnumTypeFieldNumber = 5,
- kServiceFieldNumber = 6,
- kExtensionFieldNumber = 7,
- kPublicDependencyFieldNumber = 10,
- kWeakDependencyFieldNumber = 11,
- kNameFieldNumber = 1,
- kPackageFieldNumber = 2,
- kSyntaxFieldNumber = 12,
- kOptionsFieldNumber = 8,
- kSourceCodeInfoFieldNumber = 9,
- };
- // repeated string dependency = 3;
- int dependency_size() const;
- private:
- int _internal_dependency_size() const;
- public:
- void clear_dependency();
- const std::string& dependency(int index) const;
- std::string* mutable_dependency(int index);
- void set_dependency(int index, const std::string& value);
- void set_dependency(int index, std::string&& value);
- void set_dependency(int index, const char* value);
- void set_dependency(int index, const char* value, size_t size);
- std::string* add_dependency();
- void add_dependency(const std::string& value);
- void add_dependency(std::string&& value);
- void add_dependency(const char* value);
- void add_dependency(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& dependency() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_dependency();
- private:
- const std::string& _internal_dependency(int index) const;
- std::string* _internal_add_dependency();
- public:
-
- // repeated .google.protobuf.DescriptorProto message_type = 4;
- int message_type_size() const;
- private:
- int _internal_message_type_size() const;
- public:
- void clear_message_type();
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* mutable_message_type(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >*
- mutable_message_type();
- private:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& _internal_message_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* _internal_add_message_type();
- public:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& message_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* add_message_type();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >&
- message_type() const;
-
- // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
- int enum_type_size() const;
- private:
- int _internal_enum_type_size() const;
- public:
- void clear_enum_type();
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* mutable_enum_type(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >*
- mutable_enum_type();
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& _internal_enum_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* _internal_add_enum_type();
- public:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& enum_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* add_enum_type();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >&
- enum_type() const;
-
- // repeated .google.protobuf.ServiceDescriptorProto service = 6;
- int service_size() const;
- private:
- int _internal_service_size() const;
- public:
- void clear_service();
- ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* mutable_service(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto >*
- mutable_service();
- private:
- const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto& _internal_service(int index) const;
- ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* _internal_add_service();
- public:
- const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto& service(int index) const;
- ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* add_service();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto >&
- service() const;
-
- // repeated .google.protobuf.FieldDescriptorProto extension = 7;
- int extension_size() const;
- private:
- int _internal_extension_size() const;
- public:
- void clear_extension();
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* mutable_extension(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
- mutable_extension();
- private:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& _internal_extension(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _internal_add_extension();
- public:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& extension(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* add_extension();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
- extension() const;
-
- // repeated int32 public_dependency = 10;
- int public_dependency_size() const;
- private:
- int _internal_public_dependency_size() const;
- public:
- void clear_public_dependency();
- private:
- int32_t _internal_public_dependency(int index) const;
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- _internal_public_dependency() const;
- void _internal_add_public_dependency(int32_t value);
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- _internal_mutable_public_dependency();
- public:
- int32_t public_dependency(int index) const;
- void set_public_dependency(int index, int32_t value);
- void add_public_dependency(int32_t value);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- public_dependency() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- mutable_public_dependency();
-
- // repeated int32 weak_dependency = 11;
- int weak_dependency_size() const;
- private:
- int _internal_weak_dependency_size() const;
- public:
- void clear_weak_dependency();
- private:
- int32_t _internal_weak_dependency(int index) const;
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- _internal_weak_dependency() const;
- void _internal_add_weak_dependency(int32_t value);
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- _internal_mutable_weak_dependency();
- public:
- int32_t weak_dependency(int index) const;
- void set_weak_dependency(int index, int32_t value);
- void add_weak_dependency(int32_t value);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- weak_dependency() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- mutable_weak_dependency();
-
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional string package = 2;
- bool has_package() const;
- private:
- bool _internal_has_package() const;
- public:
- void clear_package();
- const std::string& package() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_package(ArgT0&& arg0, ArgT... args);
- std::string* mutable_package();
- PROTOBUF_NODISCARD std::string* release_package();
- void set_allocated_package(std::string* package);
- private:
- const std::string& _internal_package() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_package(const std::string& value);
- std::string* _internal_mutable_package();
- public:
-
- // optional string syntax = 12;
- bool has_syntax() const;
- private:
- bool _internal_has_syntax() const;
- public:
- void clear_syntax();
- const std::string& syntax() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_syntax(ArgT0&& arg0, ArgT... args);
- std::string* mutable_syntax();
- PROTOBUF_NODISCARD std::string* release_syntax();
- void set_allocated_syntax(std::string* syntax);
- private:
- const std::string& _internal_syntax() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_syntax(const std::string& value);
- std::string* _internal_mutable_syntax();
- public:
-
- // optional .google.protobuf.FileOptions options = 8;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::FileOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::FileOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::FileOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::FileOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::FileOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::FileOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::FileOptions* options);
- ::PROTOBUF_NAMESPACE_ID::FileOptions* unsafe_arena_release_options();
-
- // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
- bool has_source_code_info() const;
- private:
- bool _internal_has_source_code_info() const;
- public:
- void clear_source_code_info();
- const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo& source_code_info() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* release_source_code_info();
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* mutable_source_code_info();
- void set_allocated_source_code_info(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* source_code_info);
- private:
- const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo& _internal_source_code_info() const;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* _internal_mutable_source_code_info();
- public:
- void unsafe_arena_set_allocated_source_code_info(
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* source_code_info);
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* unsafe_arena_release_source_code_info();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> dependency_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto > message_type_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto > enum_type_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto > service_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto > extension_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > public_dependency_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > weak_dependency_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr package_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr syntax_;
- ::PROTOBUF_NAMESPACE_ID::FileOptions* options_;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* source_code_info_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT DescriptorProto_ExtensionRange final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.DescriptorProto.ExtensionRange) */ {
- public:
- inline DescriptorProto_ExtensionRange() : DescriptorProto_ExtensionRange(nullptr) {}
- ~DescriptorProto_ExtensionRange() override;
- explicit PROTOBUF_CONSTEXPR DescriptorProto_ExtensionRange(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- DescriptorProto_ExtensionRange(const DescriptorProto_ExtensionRange& from);
- DescriptorProto_ExtensionRange(DescriptorProto_ExtensionRange&& from) noexcept
- : DescriptorProto_ExtensionRange() {
- *this = ::std::move(from);
- }
-
- inline DescriptorProto_ExtensionRange& operator=(const DescriptorProto_ExtensionRange& from) {
- CopyFrom(from);
- return *this;
- }
- inline DescriptorProto_ExtensionRange& operator=(DescriptorProto_ExtensionRange&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const DescriptorProto_ExtensionRange& default_instance() {
- return *internal_default_instance();
- }
- static inline const DescriptorProto_ExtensionRange* internal_default_instance() {
- return reinterpret_cast<const DescriptorProto_ExtensionRange*>(
- &_DescriptorProto_ExtensionRange_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(DescriptorProto_ExtensionRange& a, DescriptorProto_ExtensionRange& b) {
- a.Swap(&b);
- }
- inline void Swap(DescriptorProto_ExtensionRange* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(DescriptorProto_ExtensionRange* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- DescriptorProto_ExtensionRange* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<DescriptorProto_ExtensionRange>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const DescriptorProto_ExtensionRange& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const DescriptorProto_ExtensionRange& from) {
- DescriptorProto_ExtensionRange::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(DescriptorProto_ExtensionRange* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.DescriptorProto.ExtensionRange";
- }
- protected:
- explicit DescriptorProto_ExtensionRange(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kOptionsFieldNumber = 3,
- kStartFieldNumber = 1,
- kEndFieldNumber = 2,
- };
- // optional .google.protobuf.ExtensionRangeOptions options = 3;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* options);
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* unsafe_arena_release_options();
-
- // optional int32 start = 1;
- bool has_start() const;
- private:
- bool _internal_has_start() const;
- public:
- void clear_start();
- int32_t start() const;
- void set_start(int32_t value);
- private:
- int32_t _internal_start() const;
- void _internal_set_start(int32_t value);
- public:
-
- // optional int32 end = 2;
- bool has_end() const;
- private:
- bool _internal_has_end() const;
- public:
- void clear_end();
- int32_t end() const;
- void set_end(int32_t value);
- private:
- int32_t _internal_end() const;
- void _internal_set_end(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* options_;
- int32_t start_;
- int32_t end_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT DescriptorProto_ReservedRange final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.DescriptorProto.ReservedRange) */ {
- public:
- inline DescriptorProto_ReservedRange() : DescriptorProto_ReservedRange(nullptr) {}
- ~DescriptorProto_ReservedRange() override;
- explicit PROTOBUF_CONSTEXPR DescriptorProto_ReservedRange(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- DescriptorProto_ReservedRange(const DescriptorProto_ReservedRange& from);
- DescriptorProto_ReservedRange(DescriptorProto_ReservedRange&& from) noexcept
- : DescriptorProto_ReservedRange() {
- *this = ::std::move(from);
- }
-
- inline DescriptorProto_ReservedRange& operator=(const DescriptorProto_ReservedRange& from) {
- CopyFrom(from);
- return *this;
- }
- inline DescriptorProto_ReservedRange& operator=(DescriptorProto_ReservedRange&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const DescriptorProto_ReservedRange& default_instance() {
- return *internal_default_instance();
- }
- static inline const DescriptorProto_ReservedRange* internal_default_instance() {
- return reinterpret_cast<const DescriptorProto_ReservedRange*>(
- &_DescriptorProto_ReservedRange_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 3;
-
- friend void swap(DescriptorProto_ReservedRange& a, DescriptorProto_ReservedRange& b) {
- a.Swap(&b);
- }
- inline void Swap(DescriptorProto_ReservedRange* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(DescriptorProto_ReservedRange* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- DescriptorProto_ReservedRange* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<DescriptorProto_ReservedRange>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const DescriptorProto_ReservedRange& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const DescriptorProto_ReservedRange& from) {
- DescriptorProto_ReservedRange::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(DescriptorProto_ReservedRange* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.DescriptorProto.ReservedRange";
- }
- protected:
- explicit DescriptorProto_ReservedRange(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kStartFieldNumber = 1,
- kEndFieldNumber = 2,
- };
- // optional int32 start = 1;
- bool has_start() const;
- private:
- bool _internal_has_start() const;
- public:
- void clear_start();
- int32_t start() const;
- void set_start(int32_t value);
- private:
- int32_t _internal_start() const;
- void _internal_set_start(int32_t value);
- public:
-
- // optional int32 end = 2;
- bool has_end() const;
- private:
- bool _internal_has_end() const;
- public:
- void clear_end();
- int32_t end() const;
- void set_end(int32_t value);
- private:
- int32_t _internal_end() const;
- void _internal_set_end(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ReservedRange)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- int32_t start_;
- int32_t end_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT DescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.DescriptorProto) */ {
- public:
- inline DescriptorProto() : DescriptorProto(nullptr) {}
- ~DescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR DescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- DescriptorProto(const DescriptorProto& from);
- DescriptorProto(DescriptorProto&& from) noexcept
- : DescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline DescriptorProto& operator=(const DescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline DescriptorProto& operator=(DescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const DescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const DescriptorProto* internal_default_instance() {
- return reinterpret_cast<const DescriptorProto*>(
- &_DescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 4;
-
- friend void swap(DescriptorProto& a, DescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(DescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(DescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- DescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<DescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const DescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const DescriptorProto& from) {
- DescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(DescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.DescriptorProto";
- }
- protected:
- explicit DescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef DescriptorProto_ExtensionRange ExtensionRange;
- typedef DescriptorProto_ReservedRange ReservedRange;
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFieldFieldNumber = 2,
- kNestedTypeFieldNumber = 3,
- kEnumTypeFieldNumber = 4,
- kExtensionRangeFieldNumber = 5,
- kExtensionFieldNumber = 6,
- kOneofDeclFieldNumber = 8,
- kReservedRangeFieldNumber = 9,
- kReservedNameFieldNumber = 10,
- kNameFieldNumber = 1,
- kOptionsFieldNumber = 7,
- };
- // repeated .google.protobuf.FieldDescriptorProto field = 2;
- int field_size() const;
- private:
- int _internal_field_size() const;
- public:
- void clear_field();
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* mutable_field(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
- mutable_field();
- private:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& _internal_field(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _internal_add_field();
- public:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& field(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* add_field();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
- field() const;
-
- // repeated .google.protobuf.DescriptorProto nested_type = 3;
- int nested_type_size() const;
- private:
- int _internal_nested_type_size() const;
- public:
- void clear_nested_type();
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* mutable_nested_type(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >*
- mutable_nested_type();
- private:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& _internal_nested_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* _internal_add_nested_type();
- public:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& nested_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* add_nested_type();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >&
- nested_type() const;
-
- // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
- int enum_type_size() const;
- private:
- int _internal_enum_type_size() const;
- public:
- void clear_enum_type();
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* mutable_enum_type(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >*
- mutable_enum_type();
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& _internal_enum_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* _internal_add_enum_type();
- public:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& enum_type(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* add_enum_type();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >&
- enum_type() const;
-
- // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
- int extension_range_size() const;
- private:
- int _internal_extension_range_size() const;
- public:
- void clear_extension_range();
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* mutable_extension_range(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >*
- mutable_extension_range();
- private:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange& _internal_extension_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* _internal_add_extension_range();
- public:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange& extension_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* add_extension_range();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >&
- extension_range() const;
-
- // repeated .google.protobuf.FieldDescriptorProto extension = 6;
- int extension_size() const;
- private:
- int _internal_extension_size() const;
- public:
- void clear_extension();
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* mutable_extension(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
- mutable_extension();
- private:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& _internal_extension(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _internal_add_extension();
- public:
- const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& extension(int index) const;
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* add_extension();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
- extension() const;
-
- // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
- int oneof_decl_size() const;
- private:
- int _internal_oneof_decl_size() const;
- public:
- void clear_oneof_decl();
- ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* mutable_oneof_decl(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >*
- mutable_oneof_decl();
- private:
- const ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto& _internal_oneof_decl(int index) const;
- ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* _internal_add_oneof_decl();
- public:
- const ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto& oneof_decl(int index) const;
- ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* add_oneof_decl();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >&
- oneof_decl() const;
-
- // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
- int reserved_range_size() const;
- private:
- int _internal_reserved_range_size() const;
- public:
- void clear_reserved_range();
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* mutable_reserved_range(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >*
- mutable_reserved_range();
- private:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange& _internal_reserved_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* _internal_add_reserved_range();
- public:
- const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange& reserved_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* add_reserved_range();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >&
- reserved_range() const;
-
- // repeated string reserved_name = 10;
- int reserved_name_size() const;
- private:
- int _internal_reserved_name_size() const;
- public:
- void clear_reserved_name();
- const std::string& reserved_name(int index) const;
- std::string* mutable_reserved_name(int index);
- void set_reserved_name(int index, const std::string& value);
- void set_reserved_name(int index, std::string&& value);
- void set_reserved_name(int index, const char* value);
- void set_reserved_name(int index, const char* value, size_t size);
- std::string* add_reserved_name();
- void add_reserved_name(const std::string& value);
- void add_reserved_name(std::string&& value);
- void add_reserved_name(const char* value);
- void add_reserved_name(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& reserved_name() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_reserved_name();
- private:
- const std::string& _internal_reserved_name(int index) const;
- std::string* _internal_add_reserved_name();
- public:
-
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional .google.protobuf.MessageOptions options = 7;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::MessageOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::MessageOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::MessageOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::MessageOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* options);
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* unsafe_arena_release_options();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto > field_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto > nested_type_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto > enum_type_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange > extension_range_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto > extension_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto > oneof_decl_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange > reserved_range_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> reserved_name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* options_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT ExtensionRangeOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.ExtensionRangeOptions) */ {
- public:
- inline ExtensionRangeOptions() : ExtensionRangeOptions(nullptr) {}
- ~ExtensionRangeOptions() override;
- explicit PROTOBUF_CONSTEXPR ExtensionRangeOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- ExtensionRangeOptions(const ExtensionRangeOptions& from);
- ExtensionRangeOptions(ExtensionRangeOptions&& from) noexcept
- : ExtensionRangeOptions() {
- *this = ::std::move(from);
- }
-
- inline ExtensionRangeOptions& operator=(const ExtensionRangeOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline ExtensionRangeOptions& operator=(ExtensionRangeOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const ExtensionRangeOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const ExtensionRangeOptions* internal_default_instance() {
- return reinterpret_cast<const ExtensionRangeOptions*>(
- &_ExtensionRangeOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 5;
-
- friend void swap(ExtensionRangeOptions& a, ExtensionRangeOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(ExtensionRangeOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(ExtensionRangeOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- ExtensionRangeOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<ExtensionRangeOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const ExtensionRangeOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const ExtensionRangeOptions& from) {
- ExtensionRangeOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(ExtensionRangeOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.ExtensionRangeOptions";
- }
- protected:
- explicit ExtensionRangeOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ExtensionRangeOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.ExtensionRangeOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT FieldDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FieldDescriptorProto) */ {
- public:
- inline FieldDescriptorProto() : FieldDescriptorProto(nullptr) {}
- ~FieldDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR FieldDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FieldDescriptorProto(const FieldDescriptorProto& from);
- FieldDescriptorProto(FieldDescriptorProto&& from) noexcept
- : FieldDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline FieldDescriptorProto& operator=(const FieldDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline FieldDescriptorProto& operator=(FieldDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FieldDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const FieldDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const FieldDescriptorProto*>(
- &_FieldDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 6;
-
- friend void swap(FieldDescriptorProto& a, FieldDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(FieldDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FieldDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FieldDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FieldDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FieldDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FieldDescriptorProto& from) {
- FieldDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FieldDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FieldDescriptorProto";
- }
- protected:
- explicit FieldDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef FieldDescriptorProto_Type Type;
- static constexpr Type TYPE_DOUBLE =
- FieldDescriptorProto_Type_TYPE_DOUBLE;
- static constexpr Type TYPE_FLOAT =
- FieldDescriptorProto_Type_TYPE_FLOAT;
- static constexpr Type TYPE_INT64 =
- FieldDescriptorProto_Type_TYPE_INT64;
- static constexpr Type TYPE_UINT64 =
- FieldDescriptorProto_Type_TYPE_UINT64;
- static constexpr Type TYPE_INT32 =
- FieldDescriptorProto_Type_TYPE_INT32;
- static constexpr Type TYPE_FIXED64 =
- FieldDescriptorProto_Type_TYPE_FIXED64;
- static constexpr Type TYPE_FIXED32 =
- FieldDescriptorProto_Type_TYPE_FIXED32;
- static constexpr Type TYPE_BOOL =
- FieldDescriptorProto_Type_TYPE_BOOL;
- static constexpr Type TYPE_STRING =
- FieldDescriptorProto_Type_TYPE_STRING;
- static constexpr Type TYPE_GROUP =
- FieldDescriptorProto_Type_TYPE_GROUP;
- static constexpr Type TYPE_MESSAGE =
- FieldDescriptorProto_Type_TYPE_MESSAGE;
- static constexpr Type TYPE_BYTES =
- FieldDescriptorProto_Type_TYPE_BYTES;
- static constexpr Type TYPE_UINT32 =
- FieldDescriptorProto_Type_TYPE_UINT32;
- static constexpr Type TYPE_ENUM =
- FieldDescriptorProto_Type_TYPE_ENUM;
- static constexpr Type TYPE_SFIXED32 =
- FieldDescriptorProto_Type_TYPE_SFIXED32;
- static constexpr Type TYPE_SFIXED64 =
- FieldDescriptorProto_Type_TYPE_SFIXED64;
- static constexpr Type TYPE_SINT32 =
- FieldDescriptorProto_Type_TYPE_SINT32;
- static constexpr Type TYPE_SINT64 =
- FieldDescriptorProto_Type_TYPE_SINT64;
- static inline bool Type_IsValid(int value) {
- return FieldDescriptorProto_Type_IsValid(value);
- }
- static constexpr Type Type_MIN =
- FieldDescriptorProto_Type_Type_MIN;
- static constexpr Type Type_MAX =
- FieldDescriptorProto_Type_Type_MAX;
- static constexpr int Type_ARRAYSIZE =
- FieldDescriptorProto_Type_Type_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- Type_descriptor() {
- return FieldDescriptorProto_Type_descriptor();
- }
- template<typename T>
- static inline const std::string& Type_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Type>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Type_Name.");
- return FieldDescriptorProto_Type_Name(enum_t_value);
- }
- static inline bool Type_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- Type* value) {
- return FieldDescriptorProto_Type_Parse(name, value);
- }
-
- typedef FieldDescriptorProto_Label Label;
- static constexpr Label LABEL_OPTIONAL =
- FieldDescriptorProto_Label_LABEL_OPTIONAL;
- static constexpr Label LABEL_REQUIRED =
- FieldDescriptorProto_Label_LABEL_REQUIRED;
- static constexpr Label LABEL_REPEATED =
- FieldDescriptorProto_Label_LABEL_REPEATED;
- static inline bool Label_IsValid(int value) {
- return FieldDescriptorProto_Label_IsValid(value);
- }
- static constexpr Label Label_MIN =
- FieldDescriptorProto_Label_Label_MIN;
- static constexpr Label Label_MAX =
- FieldDescriptorProto_Label_Label_MAX;
- static constexpr int Label_ARRAYSIZE =
- FieldDescriptorProto_Label_Label_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- Label_descriptor() {
- return FieldDescriptorProto_Label_descriptor();
- }
- template<typename T>
- static inline const std::string& Label_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Label>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Label_Name.");
- return FieldDescriptorProto_Label_Name(enum_t_value);
- }
- static inline bool Label_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- Label* value) {
- return FieldDescriptorProto_Label_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kExtendeeFieldNumber = 2,
- kTypeNameFieldNumber = 6,
- kDefaultValueFieldNumber = 7,
- kJsonNameFieldNumber = 10,
- kOptionsFieldNumber = 8,
- kNumberFieldNumber = 3,
- kOneofIndexFieldNumber = 9,
- kProto3OptionalFieldNumber = 17,
- kLabelFieldNumber = 4,
- kTypeFieldNumber = 5,
- };
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional string extendee = 2;
- bool has_extendee() const;
- private:
- bool _internal_has_extendee() const;
- public:
- void clear_extendee();
- const std::string& extendee() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_extendee(ArgT0&& arg0, ArgT... args);
- std::string* mutable_extendee();
- PROTOBUF_NODISCARD std::string* release_extendee();
- void set_allocated_extendee(std::string* extendee);
- private:
- const std::string& _internal_extendee() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_extendee(const std::string& value);
- std::string* _internal_mutable_extendee();
- public:
-
- // optional string type_name = 6;
- bool has_type_name() const;
- private:
- bool _internal_has_type_name() const;
- public:
- void clear_type_name();
- const std::string& type_name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_type_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_type_name();
- PROTOBUF_NODISCARD std::string* release_type_name();
- void set_allocated_type_name(std::string* type_name);
- private:
- const std::string& _internal_type_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_type_name(const std::string& value);
- std::string* _internal_mutable_type_name();
- public:
-
- // optional string default_value = 7;
- bool has_default_value() const;
- private:
- bool _internal_has_default_value() const;
- public:
- void clear_default_value();
- const std::string& default_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_default_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_default_value();
- PROTOBUF_NODISCARD std::string* release_default_value();
- void set_allocated_default_value(std::string* default_value);
- private:
- const std::string& _internal_default_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_default_value(const std::string& value);
- std::string* _internal_mutable_default_value();
- public:
-
- // optional string json_name = 10;
- bool has_json_name() const;
- private:
- bool _internal_has_json_name() const;
- public:
- void clear_json_name();
- const std::string& json_name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_json_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_json_name();
- PROTOBUF_NODISCARD std::string* release_json_name();
- void set_allocated_json_name(std::string* json_name);
- private:
- const std::string& _internal_json_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_json_name(const std::string& value);
- std::string* _internal_mutable_json_name();
- public:
-
- // optional .google.protobuf.FieldOptions options = 8;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::FieldOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::FieldOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::FieldOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::FieldOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* options);
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* unsafe_arena_release_options();
-
- // optional int32 number = 3;
- bool has_number() const;
- private:
- bool _internal_has_number() const;
- public:
- void clear_number();
- int32_t number() const;
- void set_number(int32_t value);
- private:
- int32_t _internal_number() const;
- void _internal_set_number(int32_t value);
- public:
-
- // optional int32 oneof_index = 9;
- bool has_oneof_index() const;
- private:
- bool _internal_has_oneof_index() const;
- public:
- void clear_oneof_index();
- int32_t oneof_index() const;
- void set_oneof_index(int32_t value);
- private:
- int32_t _internal_oneof_index() const;
- void _internal_set_oneof_index(int32_t value);
- public:
-
- // optional bool proto3_optional = 17;
- bool has_proto3_optional() const;
- private:
- bool _internal_has_proto3_optional() const;
- public:
- void clear_proto3_optional();
- bool proto3_optional() const;
- void set_proto3_optional(bool value);
- private:
- bool _internal_proto3_optional() const;
- void _internal_set_proto3_optional(bool value);
- public:
-
- // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
- bool has_label() const;
- private:
- bool _internal_has_label() const;
- public:
- void clear_label();
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label label() const;
- void set_label(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label value);
- private:
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label _internal_label() const;
- void _internal_set_label(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label value);
- public:
-
- // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
- bool has_type() const;
- private:
- bool _internal_has_type() const;
- public:
- void clear_type();
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type type() const;
- void set_type(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type value);
- private:
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type _internal_type() const;
- void _internal_set_type(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extendee_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr type_name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr default_value_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr json_name_;
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* options_;
- int32_t number_;
- int32_t oneof_index_;
- bool proto3_optional_;
- int label_;
- int type_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT OneofDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.OneofDescriptorProto) */ {
- public:
- inline OneofDescriptorProto() : OneofDescriptorProto(nullptr) {}
- ~OneofDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR OneofDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- OneofDescriptorProto(const OneofDescriptorProto& from);
- OneofDescriptorProto(OneofDescriptorProto&& from) noexcept
- : OneofDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline OneofDescriptorProto& operator=(const OneofDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline OneofDescriptorProto& operator=(OneofDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const OneofDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const OneofDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const OneofDescriptorProto*>(
- &_OneofDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 7;
-
- friend void swap(OneofDescriptorProto& a, OneofDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(OneofDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(OneofDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- OneofDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<OneofDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const OneofDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const OneofDescriptorProto& from) {
- OneofDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(OneofDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.OneofDescriptorProto";
- }
- protected:
- explicit OneofDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kOptionsFieldNumber = 2,
- };
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional .google.protobuf.OneofOptions options = 2;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::OneofOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::OneofOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::OneofOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::OneofOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* options);
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* unsafe_arena_release_options();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.OneofDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* options_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumDescriptorProto_EnumReservedRange final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumDescriptorProto.EnumReservedRange) */ {
- public:
- inline EnumDescriptorProto_EnumReservedRange() : EnumDescriptorProto_EnumReservedRange(nullptr) {}
- ~EnumDescriptorProto_EnumReservedRange() override;
- explicit PROTOBUF_CONSTEXPR EnumDescriptorProto_EnumReservedRange(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumDescriptorProto_EnumReservedRange(const EnumDescriptorProto_EnumReservedRange& from);
- EnumDescriptorProto_EnumReservedRange(EnumDescriptorProto_EnumReservedRange&& from) noexcept
- : EnumDescriptorProto_EnumReservedRange() {
- *this = ::std::move(from);
- }
-
- inline EnumDescriptorProto_EnumReservedRange& operator=(const EnumDescriptorProto_EnumReservedRange& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumDescriptorProto_EnumReservedRange& operator=(EnumDescriptorProto_EnumReservedRange&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumDescriptorProto_EnumReservedRange& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumDescriptorProto_EnumReservedRange* internal_default_instance() {
- return reinterpret_cast<const EnumDescriptorProto_EnumReservedRange*>(
- &_EnumDescriptorProto_EnumReservedRange_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 8;
-
- friend void swap(EnumDescriptorProto_EnumReservedRange& a, EnumDescriptorProto_EnumReservedRange& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumDescriptorProto_EnumReservedRange* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumDescriptorProto_EnumReservedRange* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumDescriptorProto_EnumReservedRange* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumDescriptorProto_EnumReservedRange>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumDescriptorProto_EnumReservedRange& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumDescriptorProto_EnumReservedRange& from) {
- EnumDescriptorProto_EnumReservedRange::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumDescriptorProto_EnumReservedRange* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumDescriptorProto.EnumReservedRange";
- }
- protected:
- explicit EnumDescriptorProto_EnumReservedRange(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kStartFieldNumber = 1,
- kEndFieldNumber = 2,
- };
- // optional int32 start = 1;
- bool has_start() const;
- private:
- bool _internal_has_start() const;
- public:
- void clear_start();
- int32_t start() const;
- void set_start(int32_t value);
- private:
- int32_t _internal_start() const;
- void _internal_set_start(int32_t value);
- public:
-
- // optional int32 end = 2;
- bool has_end() const;
- private:
- bool _internal_has_end() const;
- public:
- void clear_end();
- int32_t end() const;
- void set_end(int32_t value);
- private:
- int32_t _internal_end() const;
- void _internal_set_end(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto.EnumReservedRange)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- int32_t start_;
- int32_t end_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumDescriptorProto) */ {
- public:
- inline EnumDescriptorProto() : EnumDescriptorProto(nullptr) {}
- ~EnumDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR EnumDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumDescriptorProto(const EnumDescriptorProto& from);
- EnumDescriptorProto(EnumDescriptorProto&& from) noexcept
- : EnumDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline EnumDescriptorProto& operator=(const EnumDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumDescriptorProto& operator=(EnumDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const EnumDescriptorProto*>(
- &_EnumDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 9;
-
- friend void swap(EnumDescriptorProto& a, EnumDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumDescriptorProto& from) {
- EnumDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumDescriptorProto";
- }
- protected:
- explicit EnumDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef EnumDescriptorProto_EnumReservedRange EnumReservedRange;
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 2,
- kReservedRangeFieldNumber = 4,
- kReservedNameFieldNumber = 5,
- kNameFieldNumber = 1,
- kOptionsFieldNumber = 3,
- };
- // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
- int value_size() const;
- private:
- int _internal_value_size() const;
- public:
- void clear_value();
- ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* mutable_value(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >*
- mutable_value();
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto& _internal_value(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* _internal_add_value();
- public:
- const ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto& value(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* add_value();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >&
- value() const;
-
- // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
- int reserved_range_size() const;
- private:
- int _internal_reserved_range_size() const;
- public:
- void clear_reserved_range();
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* mutable_reserved_range(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange >*
- mutable_reserved_range();
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange& _internal_reserved_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* _internal_add_reserved_range();
- public:
- const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange& reserved_range(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* add_reserved_range();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange >&
- reserved_range() const;
-
- // repeated string reserved_name = 5;
- int reserved_name_size() const;
- private:
- int _internal_reserved_name_size() const;
- public:
- void clear_reserved_name();
- const std::string& reserved_name(int index) const;
- std::string* mutable_reserved_name(int index);
- void set_reserved_name(int index, const std::string& value);
- void set_reserved_name(int index, std::string&& value);
- void set_reserved_name(int index, const char* value);
- void set_reserved_name(int index, const char* value, size_t size);
- std::string* add_reserved_name();
- void add_reserved_name(const std::string& value);
- void add_reserved_name(std::string&& value);
- void add_reserved_name(const char* value);
- void add_reserved_name(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& reserved_name() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_reserved_name();
- private:
- const std::string& _internal_reserved_name(int index) const;
- std::string* _internal_add_reserved_name();
- public:
-
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional .google.protobuf.EnumOptions options = 3;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::EnumOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::EnumOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::EnumOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* options);
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* unsafe_arena_release_options();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto > value_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange > reserved_range_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> reserved_name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* options_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumValueDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumValueDescriptorProto) */ {
- public:
- inline EnumValueDescriptorProto() : EnumValueDescriptorProto(nullptr) {}
- ~EnumValueDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR EnumValueDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumValueDescriptorProto(const EnumValueDescriptorProto& from);
- EnumValueDescriptorProto(EnumValueDescriptorProto&& from) noexcept
- : EnumValueDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline EnumValueDescriptorProto& operator=(const EnumValueDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumValueDescriptorProto& operator=(EnumValueDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumValueDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumValueDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const EnumValueDescriptorProto*>(
- &_EnumValueDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 10;
-
- friend void swap(EnumValueDescriptorProto& a, EnumValueDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumValueDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumValueDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumValueDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumValueDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumValueDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumValueDescriptorProto& from) {
- EnumValueDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumValueDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumValueDescriptorProto";
- }
- protected:
- explicit EnumValueDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kOptionsFieldNumber = 3,
- kNumberFieldNumber = 2,
- };
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional .google.protobuf.EnumValueOptions options = 3;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::EnumValueOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* options);
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* unsafe_arena_release_options();
-
- // optional int32 number = 2;
- bool has_number() const;
- private:
- bool _internal_has_number() const;
- public:
- void clear_number();
- int32_t number() const;
- void set_number(int32_t value);
- private:
- int32_t _internal_number() const;
- void _internal_set_number(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* options_;
- int32_t number_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT ServiceDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.ServiceDescriptorProto) */ {
- public:
- inline ServiceDescriptorProto() : ServiceDescriptorProto(nullptr) {}
- ~ServiceDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR ServiceDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- ServiceDescriptorProto(const ServiceDescriptorProto& from);
- ServiceDescriptorProto(ServiceDescriptorProto&& from) noexcept
- : ServiceDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline ServiceDescriptorProto& operator=(const ServiceDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline ServiceDescriptorProto& operator=(ServiceDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const ServiceDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const ServiceDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const ServiceDescriptorProto*>(
- &_ServiceDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 11;
-
- friend void swap(ServiceDescriptorProto& a, ServiceDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(ServiceDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(ServiceDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- ServiceDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<ServiceDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const ServiceDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const ServiceDescriptorProto& from) {
- ServiceDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(ServiceDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.ServiceDescriptorProto";
- }
- protected:
- explicit ServiceDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kMethodFieldNumber = 2,
- kNameFieldNumber = 1,
- kOptionsFieldNumber = 3,
- };
- // repeated .google.protobuf.MethodDescriptorProto method = 2;
- int method_size() const;
- private:
- int _internal_method_size() const;
- public:
- void clear_method();
- ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* mutable_method(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto >*
- mutable_method();
- private:
- const ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto& _internal_method(int index) const;
- ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* _internal_add_method();
- public:
- const ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto& method(int index) const;
- ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* add_method();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto >&
- method() const;
-
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional .google.protobuf.ServiceOptions options = 3;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::ServiceOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::ServiceOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::ServiceOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::ServiceOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* options);
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* unsafe_arena_release_options();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto > method_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* options_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT MethodDescriptorProto final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.MethodDescriptorProto) */ {
- public:
- inline MethodDescriptorProto() : MethodDescriptorProto(nullptr) {}
- ~MethodDescriptorProto() override;
- explicit PROTOBUF_CONSTEXPR MethodDescriptorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- MethodDescriptorProto(const MethodDescriptorProto& from);
- MethodDescriptorProto(MethodDescriptorProto&& from) noexcept
- : MethodDescriptorProto() {
- *this = ::std::move(from);
- }
-
- inline MethodDescriptorProto& operator=(const MethodDescriptorProto& from) {
- CopyFrom(from);
- return *this;
- }
- inline MethodDescriptorProto& operator=(MethodDescriptorProto&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const MethodDescriptorProto& default_instance() {
- return *internal_default_instance();
- }
- static inline const MethodDescriptorProto* internal_default_instance() {
- return reinterpret_cast<const MethodDescriptorProto*>(
- &_MethodDescriptorProto_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 12;
-
- friend void swap(MethodDescriptorProto& a, MethodDescriptorProto& b) {
- a.Swap(&b);
- }
- inline void Swap(MethodDescriptorProto* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(MethodDescriptorProto* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- MethodDescriptorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<MethodDescriptorProto>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const MethodDescriptorProto& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const MethodDescriptorProto& from) {
- MethodDescriptorProto::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(MethodDescriptorProto* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.MethodDescriptorProto";
- }
- protected:
- explicit MethodDescriptorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kInputTypeFieldNumber = 2,
- kOutputTypeFieldNumber = 3,
- kOptionsFieldNumber = 4,
- kClientStreamingFieldNumber = 5,
- kServerStreamingFieldNumber = 6,
- };
- // optional string name = 1;
- bool has_name() const;
- private:
- bool _internal_has_name() const;
- public:
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // optional string input_type = 2;
- bool has_input_type() const;
- private:
- bool _internal_has_input_type() const;
- public:
- void clear_input_type();
- const std::string& input_type() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_input_type(ArgT0&& arg0, ArgT... args);
- std::string* mutable_input_type();
- PROTOBUF_NODISCARD std::string* release_input_type();
- void set_allocated_input_type(std::string* input_type);
- private:
- const std::string& _internal_input_type() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_input_type(const std::string& value);
- std::string* _internal_mutable_input_type();
- public:
-
- // optional string output_type = 3;
- bool has_output_type() const;
- private:
- bool _internal_has_output_type() const;
- public:
- void clear_output_type();
- const std::string& output_type() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_output_type(ArgT0&& arg0, ArgT... args);
- std::string* mutable_output_type();
- PROTOBUF_NODISCARD std::string* release_output_type();
- void set_allocated_output_type(std::string* output_type);
- private:
- const std::string& _internal_output_type() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_output_type(const std::string& value);
- std::string* _internal_mutable_output_type();
- public:
-
- // optional .google.protobuf.MethodOptions options = 4;
- bool has_options() const;
- private:
- bool _internal_has_options() const;
- public:
- void clear_options();
- const ::PROTOBUF_NAMESPACE_ID::MethodOptions& options() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::MethodOptions* release_options();
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* mutable_options();
- void set_allocated_options(::PROTOBUF_NAMESPACE_ID::MethodOptions* options);
- private:
- const ::PROTOBUF_NAMESPACE_ID::MethodOptions& _internal_options() const;
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* _internal_mutable_options();
- public:
- void unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* options);
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* unsafe_arena_release_options();
-
- // optional bool client_streaming = 5 [default = false];
- bool has_client_streaming() const;
- private:
- bool _internal_has_client_streaming() const;
- public:
- void clear_client_streaming();
- bool client_streaming() const;
- void set_client_streaming(bool value);
- private:
- bool _internal_client_streaming() const;
- void _internal_set_client_streaming(bool value);
- public:
-
- // optional bool server_streaming = 6 [default = false];
- bool has_server_streaming() const;
- private:
- bool _internal_has_server_streaming() const;
- public:
- void clear_server_streaming();
- bool server_streaming() const;
- void set_server_streaming(bool value);
- private:
- bool _internal_server_streaming() const;
- void _internal_set_server_streaming(bool value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr input_type_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr output_type_;
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* options_;
- bool client_streaming_;
- bool server_streaming_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT FileOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FileOptions) */ {
- public:
- inline FileOptions() : FileOptions(nullptr) {}
- ~FileOptions() override;
- explicit PROTOBUF_CONSTEXPR FileOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FileOptions(const FileOptions& from);
- FileOptions(FileOptions&& from) noexcept
- : FileOptions() {
- *this = ::std::move(from);
- }
-
- inline FileOptions& operator=(const FileOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline FileOptions& operator=(FileOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FileOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const FileOptions* internal_default_instance() {
- return reinterpret_cast<const FileOptions*>(
- &_FileOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 13;
-
- friend void swap(FileOptions& a, FileOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(FileOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FileOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FileOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FileOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FileOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FileOptions& from) {
- FileOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FileOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FileOptions";
- }
- protected:
- explicit FileOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef FileOptions_OptimizeMode OptimizeMode;
- static constexpr OptimizeMode SPEED =
- FileOptions_OptimizeMode_SPEED;
- static constexpr OptimizeMode CODE_SIZE =
- FileOptions_OptimizeMode_CODE_SIZE;
- static constexpr OptimizeMode LITE_RUNTIME =
- FileOptions_OptimizeMode_LITE_RUNTIME;
- static inline bool OptimizeMode_IsValid(int value) {
- return FileOptions_OptimizeMode_IsValid(value);
- }
- static constexpr OptimizeMode OptimizeMode_MIN =
- FileOptions_OptimizeMode_OptimizeMode_MIN;
- static constexpr OptimizeMode OptimizeMode_MAX =
- FileOptions_OptimizeMode_OptimizeMode_MAX;
- static constexpr int OptimizeMode_ARRAYSIZE =
- FileOptions_OptimizeMode_OptimizeMode_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- OptimizeMode_descriptor() {
- return FileOptions_OptimizeMode_descriptor();
- }
- template<typename T>
- static inline const std::string& OptimizeMode_Name(T enum_t_value) {
- static_assert(::std::is_same<T, OptimizeMode>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function OptimizeMode_Name.");
- return FileOptions_OptimizeMode_Name(enum_t_value);
- }
- static inline bool OptimizeMode_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- OptimizeMode* value) {
- return FileOptions_OptimizeMode_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kJavaPackageFieldNumber = 1,
- kJavaOuterClassnameFieldNumber = 8,
- kGoPackageFieldNumber = 11,
- kObjcClassPrefixFieldNumber = 36,
- kCsharpNamespaceFieldNumber = 37,
- kSwiftPrefixFieldNumber = 39,
- kPhpClassPrefixFieldNumber = 40,
- kPhpNamespaceFieldNumber = 41,
- kPhpMetadataNamespaceFieldNumber = 44,
- kRubyPackageFieldNumber = 45,
- kJavaMultipleFilesFieldNumber = 10,
- kJavaGenerateEqualsAndHashFieldNumber = 20,
- kJavaStringCheckUtf8FieldNumber = 27,
- kCcGenericServicesFieldNumber = 16,
- kJavaGenericServicesFieldNumber = 17,
- kPyGenericServicesFieldNumber = 18,
- kPhpGenericServicesFieldNumber = 42,
- kDeprecatedFieldNumber = 23,
- kOptimizeForFieldNumber = 9,
- kCcEnableArenasFieldNumber = 31,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional string java_package = 1;
- bool has_java_package() const;
- private:
- bool _internal_has_java_package() const;
- public:
- void clear_java_package();
- const std::string& java_package() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_java_package(ArgT0&& arg0, ArgT... args);
- std::string* mutable_java_package();
- PROTOBUF_NODISCARD std::string* release_java_package();
- void set_allocated_java_package(std::string* java_package);
- private:
- const std::string& _internal_java_package() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_java_package(const std::string& value);
- std::string* _internal_mutable_java_package();
- public:
-
- // optional string java_outer_classname = 8;
- bool has_java_outer_classname() const;
- private:
- bool _internal_has_java_outer_classname() const;
- public:
- void clear_java_outer_classname();
- const std::string& java_outer_classname() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_java_outer_classname(ArgT0&& arg0, ArgT... args);
- std::string* mutable_java_outer_classname();
- PROTOBUF_NODISCARD std::string* release_java_outer_classname();
- void set_allocated_java_outer_classname(std::string* java_outer_classname);
- private:
- const std::string& _internal_java_outer_classname() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_java_outer_classname(const std::string& value);
- std::string* _internal_mutable_java_outer_classname();
- public:
-
- // optional string go_package = 11;
- bool has_go_package() const;
- private:
- bool _internal_has_go_package() const;
- public:
- void clear_go_package();
- const std::string& go_package() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_go_package(ArgT0&& arg0, ArgT... args);
- std::string* mutable_go_package();
- PROTOBUF_NODISCARD std::string* release_go_package();
- void set_allocated_go_package(std::string* go_package);
- private:
- const std::string& _internal_go_package() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_go_package(const std::string& value);
- std::string* _internal_mutable_go_package();
- public:
-
- // optional string objc_class_prefix = 36;
- bool has_objc_class_prefix() const;
- private:
- bool _internal_has_objc_class_prefix() const;
- public:
- void clear_objc_class_prefix();
- const std::string& objc_class_prefix() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_objc_class_prefix(ArgT0&& arg0, ArgT... args);
- std::string* mutable_objc_class_prefix();
- PROTOBUF_NODISCARD std::string* release_objc_class_prefix();
- void set_allocated_objc_class_prefix(std::string* objc_class_prefix);
- private:
- const std::string& _internal_objc_class_prefix() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_objc_class_prefix(const std::string& value);
- std::string* _internal_mutable_objc_class_prefix();
- public:
-
- // optional string csharp_namespace = 37;
- bool has_csharp_namespace() const;
- private:
- bool _internal_has_csharp_namespace() const;
- public:
- void clear_csharp_namespace();
- const std::string& csharp_namespace() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_csharp_namespace(ArgT0&& arg0, ArgT... args);
- std::string* mutable_csharp_namespace();
- PROTOBUF_NODISCARD std::string* release_csharp_namespace();
- void set_allocated_csharp_namespace(std::string* csharp_namespace);
- private:
- const std::string& _internal_csharp_namespace() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_csharp_namespace(const std::string& value);
- std::string* _internal_mutable_csharp_namespace();
- public:
-
- // optional string swift_prefix = 39;
- bool has_swift_prefix() const;
- private:
- bool _internal_has_swift_prefix() const;
- public:
- void clear_swift_prefix();
- const std::string& swift_prefix() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_swift_prefix(ArgT0&& arg0, ArgT... args);
- std::string* mutable_swift_prefix();
- PROTOBUF_NODISCARD std::string* release_swift_prefix();
- void set_allocated_swift_prefix(std::string* swift_prefix);
- private:
- const std::string& _internal_swift_prefix() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_swift_prefix(const std::string& value);
- std::string* _internal_mutable_swift_prefix();
- public:
-
- // optional string php_class_prefix = 40;
- bool has_php_class_prefix() const;
- private:
- bool _internal_has_php_class_prefix() const;
- public:
- void clear_php_class_prefix();
- const std::string& php_class_prefix() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_php_class_prefix(ArgT0&& arg0, ArgT... args);
- std::string* mutable_php_class_prefix();
- PROTOBUF_NODISCARD std::string* release_php_class_prefix();
- void set_allocated_php_class_prefix(std::string* php_class_prefix);
- private:
- const std::string& _internal_php_class_prefix() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_php_class_prefix(const std::string& value);
- std::string* _internal_mutable_php_class_prefix();
- public:
-
- // optional string php_namespace = 41;
- bool has_php_namespace() const;
- private:
- bool _internal_has_php_namespace() const;
- public:
- void clear_php_namespace();
- const std::string& php_namespace() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_php_namespace(ArgT0&& arg0, ArgT... args);
- std::string* mutable_php_namespace();
- PROTOBUF_NODISCARD std::string* release_php_namespace();
- void set_allocated_php_namespace(std::string* php_namespace);
- private:
- const std::string& _internal_php_namespace() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_php_namespace(const std::string& value);
- std::string* _internal_mutable_php_namespace();
- public:
-
- // optional string php_metadata_namespace = 44;
- bool has_php_metadata_namespace() const;
- private:
- bool _internal_has_php_metadata_namespace() const;
- public:
- void clear_php_metadata_namespace();
- const std::string& php_metadata_namespace() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_php_metadata_namespace(ArgT0&& arg0, ArgT... args);
- std::string* mutable_php_metadata_namespace();
- PROTOBUF_NODISCARD std::string* release_php_metadata_namespace();
- void set_allocated_php_metadata_namespace(std::string* php_metadata_namespace);
- private:
- const std::string& _internal_php_metadata_namespace() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_php_metadata_namespace(const std::string& value);
- std::string* _internal_mutable_php_metadata_namespace();
- public:
-
- // optional string ruby_package = 45;
- bool has_ruby_package() const;
- private:
- bool _internal_has_ruby_package() const;
- public:
- void clear_ruby_package();
- const std::string& ruby_package() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_ruby_package(ArgT0&& arg0, ArgT... args);
- std::string* mutable_ruby_package();
- PROTOBUF_NODISCARD std::string* release_ruby_package();
- void set_allocated_ruby_package(std::string* ruby_package);
- private:
- const std::string& _internal_ruby_package() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_ruby_package(const std::string& value);
- std::string* _internal_mutable_ruby_package();
- public:
-
- // optional bool java_multiple_files = 10 [default = false];
- bool has_java_multiple_files() const;
- private:
- bool _internal_has_java_multiple_files() const;
- public:
- void clear_java_multiple_files();
- bool java_multiple_files() const;
- void set_java_multiple_files(bool value);
- private:
- bool _internal_java_multiple_files() const;
- void _internal_set_java_multiple_files(bool value);
- public:
-
- // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
- PROTOBUF_DEPRECATED bool has_java_generate_equals_and_hash() const;
- private:
- bool _internal_has_java_generate_equals_and_hash() const;
- public:
- PROTOBUF_DEPRECATED void clear_java_generate_equals_and_hash();
- PROTOBUF_DEPRECATED bool java_generate_equals_and_hash() const;
- PROTOBUF_DEPRECATED void set_java_generate_equals_and_hash(bool value);
- private:
- bool _internal_java_generate_equals_and_hash() const;
- void _internal_set_java_generate_equals_and_hash(bool value);
- public:
-
- // optional bool java_string_check_utf8 = 27 [default = false];
- bool has_java_string_check_utf8() const;
- private:
- bool _internal_has_java_string_check_utf8() const;
- public:
- void clear_java_string_check_utf8();
- bool java_string_check_utf8() const;
- void set_java_string_check_utf8(bool value);
- private:
- bool _internal_java_string_check_utf8() const;
- void _internal_set_java_string_check_utf8(bool value);
- public:
-
- // optional bool cc_generic_services = 16 [default = false];
- bool has_cc_generic_services() const;
- private:
- bool _internal_has_cc_generic_services() const;
- public:
- void clear_cc_generic_services();
- bool cc_generic_services() const;
- void set_cc_generic_services(bool value);
- private:
- bool _internal_cc_generic_services() const;
- void _internal_set_cc_generic_services(bool value);
- public:
-
- // optional bool java_generic_services = 17 [default = false];
- bool has_java_generic_services() const;
- private:
- bool _internal_has_java_generic_services() const;
- public:
- void clear_java_generic_services();
- bool java_generic_services() const;
- void set_java_generic_services(bool value);
- private:
- bool _internal_java_generic_services() const;
- void _internal_set_java_generic_services(bool value);
- public:
-
- // optional bool py_generic_services = 18 [default = false];
- bool has_py_generic_services() const;
- private:
- bool _internal_has_py_generic_services() const;
- public:
- void clear_py_generic_services();
- bool py_generic_services() const;
- void set_py_generic_services(bool value);
- private:
- bool _internal_py_generic_services() const;
- void _internal_set_py_generic_services(bool value);
- public:
-
- // optional bool php_generic_services = 42 [default = false];
- bool has_php_generic_services() const;
- private:
- bool _internal_has_php_generic_services() const;
- public:
- void clear_php_generic_services();
- bool php_generic_services() const;
- void set_php_generic_services(bool value);
- private:
- bool _internal_php_generic_services() const;
- void _internal_set_php_generic_services(bool value);
- public:
-
- // optional bool deprecated = 23 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
- // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
- bool has_optimize_for() const;
- private:
- bool _internal_has_optimize_for() const;
- public:
- void clear_optimize_for();
- ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode optimize_for() const;
- void set_optimize_for(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode value);
- private:
- ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode _internal_optimize_for() const;
- void _internal_set_optimize_for(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode value);
- public:
-
- // optional bool cc_enable_arenas = 31 [default = true];
- bool has_cc_enable_arenas() const;
- private:
- bool _internal_has_cc_enable_arenas() const;
- public:
- void clear_cc_enable_arenas();
- bool cc_enable_arenas() const;
- void set_cc_enable_arenas(bool value);
- private:
- bool _internal_cc_enable_arenas() const;
- void _internal_set_cc_enable_arenas(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FileOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FileOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr java_package_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr java_outer_classname_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr go_package_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr objc_class_prefix_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr csharp_namespace_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr swift_prefix_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr php_class_prefix_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr php_namespace_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr php_metadata_namespace_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ruby_package_;
- bool java_multiple_files_;
- bool java_generate_equals_and_hash_;
- bool java_string_check_utf8_;
- bool cc_generic_services_;
- bool java_generic_services_;
- bool py_generic_services_;
- bool php_generic_services_;
- bool deprecated_;
- int optimize_for_;
- bool cc_enable_arenas_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT MessageOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.MessageOptions) */ {
- public:
- inline MessageOptions() : MessageOptions(nullptr) {}
- ~MessageOptions() override;
- explicit PROTOBUF_CONSTEXPR MessageOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- MessageOptions(const MessageOptions& from);
- MessageOptions(MessageOptions&& from) noexcept
- : MessageOptions() {
- *this = ::std::move(from);
- }
-
- inline MessageOptions& operator=(const MessageOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline MessageOptions& operator=(MessageOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const MessageOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const MessageOptions* internal_default_instance() {
- return reinterpret_cast<const MessageOptions*>(
- &_MessageOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 14;
-
- friend void swap(MessageOptions& a, MessageOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(MessageOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(MessageOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- MessageOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<MessageOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const MessageOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const MessageOptions& from) {
- MessageOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(MessageOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.MessageOptions";
- }
- protected:
- explicit MessageOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kMessageSetWireFormatFieldNumber = 1,
- kNoStandardDescriptorAccessorFieldNumber = 2,
- kDeprecatedFieldNumber = 3,
- kMapEntryFieldNumber = 7,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional bool message_set_wire_format = 1 [default = false];
- bool has_message_set_wire_format() const;
- private:
- bool _internal_has_message_set_wire_format() const;
- public:
- void clear_message_set_wire_format();
- bool message_set_wire_format() const;
- void set_message_set_wire_format(bool value);
- private:
- bool _internal_message_set_wire_format() const;
- void _internal_set_message_set_wire_format(bool value);
- public:
-
- // optional bool no_standard_descriptor_accessor = 2 [default = false];
- bool has_no_standard_descriptor_accessor() const;
- private:
- bool _internal_has_no_standard_descriptor_accessor() const;
- public:
- void clear_no_standard_descriptor_accessor();
- bool no_standard_descriptor_accessor() const;
- void set_no_standard_descriptor_accessor(bool value);
- private:
- bool _internal_no_standard_descriptor_accessor() const;
- void _internal_set_no_standard_descriptor_accessor(bool value);
- public:
-
- // optional bool deprecated = 3 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
- // optional bool map_entry = 7;
- bool has_map_entry() const;
- private:
- bool _internal_has_map_entry() const;
- public:
- void clear_map_entry();
- bool map_entry() const;
- void set_map_entry(bool value);
- private:
- bool _internal_map_entry() const;
- void _internal_set_map_entry(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MessageOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- bool message_set_wire_format_;
- bool no_standard_descriptor_accessor_;
- bool deprecated_;
- bool map_entry_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT FieldOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FieldOptions) */ {
- public:
- inline FieldOptions() : FieldOptions(nullptr) {}
- ~FieldOptions() override;
- explicit PROTOBUF_CONSTEXPR FieldOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FieldOptions(const FieldOptions& from);
- FieldOptions(FieldOptions&& from) noexcept
- : FieldOptions() {
- *this = ::std::move(from);
- }
-
- inline FieldOptions& operator=(const FieldOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline FieldOptions& operator=(FieldOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FieldOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const FieldOptions* internal_default_instance() {
- return reinterpret_cast<const FieldOptions*>(
- &_FieldOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 15;
-
- friend void swap(FieldOptions& a, FieldOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(FieldOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FieldOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FieldOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FieldOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FieldOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FieldOptions& from) {
- FieldOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FieldOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FieldOptions";
- }
- protected:
- explicit FieldOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef FieldOptions_CType CType;
- static constexpr CType STRING =
- FieldOptions_CType_STRING;
- static constexpr CType CORD =
- FieldOptions_CType_CORD;
- static constexpr CType STRING_PIECE =
- FieldOptions_CType_STRING_PIECE;
- static inline bool CType_IsValid(int value) {
- return FieldOptions_CType_IsValid(value);
- }
- static constexpr CType CType_MIN =
- FieldOptions_CType_CType_MIN;
- static constexpr CType CType_MAX =
- FieldOptions_CType_CType_MAX;
- static constexpr int CType_ARRAYSIZE =
- FieldOptions_CType_CType_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- CType_descriptor() {
- return FieldOptions_CType_descriptor();
- }
- template<typename T>
- static inline const std::string& CType_Name(T enum_t_value) {
- static_assert(::std::is_same<T, CType>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function CType_Name.");
- return FieldOptions_CType_Name(enum_t_value);
- }
- static inline bool CType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- CType* value) {
- return FieldOptions_CType_Parse(name, value);
- }
-
- typedef FieldOptions_JSType JSType;
- static constexpr JSType JS_NORMAL =
- FieldOptions_JSType_JS_NORMAL;
- static constexpr JSType JS_STRING =
- FieldOptions_JSType_JS_STRING;
- static constexpr JSType JS_NUMBER =
- FieldOptions_JSType_JS_NUMBER;
- static inline bool JSType_IsValid(int value) {
- return FieldOptions_JSType_IsValid(value);
- }
- static constexpr JSType JSType_MIN =
- FieldOptions_JSType_JSType_MIN;
- static constexpr JSType JSType_MAX =
- FieldOptions_JSType_JSType_MAX;
- static constexpr int JSType_ARRAYSIZE =
- FieldOptions_JSType_JSType_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- JSType_descriptor() {
- return FieldOptions_JSType_descriptor();
- }
- template<typename T>
- static inline const std::string& JSType_Name(T enum_t_value) {
- static_assert(::std::is_same<T, JSType>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function JSType_Name.");
- return FieldOptions_JSType_Name(enum_t_value);
- }
- static inline bool JSType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- JSType* value) {
- return FieldOptions_JSType_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kCtypeFieldNumber = 1,
- kJstypeFieldNumber = 6,
- kPackedFieldNumber = 2,
- kLazyFieldNumber = 5,
- kUnverifiedLazyFieldNumber = 15,
- kDeprecatedFieldNumber = 3,
- kWeakFieldNumber = 10,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
- bool has_ctype() const;
- private:
- bool _internal_has_ctype() const;
- public:
- void clear_ctype();
- ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType ctype() const;
- void set_ctype(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType value);
- private:
- ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType _internal_ctype() const;
- void _internal_set_ctype(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType value);
- public:
-
- // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
- bool has_jstype() const;
- private:
- bool _internal_has_jstype() const;
- public:
- void clear_jstype();
- ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType jstype() const;
- void set_jstype(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType value);
- private:
- ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType _internal_jstype() const;
- void _internal_set_jstype(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType value);
- public:
-
- // optional bool packed = 2;
- bool has_packed() const;
- private:
- bool _internal_has_packed() const;
- public:
- void clear_packed();
- bool packed() const;
- void set_packed(bool value);
- private:
- bool _internal_packed() const;
- void _internal_set_packed(bool value);
- public:
-
- // optional bool lazy = 5 [default = false];
- bool has_lazy() const;
- private:
- bool _internal_has_lazy() const;
- public:
- void clear_lazy();
- bool lazy() const;
- void set_lazy(bool value);
- private:
- bool _internal_lazy() const;
- void _internal_set_lazy(bool value);
- public:
-
- // optional bool unverified_lazy = 15 [default = false];
- bool has_unverified_lazy() const;
- private:
- bool _internal_has_unverified_lazy() const;
- public:
- void clear_unverified_lazy();
- bool unverified_lazy() const;
- void set_unverified_lazy(bool value);
- private:
- bool _internal_unverified_lazy() const;
- void _internal_set_unverified_lazy(bool value);
- public:
-
- // optional bool deprecated = 3 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
- // optional bool weak = 10 [default = false];
- bool has_weak() const;
- private:
- bool _internal_has_weak() const;
- public:
- void clear_weak();
- bool weak() const;
- void set_weak(bool value);
- private:
- bool _internal_weak() const;
- void _internal_set_weak(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- FieldOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- int ctype_;
- int jstype_;
- bool packed_;
- bool lazy_;
- bool unverified_lazy_;
- bool deprecated_;
- bool weak_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT OneofOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.OneofOptions) */ {
- public:
- inline OneofOptions() : OneofOptions(nullptr) {}
- ~OneofOptions() override;
- explicit PROTOBUF_CONSTEXPR OneofOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- OneofOptions(const OneofOptions& from);
- OneofOptions(OneofOptions&& from) noexcept
- : OneofOptions() {
- *this = ::std::move(from);
- }
-
- inline OneofOptions& operator=(const OneofOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline OneofOptions& operator=(OneofOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const OneofOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const OneofOptions* internal_default_instance() {
- return reinterpret_cast<const OneofOptions*>(
- &_OneofOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 16;
-
- friend void swap(OneofOptions& a, OneofOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(OneofOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(OneofOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- OneofOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<OneofOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const OneofOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const OneofOptions& from) {
- OneofOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(OneofOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.OneofOptions";
- }
- protected:
- explicit OneofOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- OneofOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.OneofOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumOptions) */ {
- public:
- inline EnumOptions() : EnumOptions(nullptr) {}
- ~EnumOptions() override;
- explicit PROTOBUF_CONSTEXPR EnumOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumOptions(const EnumOptions& from);
- EnumOptions(EnumOptions&& from) noexcept
- : EnumOptions() {
- *this = ::std::move(from);
- }
-
- inline EnumOptions& operator=(const EnumOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumOptions& operator=(EnumOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumOptions* internal_default_instance() {
- return reinterpret_cast<const EnumOptions*>(
- &_EnumOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 17;
-
- friend void swap(EnumOptions& a, EnumOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumOptions& from) {
- EnumOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumOptions";
- }
- protected:
- explicit EnumOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kAllowAliasFieldNumber = 2,
- kDeprecatedFieldNumber = 3,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional bool allow_alias = 2;
- bool has_allow_alias() const;
- private:
- bool _internal_has_allow_alias() const;
- public:
- void clear_allow_alias();
- bool allow_alias() const;
- void set_allow_alias(bool value);
- private:
- bool _internal_allow_alias() const;
- void _internal_set_allow_alias(bool value);
- public:
-
- // optional bool deprecated = 3 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- bool allow_alias_;
- bool deprecated_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumValueOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumValueOptions) */ {
- public:
- inline EnumValueOptions() : EnumValueOptions(nullptr) {}
- ~EnumValueOptions() override;
- explicit PROTOBUF_CONSTEXPR EnumValueOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumValueOptions(const EnumValueOptions& from);
- EnumValueOptions(EnumValueOptions&& from) noexcept
- : EnumValueOptions() {
- *this = ::std::move(from);
- }
-
- inline EnumValueOptions& operator=(const EnumValueOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumValueOptions& operator=(EnumValueOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumValueOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumValueOptions* internal_default_instance() {
- return reinterpret_cast<const EnumValueOptions*>(
- &_EnumValueOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 18;
-
- friend void swap(EnumValueOptions& a, EnumValueOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumValueOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumValueOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumValueOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumValueOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumValueOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumValueOptions& from) {
- EnumValueOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumValueOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumValueOptions";
- }
- protected:
- explicit EnumValueOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kDeprecatedFieldNumber = 1,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional bool deprecated = 1 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- EnumValueOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- bool deprecated_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT ServiceOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.ServiceOptions) */ {
- public:
- inline ServiceOptions() : ServiceOptions(nullptr) {}
- ~ServiceOptions() override;
- explicit PROTOBUF_CONSTEXPR ServiceOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- ServiceOptions(const ServiceOptions& from);
- ServiceOptions(ServiceOptions&& from) noexcept
- : ServiceOptions() {
- *this = ::std::move(from);
- }
-
- inline ServiceOptions& operator=(const ServiceOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline ServiceOptions& operator=(ServiceOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const ServiceOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const ServiceOptions* internal_default_instance() {
- return reinterpret_cast<const ServiceOptions*>(
- &_ServiceOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 19;
-
- friend void swap(ServiceOptions& a, ServiceOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(ServiceOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(ServiceOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- ServiceOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<ServiceOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const ServiceOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const ServiceOptions& from) {
- ServiceOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(ServiceOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.ServiceOptions";
- }
- protected:
- explicit ServiceOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kDeprecatedFieldNumber = 33,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional bool deprecated = 33 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- ServiceOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- bool deprecated_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT MethodOptions final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.MethodOptions) */ {
- public:
- inline MethodOptions() : MethodOptions(nullptr) {}
- ~MethodOptions() override;
- explicit PROTOBUF_CONSTEXPR MethodOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- MethodOptions(const MethodOptions& from);
- MethodOptions(MethodOptions&& from) noexcept
- : MethodOptions() {
- *this = ::std::move(from);
- }
-
- inline MethodOptions& operator=(const MethodOptions& from) {
- CopyFrom(from);
- return *this;
- }
- inline MethodOptions& operator=(MethodOptions&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const MethodOptions& default_instance() {
- return *internal_default_instance();
- }
- static inline const MethodOptions* internal_default_instance() {
- return reinterpret_cast<const MethodOptions*>(
- &_MethodOptions_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 20;
-
- friend void swap(MethodOptions& a, MethodOptions& b) {
- a.Swap(&b);
- }
- inline void Swap(MethodOptions* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(MethodOptions* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- MethodOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<MethodOptions>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const MethodOptions& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const MethodOptions& from) {
- MethodOptions::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(MethodOptions* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.MethodOptions";
- }
- protected:
- explicit MethodOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef MethodOptions_IdempotencyLevel IdempotencyLevel;
- static constexpr IdempotencyLevel IDEMPOTENCY_UNKNOWN =
- MethodOptions_IdempotencyLevel_IDEMPOTENCY_UNKNOWN;
- static constexpr IdempotencyLevel NO_SIDE_EFFECTS =
- MethodOptions_IdempotencyLevel_NO_SIDE_EFFECTS;
- static constexpr IdempotencyLevel IDEMPOTENT =
- MethodOptions_IdempotencyLevel_IDEMPOTENT;
- static inline bool IdempotencyLevel_IsValid(int value) {
- return MethodOptions_IdempotencyLevel_IsValid(value);
- }
- static constexpr IdempotencyLevel IdempotencyLevel_MIN =
- MethodOptions_IdempotencyLevel_IdempotencyLevel_MIN;
- static constexpr IdempotencyLevel IdempotencyLevel_MAX =
- MethodOptions_IdempotencyLevel_IdempotencyLevel_MAX;
- static constexpr int IdempotencyLevel_ARRAYSIZE =
- MethodOptions_IdempotencyLevel_IdempotencyLevel_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- IdempotencyLevel_descriptor() {
- return MethodOptions_IdempotencyLevel_descriptor();
- }
- template<typename T>
- static inline const std::string& IdempotencyLevel_Name(T enum_t_value) {
- static_assert(::std::is_same<T, IdempotencyLevel>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function IdempotencyLevel_Name.");
- return MethodOptions_IdempotencyLevel_Name(enum_t_value);
- }
- static inline bool IdempotencyLevel_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- IdempotencyLevel* value) {
- return MethodOptions_IdempotencyLevel_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kUninterpretedOptionFieldNumber = 999,
- kDeprecatedFieldNumber = 33,
- kIdempotencyLevelFieldNumber = 34,
- };
- // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
- int uninterpreted_option_size() const;
- private:
- int _internal_uninterpreted_option_size() const;
- public:
- void clear_uninterpreted_option();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* mutable_uninterpreted_option(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
- mutable_uninterpreted_option();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& _internal_uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _internal_add_uninterpreted_option();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& uninterpreted_option(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* add_uninterpreted_option();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
- uninterpreted_option() const;
-
- // optional bool deprecated = 33 [default = false];
- bool has_deprecated() const;
- private:
- bool _internal_has_deprecated() const;
- public:
- void clear_deprecated();
- bool deprecated() const;
- void set_deprecated(bool value);
- private:
- bool _internal_deprecated() const;
- void _internal_set_deprecated(bool value);
- public:
-
- // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
- bool has_idempotency_level() const;
- private:
- bool _internal_has_idempotency_level() const;
- public:
- void clear_idempotency_level();
- ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel idempotency_level() const;
- void set_idempotency_level(::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel value);
- private:
- ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel _internal_idempotency_level() const;
- void _internal_set_idempotency_level(::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel value);
- public:
-
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline bool HasExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.Has(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void ClearExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- _impl_._extensions_.ClearExtension(id.number());
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline int ExtensionSize(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _impl_._extensions_.ExtensionSize(id.number());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_,
- id.default_value());
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Mutable(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::ConstType value) {
- _proto_TypeTraits::Set(id.number(), _field_type, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
- &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void UnsafeArenaSetAllocatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Singular::MutableType value) {
- _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
- value, &_impl_._extensions_);
-
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- PROTOBUF_NODISCARD inline
- typename _proto_TypeTraits::Singular::MutableType
- ReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::Release(id.number(), _field_type,
- &_impl_._extensions_);
- }
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Singular::MutableType
- UnsafeArenaReleaseExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
- &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) const {
-
- return _proto_TypeTraits::Get(id.number(), _impl_._extensions_, index);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index) {
-
- return _proto_TypeTraits::Mutable(id.number(), index, &_impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void SetExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- int index, typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Set(id.number(), index, value, &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
- typename _proto_TypeTraits::Repeated::MutableType to_add =
- _proto_TypeTraits::Add(id.number(), _field_type, &_impl_._extensions_);
-
- return to_add;
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline void AddExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id,
- typename _proto_TypeTraits::Repeated::ConstType value) {
- _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
- &_impl_._extensions_);
-
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
- GetRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) const {
-
- return _proto_TypeTraits::GetRepeated(id.number(), _impl_._extensions_);
- }
-
- template <typename _proto_TypeTraits,
- ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
- bool _is_packed>
- inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
- MutableRepeatedExtension(
- const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
- MethodOptions, _proto_TypeTraits, _field_type, _is_packed>& id) {
-
- return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
- _is_packed, &_impl_._extensions_);
- }
-
- // @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;
-
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption > uninterpreted_option_;
- bool deprecated_;
- int idempotency_level_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT UninterpretedOption_NamePart final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.UninterpretedOption.NamePart) */ {
- public:
- inline UninterpretedOption_NamePart() : UninterpretedOption_NamePart(nullptr) {}
- ~UninterpretedOption_NamePart() override;
- explicit PROTOBUF_CONSTEXPR UninterpretedOption_NamePart(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- UninterpretedOption_NamePart(const UninterpretedOption_NamePart& from);
- UninterpretedOption_NamePart(UninterpretedOption_NamePart&& from) noexcept
- : UninterpretedOption_NamePart() {
- *this = ::std::move(from);
- }
-
- inline UninterpretedOption_NamePart& operator=(const UninterpretedOption_NamePart& from) {
- CopyFrom(from);
- return *this;
- }
- inline UninterpretedOption_NamePart& operator=(UninterpretedOption_NamePart&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const UninterpretedOption_NamePart& default_instance() {
- return *internal_default_instance();
- }
- static inline const UninterpretedOption_NamePart* internal_default_instance() {
- return reinterpret_cast<const UninterpretedOption_NamePart*>(
- &_UninterpretedOption_NamePart_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 21;
-
- friend void swap(UninterpretedOption_NamePart& a, UninterpretedOption_NamePart& b) {
- a.Swap(&b);
- }
- inline void Swap(UninterpretedOption_NamePart* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(UninterpretedOption_NamePart* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- UninterpretedOption_NamePart* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<UninterpretedOption_NamePart>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const UninterpretedOption_NamePart& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const UninterpretedOption_NamePart& from) {
- UninterpretedOption_NamePart::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(UninterpretedOption_NamePart* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.UninterpretedOption.NamePart";
- }
- protected:
- explicit UninterpretedOption_NamePart(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNamePartFieldNumber = 1,
- kIsExtensionFieldNumber = 2,
- };
- // required string name_part = 1;
- bool has_name_part() const;
- private:
- bool _internal_has_name_part() const;
- public:
- void clear_name_part();
- const std::string& name_part() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name_part(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name_part();
- PROTOBUF_NODISCARD std::string* release_name_part();
- void set_allocated_name_part(std::string* name_part);
- private:
- const std::string& _internal_name_part() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name_part(const std::string& value);
- std::string* _internal_mutable_name_part();
- public:
-
- // required bool is_extension = 2;
- bool has_is_extension() const;
- private:
- bool _internal_has_is_extension() const;
- public:
- void clear_is_extension();
- bool is_extension() const;
- void set_is_extension(bool value);
- private:
- bool _internal_is_extension() const;
- void _internal_set_is_extension(bool value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart)
- private:
- class _Internal;
-
- // helper for ByteSizeLong()
- size_t RequiredFieldsByteSizeFallback() const;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_part_;
- bool is_extension_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT UninterpretedOption final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.UninterpretedOption) */ {
- public:
- inline UninterpretedOption() : UninterpretedOption(nullptr) {}
- ~UninterpretedOption() override;
- explicit PROTOBUF_CONSTEXPR UninterpretedOption(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- UninterpretedOption(const UninterpretedOption& from);
- UninterpretedOption(UninterpretedOption&& from) noexcept
- : UninterpretedOption() {
- *this = ::std::move(from);
- }
-
- inline UninterpretedOption& operator=(const UninterpretedOption& from) {
- CopyFrom(from);
- return *this;
- }
- inline UninterpretedOption& operator=(UninterpretedOption&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const UninterpretedOption& default_instance() {
- return *internal_default_instance();
- }
- static inline const UninterpretedOption* internal_default_instance() {
- return reinterpret_cast<const UninterpretedOption*>(
- &_UninterpretedOption_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 22;
-
- friend void swap(UninterpretedOption& a, UninterpretedOption& b) {
- a.Swap(&b);
- }
- inline void Swap(UninterpretedOption* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(UninterpretedOption* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- UninterpretedOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<UninterpretedOption>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const UninterpretedOption& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const UninterpretedOption& from) {
- UninterpretedOption::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(UninterpretedOption* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.UninterpretedOption";
- }
- protected:
- explicit UninterpretedOption(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef UninterpretedOption_NamePart NamePart;
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 2,
- kIdentifierValueFieldNumber = 3,
- kStringValueFieldNumber = 7,
- kAggregateValueFieldNumber = 8,
- kPositiveIntValueFieldNumber = 4,
- kNegativeIntValueFieldNumber = 5,
- kDoubleValueFieldNumber = 6,
- };
- // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
- int name_size() const;
- private:
- int _internal_name_size() const;
- public:
- void clear_name();
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* mutable_name(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart >*
- mutable_name();
- private:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart& _internal_name(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* _internal_add_name();
- public:
- const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart& name(int index) const;
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* add_name();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart >&
- name() const;
-
- // optional string identifier_value = 3;
- bool has_identifier_value() const;
- private:
- bool _internal_has_identifier_value() const;
- public:
- void clear_identifier_value();
- const std::string& identifier_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_identifier_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_identifier_value();
- PROTOBUF_NODISCARD std::string* release_identifier_value();
- void set_allocated_identifier_value(std::string* identifier_value);
- private:
- const std::string& _internal_identifier_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_identifier_value(const std::string& value);
- std::string* _internal_mutable_identifier_value();
- public:
-
- // optional bytes string_value = 7;
- bool has_string_value() const;
- private:
- bool _internal_has_string_value() const;
- public:
- void clear_string_value();
- const std::string& string_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_string_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_string_value();
- PROTOBUF_NODISCARD std::string* release_string_value();
- void set_allocated_string_value(std::string* string_value);
- private:
- const std::string& _internal_string_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_string_value(const std::string& value);
- std::string* _internal_mutable_string_value();
- public:
-
- // optional string aggregate_value = 8;
- bool has_aggregate_value() const;
- private:
- bool _internal_has_aggregate_value() const;
- public:
- void clear_aggregate_value();
- const std::string& aggregate_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_aggregate_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_aggregate_value();
- PROTOBUF_NODISCARD std::string* release_aggregate_value();
- void set_allocated_aggregate_value(std::string* aggregate_value);
- private:
- const std::string& _internal_aggregate_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_aggregate_value(const std::string& value);
- std::string* _internal_mutable_aggregate_value();
- public:
-
- // optional uint64 positive_int_value = 4;
- bool has_positive_int_value() const;
- private:
- bool _internal_has_positive_int_value() const;
- public:
- void clear_positive_int_value();
- uint64_t positive_int_value() const;
- void set_positive_int_value(uint64_t value);
- private:
- uint64_t _internal_positive_int_value() const;
- void _internal_set_positive_int_value(uint64_t value);
- public:
-
- // optional int64 negative_int_value = 5;
- bool has_negative_int_value() const;
- private:
- bool _internal_has_negative_int_value() const;
- public:
- void clear_negative_int_value();
- int64_t negative_int_value() const;
- void set_negative_int_value(int64_t value);
- private:
- int64_t _internal_negative_int_value() const;
- void _internal_set_negative_int_value(int64_t value);
- public:
-
- // optional double double_value = 6;
- bool has_double_value() const;
- private:
- bool _internal_has_double_value() const;
- public:
- void clear_double_value();
- double double_value() const;
- void set_double_value(double value);
- private:
- double _internal_double_value() const;
- void _internal_set_double_value(double value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart > name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identifier_value_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr string_value_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aggregate_value_;
- uint64_t positive_int_value_;
- int64_t negative_int_value_;
- double double_value_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT SourceCodeInfo_Location final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.SourceCodeInfo.Location) */ {
- public:
- inline SourceCodeInfo_Location() : SourceCodeInfo_Location(nullptr) {}
- ~SourceCodeInfo_Location() override;
- explicit PROTOBUF_CONSTEXPR SourceCodeInfo_Location(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- SourceCodeInfo_Location(const SourceCodeInfo_Location& from);
- SourceCodeInfo_Location(SourceCodeInfo_Location&& from) noexcept
- : SourceCodeInfo_Location() {
- *this = ::std::move(from);
- }
-
- inline SourceCodeInfo_Location& operator=(const SourceCodeInfo_Location& from) {
- CopyFrom(from);
- return *this;
- }
- inline SourceCodeInfo_Location& operator=(SourceCodeInfo_Location&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const SourceCodeInfo_Location& default_instance() {
- return *internal_default_instance();
- }
- static inline const SourceCodeInfo_Location* internal_default_instance() {
- return reinterpret_cast<const SourceCodeInfo_Location*>(
- &_SourceCodeInfo_Location_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 23;
-
- friend void swap(SourceCodeInfo_Location& a, SourceCodeInfo_Location& b) {
- a.Swap(&b);
- }
- inline void Swap(SourceCodeInfo_Location* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(SourceCodeInfo_Location* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- SourceCodeInfo_Location* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<SourceCodeInfo_Location>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const SourceCodeInfo_Location& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const SourceCodeInfo_Location& from) {
- SourceCodeInfo_Location::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(SourceCodeInfo_Location* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.SourceCodeInfo.Location";
- }
- protected:
- explicit SourceCodeInfo_Location(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kPathFieldNumber = 1,
- kSpanFieldNumber = 2,
- kLeadingDetachedCommentsFieldNumber = 6,
- kLeadingCommentsFieldNumber = 3,
- kTrailingCommentsFieldNumber = 4,
- };
- // repeated int32 path = 1 [packed = true];
- int path_size() const;
- private:
- int _internal_path_size() const;
- public:
- void clear_path();
- private:
- int32_t _internal_path(int index) const;
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- _internal_path() const;
- void _internal_add_path(int32_t value);
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- _internal_mutable_path();
- public:
- int32_t path(int index) const;
- void set_path(int index, int32_t value);
- void add_path(int32_t value);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- path() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- mutable_path();
-
- // repeated int32 span = 2 [packed = true];
- int span_size() const;
- private:
- int _internal_span_size() const;
- public:
- void clear_span();
- private:
- int32_t _internal_span(int index) const;
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- _internal_span() const;
- void _internal_add_span(int32_t value);
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- _internal_mutable_span();
- public:
- int32_t span(int index) const;
- void set_span(int index, int32_t value);
- void add_span(int32_t value);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- span() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- mutable_span();
-
- // repeated string leading_detached_comments = 6;
- int leading_detached_comments_size() const;
- private:
- int _internal_leading_detached_comments_size() const;
- public:
- void clear_leading_detached_comments();
- const std::string& leading_detached_comments(int index) const;
- std::string* mutable_leading_detached_comments(int index);
- void set_leading_detached_comments(int index, const std::string& value);
- void set_leading_detached_comments(int index, std::string&& value);
- void set_leading_detached_comments(int index, const char* value);
- void set_leading_detached_comments(int index, const char* value, size_t size);
- std::string* add_leading_detached_comments();
- void add_leading_detached_comments(const std::string& value);
- void add_leading_detached_comments(std::string&& value);
- void add_leading_detached_comments(const char* value);
- void add_leading_detached_comments(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& leading_detached_comments() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_leading_detached_comments();
- private:
- const std::string& _internal_leading_detached_comments(int index) const;
- std::string* _internal_add_leading_detached_comments();
- public:
-
- // optional string leading_comments = 3;
- bool has_leading_comments() const;
- private:
- bool _internal_has_leading_comments() const;
- public:
- void clear_leading_comments();
- const std::string& leading_comments() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_leading_comments(ArgT0&& arg0, ArgT... args);
- std::string* mutable_leading_comments();
- PROTOBUF_NODISCARD std::string* release_leading_comments();
- void set_allocated_leading_comments(std::string* leading_comments);
- private:
- const std::string& _internal_leading_comments() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_leading_comments(const std::string& value);
- std::string* _internal_mutable_leading_comments();
- public:
-
- // optional string trailing_comments = 4;
- bool has_trailing_comments() const;
- private:
- bool _internal_has_trailing_comments() const;
- public:
- void clear_trailing_comments();
- const std::string& trailing_comments() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_trailing_comments(ArgT0&& arg0, ArgT... args);
- std::string* mutable_trailing_comments();
- PROTOBUF_NODISCARD std::string* release_trailing_comments();
- void set_allocated_trailing_comments(std::string* trailing_comments);
- private:
- const std::string& _internal_trailing_comments() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_trailing_comments(const std::string& value);
- std::string* _internal_mutable_trailing_comments();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo.Location)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > path_;
- mutable std::atomic<int> _path_cached_byte_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > span_;
- mutable std::atomic<int> _span_cached_byte_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> leading_detached_comments_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr leading_comments_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trailing_comments_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT SourceCodeInfo final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.SourceCodeInfo) */ {
- public:
- inline SourceCodeInfo() : SourceCodeInfo(nullptr) {}
- ~SourceCodeInfo() override;
- explicit PROTOBUF_CONSTEXPR SourceCodeInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- SourceCodeInfo(const SourceCodeInfo& from);
- SourceCodeInfo(SourceCodeInfo&& from) noexcept
- : SourceCodeInfo() {
- *this = ::std::move(from);
- }
-
- inline SourceCodeInfo& operator=(const SourceCodeInfo& from) {
- CopyFrom(from);
- return *this;
- }
- inline SourceCodeInfo& operator=(SourceCodeInfo&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const SourceCodeInfo& default_instance() {
- return *internal_default_instance();
- }
- static inline const SourceCodeInfo* internal_default_instance() {
- return reinterpret_cast<const SourceCodeInfo*>(
- &_SourceCodeInfo_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 24;
-
- friend void swap(SourceCodeInfo& a, SourceCodeInfo& b) {
- a.Swap(&b);
- }
- inline void Swap(SourceCodeInfo* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(SourceCodeInfo* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- SourceCodeInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<SourceCodeInfo>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const SourceCodeInfo& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const SourceCodeInfo& from) {
- SourceCodeInfo::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(SourceCodeInfo* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.SourceCodeInfo";
- }
- protected:
- explicit SourceCodeInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef SourceCodeInfo_Location Location;
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kLocationFieldNumber = 1,
- };
- // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
- int location_size() const;
- private:
- int _internal_location_size() const;
- public:
- void clear_location();
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* mutable_location(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location >*
- mutable_location();
- private:
- const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location& _internal_location(int index) const;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* _internal_add_location();
- public:
- const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location& location(int index) const;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* add_location();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location >&
- location() const;
-
- // @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location > location_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT GeneratedCodeInfo_Annotation final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.GeneratedCodeInfo.Annotation) */ {
- public:
- inline GeneratedCodeInfo_Annotation() : GeneratedCodeInfo_Annotation(nullptr) {}
- ~GeneratedCodeInfo_Annotation() override;
- explicit PROTOBUF_CONSTEXPR GeneratedCodeInfo_Annotation(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- GeneratedCodeInfo_Annotation(const GeneratedCodeInfo_Annotation& from);
- GeneratedCodeInfo_Annotation(GeneratedCodeInfo_Annotation&& from) noexcept
- : GeneratedCodeInfo_Annotation() {
- *this = ::std::move(from);
- }
-
- inline GeneratedCodeInfo_Annotation& operator=(const GeneratedCodeInfo_Annotation& from) {
- CopyFrom(from);
- return *this;
- }
- inline GeneratedCodeInfo_Annotation& operator=(GeneratedCodeInfo_Annotation&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const GeneratedCodeInfo_Annotation& default_instance() {
- return *internal_default_instance();
- }
- static inline const GeneratedCodeInfo_Annotation* internal_default_instance() {
- return reinterpret_cast<const GeneratedCodeInfo_Annotation*>(
- &_GeneratedCodeInfo_Annotation_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 25;
-
- friend void swap(GeneratedCodeInfo_Annotation& a, GeneratedCodeInfo_Annotation& b) {
- a.Swap(&b);
- }
- inline void Swap(GeneratedCodeInfo_Annotation* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(GeneratedCodeInfo_Annotation* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- GeneratedCodeInfo_Annotation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<GeneratedCodeInfo_Annotation>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const GeneratedCodeInfo_Annotation& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const GeneratedCodeInfo_Annotation& from) {
- GeneratedCodeInfo_Annotation::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(GeneratedCodeInfo_Annotation* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.GeneratedCodeInfo.Annotation";
- }
- protected:
- explicit GeneratedCodeInfo_Annotation(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kPathFieldNumber = 1,
- kSourceFileFieldNumber = 2,
- kBeginFieldNumber = 3,
- kEndFieldNumber = 4,
- };
- // repeated int32 path = 1 [packed = true];
- int path_size() const;
- private:
- int _internal_path_size() const;
- public:
- void clear_path();
- private:
- int32_t _internal_path(int index) const;
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- _internal_path() const;
- void _internal_add_path(int32_t value);
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- _internal_mutable_path();
- public:
- int32_t path(int index) const;
- void set_path(int index, int32_t value);
- void add_path(int32_t value);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
- path() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
- mutable_path();
-
- // optional string source_file = 2;
- bool has_source_file() const;
- private:
- bool _internal_has_source_file() const;
- public:
- void clear_source_file();
- const std::string& source_file() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_source_file(ArgT0&& arg0, ArgT... args);
- std::string* mutable_source_file();
- PROTOBUF_NODISCARD std::string* release_source_file();
- void set_allocated_source_file(std::string* source_file);
- private:
- const std::string& _internal_source_file() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_source_file(const std::string& value);
- std::string* _internal_mutable_source_file();
- public:
-
- // optional int32 begin = 3;
- bool has_begin() const;
- private:
- bool _internal_has_begin() const;
- public:
- void clear_begin();
- int32_t begin() const;
- void set_begin(int32_t value);
- private:
- int32_t _internal_begin() const;
- void _internal_set_begin(int32_t value);
- public:
-
- // optional int32 end = 4;
- bool has_end() const;
- private:
- bool _internal_has_end() const;
- public:
- void clear_end();
- int32_t end() const;
- void set_end(int32_t value);
- private:
- int32_t _internal_end() const;
- void _internal_set_end(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.GeneratedCodeInfo.Annotation)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > path_;
- mutable std::atomic<int> _path_cached_byte_size_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr source_file_;
- int32_t begin_;
- int32_t end_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT GeneratedCodeInfo final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.GeneratedCodeInfo) */ {
- public:
- inline GeneratedCodeInfo() : GeneratedCodeInfo(nullptr) {}
- ~GeneratedCodeInfo() override;
- explicit PROTOBUF_CONSTEXPR GeneratedCodeInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- GeneratedCodeInfo(const GeneratedCodeInfo& from);
- GeneratedCodeInfo(GeneratedCodeInfo&& from) noexcept
- : GeneratedCodeInfo() {
- *this = ::std::move(from);
- }
-
- inline GeneratedCodeInfo& operator=(const GeneratedCodeInfo& from) {
- CopyFrom(from);
- return *this;
- }
- inline GeneratedCodeInfo& operator=(GeneratedCodeInfo&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
- return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
- }
- inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
- return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const GeneratedCodeInfo& default_instance() {
- return *internal_default_instance();
- }
- static inline const GeneratedCodeInfo* internal_default_instance() {
- return reinterpret_cast<const GeneratedCodeInfo*>(
- &_GeneratedCodeInfo_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 26;
-
- friend void swap(GeneratedCodeInfo& a, GeneratedCodeInfo& b) {
- a.Swap(&b);
- }
- inline void Swap(GeneratedCodeInfo* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(GeneratedCodeInfo* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- GeneratedCodeInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<GeneratedCodeInfo>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const GeneratedCodeInfo& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const GeneratedCodeInfo& from) {
- GeneratedCodeInfo::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(GeneratedCodeInfo* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.GeneratedCodeInfo";
- }
- protected:
- explicit GeneratedCodeInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef GeneratedCodeInfo_Annotation Annotation;
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kAnnotationFieldNumber = 1,
- };
- // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
- int annotation_size() const;
- private:
- int _internal_annotation_size() const;
- public:
- void clear_annotation();
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* mutable_annotation(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation >*
- mutable_annotation();
- private:
- const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation& _internal_annotation(int index) const;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* _internal_add_annotation();
- public:
- const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation& annotation(int index) const;
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* add_annotation();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation >&
- annotation() const;
-
- // @@protoc_insertion_point(class_scope:google.protobuf.GeneratedCodeInfo)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation > annotation_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fdescriptor_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// FileDescriptorSet
-
-// repeated .google.protobuf.FileDescriptorProto file = 1;
-inline int FileDescriptorSet::_internal_file_size() const {
- return _impl_.file_.size();
-}
-inline int FileDescriptorSet::file_size() const {
- return _internal_file_size();
-}
-inline void FileDescriptorSet::clear_file() {
- _impl_.file_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* FileDescriptorSet::mutable_file(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorSet.file)
- return _impl_.file_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >*
-FileDescriptorSet::mutable_file() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorSet.file)
- return &_impl_.file_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& FileDescriptorSet::_internal_file(int index) const {
- return _impl_.file_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto& FileDescriptorSet::file(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorSet.file)
- return _internal_file(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* FileDescriptorSet::_internal_add_file() {
- return _impl_.file_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* FileDescriptorSet::add_file() {
- ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto* _add = _internal_add_file();
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorSet.file)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FileDescriptorProto >&
-FileDescriptorSet::file() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorSet.file)
- return _impl_.file_;
-}
-
-// -------------------------------------------------------------------
-
-// FileDescriptorProto
-
-// optional string name = 1;
-inline bool FileDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool FileDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void FileDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& FileDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.name)
-}
-inline std::string* FileDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.name)
- return _s;
-}
-inline const std::string& FileDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void FileDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.name)
-}
-
-// optional string package = 2;
-inline bool FileDescriptorProto::_internal_has_package() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool FileDescriptorProto::has_package() const {
- return _internal_has_package();
-}
-inline void FileDescriptorProto::clear_package() {
- _impl_.package_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& FileDescriptorProto::package() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.package)
- return _internal_package();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileDescriptorProto::set_package(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.package_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.package)
-}
-inline std::string* FileDescriptorProto::mutable_package() {
- std::string* _s = _internal_mutable_package();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.package)
- return _s;
-}
-inline const std::string& FileDescriptorProto::_internal_package() const {
- return _impl_.package_.Get();
-}
-inline void FileDescriptorProto::_internal_set_package(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.package_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::_internal_mutable_package() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.package_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::release_package() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.package)
- if (!_internal_has_package()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.package_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.package_.IsDefault()) {
- _impl_.package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileDescriptorProto::set_allocated_package(std::string* package) {
- if (package != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.package_.SetAllocated(package, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.package_.IsDefault()) {
- _impl_.package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.package)
-}
-
-// repeated string dependency = 3;
-inline int FileDescriptorProto::_internal_dependency_size() const {
- return _impl_.dependency_.size();
-}
-inline int FileDescriptorProto::dependency_size() const {
- return _internal_dependency_size();
-}
-inline void FileDescriptorProto::clear_dependency() {
- _impl_.dependency_.Clear();
-}
-inline std::string* FileDescriptorProto::add_dependency() {
- std::string* _s = _internal_add_dependency();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.FileDescriptorProto.dependency)
- return _s;
-}
-inline const std::string& FileDescriptorProto::_internal_dependency(int index) const {
- return _impl_.dependency_.Get(index);
-}
-inline const std::string& FileDescriptorProto::dependency(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.dependency)
- return _internal_dependency(index);
-}
-inline std::string* FileDescriptorProto::mutable_dependency(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.dependency)
- return _impl_.dependency_.Mutable(index);
-}
-inline void FileDescriptorProto::set_dependency(int index, const std::string& value) {
- _impl_.dependency_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::set_dependency(int index, std::string&& value) {
- _impl_.dependency_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::set_dependency(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.dependency_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::set_dependency(int index, const char* value, size_t size) {
- _impl_.dependency_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.FileDescriptorProto.dependency)
-}
-inline std::string* FileDescriptorProto::_internal_add_dependency() {
- return _impl_.dependency_.Add();
-}
-inline void FileDescriptorProto::add_dependency(const std::string& value) {
- _impl_.dependency_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::add_dependency(std::string&& value) {
- _impl_.dependency_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::add_dependency(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.dependency_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.FileDescriptorProto.dependency)
-}
-inline void FileDescriptorProto::add_dependency(const char* value, size_t size) {
- _impl_.dependency_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.FileDescriptorProto.dependency)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-FileDescriptorProto::dependency() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.dependency)
- return _impl_.dependency_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-FileDescriptorProto::mutable_dependency() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.dependency)
- return &_impl_.dependency_;
-}
-
-// repeated int32 public_dependency = 10;
-inline int FileDescriptorProto::_internal_public_dependency_size() const {
- return _impl_.public_dependency_.size();
-}
-inline int FileDescriptorProto::public_dependency_size() const {
- return _internal_public_dependency_size();
-}
-inline void FileDescriptorProto::clear_public_dependency() {
- _impl_.public_dependency_.Clear();
-}
-inline int32_t FileDescriptorProto::_internal_public_dependency(int index) const {
- return _impl_.public_dependency_.Get(index);
-}
-inline int32_t FileDescriptorProto::public_dependency(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.public_dependency)
- return _internal_public_dependency(index);
-}
-inline void FileDescriptorProto::set_public_dependency(int index, int32_t value) {
- _impl_.public_dependency_.Set(index, value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.public_dependency)
-}
-inline void FileDescriptorProto::_internal_add_public_dependency(int32_t value) {
- _impl_.public_dependency_.Add(value);
-}
-inline void FileDescriptorProto::add_public_dependency(int32_t value) {
- _internal_add_public_dependency(value);
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.public_dependency)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-FileDescriptorProto::_internal_public_dependency() const {
- return _impl_.public_dependency_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-FileDescriptorProto::public_dependency() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.public_dependency)
- return _internal_public_dependency();
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-FileDescriptorProto::_internal_mutable_public_dependency() {
- return &_impl_.public_dependency_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-FileDescriptorProto::mutable_public_dependency() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.public_dependency)
- return _internal_mutable_public_dependency();
-}
-
-// repeated int32 weak_dependency = 11;
-inline int FileDescriptorProto::_internal_weak_dependency_size() const {
- return _impl_.weak_dependency_.size();
-}
-inline int FileDescriptorProto::weak_dependency_size() const {
- return _internal_weak_dependency_size();
-}
-inline void FileDescriptorProto::clear_weak_dependency() {
- _impl_.weak_dependency_.Clear();
-}
-inline int32_t FileDescriptorProto::_internal_weak_dependency(int index) const {
- return _impl_.weak_dependency_.Get(index);
-}
-inline int32_t FileDescriptorProto::weak_dependency(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.weak_dependency)
- return _internal_weak_dependency(index);
-}
-inline void FileDescriptorProto::set_weak_dependency(int index, int32_t value) {
- _impl_.weak_dependency_.Set(index, value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.weak_dependency)
-}
-inline void FileDescriptorProto::_internal_add_weak_dependency(int32_t value) {
- _impl_.weak_dependency_.Add(value);
-}
-inline void FileDescriptorProto::add_weak_dependency(int32_t value) {
- _internal_add_weak_dependency(value);
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.weak_dependency)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-FileDescriptorProto::_internal_weak_dependency() const {
- return _impl_.weak_dependency_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-FileDescriptorProto::weak_dependency() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.weak_dependency)
- return _internal_weak_dependency();
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-FileDescriptorProto::_internal_mutable_weak_dependency() {
- return &_impl_.weak_dependency_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-FileDescriptorProto::mutable_weak_dependency() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.weak_dependency)
- return _internal_mutable_weak_dependency();
-}
-
-// repeated .google.protobuf.DescriptorProto message_type = 4;
-inline int FileDescriptorProto::_internal_message_type_size() const {
- return _impl_.message_type_.size();
-}
-inline int FileDescriptorProto::message_type_size() const {
- return _internal_message_type_size();
-}
-inline void FileDescriptorProto::clear_message_type() {
- _impl_.message_type_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* FileDescriptorProto::mutable_message_type(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.message_type)
- return _impl_.message_type_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >*
-FileDescriptorProto::mutable_message_type() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.message_type)
- return &_impl_.message_type_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& FileDescriptorProto::_internal_message_type(int index) const {
- return _impl_.message_type_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& FileDescriptorProto::message_type(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.message_type)
- return _internal_message_type(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* FileDescriptorProto::_internal_add_message_type() {
- return _impl_.message_type_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* FileDescriptorProto::add_message_type() {
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* _add = _internal_add_message_type();
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.message_type)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >&
-FileDescriptorProto::message_type() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.message_type)
- return _impl_.message_type_;
-}
-
-// repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
-inline int FileDescriptorProto::_internal_enum_type_size() const {
- return _impl_.enum_type_.size();
-}
-inline int FileDescriptorProto::enum_type_size() const {
- return _internal_enum_type_size();
-}
-inline void FileDescriptorProto::clear_enum_type() {
- _impl_.enum_type_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* FileDescriptorProto::mutable_enum_type(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.enum_type)
- return _impl_.enum_type_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >*
-FileDescriptorProto::mutable_enum_type() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.enum_type)
- return &_impl_.enum_type_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& FileDescriptorProto::_internal_enum_type(int index) const {
- return _impl_.enum_type_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& FileDescriptorProto::enum_type(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.enum_type)
- return _internal_enum_type(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* FileDescriptorProto::_internal_add_enum_type() {
- return _impl_.enum_type_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* FileDescriptorProto::add_enum_type() {
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* _add = _internal_add_enum_type();
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.enum_type)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >&
-FileDescriptorProto::enum_type() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.enum_type)
- return _impl_.enum_type_;
-}
-
-// repeated .google.protobuf.ServiceDescriptorProto service = 6;
-inline int FileDescriptorProto::_internal_service_size() const {
- return _impl_.service_.size();
-}
-inline int FileDescriptorProto::service_size() const {
- return _internal_service_size();
-}
-inline void FileDescriptorProto::clear_service() {
- _impl_.service_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* FileDescriptorProto::mutable_service(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.service)
- return _impl_.service_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto >*
-FileDescriptorProto::mutable_service() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.service)
- return &_impl_.service_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto& FileDescriptorProto::_internal_service(int index) const {
- return _impl_.service_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto& FileDescriptorProto::service(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.service)
- return _internal_service(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* FileDescriptorProto::_internal_add_service() {
- return _impl_.service_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* FileDescriptorProto::add_service() {
- ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto* _add = _internal_add_service();
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.service)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::ServiceDescriptorProto >&
-FileDescriptorProto::service() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.service)
- return _impl_.service_;
-}
-
-// repeated .google.protobuf.FieldDescriptorProto extension = 7;
-inline int FileDescriptorProto::_internal_extension_size() const {
- return _impl_.extension_.size();
-}
-inline int FileDescriptorProto::extension_size() const {
- return _internal_extension_size();
-}
-inline void FileDescriptorProto::clear_extension() {
- _impl_.extension_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* FileDescriptorProto::mutable_extension(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.extension)
- return _impl_.extension_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
-FileDescriptorProto::mutable_extension() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileDescriptorProto.extension)
- return &_impl_.extension_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& FileDescriptorProto::_internal_extension(int index) const {
- return _impl_.extension_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& FileDescriptorProto::extension(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.extension)
- return _internal_extension(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* FileDescriptorProto::_internal_add_extension() {
- return _impl_.extension_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* FileDescriptorProto::add_extension() {
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _add = _internal_add_extension();
- // @@protoc_insertion_point(field_add:google.protobuf.FileDescriptorProto.extension)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
-FileDescriptorProto::extension() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.extension)
- return _impl_.extension_;
-}
-
-// optional .google.protobuf.FileOptions options = 8;
-inline bool FileDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool FileDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void FileDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileOptions& FileDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::FileOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::FileOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_FileOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FileOptions& FileDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.options)
- return _internal_options();
-}
-inline void FileDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::FileOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions* FileDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::FileOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions* FileDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::FileOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions* FileDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000008u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FileOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions* FileDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::FileOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.options)
- return _msg;
-}
-inline void FileDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::FileOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.options)
-}
-
-// optional .google.protobuf.SourceCodeInfo source_code_info = 9;
-inline bool FileDescriptorProto::_internal_has_source_code_info() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.source_code_info_ != nullptr);
- return value;
-}
-inline bool FileDescriptorProto::has_source_code_info() const {
- return _internal_has_source_code_info();
-}
-inline void FileDescriptorProto::clear_source_code_info() {
- if (_impl_.source_code_info_ != nullptr) _impl_.source_code_info_->Clear();
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo& FileDescriptorProto::_internal_source_code_info() const {
- const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* p = _impl_.source_code_info_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo&>(
- ::PROTOBUF_NAMESPACE_ID::_SourceCodeInfo_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo& FileDescriptorProto::source_code_info() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.source_code_info)
- return _internal_source_code_info();
-}
-inline void FileDescriptorProto::unsafe_arena_set_allocated_source_code_info(
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* source_code_info) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_code_info_);
- }
- _impl_.source_code_info_ = source_code_info;
- if (source_code_info) {
- _impl_._has_bits_[0] |= 0x00000010u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000010u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FileDescriptorProto.source_code_info)
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* FileDescriptorProto::release_source_code_info() {
- _impl_._has_bits_[0] &= ~0x00000010u;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* temp = _impl_.source_code_info_;
- _impl_.source_code_info_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* FileDescriptorProto::unsafe_arena_release_source_code_info() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.source_code_info)
- _impl_._has_bits_[0] &= ~0x00000010u;
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* temp = _impl_.source_code_info_;
- _impl_.source_code_info_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* FileDescriptorProto::_internal_mutable_source_code_info() {
- _impl_._has_bits_[0] |= 0x00000010u;
- if (_impl_.source_code_info_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceCodeInfo>(GetArenaForAllocation());
- _impl_.source_code_info_ = p;
- }
- return _impl_.source_code_info_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* FileDescriptorProto::mutable_source_code_info() {
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* _msg = _internal_mutable_source_code_info();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.source_code_info)
- return _msg;
-}
-inline void FileDescriptorProto::set_allocated_source_code_info(::PROTOBUF_NAMESPACE_ID::SourceCodeInfo* source_code_info) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.source_code_info_;
- }
- if (source_code_info) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(source_code_info);
- if (message_arena != submessage_arena) {
- source_code_info = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, source_code_info, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000010u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000010u;
- }
- _impl_.source_code_info_ = source_code_info;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.source_code_info)
-}
-
-// optional string syntax = 12;
-inline bool FileDescriptorProto::_internal_has_syntax() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool FileDescriptorProto::has_syntax() const {
- return _internal_has_syntax();
-}
-inline void FileDescriptorProto::clear_syntax() {
- _impl_.syntax_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& FileDescriptorProto::syntax() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.syntax)
- return _internal_syntax();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileDescriptorProto::set_syntax(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.syntax_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileDescriptorProto.syntax)
-}
-inline std::string* FileDescriptorProto::mutable_syntax() {
- std::string* _s = _internal_mutable_syntax();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileDescriptorProto.syntax)
- return _s;
-}
-inline const std::string& FileDescriptorProto::_internal_syntax() const {
- return _impl_.syntax_.Get();
-}
-inline void FileDescriptorProto::_internal_set_syntax(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.syntax_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::_internal_mutable_syntax() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.syntax_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileDescriptorProto::release_syntax() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileDescriptorProto.syntax)
- if (!_internal_has_syntax()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.syntax_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.syntax_.IsDefault()) {
- _impl_.syntax_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileDescriptorProto::set_allocated_syntax(std::string* syntax) {
- if (syntax != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.syntax_.SetAllocated(syntax, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.syntax_.IsDefault()) {
- _impl_.syntax_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileDescriptorProto.syntax)
-}
-
-// -------------------------------------------------------------------
-
-// DescriptorProto_ExtensionRange
-
-// optional int32 start = 1;
-inline bool DescriptorProto_ExtensionRange::_internal_has_start() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool DescriptorProto_ExtensionRange::has_start() const {
- return _internal_has_start();
-}
-inline void DescriptorProto_ExtensionRange::clear_start() {
- _impl_.start_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline int32_t DescriptorProto_ExtensionRange::_internal_start() const {
- return _impl_.start_;
-}
-inline int32_t DescriptorProto_ExtensionRange::start() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.start)
- return _internal_start();
-}
-inline void DescriptorProto_ExtensionRange::_internal_set_start(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.start_ = value;
-}
-inline void DescriptorProto_ExtensionRange::set_start(int32_t value) {
- _internal_set_start(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ExtensionRange.start)
-}
-
-// optional int32 end = 2;
-inline bool DescriptorProto_ExtensionRange::_internal_has_end() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool DescriptorProto_ExtensionRange::has_end() const {
- return _internal_has_end();
-}
-inline void DescriptorProto_ExtensionRange::clear_end() {
- _impl_.end_ = 0;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline int32_t DescriptorProto_ExtensionRange::_internal_end() const {
- return _impl_.end_;
-}
-inline int32_t DescriptorProto_ExtensionRange::end() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.end)
- return _internal_end();
-}
-inline void DescriptorProto_ExtensionRange::_internal_set_end(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.end_ = value;
-}
-inline void DescriptorProto_ExtensionRange::set_end(int32_t value) {
- _internal_set_end(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ExtensionRange.end)
-}
-
-// optional .google.protobuf.ExtensionRangeOptions options = 3;
-inline bool DescriptorProto_ExtensionRange::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool DescriptorProto_ExtensionRange::has_options() const {
- return _internal_has_options();
-}
-inline void DescriptorProto_ExtensionRange::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions& DescriptorProto_ExtensionRange::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_ExtensionRangeOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions& DescriptorProto_ExtensionRange::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ExtensionRange.options)
- return _internal_options();
-}
-inline void DescriptorProto_ExtensionRange::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.DescriptorProto.ExtensionRange.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* DescriptorProto_ExtensionRange::release_options() {
- _impl_._has_bits_[0] &= ~0x00000001u;
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* DescriptorProto_ExtensionRange::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.ExtensionRange.options)
- _impl_._has_bits_[0] &= ~0x00000001u;
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* DescriptorProto_ExtensionRange::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000001u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* DescriptorProto_ExtensionRange::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.ExtensionRange.options)
- return _msg;
-}
-inline void DescriptorProto_ExtensionRange::set_allocated_options(::PROTOBUF_NAMESPACE_ID::ExtensionRangeOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.ExtensionRange.options)
-}
-
-// -------------------------------------------------------------------
-
-// DescriptorProto_ReservedRange
-
-// optional int32 start = 1;
-inline bool DescriptorProto_ReservedRange::_internal_has_start() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool DescriptorProto_ReservedRange::has_start() const {
- return _internal_has_start();
-}
-inline void DescriptorProto_ReservedRange::clear_start() {
- _impl_.start_ = 0;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline int32_t DescriptorProto_ReservedRange::_internal_start() const {
- return _impl_.start_;
-}
-inline int32_t DescriptorProto_ReservedRange::start() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ReservedRange.start)
- return _internal_start();
-}
-inline void DescriptorProto_ReservedRange::_internal_set_start(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.start_ = value;
-}
-inline void DescriptorProto_ReservedRange::set_start(int32_t value) {
- _internal_set_start(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ReservedRange.start)
-}
-
-// optional int32 end = 2;
-inline bool DescriptorProto_ReservedRange::_internal_has_end() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool DescriptorProto_ReservedRange::has_end() const {
- return _internal_has_end();
-}
-inline void DescriptorProto_ReservedRange::clear_end() {
- _impl_.end_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline int32_t DescriptorProto_ReservedRange::_internal_end() const {
- return _impl_.end_;
-}
-inline int32_t DescriptorProto_ReservedRange::end() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.ReservedRange.end)
- return _internal_end();
-}
-inline void DescriptorProto_ReservedRange::_internal_set_end(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.end_ = value;
-}
-inline void DescriptorProto_ReservedRange::set_end(int32_t value) {
- _internal_set_end(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.ReservedRange.end)
-}
-
-// -------------------------------------------------------------------
-
-// DescriptorProto
-
-// optional string name = 1;
-inline bool DescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool DescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void DescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& DescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void DescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.name)
-}
-inline std::string* DescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.name)
- return _s;
-}
-inline const std::string& DescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void DescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* DescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* DescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void DescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.name)
-}
-
-// repeated .google.protobuf.FieldDescriptorProto field = 2;
-inline int DescriptorProto::_internal_field_size() const {
- return _impl_.field_.size();
-}
-inline int DescriptorProto::field_size() const {
- return _internal_field_size();
-}
-inline void DescriptorProto::clear_field() {
- _impl_.field_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::mutable_field(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.field)
- return _impl_.field_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
-DescriptorProto::mutable_field() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.field)
- return &_impl_.field_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& DescriptorProto::_internal_field(int index) const {
- return _impl_.field_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& DescriptorProto::field(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.field)
- return _internal_field(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::_internal_add_field() {
- return _impl_.field_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::add_field() {
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _add = _internal_add_field();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.field)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
-DescriptorProto::field() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.field)
- return _impl_.field_;
-}
-
-// repeated .google.protobuf.FieldDescriptorProto extension = 6;
-inline int DescriptorProto::_internal_extension_size() const {
- return _impl_.extension_.size();
-}
-inline int DescriptorProto::extension_size() const {
- return _internal_extension_size();
-}
-inline void DescriptorProto::clear_extension() {
- _impl_.extension_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::mutable_extension(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.extension)
- return _impl_.extension_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >*
-DescriptorProto::mutable_extension() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.extension)
- return &_impl_.extension_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& DescriptorProto::_internal_extension(int index) const {
- return _impl_.extension_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto& DescriptorProto::extension(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.extension)
- return _internal_extension(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::_internal_add_extension() {
- return _impl_.extension_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::add_extension() {
- ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* _add = _internal_add_extension();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.extension)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >&
-DescriptorProto::extension() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.extension)
- return _impl_.extension_;
-}
-
-// repeated .google.protobuf.DescriptorProto nested_type = 3;
-inline int DescriptorProto::_internal_nested_type_size() const {
- return _impl_.nested_type_.size();
-}
-inline int DescriptorProto::nested_type_size() const {
- return _internal_nested_type_size();
-}
-inline void DescriptorProto::clear_nested_type() {
- _impl_.nested_type_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* DescriptorProto::mutable_nested_type(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.nested_type)
- return _impl_.nested_type_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >*
-DescriptorProto::mutable_nested_type() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.nested_type)
- return &_impl_.nested_type_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& DescriptorProto::_internal_nested_type(int index) const {
- return _impl_.nested_type_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto& DescriptorProto::nested_type(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.nested_type)
- return _internal_nested_type(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* DescriptorProto::_internal_add_nested_type() {
- return _impl_.nested_type_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* DescriptorProto::add_nested_type() {
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto* _add = _internal_add_nested_type();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.nested_type)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >&
-DescriptorProto::nested_type() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.nested_type)
- return _impl_.nested_type_;
-}
-
-// repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
-inline int DescriptorProto::_internal_enum_type_size() const {
- return _impl_.enum_type_.size();
-}
-inline int DescriptorProto::enum_type_size() const {
- return _internal_enum_type_size();
-}
-inline void DescriptorProto::clear_enum_type() {
- _impl_.enum_type_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* DescriptorProto::mutable_enum_type(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.enum_type)
- return _impl_.enum_type_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >*
-DescriptorProto::mutable_enum_type() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.enum_type)
- return &_impl_.enum_type_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& DescriptorProto::_internal_enum_type(int index) const {
- return _impl_.enum_type_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto& DescriptorProto::enum_type(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.enum_type)
- return _internal_enum_type(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* DescriptorProto::_internal_add_enum_type() {
- return _impl_.enum_type_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* DescriptorProto::add_enum_type() {
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* _add = _internal_add_enum_type();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.enum_type)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >&
-DescriptorProto::enum_type() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.enum_type)
- return _impl_.enum_type_;
-}
-
-// repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
-inline int DescriptorProto::_internal_extension_range_size() const {
- return _impl_.extension_range_.size();
-}
-inline int DescriptorProto::extension_range_size() const {
- return _internal_extension_range_size();
-}
-inline void DescriptorProto::clear_extension_range() {
- _impl_.extension_range_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* DescriptorProto::mutable_extension_range(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.extension_range)
- return _impl_.extension_range_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >*
-DescriptorProto::mutable_extension_range() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.extension_range)
- return &_impl_.extension_range_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange& DescriptorProto::_internal_extension_range(int index) const {
- return _impl_.extension_range_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange& DescriptorProto::extension_range(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.extension_range)
- return _internal_extension_range(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* DescriptorProto::_internal_add_extension_range() {
- return _impl_.extension_range_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* DescriptorProto::add_extension_range() {
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* _add = _internal_add_extension_range();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.extension_range)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >&
-DescriptorProto::extension_range() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.extension_range)
- return _impl_.extension_range_;
-}
-
-// repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
-inline int DescriptorProto::_internal_oneof_decl_size() const {
- return _impl_.oneof_decl_.size();
-}
-inline int DescriptorProto::oneof_decl_size() const {
- return _internal_oneof_decl_size();
-}
-inline void DescriptorProto::clear_oneof_decl() {
- _impl_.oneof_decl_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* DescriptorProto::mutable_oneof_decl(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.oneof_decl)
- return _impl_.oneof_decl_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >*
-DescriptorProto::mutable_oneof_decl() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.oneof_decl)
- return &_impl_.oneof_decl_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto& DescriptorProto::_internal_oneof_decl(int index) const {
- return _impl_.oneof_decl_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto& DescriptorProto::oneof_decl(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.oneof_decl)
- return _internal_oneof_decl(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* DescriptorProto::_internal_add_oneof_decl() {
- return _impl_.oneof_decl_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* DescriptorProto::add_oneof_decl() {
- ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* _add = _internal_add_oneof_decl();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.oneof_decl)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >&
-DescriptorProto::oneof_decl() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.oneof_decl)
- return _impl_.oneof_decl_;
-}
-
-// optional .google.protobuf.MessageOptions options = 7;
-inline bool DescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool DescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void DescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MessageOptions& DescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::MessageOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::MessageOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_MessageOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MessageOptions& DescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.options)
- return _internal_options();
-}
-inline void DescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.DescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::MessageOptions* DescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MessageOptions* DescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.DescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MessageOptions* DescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MessageOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MessageOptions* DescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::MessageOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.options)
- return _msg;
-}
-inline void DescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::MessageOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.DescriptorProto.options)
-}
-
-// repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
-inline int DescriptorProto::_internal_reserved_range_size() const {
- return _impl_.reserved_range_.size();
-}
-inline int DescriptorProto::reserved_range_size() const {
- return _internal_reserved_range_size();
-}
-inline void DescriptorProto::clear_reserved_range() {
- _impl_.reserved_range_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* DescriptorProto::mutable_reserved_range(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.reserved_range)
- return _impl_.reserved_range_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >*
-DescriptorProto::mutable_reserved_range() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.reserved_range)
- return &_impl_.reserved_range_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange& DescriptorProto::_internal_reserved_range(int index) const {
- return _impl_.reserved_range_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange& DescriptorProto::reserved_range(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.reserved_range)
- return _internal_reserved_range(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* DescriptorProto::_internal_add_reserved_range() {
- return _impl_.reserved_range_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* DescriptorProto::add_reserved_range() {
- ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* _add = _internal_add_reserved_range();
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_range)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >&
-DescriptorProto::reserved_range() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.reserved_range)
- return _impl_.reserved_range_;
-}
-
-// repeated string reserved_name = 10;
-inline int DescriptorProto::_internal_reserved_name_size() const {
- return _impl_.reserved_name_.size();
-}
-inline int DescriptorProto::reserved_name_size() const {
- return _internal_reserved_name_size();
-}
-inline void DescriptorProto::clear_reserved_name() {
- _impl_.reserved_name_.Clear();
-}
-inline std::string* DescriptorProto::add_reserved_name() {
- std::string* _s = _internal_add_reserved_name();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.DescriptorProto.reserved_name)
- return _s;
-}
-inline const std::string& DescriptorProto::_internal_reserved_name(int index) const {
- return _impl_.reserved_name_.Get(index);
-}
-inline const std::string& DescriptorProto::reserved_name(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.reserved_name)
- return _internal_reserved_name(index);
-}
-inline std::string* DescriptorProto::mutable_reserved_name(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.DescriptorProto.reserved_name)
- return _impl_.reserved_name_.Mutable(index);
-}
-inline void DescriptorProto::set_reserved_name(int index, const std::string& value) {
- _impl_.reserved_name_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::set_reserved_name(int index, std::string&& value) {
- _impl_.reserved_name_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::set_reserved_name(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.reserved_name_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::set_reserved_name(int index, const char* value, size_t size) {
- _impl_.reserved_name_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.DescriptorProto.reserved_name)
-}
-inline std::string* DescriptorProto::_internal_add_reserved_name() {
- return _impl_.reserved_name_.Add();
-}
-inline void DescriptorProto::add_reserved_name(const std::string& value) {
- _impl_.reserved_name_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::add_reserved_name(std::string&& value) {
- _impl_.reserved_name_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::add_reserved_name(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.reserved_name_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.DescriptorProto.reserved_name)
-}
-inline void DescriptorProto::add_reserved_name(const char* value, size_t size) {
- _impl_.reserved_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.DescriptorProto.reserved_name)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-DescriptorProto::reserved_name() const {
- // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.reserved_name)
- return _impl_.reserved_name_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-DescriptorProto::mutable_reserved_name() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.DescriptorProto.reserved_name)
- return &_impl_.reserved_name_;
-}
-
-// -------------------------------------------------------------------
-
-// ExtensionRangeOptions
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int ExtensionRangeOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int ExtensionRangeOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void ExtensionRangeOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ExtensionRangeOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-ExtensionRangeOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& ExtensionRangeOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& ExtensionRangeOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ExtensionRangeOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ExtensionRangeOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-ExtensionRangeOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.ExtensionRangeOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// FieldDescriptorProto
-
-// optional string name = 1;
-inline bool FieldDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void FieldDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& FieldDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FieldDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.name)
-}
-inline std::string* FieldDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.name)
- return _s;
-}
-inline const std::string& FieldDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void FieldDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FieldDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.name)
-}
-
-// optional int32 number = 3;
-inline bool FieldDescriptorProto::_internal_has_number() const {
- bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_number() const {
- return _internal_has_number();
-}
-inline void FieldDescriptorProto::clear_number() {
- _impl_.number_ = 0;
- _impl_._has_bits_[0] &= ~0x00000040u;
-}
-inline int32_t FieldDescriptorProto::_internal_number() const {
- return _impl_.number_;
-}
-inline int32_t FieldDescriptorProto::number() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.number)
- return _internal_number();
-}
-inline void FieldDescriptorProto::_internal_set_number(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000040u;
- _impl_.number_ = value;
-}
-inline void FieldDescriptorProto::set_number(int32_t value) {
- _internal_set_number(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.number)
-}
-
-// optional .google.protobuf.FieldDescriptorProto.Label label = 4;
-inline bool FieldDescriptorProto::_internal_has_label() const {
- bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_label() const {
- return _internal_has_label();
-}
-inline void FieldDescriptorProto::clear_label() {
- _impl_.label_ = 1;
- _impl_._has_bits_[0] &= ~0x00000200u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label FieldDescriptorProto::_internal_label() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label >(_impl_.label_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label FieldDescriptorProto::label() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.label)
- return _internal_label();
-}
-inline void FieldDescriptorProto::_internal_set_label(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label value) {
- assert(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label_IsValid(value));
- _impl_._has_bits_[0] |= 0x00000200u;
- _impl_.label_ = value;
-}
-inline void FieldDescriptorProto::set_label(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label value) {
- _internal_set_label(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.label)
-}
-
-// optional .google.protobuf.FieldDescriptorProto.Type type = 5;
-inline bool FieldDescriptorProto::_internal_has_type() const {
- bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_type() const {
- return _internal_has_type();
-}
-inline void FieldDescriptorProto::clear_type() {
- _impl_.type_ = 1;
- _impl_._has_bits_[0] &= ~0x00000400u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type FieldDescriptorProto::_internal_type() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type >(_impl_.type_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type FieldDescriptorProto::type() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.type)
- return _internal_type();
-}
-inline void FieldDescriptorProto::_internal_set_type(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type value) {
- assert(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type_IsValid(value));
- _impl_._has_bits_[0] |= 0x00000400u;
- _impl_.type_ = value;
-}
-inline void FieldDescriptorProto::set_type(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type value) {
- _internal_set_type(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.type)
-}
-
-// optional string type_name = 6;
-inline bool FieldDescriptorProto::_internal_has_type_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_type_name() const {
- return _internal_has_type_name();
-}
-inline void FieldDescriptorProto::clear_type_name() {
- _impl_.type_name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& FieldDescriptorProto::type_name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.type_name)
- return _internal_type_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FieldDescriptorProto::set_type_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.type_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.type_name)
-}
-inline std::string* FieldDescriptorProto::mutable_type_name() {
- std::string* _s = _internal_mutable_type_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.type_name)
- return _s;
-}
-inline const std::string& FieldDescriptorProto::_internal_type_name() const {
- return _impl_.type_name_.Get();
-}
-inline void FieldDescriptorProto::_internal_set_type_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.type_name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::_internal_mutable_type_name() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.type_name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::release_type_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.type_name)
- if (!_internal_has_type_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.type_name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.type_name_.IsDefault()) {
- _impl_.type_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FieldDescriptorProto::set_allocated_type_name(std::string* type_name) {
- if (type_name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.type_name_.SetAllocated(type_name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.type_name_.IsDefault()) {
- _impl_.type_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.type_name)
-}
-
-// optional string extendee = 2;
-inline bool FieldDescriptorProto::_internal_has_extendee() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_extendee() const {
- return _internal_has_extendee();
-}
-inline void FieldDescriptorProto::clear_extendee() {
- _impl_.extendee_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& FieldDescriptorProto::extendee() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.extendee)
- return _internal_extendee();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FieldDescriptorProto::set_extendee(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.extendee_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.extendee)
-}
-inline std::string* FieldDescriptorProto::mutable_extendee() {
- std::string* _s = _internal_mutable_extendee();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.extendee)
- return _s;
-}
-inline const std::string& FieldDescriptorProto::_internal_extendee() const {
- return _impl_.extendee_.Get();
-}
-inline void FieldDescriptorProto::_internal_set_extendee(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.extendee_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::_internal_mutable_extendee() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.extendee_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::release_extendee() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.extendee)
- if (!_internal_has_extendee()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.extendee_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.extendee_.IsDefault()) {
- _impl_.extendee_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FieldDescriptorProto::set_allocated_extendee(std::string* extendee) {
- if (extendee != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.extendee_.SetAllocated(extendee, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.extendee_.IsDefault()) {
- _impl_.extendee_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.extendee)
-}
-
-// optional string default_value = 7;
-inline bool FieldDescriptorProto::_internal_has_default_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_default_value() const {
- return _internal_has_default_value();
-}
-inline void FieldDescriptorProto::clear_default_value() {
- _impl_.default_value_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline const std::string& FieldDescriptorProto::default_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.default_value)
- return _internal_default_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FieldDescriptorProto::set_default_value(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.default_value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.default_value)
-}
-inline std::string* FieldDescriptorProto::mutable_default_value() {
- std::string* _s = _internal_mutable_default_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.default_value)
- return _s;
-}
-inline const std::string& FieldDescriptorProto::_internal_default_value() const {
- return _impl_.default_value_.Get();
-}
-inline void FieldDescriptorProto::_internal_set_default_value(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.default_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::_internal_mutable_default_value() {
- _impl_._has_bits_[0] |= 0x00000008u;
- return _impl_.default_value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::release_default_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.default_value)
- if (!_internal_has_default_value()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000008u;
- auto* p = _impl_.default_value_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.default_value_.IsDefault()) {
- _impl_.default_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FieldDescriptorProto::set_allocated_default_value(std::string* default_value) {
- if (default_value != nullptr) {
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- _impl_.default_value_.SetAllocated(default_value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.default_value_.IsDefault()) {
- _impl_.default_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.default_value)
-}
-
-// optional int32 oneof_index = 9;
-inline bool FieldDescriptorProto::_internal_has_oneof_index() const {
- bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_oneof_index() const {
- return _internal_has_oneof_index();
-}
-inline void FieldDescriptorProto::clear_oneof_index() {
- _impl_.oneof_index_ = 0;
- _impl_._has_bits_[0] &= ~0x00000080u;
-}
-inline int32_t FieldDescriptorProto::_internal_oneof_index() const {
- return _impl_.oneof_index_;
-}
-inline int32_t FieldDescriptorProto::oneof_index() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.oneof_index)
- return _internal_oneof_index();
-}
-inline void FieldDescriptorProto::_internal_set_oneof_index(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000080u;
- _impl_.oneof_index_ = value;
-}
-inline void FieldDescriptorProto::set_oneof_index(int32_t value) {
- _internal_set_oneof_index(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.oneof_index)
-}
-
-// optional string json_name = 10;
-inline bool FieldDescriptorProto::_internal_has_json_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_json_name() const {
- return _internal_has_json_name();
-}
-inline void FieldDescriptorProto::clear_json_name() {
- _impl_.json_name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline const std::string& FieldDescriptorProto::json_name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.json_name)
- return _internal_json_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FieldDescriptorProto::set_json_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.json_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.json_name)
-}
-inline std::string* FieldDescriptorProto::mutable_json_name() {
- std::string* _s = _internal_mutable_json_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.json_name)
- return _s;
-}
-inline const std::string& FieldDescriptorProto::_internal_json_name() const {
- return _impl_.json_name_.Get();
-}
-inline void FieldDescriptorProto::_internal_set_json_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.json_name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::_internal_mutable_json_name() {
- _impl_._has_bits_[0] |= 0x00000010u;
- return _impl_.json_name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FieldDescriptorProto::release_json_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.json_name)
- if (!_internal_has_json_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000010u;
- auto* p = _impl_.json_name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.json_name_.IsDefault()) {
- _impl_.json_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FieldDescriptorProto::set_allocated_json_name(std::string* json_name) {
- if (json_name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000010u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000010u;
- }
- _impl_.json_name_.SetAllocated(json_name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.json_name_.IsDefault()) {
- _impl_.json_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.json_name)
-}
-
-// optional .google.protobuf.FieldOptions options = 8;
-inline bool FieldDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool FieldDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void FieldDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000020u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldOptions& FieldDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::FieldOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::FieldOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_FieldOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::FieldOptions& FieldDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.options)
- return _internal_options();
-}
-inline void FieldDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000020u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000020u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.FieldDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions* FieldDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000020u;
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions* FieldDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.FieldDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000020u;
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions* FieldDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000020u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions* FieldDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::FieldOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldDescriptorProto.options)
- return _msg;
-}
-inline void FieldDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::FieldOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000020u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000020u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FieldDescriptorProto.options)
-}
-
-// optional bool proto3_optional = 17;
-inline bool FieldDescriptorProto::_internal_has_proto3_optional() const {
- bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
- return value;
-}
-inline bool FieldDescriptorProto::has_proto3_optional() const {
- return _internal_has_proto3_optional();
-}
-inline void FieldDescriptorProto::clear_proto3_optional() {
- _impl_.proto3_optional_ = false;
- _impl_._has_bits_[0] &= ~0x00000100u;
-}
-inline bool FieldDescriptorProto::_internal_proto3_optional() const {
- return _impl_.proto3_optional_;
-}
-inline bool FieldDescriptorProto::proto3_optional() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldDescriptorProto.proto3_optional)
- return _internal_proto3_optional();
-}
-inline void FieldDescriptorProto::_internal_set_proto3_optional(bool value) {
- _impl_._has_bits_[0] |= 0x00000100u;
- _impl_.proto3_optional_ = value;
-}
-inline void FieldDescriptorProto::set_proto3_optional(bool value) {
- _internal_set_proto3_optional(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldDescriptorProto.proto3_optional)
-}
-
-// -------------------------------------------------------------------
-
-// OneofDescriptorProto
-
-// optional string name = 1;
-inline bool OneofDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool OneofDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void OneofDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& OneofDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.OneofDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void OneofDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.OneofDescriptorProto.name)
-}
-inline std::string* OneofDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.OneofDescriptorProto.name)
- return _s;
-}
-inline const std::string& OneofDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void OneofDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* OneofDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* OneofDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.OneofDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void OneofDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.OneofDescriptorProto.name)
-}
-
-// optional .google.protobuf.OneofOptions options = 2;
-inline bool OneofDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool OneofDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void OneofDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::OneofOptions& OneofDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::OneofOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::OneofOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_OneofOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::OneofOptions& OneofDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.OneofDescriptorProto.options)
- return _internal_options();
-}
-inline void OneofDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.OneofDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofOptions* OneofDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofOptions* OneofDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.OneofDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofOptions* OneofDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::OneofOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::OneofOptions* OneofDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::OneofOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.OneofDescriptorProto.options)
- return _msg;
-}
-inline void OneofDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::OneofOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.OneofDescriptorProto.options)
-}
-
-// -------------------------------------------------------------------
-
-// EnumDescriptorProto_EnumReservedRange
-
-// optional int32 start = 1;
-inline bool EnumDescriptorProto_EnumReservedRange::_internal_has_start() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool EnumDescriptorProto_EnumReservedRange::has_start() const {
- return _internal_has_start();
-}
-inline void EnumDescriptorProto_EnumReservedRange::clear_start() {
- _impl_.start_ = 0;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline int32_t EnumDescriptorProto_EnumReservedRange::_internal_start() const {
- return _impl_.start_;
-}
-inline int32_t EnumDescriptorProto_EnumReservedRange::start() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.EnumReservedRange.start)
- return _internal_start();
-}
-inline void EnumDescriptorProto_EnumReservedRange::_internal_set_start(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.start_ = value;
-}
-inline void EnumDescriptorProto_EnumReservedRange::set_start(int32_t value) {
- _internal_set_start(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.EnumReservedRange.start)
-}
-
-// optional int32 end = 2;
-inline bool EnumDescriptorProto_EnumReservedRange::_internal_has_end() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool EnumDescriptorProto_EnumReservedRange::has_end() const {
- return _internal_has_end();
-}
-inline void EnumDescriptorProto_EnumReservedRange::clear_end() {
- _impl_.end_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline int32_t EnumDescriptorProto_EnumReservedRange::_internal_end() const {
- return _impl_.end_;
-}
-inline int32_t EnumDescriptorProto_EnumReservedRange::end() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.EnumReservedRange.end)
- return _internal_end();
-}
-inline void EnumDescriptorProto_EnumReservedRange::_internal_set_end(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.end_ = value;
-}
-inline void EnumDescriptorProto_EnumReservedRange::set_end(int32_t value) {
- _internal_set_end(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.EnumReservedRange.end)
-}
-
-// -------------------------------------------------------------------
-
-// EnumDescriptorProto
-
-// optional string name = 1;
-inline bool EnumDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool EnumDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void EnumDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& EnumDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void EnumDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.name)
-}
-inline std::string* EnumDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.name)
- return _s;
-}
-inline const std::string& EnumDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void EnumDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* EnumDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* EnumDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.EnumDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void EnumDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumDescriptorProto.name)
-}
-
-// repeated .google.protobuf.EnumValueDescriptorProto value = 2;
-inline int EnumDescriptorProto::_internal_value_size() const {
- return _impl_.value_.size();
-}
-inline int EnumDescriptorProto::value_size() const {
- return _internal_value_size();
-}
-inline void EnumDescriptorProto::clear_value() {
- _impl_.value_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* EnumDescriptorProto::mutable_value(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.value)
- return _impl_.value_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >*
-EnumDescriptorProto::mutable_value() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.value)
- return &_impl_.value_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto& EnumDescriptorProto::_internal_value(int index) const {
- return _impl_.value_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto& EnumDescriptorProto::value(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.value)
- return _internal_value(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* EnumDescriptorProto::_internal_add_value() {
- return _impl_.value_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* EnumDescriptorProto::add_value() {
- ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* _add = _internal_add_value();
- // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.value)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >&
-EnumDescriptorProto::value() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.value)
- return _impl_.value_;
-}
-
-// optional .google.protobuf.EnumOptions options = 3;
-inline bool EnumDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool EnumDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void EnumDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumOptions& EnumDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::EnumOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::EnumOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_EnumOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumOptions& EnumDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.options)
- return _internal_options();
-}
-inline void EnumDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumOptions* EnumDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumOptions* EnumDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.EnumDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumOptions* EnumDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumOptions* EnumDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::EnumOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.options)
- return _msg;
-}
-inline void EnumDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::EnumOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumDescriptorProto.options)
-}
-
-// repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
-inline int EnumDescriptorProto::_internal_reserved_range_size() const {
- return _impl_.reserved_range_.size();
-}
-inline int EnumDescriptorProto::reserved_range_size() const {
- return _internal_reserved_range_size();
-}
-inline void EnumDescriptorProto::clear_reserved_range() {
- _impl_.reserved_range_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto::mutable_reserved_range(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.reserved_range)
- return _impl_.reserved_range_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange >*
-EnumDescriptorProto::mutable_reserved_range() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.reserved_range)
- return &_impl_.reserved_range_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange& EnumDescriptorProto::_internal_reserved_range(int index) const {
- return _impl_.reserved_range_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange& EnumDescriptorProto::reserved_range(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.reserved_range)
- return _internal_reserved_range(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto::_internal_add_reserved_range() {
- return _impl_.reserved_range_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* EnumDescriptorProto::add_reserved_range() {
- ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange* _add = _internal_add_reserved_range();
- // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_range)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto_EnumReservedRange >&
-EnumDescriptorProto::reserved_range() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.reserved_range)
- return _impl_.reserved_range_;
-}
-
-// repeated string reserved_name = 5;
-inline int EnumDescriptorProto::_internal_reserved_name_size() const {
- return _impl_.reserved_name_.size();
-}
-inline int EnumDescriptorProto::reserved_name_size() const {
- return _internal_reserved_name_size();
-}
-inline void EnumDescriptorProto::clear_reserved_name() {
- _impl_.reserved_name_.Clear();
-}
-inline std::string* EnumDescriptorProto::add_reserved_name() {
- std::string* _s = _internal_add_reserved_name();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.EnumDescriptorProto.reserved_name)
- return _s;
-}
-inline const std::string& EnumDescriptorProto::_internal_reserved_name(int index) const {
- return _impl_.reserved_name_.Get(index);
-}
-inline const std::string& EnumDescriptorProto::reserved_name(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.reserved_name)
- return _internal_reserved_name(index);
-}
-inline std::string* EnumDescriptorProto::mutable_reserved_name(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumDescriptorProto.reserved_name)
- return _impl_.reserved_name_.Mutable(index);
-}
-inline void EnumDescriptorProto::set_reserved_name(int index, const std::string& value) {
- _impl_.reserved_name_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::set_reserved_name(int index, std::string&& value) {
- _impl_.reserved_name_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::set_reserved_name(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.reserved_name_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::set_reserved_name(int index, const char* value, size_t size) {
- _impl_.reserved_name_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline std::string* EnumDescriptorProto::_internal_add_reserved_name() {
- return _impl_.reserved_name_.Add();
-}
-inline void EnumDescriptorProto::add_reserved_name(const std::string& value) {
- _impl_.reserved_name_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::add_reserved_name(std::string&& value) {
- _impl_.reserved_name_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::add_reserved_name(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.reserved_name_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline void EnumDescriptorProto::add_reserved_name(const char* value, size_t size) {
- _impl_.reserved_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.EnumDescriptorProto.reserved_name)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-EnumDescriptorProto::reserved_name() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumDescriptorProto.reserved_name)
- return _impl_.reserved_name_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-EnumDescriptorProto::mutable_reserved_name() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumDescriptorProto.reserved_name)
- return &_impl_.reserved_name_;
-}
-
-// -------------------------------------------------------------------
-
-// EnumValueDescriptorProto
-
-// optional string name = 1;
-inline bool EnumValueDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool EnumValueDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void EnumValueDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& EnumValueDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void EnumValueDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.EnumValueDescriptorProto.name)
-}
-inline std::string* EnumValueDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueDescriptorProto.name)
- return _s;
-}
-inline const std::string& EnumValueDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void EnumValueDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* EnumValueDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* EnumValueDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.EnumValueDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void EnumValueDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumValueDescriptorProto.name)
-}
-
-// optional int32 number = 2;
-inline bool EnumValueDescriptorProto::_internal_has_number() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool EnumValueDescriptorProto::has_number() const {
- return _internal_has_number();
-}
-inline void EnumValueDescriptorProto::clear_number() {
- _impl_.number_ = 0;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline int32_t EnumValueDescriptorProto::_internal_number() const {
- return _impl_.number_;
-}
-inline int32_t EnumValueDescriptorProto::number() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.number)
- return _internal_number();
-}
-inline void EnumValueDescriptorProto::_internal_set_number(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.number_ = value;
-}
-inline void EnumValueDescriptorProto::set_number(int32_t value) {
- _internal_set_number(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumValueDescriptorProto.number)
-}
-
-// optional .google.protobuf.EnumValueOptions options = 3;
-inline bool EnumValueDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool EnumValueDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void EnumValueDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions& EnumValueDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_EnumValueOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValueOptions& EnumValueDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValueDescriptorProto.options)
- return _internal_options();
-}
-inline void EnumValueDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.EnumValueDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* EnumValueDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* EnumValueDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.EnumValueDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* EnumValueDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumValueOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* EnumValueDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::EnumValueOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueDescriptorProto.options)
- return _msg;
-}
-inline void EnumValueDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::EnumValueOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumValueDescriptorProto.options)
-}
-
-// -------------------------------------------------------------------
-
-// ServiceDescriptorProto
-
-// optional string name = 1;
-inline bool ServiceDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool ServiceDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void ServiceDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& ServiceDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void ServiceDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.ServiceDescriptorProto.name)
-}
-inline std::string* ServiceDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.name)
- return _s;
-}
-inline const std::string& ServiceDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void ServiceDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* ServiceDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* ServiceDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.ServiceDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void ServiceDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.ServiceDescriptorProto.name)
-}
-
-// repeated .google.protobuf.MethodDescriptorProto method = 2;
-inline int ServiceDescriptorProto::_internal_method_size() const {
- return _impl_.method_.size();
-}
-inline int ServiceDescriptorProto::method_size() const {
- return _internal_method_size();
-}
-inline void ServiceDescriptorProto::clear_method() {
- _impl_.method_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* ServiceDescriptorProto::mutable_method(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.method)
- return _impl_.method_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto >*
-ServiceDescriptorProto::mutable_method() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.ServiceDescriptorProto.method)
- return &_impl_.method_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto& ServiceDescriptorProto::_internal_method(int index) const {
- return _impl_.method_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto& ServiceDescriptorProto::method(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.method)
- return _internal_method(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* ServiceDescriptorProto::_internal_add_method() {
- return _impl_.method_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* ServiceDescriptorProto::add_method() {
- ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto* _add = _internal_add_method();
- // @@protoc_insertion_point(field_add:google.protobuf.ServiceDescriptorProto.method)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::MethodDescriptorProto >&
-ServiceDescriptorProto::method() const {
- // @@protoc_insertion_point(field_list:google.protobuf.ServiceDescriptorProto.method)
- return _impl_.method_;
-}
-
-// optional .google.protobuf.ServiceOptions options = 3;
-inline bool ServiceDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool ServiceDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void ServiceDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ServiceOptions& ServiceDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::ServiceOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::ServiceOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_ServiceOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ServiceOptions& ServiceDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.ServiceDescriptorProto.options)
- return _internal_options();
-}
-inline void ServiceDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.ServiceDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceOptions* ServiceDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceOptions* ServiceDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.ServiceDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000002u;
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceOptions* ServiceDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000002u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ServiceOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ServiceOptions* ServiceDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::ServiceOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceDescriptorProto.options)
- return _msg;
-}
-inline void ServiceDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::ServiceOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.ServiceDescriptorProto.options)
-}
-
-// -------------------------------------------------------------------
-
-// MethodDescriptorProto
-
-// optional string name = 1;
-inline bool MethodDescriptorProto::_internal_has_name() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool MethodDescriptorProto::has_name() const {
- return _internal_has_name();
-}
-inline void MethodDescriptorProto::clear_name() {
- _impl_.name_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& MethodDescriptorProto::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void MethodDescriptorProto::set_name(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.name)
-}
-inline std::string* MethodDescriptorProto::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.name)
- return _s;
-}
-inline const std::string& MethodDescriptorProto::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void MethodDescriptorProto::_internal_set_name(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::_internal_mutable_name() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.name)
- if (!_internal_has_name()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void MethodDescriptorProto::set_allocated_name(std::string* name) {
- if (name != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.name)
-}
-
-// optional string input_type = 2;
-inline bool MethodDescriptorProto::_internal_has_input_type() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool MethodDescriptorProto::has_input_type() const {
- return _internal_has_input_type();
-}
-inline void MethodDescriptorProto::clear_input_type() {
- _impl_.input_type_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& MethodDescriptorProto::input_type() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.input_type)
- return _internal_input_type();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void MethodDescriptorProto::set_input_type(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.input_type_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.input_type)
-}
-inline std::string* MethodDescriptorProto::mutable_input_type() {
- std::string* _s = _internal_mutable_input_type();
- // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.input_type)
- return _s;
-}
-inline const std::string& MethodDescriptorProto::_internal_input_type() const {
- return _impl_.input_type_.Get();
-}
-inline void MethodDescriptorProto::_internal_set_input_type(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.input_type_.Set(value, GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::_internal_mutable_input_type() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.input_type_.Mutable(GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::release_input_type() {
- // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.input_type)
- if (!_internal_has_input_type()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.input_type_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.input_type_.IsDefault()) {
- _impl_.input_type_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void MethodDescriptorProto::set_allocated_input_type(std::string* input_type) {
- if (input_type != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.input_type_.SetAllocated(input_type, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.input_type_.IsDefault()) {
- _impl_.input_type_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.input_type)
-}
-
-// optional string output_type = 3;
-inline bool MethodDescriptorProto::_internal_has_output_type() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool MethodDescriptorProto::has_output_type() const {
- return _internal_has_output_type();
-}
-inline void MethodDescriptorProto::clear_output_type() {
- _impl_.output_type_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& MethodDescriptorProto::output_type() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.output_type)
- return _internal_output_type();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void MethodDescriptorProto::set_output_type(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.output_type_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.output_type)
-}
-inline std::string* MethodDescriptorProto::mutable_output_type() {
- std::string* _s = _internal_mutable_output_type();
- // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.output_type)
- return _s;
-}
-inline const std::string& MethodDescriptorProto::_internal_output_type() const {
- return _impl_.output_type_.Get();
-}
-inline void MethodDescriptorProto::_internal_set_output_type(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.output_type_.Set(value, GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::_internal_mutable_output_type() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.output_type_.Mutable(GetArenaForAllocation());
-}
-inline std::string* MethodDescriptorProto::release_output_type() {
- // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.output_type)
- if (!_internal_has_output_type()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.output_type_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.output_type_.IsDefault()) {
- _impl_.output_type_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void MethodDescriptorProto::set_allocated_output_type(std::string* output_type) {
- if (output_type != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.output_type_.SetAllocated(output_type, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.output_type_.IsDefault()) {
- _impl_.output_type_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.output_type)
-}
-
-// optional .google.protobuf.MethodOptions options = 4;
-inline bool MethodDescriptorProto::_internal_has_options() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
- return value;
-}
-inline bool MethodDescriptorProto::has_options() const {
- return _internal_has_options();
-}
-inline void MethodDescriptorProto::clear_options() {
- if (_impl_.options_ != nullptr) _impl_.options_->Clear();
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MethodOptions& MethodDescriptorProto::_internal_options() const {
- const ::PROTOBUF_NAMESPACE_ID::MethodOptions* p = _impl_.options_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::MethodOptions&>(
- ::PROTOBUF_NAMESPACE_ID::_MethodOptions_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::MethodOptions& MethodDescriptorProto::options() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.options)
- return _internal_options();
-}
-inline void MethodDescriptorProto::unsafe_arena_set_allocated_options(
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* options) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.options_);
- }
- _impl_.options_ = options;
- if (options) {
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.MethodDescriptorProto.options)
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions* MethodDescriptorProto::release_options() {
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions* MethodDescriptorProto::unsafe_arena_release_options() {
- // @@protoc_insertion_point(field_release:google.protobuf.MethodDescriptorProto.options)
- _impl_._has_bits_[0] &= ~0x00000008u;
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* temp = _impl_.options_;
- _impl_.options_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions* MethodDescriptorProto::_internal_mutable_options() {
- _impl_._has_bits_[0] |= 0x00000008u;
- if (_impl_.options_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MethodOptions>(GetArenaForAllocation());
- _impl_.options_ = p;
- }
- return _impl_.options_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions* MethodDescriptorProto::mutable_options() {
- ::PROTOBUF_NAMESPACE_ID::MethodOptions* _msg = _internal_mutable_options();
- // @@protoc_insertion_point(field_mutable:google.protobuf.MethodDescriptorProto.options)
- return _msg;
-}
-inline void MethodDescriptorProto::set_allocated_options(::PROTOBUF_NAMESPACE_ID::MethodOptions* options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete _impl_.options_;
- }
- if (options) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(options);
- if (message_arena != submessage_arena) {
- options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, options, submessage_arena);
- }
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- _impl_.options_ = options;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.MethodDescriptorProto.options)
-}
-
-// optional bool client_streaming = 5 [default = false];
-inline bool MethodDescriptorProto::_internal_has_client_streaming() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- return value;
-}
-inline bool MethodDescriptorProto::has_client_streaming() const {
- return _internal_has_client_streaming();
-}
-inline void MethodDescriptorProto::clear_client_streaming() {
- _impl_.client_streaming_ = false;
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline bool MethodDescriptorProto::_internal_client_streaming() const {
- return _impl_.client_streaming_;
-}
-inline bool MethodDescriptorProto::client_streaming() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.client_streaming)
- return _internal_client_streaming();
-}
-inline void MethodDescriptorProto::_internal_set_client_streaming(bool value) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.client_streaming_ = value;
-}
-inline void MethodDescriptorProto::set_client_streaming(bool value) {
- _internal_set_client_streaming(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.client_streaming)
-}
-
-// optional bool server_streaming = 6 [default = false];
-inline bool MethodDescriptorProto::_internal_has_server_streaming() const {
- bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
- return value;
-}
-inline bool MethodDescriptorProto::has_server_streaming() const {
- return _internal_has_server_streaming();
-}
-inline void MethodDescriptorProto::clear_server_streaming() {
- _impl_.server_streaming_ = false;
- _impl_._has_bits_[0] &= ~0x00000020u;
-}
-inline bool MethodDescriptorProto::_internal_server_streaming() const {
- return _impl_.server_streaming_;
-}
-inline bool MethodDescriptorProto::server_streaming() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodDescriptorProto.server_streaming)
- return _internal_server_streaming();
-}
-inline void MethodDescriptorProto::_internal_set_server_streaming(bool value) {
- _impl_._has_bits_[0] |= 0x00000020u;
- _impl_.server_streaming_ = value;
-}
-inline void MethodDescriptorProto::set_server_streaming(bool value) {
- _internal_set_server_streaming(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MethodDescriptorProto.server_streaming)
-}
-
-// -------------------------------------------------------------------
-
-// FileOptions
-
-// optional string java_package = 1;
-inline bool FileOptions::_internal_has_java_package() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_package() const {
- return _internal_has_java_package();
-}
-inline void FileOptions::clear_java_package() {
- _impl_.java_package_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& FileOptions::java_package() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_package)
- return _internal_java_package();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_java_package(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.java_package_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_package)
-}
-inline std::string* FileOptions::mutable_java_package() {
- std::string* _s = _internal_mutable_java_package();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.java_package)
- return _s;
-}
-inline const std::string& FileOptions::_internal_java_package() const {
- return _impl_.java_package_.Get();
-}
-inline void FileOptions::_internal_set_java_package(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.java_package_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_java_package() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.java_package_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_java_package() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.java_package)
- if (!_internal_has_java_package()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.java_package_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.java_package_.IsDefault()) {
- _impl_.java_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_java_package(std::string* java_package) {
- if (java_package != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.java_package_.SetAllocated(java_package, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.java_package_.IsDefault()) {
- _impl_.java_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.java_package)
-}
-
-// optional string java_outer_classname = 8;
-inline bool FileOptions::_internal_has_java_outer_classname() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_outer_classname() const {
- return _internal_has_java_outer_classname();
-}
-inline void FileOptions::clear_java_outer_classname() {
- _impl_.java_outer_classname_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& FileOptions::java_outer_classname() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_outer_classname)
- return _internal_java_outer_classname();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_java_outer_classname(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.java_outer_classname_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_outer_classname)
-}
-inline std::string* FileOptions::mutable_java_outer_classname() {
- std::string* _s = _internal_mutable_java_outer_classname();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.java_outer_classname)
- return _s;
-}
-inline const std::string& FileOptions::_internal_java_outer_classname() const {
- return _impl_.java_outer_classname_.Get();
-}
-inline void FileOptions::_internal_set_java_outer_classname(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.java_outer_classname_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_java_outer_classname() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.java_outer_classname_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_java_outer_classname() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.java_outer_classname)
- if (!_internal_has_java_outer_classname()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.java_outer_classname_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.java_outer_classname_.IsDefault()) {
- _impl_.java_outer_classname_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_java_outer_classname(std::string* java_outer_classname) {
- if (java_outer_classname != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.java_outer_classname_.SetAllocated(java_outer_classname, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.java_outer_classname_.IsDefault()) {
- _impl_.java_outer_classname_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.java_outer_classname)
-}
-
-// optional bool java_multiple_files = 10 [default = false];
-inline bool FileOptions::_internal_has_java_multiple_files() const {
- bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_multiple_files() const {
- return _internal_has_java_multiple_files();
-}
-inline void FileOptions::clear_java_multiple_files() {
- _impl_.java_multiple_files_ = false;
- _impl_._has_bits_[0] &= ~0x00000400u;
-}
-inline bool FileOptions::_internal_java_multiple_files() const {
- return _impl_.java_multiple_files_;
-}
-inline bool FileOptions::java_multiple_files() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_multiple_files)
- return _internal_java_multiple_files();
-}
-inline void FileOptions::_internal_set_java_multiple_files(bool value) {
- _impl_._has_bits_[0] |= 0x00000400u;
- _impl_.java_multiple_files_ = value;
-}
-inline void FileOptions::set_java_multiple_files(bool value) {
- _internal_set_java_multiple_files(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_multiple_files)
-}
-
-// optional bool java_generate_equals_and_hash = 20 [deprecated = true];
-inline bool FileOptions::_internal_has_java_generate_equals_and_hash() const {
- bool value = (_impl_._has_bits_[0] & 0x00000800u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_generate_equals_and_hash() const {
- return _internal_has_java_generate_equals_and_hash();
-}
-inline void FileOptions::clear_java_generate_equals_and_hash() {
- _impl_.java_generate_equals_and_hash_ = false;
- _impl_._has_bits_[0] &= ~0x00000800u;
-}
-inline bool FileOptions::_internal_java_generate_equals_and_hash() const {
- return _impl_.java_generate_equals_and_hash_;
-}
-inline bool FileOptions::java_generate_equals_and_hash() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_generate_equals_and_hash)
- return _internal_java_generate_equals_and_hash();
-}
-inline void FileOptions::_internal_set_java_generate_equals_and_hash(bool value) {
- _impl_._has_bits_[0] |= 0x00000800u;
- _impl_.java_generate_equals_and_hash_ = value;
-}
-inline void FileOptions::set_java_generate_equals_and_hash(bool value) {
- _internal_set_java_generate_equals_and_hash(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_generate_equals_and_hash)
-}
-
-// optional bool java_string_check_utf8 = 27 [default = false];
-inline bool FileOptions::_internal_has_java_string_check_utf8() const {
- bool value = (_impl_._has_bits_[0] & 0x00001000u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_string_check_utf8() const {
- return _internal_has_java_string_check_utf8();
-}
-inline void FileOptions::clear_java_string_check_utf8() {
- _impl_.java_string_check_utf8_ = false;
- _impl_._has_bits_[0] &= ~0x00001000u;
-}
-inline bool FileOptions::_internal_java_string_check_utf8() const {
- return _impl_.java_string_check_utf8_;
-}
-inline bool FileOptions::java_string_check_utf8() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_string_check_utf8)
- return _internal_java_string_check_utf8();
-}
-inline void FileOptions::_internal_set_java_string_check_utf8(bool value) {
- _impl_._has_bits_[0] |= 0x00001000u;
- _impl_.java_string_check_utf8_ = value;
-}
-inline void FileOptions::set_java_string_check_utf8(bool value) {
- _internal_set_java_string_check_utf8(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_string_check_utf8)
-}
-
-// optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
-inline bool FileOptions::_internal_has_optimize_for() const {
- bool value = (_impl_._has_bits_[0] & 0x00040000u) != 0;
- return value;
-}
-inline bool FileOptions::has_optimize_for() const {
- return _internal_has_optimize_for();
-}
-inline void FileOptions::clear_optimize_for() {
- _impl_.optimize_for_ = 1;
- _impl_._has_bits_[0] &= ~0x00040000u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode FileOptions::_internal_optimize_for() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode >(_impl_.optimize_for_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode FileOptions::optimize_for() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.optimize_for)
- return _internal_optimize_for();
-}
-inline void FileOptions::_internal_set_optimize_for(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode value) {
- assert(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode_IsValid(value));
- _impl_._has_bits_[0] |= 0x00040000u;
- _impl_.optimize_for_ = value;
-}
-inline void FileOptions::set_optimize_for(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode value) {
- _internal_set_optimize_for(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.optimize_for)
-}
-
-// optional string go_package = 11;
-inline bool FileOptions::_internal_has_go_package() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool FileOptions::has_go_package() const {
- return _internal_has_go_package();
-}
-inline void FileOptions::clear_go_package() {
- _impl_.go_package_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& FileOptions::go_package() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.go_package)
- return _internal_go_package();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_go_package(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.go_package_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.go_package)
-}
-inline std::string* FileOptions::mutable_go_package() {
- std::string* _s = _internal_mutable_go_package();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.go_package)
- return _s;
-}
-inline const std::string& FileOptions::_internal_go_package() const {
- return _impl_.go_package_.Get();
-}
-inline void FileOptions::_internal_set_go_package(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.go_package_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_go_package() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.go_package_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_go_package() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.go_package)
- if (!_internal_has_go_package()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.go_package_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.go_package_.IsDefault()) {
- _impl_.go_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_go_package(std::string* go_package) {
- if (go_package != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.go_package_.SetAllocated(go_package, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.go_package_.IsDefault()) {
- _impl_.go_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.go_package)
-}
-
-// optional bool cc_generic_services = 16 [default = false];
-inline bool FileOptions::_internal_has_cc_generic_services() const {
- bool value = (_impl_._has_bits_[0] & 0x00002000u) != 0;
- return value;
-}
-inline bool FileOptions::has_cc_generic_services() const {
- return _internal_has_cc_generic_services();
-}
-inline void FileOptions::clear_cc_generic_services() {
- _impl_.cc_generic_services_ = false;
- _impl_._has_bits_[0] &= ~0x00002000u;
-}
-inline bool FileOptions::_internal_cc_generic_services() const {
- return _impl_.cc_generic_services_;
-}
-inline bool FileOptions::cc_generic_services() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.cc_generic_services)
- return _internal_cc_generic_services();
-}
-inline void FileOptions::_internal_set_cc_generic_services(bool value) {
- _impl_._has_bits_[0] |= 0x00002000u;
- _impl_.cc_generic_services_ = value;
-}
-inline void FileOptions::set_cc_generic_services(bool value) {
- _internal_set_cc_generic_services(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.cc_generic_services)
-}
-
-// optional bool java_generic_services = 17 [default = false];
-inline bool FileOptions::_internal_has_java_generic_services() const {
- bool value = (_impl_._has_bits_[0] & 0x00004000u) != 0;
- return value;
-}
-inline bool FileOptions::has_java_generic_services() const {
- return _internal_has_java_generic_services();
-}
-inline void FileOptions::clear_java_generic_services() {
- _impl_.java_generic_services_ = false;
- _impl_._has_bits_[0] &= ~0x00004000u;
-}
-inline bool FileOptions::_internal_java_generic_services() const {
- return _impl_.java_generic_services_;
-}
-inline bool FileOptions::java_generic_services() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.java_generic_services)
- return _internal_java_generic_services();
-}
-inline void FileOptions::_internal_set_java_generic_services(bool value) {
- _impl_._has_bits_[0] |= 0x00004000u;
- _impl_.java_generic_services_ = value;
-}
-inline void FileOptions::set_java_generic_services(bool value) {
- _internal_set_java_generic_services(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_generic_services)
-}
-
-// optional bool py_generic_services = 18 [default = false];
-inline bool FileOptions::_internal_has_py_generic_services() const {
- bool value = (_impl_._has_bits_[0] & 0x00008000u) != 0;
- return value;
-}
-inline bool FileOptions::has_py_generic_services() const {
- return _internal_has_py_generic_services();
-}
-inline void FileOptions::clear_py_generic_services() {
- _impl_.py_generic_services_ = false;
- _impl_._has_bits_[0] &= ~0x00008000u;
-}
-inline bool FileOptions::_internal_py_generic_services() const {
- return _impl_.py_generic_services_;
-}
-inline bool FileOptions::py_generic_services() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.py_generic_services)
- return _internal_py_generic_services();
-}
-inline void FileOptions::_internal_set_py_generic_services(bool value) {
- _impl_._has_bits_[0] |= 0x00008000u;
- _impl_.py_generic_services_ = value;
-}
-inline void FileOptions::set_py_generic_services(bool value) {
- _internal_set_py_generic_services(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.py_generic_services)
-}
-
-// optional bool php_generic_services = 42 [default = false];
-inline bool FileOptions::_internal_has_php_generic_services() const {
- bool value = (_impl_._has_bits_[0] & 0x00010000u) != 0;
- return value;
-}
-inline bool FileOptions::has_php_generic_services() const {
- return _internal_has_php_generic_services();
-}
-inline void FileOptions::clear_php_generic_services() {
- _impl_.php_generic_services_ = false;
- _impl_._has_bits_[0] &= ~0x00010000u;
-}
-inline bool FileOptions::_internal_php_generic_services() const {
- return _impl_.php_generic_services_;
-}
-inline bool FileOptions::php_generic_services() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_generic_services)
- return _internal_php_generic_services();
-}
-inline void FileOptions::_internal_set_php_generic_services(bool value) {
- _impl_._has_bits_[0] |= 0x00010000u;
- _impl_.php_generic_services_ = value;
-}
-inline void FileOptions::set_php_generic_services(bool value) {
- _internal_set_php_generic_services(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_generic_services)
-}
-
-// optional bool deprecated = 23 [default = false];
-inline bool FileOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00020000u) != 0;
- return value;
-}
-inline bool FileOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void FileOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00020000u;
-}
-inline bool FileOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool FileOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.deprecated)
- return _internal_deprecated();
-}
-inline void FileOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00020000u;
- _impl_.deprecated_ = value;
-}
-inline void FileOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.deprecated)
-}
-
-// optional bool cc_enable_arenas = 31 [default = true];
-inline bool FileOptions::_internal_has_cc_enable_arenas() const {
- bool value = (_impl_._has_bits_[0] & 0x00080000u) != 0;
- return value;
-}
-inline bool FileOptions::has_cc_enable_arenas() const {
- return _internal_has_cc_enable_arenas();
-}
-inline void FileOptions::clear_cc_enable_arenas() {
- _impl_.cc_enable_arenas_ = true;
- _impl_._has_bits_[0] &= ~0x00080000u;
-}
-inline bool FileOptions::_internal_cc_enable_arenas() const {
- return _impl_.cc_enable_arenas_;
-}
-inline bool FileOptions::cc_enable_arenas() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.cc_enable_arenas)
- return _internal_cc_enable_arenas();
-}
-inline void FileOptions::_internal_set_cc_enable_arenas(bool value) {
- _impl_._has_bits_[0] |= 0x00080000u;
- _impl_.cc_enable_arenas_ = value;
-}
-inline void FileOptions::set_cc_enable_arenas(bool value) {
- _internal_set_cc_enable_arenas(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.cc_enable_arenas)
-}
-
-// optional string objc_class_prefix = 36;
-inline bool FileOptions::_internal_has_objc_class_prefix() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool FileOptions::has_objc_class_prefix() const {
- return _internal_has_objc_class_prefix();
-}
-inline void FileOptions::clear_objc_class_prefix() {
- _impl_.objc_class_prefix_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline const std::string& FileOptions::objc_class_prefix() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.objc_class_prefix)
- return _internal_objc_class_prefix();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_objc_class_prefix(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.objc_class_prefix_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.objc_class_prefix)
-}
-inline std::string* FileOptions::mutable_objc_class_prefix() {
- std::string* _s = _internal_mutable_objc_class_prefix();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.objc_class_prefix)
- return _s;
-}
-inline const std::string& FileOptions::_internal_objc_class_prefix() const {
- return _impl_.objc_class_prefix_.Get();
-}
-inline void FileOptions::_internal_set_objc_class_prefix(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.objc_class_prefix_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_objc_class_prefix() {
- _impl_._has_bits_[0] |= 0x00000008u;
- return _impl_.objc_class_prefix_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_objc_class_prefix() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.objc_class_prefix)
- if (!_internal_has_objc_class_prefix()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000008u;
- auto* p = _impl_.objc_class_prefix_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.objc_class_prefix_.IsDefault()) {
- _impl_.objc_class_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_objc_class_prefix(std::string* objc_class_prefix) {
- if (objc_class_prefix != nullptr) {
- _impl_._has_bits_[0] |= 0x00000008u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000008u;
- }
- _impl_.objc_class_prefix_.SetAllocated(objc_class_prefix, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.objc_class_prefix_.IsDefault()) {
- _impl_.objc_class_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.objc_class_prefix)
-}
-
-// optional string csharp_namespace = 37;
-inline bool FileOptions::_internal_has_csharp_namespace() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- return value;
-}
-inline bool FileOptions::has_csharp_namespace() const {
- return _internal_has_csharp_namespace();
-}
-inline void FileOptions::clear_csharp_namespace() {
- _impl_.csharp_namespace_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline const std::string& FileOptions::csharp_namespace() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.csharp_namespace)
- return _internal_csharp_namespace();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_csharp_namespace(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.csharp_namespace_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.csharp_namespace)
-}
-inline std::string* FileOptions::mutable_csharp_namespace() {
- std::string* _s = _internal_mutable_csharp_namespace();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.csharp_namespace)
- return _s;
-}
-inline const std::string& FileOptions::_internal_csharp_namespace() const {
- return _impl_.csharp_namespace_.Get();
-}
-inline void FileOptions::_internal_set_csharp_namespace(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.csharp_namespace_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_csharp_namespace() {
- _impl_._has_bits_[0] |= 0x00000010u;
- return _impl_.csharp_namespace_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_csharp_namespace() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.csharp_namespace)
- if (!_internal_has_csharp_namespace()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000010u;
- auto* p = _impl_.csharp_namespace_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.csharp_namespace_.IsDefault()) {
- _impl_.csharp_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_csharp_namespace(std::string* csharp_namespace) {
- if (csharp_namespace != nullptr) {
- _impl_._has_bits_[0] |= 0x00000010u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000010u;
- }
- _impl_.csharp_namespace_.SetAllocated(csharp_namespace, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.csharp_namespace_.IsDefault()) {
- _impl_.csharp_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.csharp_namespace)
-}
-
-// optional string swift_prefix = 39;
-inline bool FileOptions::_internal_has_swift_prefix() const {
- bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
- return value;
-}
-inline bool FileOptions::has_swift_prefix() const {
- return _internal_has_swift_prefix();
-}
-inline void FileOptions::clear_swift_prefix() {
- _impl_.swift_prefix_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000020u;
-}
-inline const std::string& FileOptions::swift_prefix() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.swift_prefix)
- return _internal_swift_prefix();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_swift_prefix(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000020u;
- _impl_.swift_prefix_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.swift_prefix)
-}
-inline std::string* FileOptions::mutable_swift_prefix() {
- std::string* _s = _internal_mutable_swift_prefix();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.swift_prefix)
- return _s;
-}
-inline const std::string& FileOptions::_internal_swift_prefix() const {
- return _impl_.swift_prefix_.Get();
-}
-inline void FileOptions::_internal_set_swift_prefix(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000020u;
- _impl_.swift_prefix_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_swift_prefix() {
- _impl_._has_bits_[0] |= 0x00000020u;
- return _impl_.swift_prefix_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_swift_prefix() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.swift_prefix)
- if (!_internal_has_swift_prefix()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000020u;
- auto* p = _impl_.swift_prefix_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.swift_prefix_.IsDefault()) {
- _impl_.swift_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_swift_prefix(std::string* swift_prefix) {
- if (swift_prefix != nullptr) {
- _impl_._has_bits_[0] |= 0x00000020u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000020u;
- }
- _impl_.swift_prefix_.SetAllocated(swift_prefix, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.swift_prefix_.IsDefault()) {
- _impl_.swift_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.swift_prefix)
-}
-
-// optional string php_class_prefix = 40;
-inline bool FileOptions::_internal_has_php_class_prefix() const {
- bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
- return value;
-}
-inline bool FileOptions::has_php_class_prefix() const {
- return _internal_has_php_class_prefix();
-}
-inline void FileOptions::clear_php_class_prefix() {
- _impl_.php_class_prefix_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000040u;
-}
-inline const std::string& FileOptions::php_class_prefix() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_class_prefix)
- return _internal_php_class_prefix();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_php_class_prefix(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000040u;
- _impl_.php_class_prefix_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_class_prefix)
-}
-inline std::string* FileOptions::mutable_php_class_prefix() {
- std::string* _s = _internal_mutable_php_class_prefix();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_class_prefix)
- return _s;
-}
-inline const std::string& FileOptions::_internal_php_class_prefix() const {
- return _impl_.php_class_prefix_.Get();
-}
-inline void FileOptions::_internal_set_php_class_prefix(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000040u;
- _impl_.php_class_prefix_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_php_class_prefix() {
- _impl_._has_bits_[0] |= 0x00000040u;
- return _impl_.php_class_prefix_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_php_class_prefix() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_class_prefix)
- if (!_internal_has_php_class_prefix()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000040u;
- auto* p = _impl_.php_class_prefix_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_class_prefix_.IsDefault()) {
- _impl_.php_class_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_php_class_prefix(std::string* php_class_prefix) {
- if (php_class_prefix != nullptr) {
- _impl_._has_bits_[0] |= 0x00000040u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000040u;
- }
- _impl_.php_class_prefix_.SetAllocated(php_class_prefix, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_class_prefix_.IsDefault()) {
- _impl_.php_class_prefix_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_class_prefix)
-}
-
-// optional string php_namespace = 41;
-inline bool FileOptions::_internal_has_php_namespace() const {
- bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
- return value;
-}
-inline bool FileOptions::has_php_namespace() const {
- return _internal_has_php_namespace();
-}
-inline void FileOptions::clear_php_namespace() {
- _impl_.php_namespace_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000080u;
-}
-inline const std::string& FileOptions::php_namespace() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_namespace)
- return _internal_php_namespace();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_php_namespace(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000080u;
- _impl_.php_namespace_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_namespace)
-}
-inline std::string* FileOptions::mutable_php_namespace() {
- std::string* _s = _internal_mutable_php_namespace();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_namespace)
- return _s;
-}
-inline const std::string& FileOptions::_internal_php_namespace() const {
- return _impl_.php_namespace_.Get();
-}
-inline void FileOptions::_internal_set_php_namespace(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000080u;
- _impl_.php_namespace_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_php_namespace() {
- _impl_._has_bits_[0] |= 0x00000080u;
- return _impl_.php_namespace_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_php_namespace() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_namespace)
- if (!_internal_has_php_namespace()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000080u;
- auto* p = _impl_.php_namespace_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_namespace_.IsDefault()) {
- _impl_.php_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_php_namespace(std::string* php_namespace) {
- if (php_namespace != nullptr) {
- _impl_._has_bits_[0] |= 0x00000080u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000080u;
- }
- _impl_.php_namespace_.SetAllocated(php_namespace, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_namespace_.IsDefault()) {
- _impl_.php_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_namespace)
-}
-
-// optional string php_metadata_namespace = 44;
-inline bool FileOptions::_internal_has_php_metadata_namespace() const {
- bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
- return value;
-}
-inline bool FileOptions::has_php_metadata_namespace() const {
- return _internal_has_php_metadata_namespace();
-}
-inline void FileOptions::clear_php_metadata_namespace() {
- _impl_.php_metadata_namespace_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000100u;
-}
-inline const std::string& FileOptions::php_metadata_namespace() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.php_metadata_namespace)
- return _internal_php_metadata_namespace();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_php_metadata_namespace(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000100u;
- _impl_.php_metadata_namespace_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.php_metadata_namespace)
-}
-inline std::string* FileOptions::mutable_php_metadata_namespace() {
- std::string* _s = _internal_mutable_php_metadata_namespace();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.php_metadata_namespace)
- return _s;
-}
-inline const std::string& FileOptions::_internal_php_metadata_namespace() const {
- return _impl_.php_metadata_namespace_.Get();
-}
-inline void FileOptions::_internal_set_php_metadata_namespace(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000100u;
- _impl_.php_metadata_namespace_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_php_metadata_namespace() {
- _impl_._has_bits_[0] |= 0x00000100u;
- return _impl_.php_metadata_namespace_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_php_metadata_namespace() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.php_metadata_namespace)
- if (!_internal_has_php_metadata_namespace()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000100u;
- auto* p = _impl_.php_metadata_namespace_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_metadata_namespace_.IsDefault()) {
- _impl_.php_metadata_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_php_metadata_namespace(std::string* php_metadata_namespace) {
- if (php_metadata_namespace != nullptr) {
- _impl_._has_bits_[0] |= 0x00000100u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000100u;
- }
- _impl_.php_metadata_namespace_.SetAllocated(php_metadata_namespace, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.php_metadata_namespace_.IsDefault()) {
- _impl_.php_metadata_namespace_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.php_metadata_namespace)
-}
-
-// optional string ruby_package = 45;
-inline bool FileOptions::_internal_has_ruby_package() const {
- bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
- return value;
-}
-inline bool FileOptions::has_ruby_package() const {
- return _internal_has_ruby_package();
-}
-inline void FileOptions::clear_ruby_package() {
- _impl_.ruby_package_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000200u;
-}
-inline const std::string& FileOptions::ruby_package() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.ruby_package)
- return _internal_ruby_package();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void FileOptions::set_ruby_package(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000200u;
- _impl_.ruby_package_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.ruby_package)
-}
-inline std::string* FileOptions::mutable_ruby_package() {
- std::string* _s = _internal_mutable_ruby_package();
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.ruby_package)
- return _s;
-}
-inline const std::string& FileOptions::_internal_ruby_package() const {
- return _impl_.ruby_package_.Get();
-}
-inline void FileOptions::_internal_set_ruby_package(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000200u;
- _impl_.ruby_package_.Set(value, GetArenaForAllocation());
-}
-inline std::string* FileOptions::_internal_mutable_ruby_package() {
- _impl_._has_bits_[0] |= 0x00000200u;
- return _impl_.ruby_package_.Mutable(GetArenaForAllocation());
-}
-inline std::string* FileOptions::release_ruby_package() {
- // @@protoc_insertion_point(field_release:google.protobuf.FileOptions.ruby_package)
- if (!_internal_has_ruby_package()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000200u;
- auto* p = _impl_.ruby_package_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.ruby_package_.IsDefault()) {
- _impl_.ruby_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void FileOptions::set_allocated_ruby_package(std::string* ruby_package) {
- if (ruby_package != nullptr) {
- _impl_._has_bits_[0] |= 0x00000200u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000200u;
- }
- _impl_.ruby_package_.SetAllocated(ruby_package, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.ruby_package_.IsDefault()) {
- _impl_.ruby_package_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.FileOptions.ruby_package)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int FileOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int FileOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void FileOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FileOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FileOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-FileOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FileOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& FileOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& FileOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FileOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FileOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.FileOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-FileOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FileOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// MessageOptions
-
-// optional bool message_set_wire_format = 1 [default = false];
-inline bool MessageOptions::_internal_has_message_set_wire_format() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool MessageOptions::has_message_set_wire_format() const {
- return _internal_has_message_set_wire_format();
-}
-inline void MessageOptions::clear_message_set_wire_format() {
- _impl_.message_set_wire_format_ = false;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline bool MessageOptions::_internal_message_set_wire_format() const {
- return _impl_.message_set_wire_format_;
-}
-inline bool MessageOptions::message_set_wire_format() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.message_set_wire_format)
- return _internal_message_set_wire_format();
-}
-inline void MessageOptions::_internal_set_message_set_wire_format(bool value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.message_set_wire_format_ = value;
-}
-inline void MessageOptions::set_message_set_wire_format(bool value) {
- _internal_set_message_set_wire_format(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.message_set_wire_format)
-}
-
-// optional bool no_standard_descriptor_accessor = 2 [default = false];
-inline bool MessageOptions::_internal_has_no_standard_descriptor_accessor() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool MessageOptions::has_no_standard_descriptor_accessor() const {
- return _internal_has_no_standard_descriptor_accessor();
-}
-inline void MessageOptions::clear_no_standard_descriptor_accessor() {
- _impl_.no_standard_descriptor_accessor_ = false;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline bool MessageOptions::_internal_no_standard_descriptor_accessor() const {
- return _impl_.no_standard_descriptor_accessor_;
-}
-inline bool MessageOptions::no_standard_descriptor_accessor() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.no_standard_descriptor_accessor)
- return _internal_no_standard_descriptor_accessor();
-}
-inline void MessageOptions::_internal_set_no_standard_descriptor_accessor(bool value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.no_standard_descriptor_accessor_ = value;
-}
-inline void MessageOptions::set_no_standard_descriptor_accessor(bool value) {
- _internal_set_no_standard_descriptor_accessor(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.no_standard_descriptor_accessor)
-}
-
-// optional bool deprecated = 3 [default = false];
-inline bool MessageOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool MessageOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void MessageOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline bool MessageOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool MessageOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.deprecated)
- return _internal_deprecated();
-}
-inline void MessageOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.deprecated_ = value;
-}
-inline void MessageOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.deprecated)
-}
-
-// optional bool map_entry = 7;
-inline bool MessageOptions::_internal_has_map_entry() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool MessageOptions::has_map_entry() const {
- return _internal_has_map_entry();
-}
-inline void MessageOptions::clear_map_entry() {
- _impl_.map_entry_ = false;
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline bool MessageOptions::_internal_map_entry() const {
- return _impl_.map_entry_;
-}
-inline bool MessageOptions::map_entry() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.map_entry)
- return _internal_map_entry();
-}
-inline void MessageOptions::_internal_set_map_entry(bool value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.map_entry_ = value;
-}
-inline void MessageOptions::set_map_entry(bool value) {
- _internal_set_map_entry(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MessageOptions.map_entry)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int MessageOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int MessageOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void MessageOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MessageOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.MessageOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-MessageOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.MessageOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& MessageOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& MessageOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.MessageOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MessageOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MessageOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.MessageOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-MessageOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.MessageOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// FieldOptions
-
-// optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
-inline bool FieldOptions::_internal_has_ctype() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool FieldOptions::has_ctype() const {
- return _internal_has_ctype();
-}
-inline void FieldOptions::clear_ctype() {
- _impl_.ctype_ = 0;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType FieldOptions::_internal_ctype() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType >(_impl_.ctype_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType FieldOptions::ctype() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.ctype)
- return _internal_ctype();
-}
-inline void FieldOptions::_internal_set_ctype(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType value) {
- assert(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType_IsValid(value));
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.ctype_ = value;
-}
-inline void FieldOptions::set_ctype(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType value) {
- _internal_set_ctype(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.ctype)
-}
-
-// optional bool packed = 2;
-inline bool FieldOptions::_internal_has_packed() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool FieldOptions::has_packed() const {
- return _internal_has_packed();
-}
-inline void FieldOptions::clear_packed() {
- _impl_.packed_ = false;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline bool FieldOptions::_internal_packed() const {
- return _impl_.packed_;
-}
-inline bool FieldOptions::packed() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.packed)
- return _internal_packed();
-}
-inline void FieldOptions::_internal_set_packed(bool value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.packed_ = value;
-}
-inline void FieldOptions::set_packed(bool value) {
- _internal_set_packed(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.packed)
-}
-
-// optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
-inline bool FieldOptions::_internal_has_jstype() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool FieldOptions::has_jstype() const {
- return _internal_has_jstype();
-}
-inline void FieldOptions::clear_jstype() {
- _impl_.jstype_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType FieldOptions::_internal_jstype() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType >(_impl_.jstype_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType FieldOptions::jstype() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.jstype)
- return _internal_jstype();
-}
-inline void FieldOptions::_internal_set_jstype(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType value) {
- assert(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType_IsValid(value));
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.jstype_ = value;
-}
-inline void FieldOptions::set_jstype(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType value) {
- _internal_set_jstype(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.jstype)
-}
-
-// optional bool lazy = 5 [default = false];
-inline bool FieldOptions::_internal_has_lazy() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool FieldOptions::has_lazy() const {
- return _internal_has_lazy();
-}
-inline void FieldOptions::clear_lazy() {
- _impl_.lazy_ = false;
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline bool FieldOptions::_internal_lazy() const {
- return _impl_.lazy_;
-}
-inline bool FieldOptions::lazy() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.lazy)
- return _internal_lazy();
-}
-inline void FieldOptions::_internal_set_lazy(bool value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.lazy_ = value;
-}
-inline void FieldOptions::set_lazy(bool value) {
- _internal_set_lazy(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.lazy)
-}
-
-// optional bool unverified_lazy = 15 [default = false];
-inline bool FieldOptions::_internal_has_unverified_lazy() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- return value;
-}
-inline bool FieldOptions::has_unverified_lazy() const {
- return _internal_has_unverified_lazy();
-}
-inline void FieldOptions::clear_unverified_lazy() {
- _impl_.unverified_lazy_ = false;
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline bool FieldOptions::_internal_unverified_lazy() const {
- return _impl_.unverified_lazy_;
-}
-inline bool FieldOptions::unverified_lazy() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.unverified_lazy)
- return _internal_unverified_lazy();
-}
-inline void FieldOptions::_internal_set_unverified_lazy(bool value) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.unverified_lazy_ = value;
-}
-inline void FieldOptions::set_unverified_lazy(bool value) {
- _internal_set_unverified_lazy(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.unverified_lazy)
-}
-
-// optional bool deprecated = 3 [default = false];
-inline bool FieldOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
- return value;
-}
-inline bool FieldOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void FieldOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000020u;
-}
-inline bool FieldOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool FieldOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.deprecated)
- return _internal_deprecated();
-}
-inline void FieldOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000020u;
- _impl_.deprecated_ = value;
-}
-inline void FieldOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.deprecated)
-}
-
-// optional bool weak = 10 [default = false];
-inline bool FieldOptions::_internal_has_weak() const {
- bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
- return value;
-}
-inline bool FieldOptions::has_weak() const {
- return _internal_has_weak();
-}
-inline void FieldOptions::clear_weak() {
- _impl_.weak_ = false;
- _impl_._has_bits_[0] &= ~0x00000040u;
-}
-inline bool FieldOptions::_internal_weak() const {
- return _impl_.weak_;
-}
-inline bool FieldOptions::weak() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.weak)
- return _internal_weak();
-}
-inline void FieldOptions::_internal_set_weak(bool value) {
- _impl_._has_bits_[0] |= 0x00000040u;
- _impl_.weak_ = value;
-}
-inline void FieldOptions::set_weak(bool value) {
- _internal_set_weak(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldOptions.weak)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int FieldOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int FieldOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void FieldOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FieldOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-FieldOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FieldOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& FieldOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& FieldOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FieldOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* FieldOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.FieldOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-FieldOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FieldOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// OneofOptions
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int OneofOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int OneofOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void OneofOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* OneofOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.OneofOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-OneofOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.OneofOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& OneofOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& OneofOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.OneofOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* OneofOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* OneofOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.OneofOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-OneofOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.OneofOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// EnumOptions
-
-// optional bool allow_alias = 2;
-inline bool EnumOptions::_internal_has_allow_alias() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool EnumOptions::has_allow_alias() const {
- return _internal_has_allow_alias();
-}
-inline void EnumOptions::clear_allow_alias() {
- _impl_.allow_alias_ = false;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline bool EnumOptions::_internal_allow_alias() const {
- return _impl_.allow_alias_;
-}
-inline bool EnumOptions::allow_alias() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.allow_alias)
- return _internal_allow_alias();
-}
-inline void EnumOptions::_internal_set_allow_alias(bool value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.allow_alias_ = value;
-}
-inline void EnumOptions::set_allow_alias(bool value) {
- _internal_set_allow_alias(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumOptions.allow_alias)
-}
-
-// optional bool deprecated = 3 [default = false];
-inline bool EnumOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool EnumOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void EnumOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline bool EnumOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool EnumOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.deprecated)
- return _internal_deprecated();
-}
-inline void EnumOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.deprecated_ = value;
-}
-inline void EnumOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumOptions.deprecated)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int EnumOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int EnumOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void EnumOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-EnumOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& EnumOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& EnumOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.EnumOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-EnumOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// EnumValueOptions
-
-// optional bool deprecated = 1 [default = false];
-inline bool EnumValueOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool EnumValueOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void EnumValueOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline bool EnumValueOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool EnumValueOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValueOptions.deprecated)
- return _internal_deprecated();
-}
-inline void EnumValueOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.deprecated_ = value;
-}
-inline void EnumValueOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumValueOptions.deprecated)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int EnumValueOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int EnumValueOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void EnumValueOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumValueOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValueOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-EnumValueOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumValueOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& EnumValueOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& EnumValueOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValueOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumValueOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* EnumValueOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.EnumValueOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-EnumValueOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumValueOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// ServiceOptions
-
-// optional bool deprecated = 33 [default = false];
-inline bool ServiceOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool ServiceOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void ServiceOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline bool ServiceOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool ServiceOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.ServiceOptions.deprecated)
- return _internal_deprecated();
-}
-inline void ServiceOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.deprecated_ = value;
-}
-inline void ServiceOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.ServiceOptions.deprecated)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int ServiceOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int ServiceOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void ServiceOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ServiceOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.ServiceOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-ServiceOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.ServiceOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& ServiceOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& ServiceOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.ServiceOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ServiceOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* ServiceOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.ServiceOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-ServiceOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.ServiceOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// MethodOptions
-
-// optional bool deprecated = 33 [default = false];
-inline bool MethodOptions::_internal_has_deprecated() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool MethodOptions::has_deprecated() const {
- return _internal_has_deprecated();
-}
-inline void MethodOptions::clear_deprecated() {
- _impl_.deprecated_ = false;
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline bool MethodOptions::_internal_deprecated() const {
- return _impl_.deprecated_;
-}
-inline bool MethodOptions::deprecated() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.deprecated)
- return _internal_deprecated();
-}
-inline void MethodOptions::_internal_set_deprecated(bool value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.deprecated_ = value;
-}
-inline void MethodOptions::set_deprecated(bool value) {
- _internal_set_deprecated(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MethodOptions.deprecated)
-}
-
-// optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
-inline bool MethodOptions::_internal_has_idempotency_level() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool MethodOptions::has_idempotency_level() const {
- return _internal_has_idempotency_level();
-}
-inline void MethodOptions::clear_idempotency_level() {
- _impl_.idempotency_level_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel MethodOptions::_internal_idempotency_level() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel >(_impl_.idempotency_level_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel MethodOptions::idempotency_level() const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.idempotency_level)
- return _internal_idempotency_level();
-}
-inline void MethodOptions::_internal_set_idempotency_level(::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel value) {
- assert(::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel_IsValid(value));
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.idempotency_level_ = value;
-}
-inline void MethodOptions::set_idempotency_level(::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel value) {
- _internal_set_idempotency_level(value);
- // @@protoc_insertion_point(field_set:google.protobuf.MethodOptions.idempotency_level)
-}
-
-// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
-inline int MethodOptions::_internal_uninterpreted_option_size() const {
- return _impl_.uninterpreted_option_.size();
-}
-inline int MethodOptions::uninterpreted_option_size() const {
- return _internal_uninterpreted_option_size();
-}
-inline void MethodOptions::clear_uninterpreted_option() {
- _impl_.uninterpreted_option_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MethodOptions::mutable_uninterpreted_option(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.MethodOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >*
-MethodOptions::mutable_uninterpreted_option() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.MethodOptions.uninterpreted_option)
- return &_impl_.uninterpreted_option_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& MethodOptions::_internal_uninterpreted_option(int index) const {
- return _impl_.uninterpreted_option_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption& MethodOptions::uninterpreted_option(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.MethodOptions.uninterpreted_option)
- return _internal_uninterpreted_option(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MethodOptions::_internal_add_uninterpreted_option() {
- return _impl_.uninterpreted_option_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* MethodOptions::add_uninterpreted_option() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption* _add = _internal_add_uninterpreted_option();
- // @@protoc_insertion_point(field_add:google.protobuf.MethodOptions.uninterpreted_option)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption >&
-MethodOptions::uninterpreted_option() const {
- // @@protoc_insertion_point(field_list:google.protobuf.MethodOptions.uninterpreted_option)
- return _impl_.uninterpreted_option_;
-}
-
-// -------------------------------------------------------------------
-
-// UninterpretedOption_NamePart
-
-// required string name_part = 1;
-inline bool UninterpretedOption_NamePart::_internal_has_name_part() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool UninterpretedOption_NamePart::has_name_part() const {
- return _internal_has_name_part();
-}
-inline void UninterpretedOption_NamePart::clear_name_part() {
- _impl_.name_part_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& UninterpretedOption_NamePart::name_part() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.NamePart.name_part)
- return _internal_name_part();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void UninterpretedOption_NamePart::set_name_part(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_part_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.NamePart.name_part)
-}
-inline std::string* UninterpretedOption_NamePart::mutable_name_part() {
- std::string* _s = _internal_mutable_name_part();
- // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.NamePart.name_part)
- return _s;
-}
-inline const std::string& UninterpretedOption_NamePart::_internal_name_part() const {
- return _impl_.name_part_.Get();
-}
-inline void UninterpretedOption_NamePart::_internal_set_name_part(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.name_part_.Set(value, GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption_NamePart::_internal_mutable_name_part() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.name_part_.Mutable(GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption_NamePart::release_name_part() {
- // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.NamePart.name_part)
- if (!_internal_has_name_part()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.name_part_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_part_.IsDefault()) {
- _impl_.name_part_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void UninterpretedOption_NamePart::set_allocated_name_part(std::string* name_part) {
- if (name_part != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.name_part_.SetAllocated(name_part, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_part_.IsDefault()) {
- _impl_.name_part_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.NamePart.name_part)
-}
-
-// required bool is_extension = 2;
-inline bool UninterpretedOption_NamePart::_internal_has_is_extension() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool UninterpretedOption_NamePart::has_is_extension() const {
- return _internal_has_is_extension();
-}
-inline void UninterpretedOption_NamePart::clear_is_extension() {
- _impl_.is_extension_ = false;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline bool UninterpretedOption_NamePart::_internal_is_extension() const {
- return _impl_.is_extension_;
-}
-inline bool UninterpretedOption_NamePart::is_extension() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.NamePart.is_extension)
- return _internal_is_extension();
-}
-inline void UninterpretedOption_NamePart::_internal_set_is_extension(bool value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.is_extension_ = value;
-}
-inline void UninterpretedOption_NamePart::set_is_extension(bool value) {
- _internal_set_is_extension(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.NamePart.is_extension)
-}
-
-// -------------------------------------------------------------------
-
-// UninterpretedOption
-
-// repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
-inline int UninterpretedOption::_internal_name_size() const {
- return _impl_.name_.size();
-}
-inline int UninterpretedOption::name_size() const {
- return _internal_name_size();
-}
-inline void UninterpretedOption::clear_name() {
- _impl_.name_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* UninterpretedOption::mutable_name(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.name)
- return _impl_.name_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart >*
-UninterpretedOption::mutable_name() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.UninterpretedOption.name)
- return &_impl_.name_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart& UninterpretedOption::_internal_name(int index) const {
- return _impl_.name_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart& UninterpretedOption::name(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.name)
- return _internal_name(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* UninterpretedOption::_internal_add_name() {
- return _impl_.name_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* UninterpretedOption::add_name() {
- ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart* _add = _internal_add_name();
- // @@protoc_insertion_point(field_add:google.protobuf.UninterpretedOption.name)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::UninterpretedOption_NamePart >&
-UninterpretedOption::name() const {
- // @@protoc_insertion_point(field_list:google.protobuf.UninterpretedOption.name)
- return _impl_.name_;
-}
-
-// optional string identifier_value = 3;
-inline bool UninterpretedOption::_internal_has_identifier_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_identifier_value() const {
- return _internal_has_identifier_value();
-}
-inline void UninterpretedOption::clear_identifier_value() {
- _impl_.identifier_value_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& UninterpretedOption::identifier_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.identifier_value)
- return _internal_identifier_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void UninterpretedOption::set_identifier_value(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.identifier_value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.identifier_value)
-}
-inline std::string* UninterpretedOption::mutable_identifier_value() {
- std::string* _s = _internal_mutable_identifier_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.identifier_value)
- return _s;
-}
-inline const std::string& UninterpretedOption::_internal_identifier_value() const {
- return _impl_.identifier_value_.Get();
-}
-inline void UninterpretedOption::_internal_set_identifier_value(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.identifier_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::_internal_mutable_identifier_value() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.identifier_value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::release_identifier_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.identifier_value)
- if (!_internal_has_identifier_value()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.identifier_value_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.identifier_value_.IsDefault()) {
- _impl_.identifier_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void UninterpretedOption::set_allocated_identifier_value(std::string* identifier_value) {
- if (identifier_value != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.identifier_value_.SetAllocated(identifier_value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.identifier_value_.IsDefault()) {
- _impl_.identifier_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.identifier_value)
-}
-
-// optional uint64 positive_int_value = 4;
-inline bool UninterpretedOption::_internal_has_positive_int_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_positive_int_value() const {
- return _internal_has_positive_int_value();
-}
-inline void UninterpretedOption::clear_positive_int_value() {
- _impl_.positive_int_value_ = uint64_t{0u};
- _impl_._has_bits_[0] &= ~0x00000008u;
-}
-inline uint64_t UninterpretedOption::_internal_positive_int_value() const {
- return _impl_.positive_int_value_;
-}
-inline uint64_t UninterpretedOption::positive_int_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.positive_int_value)
- return _internal_positive_int_value();
-}
-inline void UninterpretedOption::_internal_set_positive_int_value(uint64_t value) {
- _impl_._has_bits_[0] |= 0x00000008u;
- _impl_.positive_int_value_ = value;
-}
-inline void UninterpretedOption::set_positive_int_value(uint64_t value) {
- _internal_set_positive_int_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.positive_int_value)
-}
-
-// optional int64 negative_int_value = 5;
-inline bool UninterpretedOption::_internal_has_negative_int_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_negative_int_value() const {
- return _internal_has_negative_int_value();
-}
-inline void UninterpretedOption::clear_negative_int_value() {
- _impl_.negative_int_value_ = int64_t{0};
- _impl_._has_bits_[0] &= ~0x00000010u;
-}
-inline int64_t UninterpretedOption::_internal_negative_int_value() const {
- return _impl_.negative_int_value_;
-}
-inline int64_t UninterpretedOption::negative_int_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.negative_int_value)
- return _internal_negative_int_value();
-}
-inline void UninterpretedOption::_internal_set_negative_int_value(int64_t value) {
- _impl_._has_bits_[0] |= 0x00000010u;
- _impl_.negative_int_value_ = value;
-}
-inline void UninterpretedOption::set_negative_int_value(int64_t value) {
- _internal_set_negative_int_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.negative_int_value)
-}
-
-// optional double double_value = 6;
-inline bool UninterpretedOption::_internal_has_double_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_double_value() const {
- return _internal_has_double_value();
-}
-inline void UninterpretedOption::clear_double_value() {
- _impl_.double_value_ = 0;
- _impl_._has_bits_[0] &= ~0x00000020u;
-}
-inline double UninterpretedOption::_internal_double_value() const {
- return _impl_.double_value_;
-}
-inline double UninterpretedOption::double_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.double_value)
- return _internal_double_value();
-}
-inline void UninterpretedOption::_internal_set_double_value(double value) {
- _impl_._has_bits_[0] |= 0x00000020u;
- _impl_.double_value_ = value;
-}
-inline void UninterpretedOption::set_double_value(double value) {
- _internal_set_double_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.double_value)
-}
-
-// optional bytes string_value = 7;
-inline bool UninterpretedOption::_internal_has_string_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_string_value() const {
- return _internal_has_string_value();
-}
-inline void UninterpretedOption::clear_string_value() {
- _impl_.string_value_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& UninterpretedOption::string_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.string_value)
- return _internal_string_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void UninterpretedOption::set_string_value(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.string_value_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.string_value)
-}
-inline std::string* UninterpretedOption::mutable_string_value() {
- std::string* _s = _internal_mutable_string_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.string_value)
- return _s;
-}
-inline const std::string& UninterpretedOption::_internal_string_value() const {
- return _impl_.string_value_.Get();
-}
-inline void UninterpretedOption::_internal_set_string_value(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.string_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::_internal_mutable_string_value() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.string_value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::release_string_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.string_value)
- if (!_internal_has_string_value()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.string_value_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.string_value_.IsDefault()) {
- _impl_.string_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void UninterpretedOption::set_allocated_string_value(std::string* string_value) {
- if (string_value != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.string_value_.SetAllocated(string_value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.string_value_.IsDefault()) {
- _impl_.string_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.string_value)
-}
-
-// optional string aggregate_value = 8;
-inline bool UninterpretedOption::_internal_has_aggregate_value() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool UninterpretedOption::has_aggregate_value() const {
- return _internal_has_aggregate_value();
-}
-inline void UninterpretedOption::clear_aggregate_value() {
- _impl_.aggregate_value_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline const std::string& UninterpretedOption::aggregate_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UninterpretedOption.aggregate_value)
- return _internal_aggregate_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void UninterpretedOption::set_aggregate_value(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.aggregate_value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.UninterpretedOption.aggregate_value)
-}
-inline std::string* UninterpretedOption::mutable_aggregate_value() {
- std::string* _s = _internal_mutable_aggregate_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.UninterpretedOption.aggregate_value)
- return _s;
-}
-inline const std::string& UninterpretedOption::_internal_aggregate_value() const {
- return _impl_.aggregate_value_.Get();
-}
-inline void UninterpretedOption::_internal_set_aggregate_value(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.aggregate_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::_internal_mutable_aggregate_value() {
- _impl_._has_bits_[0] |= 0x00000004u;
- return _impl_.aggregate_value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* UninterpretedOption::release_aggregate_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.UninterpretedOption.aggregate_value)
- if (!_internal_has_aggregate_value()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000004u;
- auto* p = _impl_.aggregate_value_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.aggregate_value_.IsDefault()) {
- _impl_.aggregate_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void UninterpretedOption::set_allocated_aggregate_value(std::string* aggregate_value) {
- if (aggregate_value != nullptr) {
- _impl_._has_bits_[0] |= 0x00000004u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000004u;
- }
- _impl_.aggregate_value_.SetAllocated(aggregate_value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.aggregate_value_.IsDefault()) {
- _impl_.aggregate_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.UninterpretedOption.aggregate_value)
-}
-
-// -------------------------------------------------------------------
-
-// SourceCodeInfo_Location
-
-// repeated int32 path = 1 [packed = true];
-inline int SourceCodeInfo_Location::_internal_path_size() const {
- return _impl_.path_.size();
-}
-inline int SourceCodeInfo_Location::path_size() const {
- return _internal_path_size();
-}
-inline void SourceCodeInfo_Location::clear_path() {
- _impl_.path_.Clear();
-}
-inline int32_t SourceCodeInfo_Location::_internal_path(int index) const {
- return _impl_.path_.Get(index);
-}
-inline int32_t SourceCodeInfo_Location::path(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.path)
- return _internal_path(index);
-}
-inline void SourceCodeInfo_Location::set_path(int index, int32_t value) {
- _impl_.path_.Set(index, value);
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.path)
-}
-inline void SourceCodeInfo_Location::_internal_add_path(int32_t value) {
- _impl_.path_.Add(value);
-}
-inline void SourceCodeInfo_Location::add_path(int32_t value) {
- _internal_add_path(value);
- // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.path)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-SourceCodeInfo_Location::_internal_path() const {
- return _impl_.path_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-SourceCodeInfo_Location::path() const {
- // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.path)
- return _internal_path();
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-SourceCodeInfo_Location::_internal_mutable_path() {
- return &_impl_.path_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-SourceCodeInfo_Location::mutable_path() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.path)
- return _internal_mutable_path();
-}
-
-// repeated int32 span = 2 [packed = true];
-inline int SourceCodeInfo_Location::_internal_span_size() const {
- return _impl_.span_.size();
-}
-inline int SourceCodeInfo_Location::span_size() const {
- return _internal_span_size();
-}
-inline void SourceCodeInfo_Location::clear_span() {
- _impl_.span_.Clear();
-}
-inline int32_t SourceCodeInfo_Location::_internal_span(int index) const {
- return _impl_.span_.Get(index);
-}
-inline int32_t SourceCodeInfo_Location::span(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.span)
- return _internal_span(index);
-}
-inline void SourceCodeInfo_Location::set_span(int index, int32_t value) {
- _impl_.span_.Set(index, value);
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.span)
-}
-inline void SourceCodeInfo_Location::_internal_add_span(int32_t value) {
- _impl_.span_.Add(value);
-}
-inline void SourceCodeInfo_Location::add_span(int32_t value) {
- _internal_add_span(value);
- // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.span)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-SourceCodeInfo_Location::_internal_span() const {
- return _impl_.span_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-SourceCodeInfo_Location::span() const {
- // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.span)
- return _internal_span();
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-SourceCodeInfo_Location::_internal_mutable_span() {
- return &_impl_.span_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-SourceCodeInfo_Location::mutable_span() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.span)
- return _internal_mutable_span();
-}
-
-// optional string leading_comments = 3;
-inline bool SourceCodeInfo_Location::_internal_has_leading_comments() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool SourceCodeInfo_Location::has_leading_comments() const {
- return _internal_has_leading_comments();
-}
-inline void SourceCodeInfo_Location::clear_leading_comments() {
- _impl_.leading_comments_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& SourceCodeInfo_Location::leading_comments() const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.leading_comments)
- return _internal_leading_comments();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void SourceCodeInfo_Location::set_leading_comments(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.leading_comments_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_comments)
-}
-inline std::string* SourceCodeInfo_Location::mutable_leading_comments() {
- std::string* _s = _internal_mutable_leading_comments();
- // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.leading_comments)
- return _s;
-}
-inline const std::string& SourceCodeInfo_Location::_internal_leading_comments() const {
- return _impl_.leading_comments_.Get();
-}
-inline void SourceCodeInfo_Location::_internal_set_leading_comments(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.leading_comments_.Set(value, GetArenaForAllocation());
-}
-inline std::string* SourceCodeInfo_Location::_internal_mutable_leading_comments() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.leading_comments_.Mutable(GetArenaForAllocation());
-}
-inline std::string* SourceCodeInfo_Location::release_leading_comments() {
- // @@protoc_insertion_point(field_release:google.protobuf.SourceCodeInfo.Location.leading_comments)
- if (!_internal_has_leading_comments()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.leading_comments_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.leading_comments_.IsDefault()) {
- _impl_.leading_comments_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void SourceCodeInfo_Location::set_allocated_leading_comments(std::string* leading_comments) {
- if (leading_comments != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.leading_comments_.SetAllocated(leading_comments, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.leading_comments_.IsDefault()) {
- _impl_.leading_comments_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.SourceCodeInfo.Location.leading_comments)
-}
-
-// optional string trailing_comments = 4;
-inline bool SourceCodeInfo_Location::_internal_has_trailing_comments() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool SourceCodeInfo_Location::has_trailing_comments() const {
- return _internal_has_trailing_comments();
-}
-inline void SourceCodeInfo_Location::clear_trailing_comments() {
- _impl_.trailing_comments_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline const std::string& SourceCodeInfo_Location::trailing_comments() const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.trailing_comments)
- return _internal_trailing_comments();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void SourceCodeInfo_Location::set_trailing_comments(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.trailing_comments_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.trailing_comments)
-}
-inline std::string* SourceCodeInfo_Location::mutable_trailing_comments() {
- std::string* _s = _internal_mutable_trailing_comments();
- // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.trailing_comments)
- return _s;
-}
-inline const std::string& SourceCodeInfo_Location::_internal_trailing_comments() const {
- return _impl_.trailing_comments_.Get();
-}
-inline void SourceCodeInfo_Location::_internal_set_trailing_comments(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.trailing_comments_.Set(value, GetArenaForAllocation());
-}
-inline std::string* SourceCodeInfo_Location::_internal_mutable_trailing_comments() {
- _impl_._has_bits_[0] |= 0x00000002u;
- return _impl_.trailing_comments_.Mutable(GetArenaForAllocation());
-}
-inline std::string* SourceCodeInfo_Location::release_trailing_comments() {
- // @@protoc_insertion_point(field_release:google.protobuf.SourceCodeInfo.Location.trailing_comments)
- if (!_internal_has_trailing_comments()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000002u;
- auto* p = _impl_.trailing_comments_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.trailing_comments_.IsDefault()) {
- _impl_.trailing_comments_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void SourceCodeInfo_Location::set_allocated_trailing_comments(std::string* trailing_comments) {
- if (trailing_comments != nullptr) {
- _impl_._has_bits_[0] |= 0x00000002u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000002u;
- }
- _impl_.trailing_comments_.SetAllocated(trailing_comments, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.trailing_comments_.IsDefault()) {
- _impl_.trailing_comments_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.SourceCodeInfo.Location.trailing_comments)
-}
-
-// repeated string leading_detached_comments = 6;
-inline int SourceCodeInfo_Location::_internal_leading_detached_comments_size() const {
- return _impl_.leading_detached_comments_.size();
-}
-inline int SourceCodeInfo_Location::leading_detached_comments_size() const {
- return _internal_leading_detached_comments_size();
-}
-inline void SourceCodeInfo_Location::clear_leading_detached_comments() {
- _impl_.leading_detached_comments_.Clear();
-}
-inline std::string* SourceCodeInfo_Location::add_leading_detached_comments() {
- std::string* _s = _internal_add_leading_detached_comments();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
- return _s;
-}
-inline const std::string& SourceCodeInfo_Location::_internal_leading_detached_comments(int index) const {
- return _impl_.leading_detached_comments_.Get(index);
-}
-inline const std::string& SourceCodeInfo_Location::leading_detached_comments(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
- return _internal_leading_detached_comments(index);
-}
-inline std::string* SourceCodeInfo_Location::mutable_leading_detached_comments(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
- return _impl_.leading_detached_comments_.Mutable(index);
-}
-inline void SourceCodeInfo_Location::set_leading_detached_comments(int index, const std::string& value) {
- _impl_.leading_detached_comments_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::set_leading_detached_comments(int index, std::string&& value) {
- _impl_.leading_detached_comments_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::set_leading_detached_comments(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.leading_detached_comments_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::set_leading_detached_comments(int index, const char* value, size_t size) {
- _impl_.leading_detached_comments_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline std::string* SourceCodeInfo_Location::_internal_add_leading_detached_comments() {
- return _impl_.leading_detached_comments_.Add();
-}
-inline void SourceCodeInfo_Location::add_leading_detached_comments(const std::string& value) {
- _impl_.leading_detached_comments_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::add_leading_detached_comments(std::string&& value) {
- _impl_.leading_detached_comments_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::add_leading_detached_comments(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.leading_detached_comments_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline void SourceCodeInfo_Location::add_leading_detached_comments(const char* value, size_t size) {
- _impl_.leading_detached_comments_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-SourceCodeInfo_Location::leading_detached_comments() const {
- // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
- return _impl_.leading_detached_comments_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-SourceCodeInfo_Location::mutable_leading_detached_comments() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.Location.leading_detached_comments)
- return &_impl_.leading_detached_comments_;
-}
-
-// -------------------------------------------------------------------
-
-// SourceCodeInfo
-
-// repeated .google.protobuf.SourceCodeInfo.Location location = 1;
-inline int SourceCodeInfo::_internal_location_size() const {
- return _impl_.location_.size();
-}
-inline int SourceCodeInfo::location_size() const {
- return _internal_location_size();
-}
-inline void SourceCodeInfo::clear_location() {
- _impl_.location_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* SourceCodeInfo::mutable_location(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.SourceCodeInfo.location)
- return _impl_.location_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location >*
-SourceCodeInfo::mutable_location() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.SourceCodeInfo.location)
- return &_impl_.location_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location& SourceCodeInfo::_internal_location(int index) const {
- return _impl_.location_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location& SourceCodeInfo::location(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceCodeInfo.location)
- return _internal_location(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* SourceCodeInfo::_internal_add_location() {
- return _impl_.location_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* SourceCodeInfo::add_location() {
- ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location* _add = _internal_add_location();
- // @@protoc_insertion_point(field_add:google.protobuf.SourceCodeInfo.location)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::SourceCodeInfo_Location >&
-SourceCodeInfo::location() const {
- // @@protoc_insertion_point(field_list:google.protobuf.SourceCodeInfo.location)
- return _impl_.location_;
-}
-
-// -------------------------------------------------------------------
-
-// GeneratedCodeInfo_Annotation
-
-// repeated int32 path = 1 [packed = true];
-inline int GeneratedCodeInfo_Annotation::_internal_path_size() const {
- return _impl_.path_.size();
-}
-inline int GeneratedCodeInfo_Annotation::path_size() const {
- return _internal_path_size();
-}
-inline void GeneratedCodeInfo_Annotation::clear_path() {
- _impl_.path_.Clear();
-}
-inline int32_t GeneratedCodeInfo_Annotation::_internal_path(int index) const {
- return _impl_.path_.Get(index);
-}
-inline int32_t GeneratedCodeInfo_Annotation::path(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.path)
- return _internal_path(index);
-}
-inline void GeneratedCodeInfo_Annotation::set_path(int index, int32_t value) {
- _impl_.path_.Set(index, value);
- // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.path)
-}
-inline void GeneratedCodeInfo_Annotation::_internal_add_path(int32_t value) {
- _impl_.path_.Add(value);
-}
-inline void GeneratedCodeInfo_Annotation::add_path(int32_t value) {
- _internal_add_path(value);
- // @@protoc_insertion_point(field_add:google.protobuf.GeneratedCodeInfo.Annotation.path)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-GeneratedCodeInfo_Annotation::_internal_path() const {
- return _impl_.path_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
-GeneratedCodeInfo_Annotation::path() const {
- // @@protoc_insertion_point(field_list:google.protobuf.GeneratedCodeInfo.Annotation.path)
- return _internal_path();
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-GeneratedCodeInfo_Annotation::_internal_mutable_path() {
- return &_impl_.path_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
-GeneratedCodeInfo_Annotation::mutable_path() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.GeneratedCodeInfo.Annotation.path)
- return _internal_mutable_path();
-}
-
-// optional string source_file = 2;
-inline bool GeneratedCodeInfo_Annotation::_internal_has_source_file() const {
- bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
- return value;
-}
-inline bool GeneratedCodeInfo_Annotation::has_source_file() const {
- return _internal_has_source_file();
-}
-inline void GeneratedCodeInfo_Annotation::clear_source_file() {
- _impl_.source_file_.ClearToEmpty();
- _impl_._has_bits_[0] &= ~0x00000001u;
-}
-inline const std::string& GeneratedCodeInfo_Annotation::source_file() const {
- // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
- return _internal_source_file();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void GeneratedCodeInfo_Annotation::set_source_file(ArgT0&& arg0, ArgT... args) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.source_file_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
-}
-inline std::string* GeneratedCodeInfo_Annotation::mutable_source_file() {
- std::string* _s = _internal_mutable_source_file();
- // @@protoc_insertion_point(field_mutable:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
- return _s;
-}
-inline const std::string& GeneratedCodeInfo_Annotation::_internal_source_file() const {
- return _impl_.source_file_.Get();
-}
-inline void GeneratedCodeInfo_Annotation::_internal_set_source_file(const std::string& value) {
- _impl_._has_bits_[0] |= 0x00000001u;
- _impl_.source_file_.Set(value, GetArenaForAllocation());
-}
-inline std::string* GeneratedCodeInfo_Annotation::_internal_mutable_source_file() {
- _impl_._has_bits_[0] |= 0x00000001u;
- return _impl_.source_file_.Mutable(GetArenaForAllocation());
-}
-inline std::string* GeneratedCodeInfo_Annotation::release_source_file() {
- // @@protoc_insertion_point(field_release:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
- if (!_internal_has_source_file()) {
- return nullptr;
- }
- _impl_._has_bits_[0] &= ~0x00000001u;
- auto* p = _impl_.source_file_.Release();
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.source_file_.IsDefault()) {
- _impl_.source_file_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- return p;
-}
-inline void GeneratedCodeInfo_Annotation::set_allocated_source_file(std::string* source_file) {
- if (source_file != nullptr) {
- _impl_._has_bits_[0] |= 0x00000001u;
- } else {
- _impl_._has_bits_[0] &= ~0x00000001u;
- }
- _impl_.source_file_.SetAllocated(source_file, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.source_file_.IsDefault()) {
- _impl_.source_file_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.GeneratedCodeInfo.Annotation.source_file)
-}
-
-// optional int32 begin = 3;
-inline bool GeneratedCodeInfo_Annotation::_internal_has_begin() const {
- bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
- return value;
-}
-inline bool GeneratedCodeInfo_Annotation::has_begin() const {
- return _internal_has_begin();
-}
-inline void GeneratedCodeInfo_Annotation::clear_begin() {
- _impl_.begin_ = 0;
- _impl_._has_bits_[0] &= ~0x00000002u;
-}
-inline int32_t GeneratedCodeInfo_Annotation::_internal_begin() const {
- return _impl_.begin_;
-}
-inline int32_t GeneratedCodeInfo_Annotation::begin() const {
- // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.begin)
- return _internal_begin();
-}
-inline void GeneratedCodeInfo_Annotation::_internal_set_begin(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000002u;
- _impl_.begin_ = value;
-}
-inline void GeneratedCodeInfo_Annotation::set_begin(int32_t value) {
- _internal_set_begin(value);
- // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.begin)
-}
-
-// optional int32 end = 4;
-inline bool GeneratedCodeInfo_Annotation::_internal_has_end() const {
- bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
- return value;
-}
-inline bool GeneratedCodeInfo_Annotation::has_end() const {
- return _internal_has_end();
-}
-inline void GeneratedCodeInfo_Annotation::clear_end() {
- _impl_.end_ = 0;
- _impl_._has_bits_[0] &= ~0x00000004u;
-}
-inline int32_t GeneratedCodeInfo_Annotation::_internal_end() const {
- return _impl_.end_;
-}
-inline int32_t GeneratedCodeInfo_Annotation::end() const {
- // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.Annotation.end)
- return _internal_end();
-}
-inline void GeneratedCodeInfo_Annotation::_internal_set_end(int32_t value) {
- _impl_._has_bits_[0] |= 0x00000004u;
- _impl_.end_ = value;
-}
-inline void GeneratedCodeInfo_Annotation::set_end(int32_t value) {
- _internal_set_end(value);
- // @@protoc_insertion_point(field_set:google.protobuf.GeneratedCodeInfo.Annotation.end)
-}
-
-// -------------------------------------------------------------------
-
-// GeneratedCodeInfo
-
-// repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
-inline int GeneratedCodeInfo::_internal_annotation_size() const {
- return _impl_.annotation_.size();
-}
-inline int GeneratedCodeInfo::annotation_size() const {
- return _internal_annotation_size();
-}
-inline void GeneratedCodeInfo::clear_annotation() {
- _impl_.annotation_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* GeneratedCodeInfo::mutable_annotation(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.GeneratedCodeInfo.annotation)
- return _impl_.annotation_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation >*
-GeneratedCodeInfo::mutable_annotation() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.GeneratedCodeInfo.annotation)
- return &_impl_.annotation_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation& GeneratedCodeInfo::_internal_annotation(int index) const {
- return _impl_.annotation_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation& GeneratedCodeInfo::annotation(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.GeneratedCodeInfo.annotation)
- return _internal_annotation(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* GeneratedCodeInfo::_internal_add_annotation() {
- return _impl_.annotation_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* GeneratedCodeInfo::add_annotation() {
- ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation* _add = _internal_add_annotation();
- // @@protoc_insertion_point(field_add:google.protobuf.GeneratedCodeInfo.annotation)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::GeneratedCodeInfo_Annotation >&
-GeneratedCodeInfo::annotation() const {
- // @@protoc_insertion_point(field_list:google.protobuf.GeneratedCodeInfo.annotation)
- return _impl_.annotation_;
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-PROTOBUF_NAMESPACE_OPEN
-
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type>() {
- return ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label>() {
- return ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode>() {
- return ::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType>() {
- return ::PROTOBUF_NAMESPACE_ID::FieldOptions_CType_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType>() {
- return ::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel>() {
- return ::PROTOBUF_NAMESPACE_ID::MethodOptions_IdempotencyLevel_descriptor();
-}
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fdescriptor_2eproto
diff --git a/include/google/protobuf/descriptor.proto b/include/google/protobuf/descriptor.proto
deleted file mode 100644
index f8eb216cdc..0000000000
--- a/include/google/protobuf/descriptor.proto
+++ /dev/null
@@ -1,921 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// The messages in this file describe the definitions found in .proto files.
-// A valid .proto file can be translated directly to a FileDescriptorProto
-// without any other information (e.g. without reading its imports).
-
-
-syntax = "proto2";
-
-package google.protobuf;
-
-option go_package = "google.golang.org/protobuf/types/descriptorpb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "DescriptorProtos";
-option csharp_namespace = "Google.Protobuf.Reflection";
-option objc_class_prefix = "GPB";
-option cc_enable_arenas = true;
-
-// descriptor.proto must be optimized for speed because reflection-based
-// algorithms don't work during bootstrapping.
-option optimize_for = SPEED;
-
-// The protocol compiler can output a FileDescriptorSet containing the .proto
-// files it parses.
-message FileDescriptorSet {
- repeated FileDescriptorProto file = 1;
-}
-
-// Describes a complete .proto file.
-message FileDescriptorProto {
- optional string name = 1; // file name, relative to root of source tree
- optional string package = 2; // e.g. "foo", "foo.bar", etc.
-
- // Names of files imported by this file.
- repeated string dependency = 3;
- // Indexes of the public imported files in the dependency list above.
- repeated int32 public_dependency = 10;
- // Indexes of the weak imported files in the dependency list.
- // For Google-internal migration only. Do not use.
- repeated int32 weak_dependency = 11;
-
- // All top-level definitions in this file.
- repeated DescriptorProto message_type = 4;
- repeated EnumDescriptorProto enum_type = 5;
- repeated ServiceDescriptorProto service = 6;
- repeated FieldDescriptorProto extension = 7;
-
- optional FileOptions options = 8;
-
- // This field contains optional information about the original source code.
- // You may safely remove this entire field without harming runtime
- // functionality of the descriptors -- the information is needed only by
- // development tools.
- optional SourceCodeInfo source_code_info = 9;
-
- // The syntax of the proto file.
- // The supported values are "proto2" and "proto3".
- optional string syntax = 12;
-}
-
-// Describes a message type.
-message DescriptorProto {
- optional string name = 1;
-
- repeated FieldDescriptorProto field = 2;
- repeated FieldDescriptorProto extension = 6;
-
- repeated DescriptorProto nested_type = 3;
- repeated EnumDescriptorProto enum_type = 4;
-
- message ExtensionRange {
- optional int32 start = 1; // Inclusive.
- optional int32 end = 2; // Exclusive.
-
- optional ExtensionRangeOptions options = 3;
- }
- repeated ExtensionRange extension_range = 5;
-
- repeated OneofDescriptorProto oneof_decl = 8;
-
- optional MessageOptions options = 7;
-
- // Range of reserved tag numbers. Reserved tag numbers may not be used by
- // fields or extension ranges in the same message. Reserved ranges may
- // not overlap.
- message ReservedRange {
- optional int32 start = 1; // Inclusive.
- optional int32 end = 2; // Exclusive.
- }
- repeated ReservedRange reserved_range = 9;
- // Reserved field names, which may not be used by fields in the same message.
- // A given name may only be reserved once.
- repeated string reserved_name = 10;
-}
-
-message ExtensionRangeOptions {
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-// Describes a field within a message.
-message FieldDescriptorProto {
- enum Type {
- // 0 is reserved for errors.
- // Order is weird for historical reasons.
- TYPE_DOUBLE = 1;
- TYPE_FLOAT = 2;
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
- // negative values are likely.
- TYPE_INT64 = 3;
- TYPE_UINT64 = 4;
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
- // negative values are likely.
- TYPE_INT32 = 5;
- TYPE_FIXED64 = 6;
- TYPE_FIXED32 = 7;
- TYPE_BOOL = 8;
- TYPE_STRING = 9;
- // Tag-delimited aggregate.
- // Group type is deprecated and not supported in proto3. However, Proto3
- // implementations should still be able to parse the group wire format and
- // treat group fields as unknown fields.
- TYPE_GROUP = 10;
- TYPE_MESSAGE = 11; // Length-delimited aggregate.
-
- // New in version 2.
- TYPE_BYTES = 12;
- TYPE_UINT32 = 13;
- TYPE_ENUM = 14;
- TYPE_SFIXED32 = 15;
- TYPE_SFIXED64 = 16;
- TYPE_SINT32 = 17; // Uses ZigZag encoding.
- TYPE_SINT64 = 18; // Uses ZigZag encoding.
- }
-
- enum Label {
- // 0 is reserved for errors
- LABEL_OPTIONAL = 1;
- LABEL_REQUIRED = 2;
- LABEL_REPEATED = 3;
- }
-
- optional string name = 1;
- optional int32 number = 3;
- optional Label label = 4;
-
- // If type_name is set, this need not be set. If both this and type_name
- // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
- optional Type type = 5;
-
- // For message and enum types, this is the name of the type. If the name
- // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
- // rules are used to find the type (i.e. first the nested types within this
- // message are searched, then within the parent, on up to the root
- // namespace).
- optional string type_name = 6;
-
- // For extensions, this is the name of the type being extended. It is
- // resolved in the same manner as type_name.
- optional string extendee = 2;
-
- // For numeric types, contains the original text representation of the value.
- // For booleans, "true" or "false".
- // For strings, contains the default text contents (not escaped in any way).
- // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
- optional string default_value = 7;
-
- // If set, gives the index of a oneof in the containing type's oneof_decl
- // list. This field is a member of that oneof.
- optional int32 oneof_index = 9;
-
- // JSON name of this field. The value is set by protocol compiler. If the
- // user has set a "json_name" option on this field, that option's value
- // will be used. Otherwise, it's deduced from the field's name by converting
- // it to camelCase.
- optional string json_name = 10;
-
- optional FieldOptions options = 8;
-
- // If true, this is a proto3 "optional". When a proto3 field is optional, it
- // tracks presence regardless of field type.
- //
- // When proto3_optional is true, this field must be belong to a oneof to
- // signal to old proto3 clients that presence is tracked for this field. This
- // oneof is known as a "synthetic" oneof, and this field must be its sole
- // member (each proto3 optional field gets its own synthetic oneof). Synthetic
- // oneofs exist in the descriptor only, and do not generate any API. Synthetic
- // oneofs must be ordered after all "real" oneofs.
- //
- // For message fields, proto3_optional doesn't create any semantic change,
- // since non-repeated message fields always track presence. However it still
- // indicates the semantic detail of whether the user wrote "optional" or not.
- // This can be useful for round-tripping the .proto file. For consistency we
- // give message fields a synthetic oneof also, even though it is not required
- // to track presence. This is especially important because the parser can't
- // tell if a field is a message or an enum, so it must always create a
- // synthetic oneof.
- //
- // Proto2 optional fields do not set this flag, because they already indicate
- // optional with `LABEL_OPTIONAL`.
- optional bool proto3_optional = 17;
-}
-
-// Describes a oneof.
-message OneofDescriptorProto {
- optional string name = 1;
- optional OneofOptions options = 2;
-}
-
-// Describes an enum type.
-message EnumDescriptorProto {
- optional string name = 1;
-
- repeated EnumValueDescriptorProto value = 2;
-
- optional EnumOptions options = 3;
-
- // Range of reserved numeric values. Reserved values may not be used by
- // entries in the same enum. Reserved ranges may not overlap.
- //
- // Note that this is distinct from DescriptorProto.ReservedRange in that it
- // is inclusive such that it can appropriately represent the entire int32
- // domain.
- message EnumReservedRange {
- optional int32 start = 1; // Inclusive.
- optional int32 end = 2; // Inclusive.
- }
-
- // Range of reserved numeric values. Reserved numeric values may not be used
- // by enum values in the same enum declaration. Reserved ranges may not
- // overlap.
- repeated EnumReservedRange reserved_range = 4;
-
- // Reserved enum value names, which may not be reused. A given name may only
- // be reserved once.
- repeated string reserved_name = 5;
-}
-
-// Describes a value within an enum.
-message EnumValueDescriptorProto {
- optional string name = 1;
- optional int32 number = 2;
-
- optional EnumValueOptions options = 3;
-}
-
-// Describes a service.
-message ServiceDescriptorProto {
- optional string name = 1;
- repeated MethodDescriptorProto method = 2;
-
- optional ServiceOptions options = 3;
-}
-
-// Describes a method of a service.
-message MethodDescriptorProto {
- optional string name = 1;
-
- // Input and output type names. These are resolved in the same way as
- // FieldDescriptorProto.type_name, but must refer to a message type.
- optional string input_type = 2;
- optional string output_type = 3;
-
- optional MethodOptions options = 4;
-
- // Identifies if client streams multiple client messages
- optional bool client_streaming = 5 [default = false];
- // Identifies if server streams multiple server messages
- optional bool server_streaming = 6 [default = false];
-}
-
-
-// ===================================================================
-// Options
-
-// Each of the definitions above may have "options" attached. These are
-// just annotations which may cause code to be generated slightly differently
-// or may contain hints for code that manipulates protocol messages.
-//
-// Clients may define custom options as extensions of the *Options messages.
-// These extensions may not yet be known at parsing time, so the parser cannot
-// store the values in them. Instead it stores them in a field in the *Options
-// message called uninterpreted_option. This field must have the same name
-// across all *Options messages. We then use this field to populate the
-// extensions when we build a descriptor, at which point all protos have been
-// parsed and so all extensions are known.
-//
-// Extension numbers for custom options may be chosen as follows:
-// * For options which will only be used within a single application or
-// organization, or for experimental options, use field numbers 50000
-// through 99999. It is up to you to ensure that you do not use the
-// same number for multiple options.
-// * For options which will be published and used publicly by multiple
-// independent entities, e-mail protobuf-global-extension-registry@google.com
-// to reserve extension numbers. Simply provide your project name (e.g.
-// Objective-C plugin) and your project website (if available) -- there's no
-// need to explain how you intend to use them. Usually you only need one
-// extension number. You can declare multiple options with only one extension
-// number by putting them in a sub-message. See the Custom Options section of
-// the docs for examples:
-// https://developers.google.com/protocol-buffers/docs/proto#options
-// If this turns out to be popular, a web service will be set up
-// to automatically assign option numbers.
-
-message FileOptions {
-
- // Sets the Java package where classes generated from this .proto will be
- // placed. By default, the proto package is used, but this is often
- // inappropriate because proto packages do not normally start with backwards
- // domain names.
- optional string java_package = 1;
-
-
- // Controls the name of the wrapper Java class generated for the .proto file.
- // That class will always contain the .proto file's getDescriptor() method as
- // well as any top-level extensions defined in the .proto file.
- // If java_multiple_files is disabled, then all the other classes from the
- // .proto file will be nested inside the single wrapper outer class.
- optional string java_outer_classname = 8;
-
- // If enabled, then the Java code generator will generate a separate .java
- // file for each top-level message, enum, and service defined in the .proto
- // file. Thus, these types will *not* be nested inside the wrapper class
- // named by java_outer_classname. However, the wrapper class will still be
- // generated to contain the file's getDescriptor() method as well as any
- // top-level extensions defined in the file.
- optional bool java_multiple_files = 10 [default = false];
-
- // This option does nothing.
- optional bool java_generate_equals_and_hash = 20 [deprecated=true];
-
- // If set true, then the Java2 code generator will generate code that
- // throws an exception whenever an attempt is made to assign a non-UTF-8
- // byte sequence to a string field.
- // Message reflection will do the same.
- // However, an extension field still accepts non-UTF-8 byte sequences.
- // This option has no effect on when used with the lite runtime.
- optional bool java_string_check_utf8 = 27 [default = false];
-
-
- // Generated classes can be optimized for speed or code size.
- enum OptimizeMode {
- SPEED = 1; // Generate complete code for parsing, serialization,
- // etc.
- CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
- LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
- }
- optional OptimizeMode optimize_for = 9 [default = SPEED];
-
- // Sets the Go package where structs generated from this .proto will be
- // placed. If omitted, the Go package will be derived from the following:
- // - The basename of the package import path, if provided.
- // - Otherwise, the package statement in the .proto file, if present.
- // - Otherwise, the basename of the .proto file, without extension.
- optional string go_package = 11;
-
-
-
-
- // Should generic services be generated in each language? "Generic" services
- // are not specific to any particular RPC system. They are generated by the
- // main code generators in each language (without additional plugins).
- // Generic services were the only kind of service generation supported by
- // early versions of google.protobuf.
- //
- // Generic services are now considered deprecated in favor of using plugins
- // that generate code specific to your particular RPC system. Therefore,
- // these default to false. Old code which depends on generic services should
- // explicitly set them to true.
- optional bool cc_generic_services = 16 [default = false];
- optional bool java_generic_services = 17 [default = false];
- optional bool py_generic_services = 18 [default = false];
- optional bool php_generic_services = 42 [default = false];
-
- // Is this file deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for everything in the file, or it will be completely ignored; in the very
- // least, this is a formalization for deprecating files.
- optional bool deprecated = 23 [default = false];
-
- // Enables the use of arenas for the proto messages in this file. This applies
- // only to generated classes for C++.
- optional bool cc_enable_arenas = 31 [default = true];
-
-
- // Sets the objective c class prefix which is prepended to all objective c
- // generated classes from this .proto. There is no default.
- optional string objc_class_prefix = 36;
-
- // Namespace for generated classes; defaults to the package.
- optional string csharp_namespace = 37;
-
- // By default Swift generators will take the proto package and CamelCase it
- // replacing '.' with underscore and use that to prefix the types/symbols
- // defined. When this options is provided, they will use this value instead
- // to prefix the types/symbols defined.
- optional string swift_prefix = 39;
-
- // Sets the php class prefix which is prepended to all php generated classes
- // from this .proto. Default is empty.
- optional string php_class_prefix = 40;
-
- // Use this option to change the namespace of php generated classes. Default
- // is empty. When this option is empty, the package name will be used for
- // determining the namespace.
- optional string php_namespace = 41;
-
- // Use this option to change the namespace of php generated metadata classes.
- // Default is empty. When this option is empty, the proto file name will be
- // used for determining the namespace.
- optional string php_metadata_namespace = 44;
-
- // Use this option to change the package of ruby generated classes. Default
- // is empty. When this option is not set, the package name will be used for
- // determining the ruby package.
- optional string ruby_package = 45;
-
-
- // The parser stores options it doesn't recognize here.
- // See the documentation for the "Options" section above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message.
- // See the documentation for the "Options" section above.
- extensions 1000 to max;
-
- reserved 38;
-}
-
-message MessageOptions {
- // Set true to use the old proto1 MessageSet wire format for extensions.
- // This is provided for backwards-compatibility with the MessageSet wire
- // format. You should not use this for any other reason: It's less
- // efficient, has fewer features, and is more complicated.
- //
- // The message must be defined exactly as follows:
- // message Foo {
- // option message_set_wire_format = true;
- // extensions 4 to max;
- // }
- // Note that the message cannot have any defined fields; MessageSets only
- // have extensions.
- //
- // All extensions of your type must be singular messages; e.g. they cannot
- // be int32s, enums, or repeated messages.
- //
- // Because this is an option, the above two restrictions are not enforced by
- // the protocol compiler.
- optional bool message_set_wire_format = 1 [default = false];
-
- // Disables the generation of the standard "descriptor()" accessor, which can
- // conflict with a field of the same name. This is meant to make migration
- // from proto1 easier; new code should avoid fields named "descriptor".
- optional bool no_standard_descriptor_accessor = 2 [default = false];
-
- // Is this message deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the message, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating messages.
- optional bool deprecated = 3 [default = false];
-
- reserved 4, 5, 6;
-
- // Whether the message is an automatically generated map entry type for the
- // maps field.
- //
- // For maps fields:
- // map<KeyType, ValueType> map_field = 1;
- // The parsed descriptor looks like:
- // message MapFieldEntry {
- // option map_entry = true;
- // optional KeyType key = 1;
- // optional ValueType value = 2;
- // }
- // repeated MapFieldEntry map_field = 1;
- //
- // Implementations may choose not to generate the map_entry=true message, but
- // use a native map in the target language to hold the keys and values.
- // The reflection APIs in such implementations still need to work as
- // if the field is a repeated message field.
- //
- // NOTE: Do not set the option in .proto files. Always use the maps syntax
- // instead. The option should only be implicitly set by the proto compiler
- // parser.
- optional bool map_entry = 7;
-
- reserved 8; // javalite_serializable
- reserved 9; // javanano_as_lite
-
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-message FieldOptions {
- // The ctype option instructs the C++ code generator to use a different
- // representation of the field than it normally would. See the specific
- // options below. This option is not yet implemented in the open source
- // release -- sorry, we'll try to include it in a future version!
- optional CType ctype = 1 [default = STRING];
- enum CType {
- // Default mode.
- STRING = 0;
-
- CORD = 1;
-
- STRING_PIECE = 2;
- }
- // The packed option can be enabled for repeated primitive fields to enable
- // a more efficient representation on the wire. Rather than repeatedly
- // writing the tag and type for each element, the entire array is encoded as
- // a single length-delimited blob. In proto3, only explicit setting it to
- // false will avoid using packed encoding.
- optional bool packed = 2;
-
- // The jstype option determines the JavaScript type used for values of the
- // field. The option is permitted only for 64 bit integral and fixed types
- // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
- // is represented as JavaScript string, which avoids loss of precision that
- // can happen when a large value is converted to a floating point JavaScript.
- // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
- // use the JavaScript "number" type. The behavior of the default option
- // JS_NORMAL is implementation dependent.
- //
- // This option is an enum to permit additional types to be added, e.g.
- // goog.math.Integer.
- optional JSType jstype = 6 [default = JS_NORMAL];
- enum JSType {
- // Use the default type.
- JS_NORMAL = 0;
-
- // Use JavaScript strings.
- JS_STRING = 1;
-
- // Use JavaScript numbers.
- JS_NUMBER = 2;
- }
-
- // Should this field be parsed lazily? Lazy applies only to message-type
- // fields. It means that when the outer message is initially parsed, the
- // inner message's contents will not be parsed but instead stored in encoded
- // form. The inner message will actually be parsed when it is first accessed.
- //
- // This is only a hint. Implementations are free to choose whether to use
- // eager or lazy parsing regardless of the value of this option. However,
- // setting this option true suggests that the protocol author believes that
- // using lazy parsing on this field is worth the additional bookkeeping
- // overhead typically needed to implement it.
- //
- // This option does not affect the public interface of any generated code;
- // all method signatures remain the same. Furthermore, thread-safety of the
- // interface is not affected by this option; const methods remain safe to
- // call from multiple threads concurrently, while non-const methods continue
- // to require exclusive access.
- //
- //
- // Note that implementations may choose not to check required fields within
- // a lazy sub-message. That is, calling IsInitialized() on the outer message
- // may return true even if the inner message has missing required fields.
- // This is necessary because otherwise the inner message would have to be
- // parsed in order to perform the check, defeating the purpose of lazy
- // parsing. An implementation which chooses not to check required fields
- // must be consistent about it. That is, for any particular sub-message, the
- // implementation must either *always* check its required fields, or *never*
- // check its required fields, regardless of whether or not the message has
- // been parsed.
- //
- // As of 2021, lazy does no correctness checks on the byte stream during
- // parsing. This may lead to crashes if and when an invalid byte stream is
- // finally parsed upon access.
- //
- // TODO(b/211906113): Enable validation on lazy fields.
- optional bool lazy = 5 [default = false];
-
- // unverified_lazy does no correctness checks on the byte stream. This should
- // only be used where lazy with verification is prohibitive for performance
- // reasons.
- optional bool unverified_lazy = 15 [default = false];
-
- // Is this field deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for accessors, or it will be completely ignored; in the very least, this
- // is a formalization for deprecating fields.
- optional bool deprecated = 3 [default = false];
-
- // For Google-internal migration only. Do not use.
- optional bool weak = 10 [default = false];
-
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-
- reserved 4; // removed jtype
-}
-
-message OneofOptions {
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-message EnumOptions {
-
- // Set this option to true to allow mapping different tag names to the same
- // value.
- optional bool allow_alias = 2;
-
- // Is this enum deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the enum, or it will be completely ignored; in the very least, this
- // is a formalization for deprecating enums.
- optional bool deprecated = 3 [default = false];
-
- reserved 5; // javanano_as_lite
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-message EnumValueOptions {
- // Is this enum value deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the enum value, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating enum values.
- optional bool deprecated = 1 [default = false];
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-message ServiceOptions {
-
- // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
- // framework. We apologize for hoarding these numbers to ourselves, but
- // we were already using them long before we decided to release Protocol
- // Buffers.
-
- // Is this service deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the service, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating services.
- optional bool deprecated = 33 [default = false];
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-message MethodOptions {
-
- // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
- // framework. We apologize for hoarding these numbers to ourselves, but
- // we were already using them long before we decided to release Protocol
- // Buffers.
-
- // Is this method deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the method, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating methods.
- optional bool deprecated = 33 [default = false];
-
- // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
- // or neither? HTTP based RPC implementation may choose GET verb for safe
- // methods, and PUT verb for idempotent methods instead of the default POST.
- enum IdempotencyLevel {
- IDEMPOTENCY_UNKNOWN = 0;
- NO_SIDE_EFFECTS = 1; // implies idempotent
- IDEMPOTENT = 2; // idempotent, but may have side effects
- }
- optional IdempotencyLevel idempotency_level = 34
- [default = IDEMPOTENCY_UNKNOWN];
-
- // The parser stores options it doesn't recognize here. See above.
- repeated UninterpretedOption uninterpreted_option = 999;
-
- // Clients can define custom options in extensions of this message. See above.
- extensions 1000 to max;
-}
-
-
-// A message representing a option the parser does not recognize. This only
-// appears in options protos created by the compiler::Parser class.
-// DescriptorPool resolves these when building Descriptor objects. Therefore,
-// options protos in descriptor objects (e.g. returned by Descriptor::options(),
-// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
-// in them.
-message UninterpretedOption {
- // The name of the uninterpreted option. Each string represents a segment in
- // a dot-separated name. is_extension is true iff a segment represents an
- // extension (denoted with parentheses in options specs in .proto files).
- // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
- // "foo.(bar.baz).moo".
- message NamePart {
- required string name_part = 1;
- required bool is_extension = 2;
- }
- repeated NamePart name = 2;
-
- // The value of the uninterpreted option, in whatever type the tokenizer
- // identified it as during parsing. Exactly one of these should be set.
- optional string identifier_value = 3;
- optional uint64 positive_int_value = 4;
- optional int64 negative_int_value = 5;
- optional double double_value = 6;
- optional bytes string_value = 7;
- optional string aggregate_value = 8;
-}
-
-// ===================================================================
-// Optional source code info
-
-// Encapsulates information about the original source file from which a
-// FileDescriptorProto was generated.
-message SourceCodeInfo {
- // A Location identifies a piece of source code in a .proto file which
- // corresponds to a particular definition. This information is intended
- // to be useful to IDEs, code indexers, documentation generators, and similar
- // tools.
- //
- // For example, say we have a file like:
- // message Foo {
- // optional string foo = 1;
- // }
- // Let's look at just the field definition:
- // optional string foo = 1;
- // ^ ^^ ^^ ^ ^^^
- // a bc de f ghi
- // We have the following locations:
- // span path represents
- // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
- // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
- // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
- // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
- // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
- //
- // Notes:
- // - A location may refer to a repeated field itself (i.e. not to any
- // particular index within it). This is used whenever a set of elements are
- // logically enclosed in a single code segment. For example, an entire
- // extend block (possibly containing multiple extension definitions) will
- // have an outer location whose path refers to the "extensions" repeated
- // field without an index.
- // - Multiple locations may have the same path. This happens when a single
- // logical declaration is spread out across multiple places. The most
- // obvious example is the "extend" block again -- there may be multiple
- // extend blocks in the same scope, each of which will have the same path.
- // - A location's span is not always a subset of its parent's span. For
- // example, the "extendee" of an extension declaration appears at the
- // beginning of the "extend" block and is shared by all extensions within
- // the block.
- // - Just because a location's span is a subset of some other location's span
- // does not mean that it is a descendant. For example, a "group" defines
- // both a type and a field in a single declaration. Thus, the locations
- // corresponding to the type and field and their components will overlap.
- // - Code which tries to interpret locations should probably be designed to
- // ignore those that it doesn't understand, as more types of locations could
- // be recorded in the future.
- repeated Location location = 1;
- message Location {
- // Identifies which part of the FileDescriptorProto was defined at this
- // location.
- //
- // Each element is a field number or an index. They form a path from
- // the root FileDescriptorProto to the place where the definition occurs.
- // For example, this path:
- // [ 4, 3, 2, 7, 1 ]
- // refers to:
- // file.message_type(3) // 4, 3
- // .field(7) // 2, 7
- // .name() // 1
- // This is because FileDescriptorProto.message_type has field number 4:
- // repeated DescriptorProto message_type = 4;
- // and DescriptorProto.field has field number 2:
- // repeated FieldDescriptorProto field = 2;
- // and FieldDescriptorProto.name has field number 1:
- // optional string name = 1;
- //
- // Thus, the above path gives the location of a field name. If we removed
- // the last element:
- // [ 4, 3, 2, 7 ]
- // this path refers to the whole field declaration (from the beginning
- // of the label to the terminating semicolon).
- repeated int32 path = 1 [packed = true];
-
- // Always has exactly three or four elements: start line, start column,
- // end line (optional, otherwise assumed same as start line), end column.
- // These are packed into a single field for efficiency. Note that line
- // and column numbers are zero-based -- typically you will want to add
- // 1 to each before displaying to a user.
- repeated int32 span = 2 [packed = true];
-
- // If this SourceCodeInfo represents a complete declaration, these are any
- // comments appearing before and after the declaration which appear to be
- // attached to the declaration.
- //
- // A series of line comments appearing on consecutive lines, with no other
- // tokens appearing on those lines, will be treated as a single comment.
- //
- // leading_detached_comments will keep paragraphs of comments that appear
- // before (but not connected to) the current element. Each paragraph,
- // separated by empty lines, will be one comment element in the repeated
- // field.
- //
- // Only the comment content is provided; comment markers (e.g. //) are
- // stripped out. For block comments, leading whitespace and an asterisk
- // will be stripped from the beginning of each line other than the first.
- // Newlines are included in the output.
- //
- // Examples:
- //
- // optional int32 foo = 1; // Comment attached to foo.
- // // Comment attached to bar.
- // optional int32 bar = 2;
- //
- // optional string baz = 3;
- // // Comment attached to baz.
- // // Another line attached to baz.
- //
- // // Comment attached to moo.
- // //
- // // Another line attached to moo.
- // optional double moo = 4;
- //
- // // Detached comment for corge. This is not leading or trailing comments
- // // to moo or corge because there are blank lines separating it from
- // // both.
- //
- // // Detached comment for corge paragraph 2.
- //
- // optional string corge = 5;
- // /* Block comment attached
- // * to corge. Leading asterisks
- // * will be removed. */
- // /* Block comment attached to
- // * grault. */
- // optional int32 grault = 6;
- //
- // // ignored detached comments.
- optional string leading_comments = 3;
- optional string trailing_comments = 4;
- repeated string leading_detached_comments = 6;
- }
-}
-
-// Describes the relationship between generated code and its original source
-// file. A GeneratedCodeInfo message is associated with only one generated
-// source file, but may contain references to different source .proto files.
-message GeneratedCodeInfo {
- // An Annotation connects some span of text in generated code to an element
- // of its generating .proto file.
- repeated Annotation annotation = 1;
- message Annotation {
- // Identifies the element in the original source .proto file. This field
- // is formatted the same as SourceCodeInfo.Location.path.
- repeated int32 path = 1 [packed = true];
-
- // Identifies the filesystem path to the original source .proto.
- optional string source_file = 2;
-
- // Identifies the starting offset in bytes in the generated code
- // that relates to the identified object.
- optional int32 begin = 3;
-
- // Identifies the ending offset in bytes in the generated code that
- // relates to the identified offset. The end offset should be one past
- // the last relevant byte (so the length of the text = end - begin).
- optional int32 end = 4;
- }
-}
diff --git a/include/google/protobuf/descriptor_database.h b/include/google/protobuf/descriptor_database.h
deleted file mode 100644
index f4f06bbfa6..0000000000
--- a/include/google/protobuf/descriptor_database.h
+++ /dev/null
@@ -1,398 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Interface for manipulating databases of descriptors.
-
-#ifndef GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__
-#define GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__
-
-
-#include <map>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/descriptor.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-// Defined in this file.
-class DescriptorDatabase;
-class SimpleDescriptorDatabase;
-class EncodedDescriptorDatabase;
-class DescriptorPoolDatabase;
-class MergedDescriptorDatabase;
-
-// Abstract interface for a database of descriptors.
-//
-// This is useful if you want to create a DescriptorPool which loads
-// descriptors on-demand from some sort of large database. If the database
-// is large, it may be inefficient to enumerate every .proto file inside it
-// calling DescriptorPool::BuildFile() for each one. Instead, a DescriptorPool
-// can be created which wraps a DescriptorDatabase and only builds particular
-// descriptors when they are needed.
-class PROTOBUF_EXPORT DescriptorDatabase {
- public:
- inline DescriptorDatabase() {}
- virtual ~DescriptorDatabase();
-
- // Find a file by file name. Fills in in *output and returns true if found.
- // Otherwise, returns false, leaving the contents of *output undefined.
- virtual bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) = 0;
-
- // Find the file that declares the given fully-qualified symbol name.
- // If found, fills in *output and returns true, otherwise returns false
- // and leaves *output undefined.
- virtual bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) = 0;
-
- // Find the file which defines an extension extending the given message type
- // with the given field number. If found, fills in *output and returns true,
- // otherwise returns false and leaves *output undefined. containing_type
- // must be a fully-qualified type name.
- virtual bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) = 0;
-
- // Finds the tag numbers used by all known extensions of
- // extendee_type, and appends them to output in an undefined
- // order. This method is best-effort: it's not guaranteed that the
- // database will find all extensions, and it's not guaranteed that
- // FindFileContainingExtension will return true on all of the found
- // numbers. Returns true if the search was successful, otherwise
- // returns false and leaves output unchanged.
- //
- // This method has a default implementation that always returns
- // false.
- virtual bool FindAllExtensionNumbers(const std::string& /* extendee_type */,
- std::vector<int>* /* output */) {
- return false;
- }
-
-
- // Finds the file names and appends them to the output in an
- // undefined order. This method is best-effort: it's not guaranteed that the
- // database will find all files. Returns true if the database supports
- // searching all file names, otherwise returns false and leaves output
- // unchanged.
- //
- // This method has a default implementation that always returns
- // false.
- virtual bool FindAllFileNames(std::vector<std::string>* /*output*/) {
- return false;
- }
-
- // Finds the package names and appends them to the output in an
- // undefined order. This method is best-effort: it's not guaranteed that the
- // database will find all packages. Returns true if the database supports
- // searching all package names, otherwise returns false and leaves output
- // unchanged.
- bool FindAllPackageNames(std::vector<std::string>* output);
-
- // Finds the message names and appends them to the output in an
- // undefined order. This method is best-effort: it's not guaranteed that the
- // database will find all messages. Returns true if the database supports
- // searching all message names, otherwise returns false and leaves output
- // unchanged.
- bool FindAllMessageNames(std::vector<std::string>* output);
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DescriptorDatabase);
-};
-
-// A DescriptorDatabase into which you can insert files manually.
-//
-// FindFileContainingSymbol() is fully-implemented. When you add a file, its
-// symbols will be indexed for this purpose. Note that the implementation
-// may return false positives, but only if it isn't possible for the symbol
-// to be defined in any other file. In particular, if a file defines a symbol
-// "Foo", then searching for "Foo.[anything]" will match that file. This way,
-// the database does not need to aggressively index all children of a symbol.
-//
-// FindFileContainingExtension() is mostly-implemented. It works if and only
-// if the original FieldDescriptorProto defining the extension has a
-// fully-qualified type name in its "extendee" field (i.e. starts with a '.').
-// If the extendee is a relative name, SimpleDescriptorDatabase will not
-// attempt to resolve the type, so it will not know what type the extension is
-// extending. Therefore, calling FindFileContainingExtension() with the
-// extension's containing type will never actually find that extension. Note
-// that this is an unlikely problem, as all FileDescriptorProtos created by the
-// protocol compiler (as well as ones created by calling
-// FileDescriptor::CopyTo()) will always use fully-qualified names for all
-// types. You only need to worry if you are constructing FileDescriptorProtos
-// yourself, or are calling compiler::Parser directly.
-class PROTOBUF_EXPORT SimpleDescriptorDatabase : public DescriptorDatabase {
- public:
- SimpleDescriptorDatabase();
- ~SimpleDescriptorDatabase() override;
-
- // Adds the FileDescriptorProto to the database, making a copy. The object
- // can be deleted after Add() returns. Returns false if the file conflicted
- // with a file already in the database, in which case an error will have
- // been written to GOOGLE_LOG(ERROR).
- bool Add(const FileDescriptorProto& file);
-
- // Adds the FileDescriptorProto to the database and takes ownership of it.
- bool AddAndOwn(const FileDescriptorProto* file);
-
- // implements DescriptorDatabase -----------------------------------
- bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) override;
- bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) override;
- bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) override;
- bool FindAllExtensionNumbers(const std::string& extendee_type,
- std::vector<int>* output) override;
-
- bool FindAllFileNames(std::vector<std::string>* output) override;
-
- private:
- // An index mapping file names, symbol names, and extension numbers to
- // some sort of values.
- template <typename Value>
- class DescriptorIndex {
- public:
- // Helpers to recursively add particular descriptors and all their contents
- // to the index.
- bool AddFile(const FileDescriptorProto& file, Value value);
- bool AddSymbol(const std::string& name, Value value);
- bool AddNestedExtensions(const std::string& filename,
- const DescriptorProto& message_type, Value value);
- bool AddExtension(const std::string& filename,
- const FieldDescriptorProto& field, Value value);
-
- Value FindFile(const std::string& filename);
- Value FindSymbol(const std::string& name);
- Value FindExtension(const std::string& containing_type, int field_number);
- bool FindAllExtensionNumbers(const std::string& containing_type,
- std::vector<int>* output);
- void FindAllFileNames(std::vector<std::string>* output);
-
- private:
- std::map<std::string, Value> by_name_;
- std::map<std::string, Value> by_symbol_;
- std::map<std::pair<std::string, int>, Value> by_extension_;
-
- // Invariant: The by_symbol_ map does not contain any symbols which are
- // prefixes of other symbols in the map. For example, "foo.bar" is a
- // prefix of "foo.bar.baz" (but is not a prefix of "foo.barbaz").
- //
- // This invariant is important because it means that given a symbol name,
- // we can find a key in the map which is a prefix of the symbol in O(lg n)
- // time, and we know that there is at most one such key.
- //
- // The prefix lookup algorithm works like so:
- // 1) Find the last key in the map which is less than or equal to the
- // search key.
- // 2) If the found key is a prefix of the search key, then return it.
- // Otherwise, there is no match.
- //
- // I am sure this algorithm has been described elsewhere, but since I
- // wasn't able to find it quickly I will instead prove that it works
- // myself. The key to the algorithm is that if a match exists, step (1)
- // will find it. Proof:
- // 1) Define the "search key" to be the key we are looking for, the "found
- // key" to be the key found in step (1), and the "match key" to be the
- // key which actually matches the search key (i.e. the key we're trying
- // to find).
- // 2) The found key must be less than or equal to the search key by
- // definition.
- // 3) The match key must also be less than or equal to the search key
- // (because it is a prefix).
- // 4) The match key cannot be greater than the found key, because if it
- // were, then step (1) of the algorithm would have returned the match
- // key instead (since it finds the *greatest* key which is less than or
- // equal to the search key).
- // 5) Therefore, the found key must be between the match key and the search
- // key, inclusive.
- // 6) Since the search key must be a sub-symbol of the match key, if it is
- // not equal to the match key, then search_key[match_key.size()] must
- // be '.'.
- // 7) Since '.' sorts before any other character that is valid in a symbol
- // name, then if the found key is not equal to the match key, then
- // found_key[match_key.size()] must also be '.', because any other value
- // would make it sort after the search key.
- // 8) Therefore, if the found key is not equal to the match key, then the
- // found key must be a sub-symbol of the match key. However, this would
- // contradict our map invariant which says that no symbol in the map is
- // a sub-symbol of any other.
- // 9) Therefore, the found key must match the match key.
- //
- // The above proof assumes the match key exists. In the case that the
- // match key does not exist, then step (1) will return some other symbol.
- // That symbol cannot be a super-symbol of the search key since if it were,
- // then it would be a match, and we're assuming the match key doesn't exist.
- // Therefore, step 2 will correctly return no match.
- };
-
- DescriptorIndex<const FileDescriptorProto*> index_;
- std::vector<std::unique_ptr<const FileDescriptorProto>> files_to_delete_;
-
- // If file is non-nullptr, copy it into *output and return true, otherwise
- // return false.
- bool MaybeCopy(const FileDescriptorProto* file, FileDescriptorProto* output);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(SimpleDescriptorDatabase);
-};
-
-// Very similar to SimpleDescriptorDatabase, but stores all the descriptors
-// as raw bytes and generally tries to use as little memory as possible.
-//
-// The same caveats regarding FindFileContainingExtension() apply as with
-// SimpleDescriptorDatabase.
-class PROTOBUF_EXPORT EncodedDescriptorDatabase : public DescriptorDatabase {
- public:
- EncodedDescriptorDatabase();
- ~EncodedDescriptorDatabase() override;
-
- // Adds the FileDescriptorProto to the database. The descriptor is provided
- // in encoded form. The database does not make a copy of the bytes, nor
- // does it take ownership; it's up to the caller to make sure the bytes
- // remain valid for the life of the database. Returns false and logs an error
- // if the bytes are not a valid FileDescriptorProto or if the file conflicted
- // with a file already in the database.
- bool Add(const void* encoded_file_descriptor, int size);
-
- // Like Add(), but makes a copy of the data, so that the caller does not
- // need to keep it around.
- bool AddCopy(const void* encoded_file_descriptor, int size);
-
- // Like FindFileContainingSymbol but returns only the name of the file.
- bool FindNameOfFileContainingSymbol(const std::string& symbol_name,
- std::string* output);
-
- // implements DescriptorDatabase -----------------------------------
- bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) override;
- bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) override;
- bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) override;
- bool FindAllExtensionNumbers(const std::string& extendee_type,
- std::vector<int>* output) override;
- bool FindAllFileNames(std::vector<std::string>* output) override;
-
- private:
- class DescriptorIndex;
- // Keep DescriptorIndex by pointer to hide the implementation to keep a
- // cleaner header.
- std::unique_ptr<DescriptorIndex> index_;
- std::vector<void*> files_to_delete_;
-
- // If encoded_file.first is non-nullptr, parse the data into *output and
- // return true, otherwise return false.
- bool MaybeParse(std::pair<const void*, int> encoded_file,
- FileDescriptorProto* output);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EncodedDescriptorDatabase);
-};
-
-// A DescriptorDatabase that fetches files from a given pool.
-class PROTOBUF_EXPORT DescriptorPoolDatabase : public DescriptorDatabase {
- public:
- explicit DescriptorPoolDatabase(const DescriptorPool& pool);
- ~DescriptorPoolDatabase() override;
-
- // implements DescriptorDatabase -----------------------------------
- bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) override;
- bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) override;
- bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) override;
- bool FindAllExtensionNumbers(const std::string& extendee_type,
- std::vector<int>* output) override;
-
- private:
- const DescriptorPool& pool_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DescriptorPoolDatabase);
-};
-
-// A DescriptorDatabase that wraps two or more others. It first searches the
-// first database and, if that fails, tries the second, and so on.
-class PROTOBUF_EXPORT MergedDescriptorDatabase : public DescriptorDatabase {
- public:
- // Merge just two databases. The sources remain property of the caller.
- MergedDescriptorDatabase(DescriptorDatabase* source1,
- DescriptorDatabase* source2);
- // Merge more than two databases. The sources remain property of the caller.
- // The vector may be deleted after the constructor returns but the
- // DescriptorDatabases need to stick around.
- explicit MergedDescriptorDatabase(
- const std::vector<DescriptorDatabase*>& sources);
- ~MergedDescriptorDatabase() override;
-
- // implements DescriptorDatabase -----------------------------------
- bool FindFileByName(const std::string& filename,
- FileDescriptorProto* output) override;
- bool FindFileContainingSymbol(const std::string& symbol_name,
- FileDescriptorProto* output) override;
- bool FindFileContainingExtension(const std::string& containing_type,
- int field_number,
- FileDescriptorProto* output) override;
- // Merges the results of calling all databases. Returns true iff any
- // of the databases returned true.
- bool FindAllExtensionNumbers(const std::string& extendee_type,
- std::vector<int>* output) override;
-
-
- // This function is best-effort. Returns true if at least one underlying
- // DescriptorDatabase returns true.
- bool FindAllFileNames(std::vector<std::string>* output) override;
-
- private:
- std::vector<DescriptorDatabase*> sources_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MergedDescriptorDatabase);
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_DESCRIPTOR_DATABASE_H__
diff --git a/include/google/protobuf/duration.pb.h b/include/google/protobuf/duration.pb.h
deleted file mode 100644
index 1e4a3e18f8..0000000000
--- a/include/google/protobuf/duration.pb.h
+++ /dev/null
@@ -1,278 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/duration.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fduration_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fduration_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fduration_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fduration_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fduration_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Duration;
-struct DurationDefaultTypeInternal;
-PROTOBUF_EXPORT extern DurationDefaultTypeInternal _Duration_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Duration* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Duration>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT Duration final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Duration) */ {
- public:
- inline Duration() : Duration(nullptr) {}
- ~Duration() override;
- explicit PROTOBUF_CONSTEXPR Duration(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Duration(const Duration& from);
- Duration(Duration&& from) noexcept
- : Duration() {
- *this = ::std::move(from);
- }
-
- inline Duration& operator=(const Duration& from) {
- CopyFrom(from);
- return *this;
- }
- inline Duration& operator=(Duration&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Duration& default_instance() {
- return *internal_default_instance();
- }
- static inline const Duration* internal_default_instance() {
- return reinterpret_cast<const Duration*>(
- &_Duration_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Duration& a, Duration& b) {
- a.Swap(&b);
- }
- inline void Swap(Duration* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Duration* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Duration* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Duration>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Duration& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Duration& from) {
- Duration::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Duration* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Duration";
- }
- protected:
- explicit Duration(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kSecondsFieldNumber = 1,
- kNanosFieldNumber = 2,
- };
- // int64 seconds = 1;
- void clear_seconds();
- int64_t seconds() const;
- void set_seconds(int64_t value);
- private:
- int64_t _internal_seconds() const;
- void _internal_set_seconds(int64_t value);
- public:
-
- // int32 nanos = 2;
- void clear_nanos();
- int32_t nanos() const;
- void set_nanos(int32_t value);
- private:
- int32_t _internal_nanos() const;
- void _internal_set_nanos(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Duration)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- int64_t seconds_;
- int32_t nanos_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fduration_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Duration
-
-// int64 seconds = 1;
-inline void Duration::clear_seconds() {
- _impl_.seconds_ = int64_t{0};
-}
-inline int64_t Duration::_internal_seconds() const {
- return _impl_.seconds_;
-}
-inline int64_t Duration::seconds() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Duration.seconds)
- return _internal_seconds();
-}
-inline void Duration::_internal_set_seconds(int64_t value) {
-
- _impl_.seconds_ = value;
-}
-inline void Duration::set_seconds(int64_t value) {
- _internal_set_seconds(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Duration.seconds)
-}
-
-// int32 nanos = 2;
-inline void Duration::clear_nanos() {
- _impl_.nanos_ = 0;
-}
-inline int32_t Duration::_internal_nanos() const {
- return _impl_.nanos_;
-}
-inline int32_t Duration::nanos() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Duration.nanos)
- return _internal_nanos();
-}
-inline void Duration::_internal_set_nanos(int32_t value) {
-
- _impl_.nanos_ = value;
-}
-inline void Duration::set_nanos(int32_t value) {
- _internal_set_nanos(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Duration.nanos)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fduration_2eproto
diff --git a/include/google/protobuf/duration.proto b/include/google/protobuf/duration.proto
deleted file mode 100644
index 81c3e369fd..0000000000
--- a/include/google/protobuf/duration.proto
+++ /dev/null
@@ -1,116 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/protobuf/types/known/durationpb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "DurationProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-// Timestamp start = ...;
-// Timestamp end = ...;
-// Duration duration = ...;
-//
-// duration.seconds = end.seconds - start.seconds;
-// duration.nanos = end.nanos - start.nanos;
-//
-// if (duration.seconds < 0 && duration.nanos > 0) {
-// duration.seconds += 1;
-// duration.nanos -= 1000000000;
-// } else if (duration.seconds > 0 && duration.nanos < 0) {
-// duration.seconds -= 1;
-// duration.nanos += 1000000000;
-// }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-// Timestamp start = ...;
-// Duration duration = ...;
-// Timestamp end = ...;
-//
-// end.seconds = start.seconds + duration.seconds;
-// end.nanos = start.nanos + duration.nanos;
-//
-// if (end.nanos < 0) {
-// end.seconds -= 1;
-// end.nanos += 1000000000;
-// } else if (end.nanos >= 1000000000) {
-// end.seconds += 1;
-// end.nanos -= 1000000000;
-// }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-// td = datetime.timedelta(days=3, minutes=10)
-// duration = Duration()
-// duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-message Duration {
- // Signed seconds of the span of time. Must be from -315,576,000,000
- // to +315,576,000,000 inclusive. Note: these bounds are computed from:
- // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
- int64 seconds = 1;
-
- // Signed fractions of a second at nanosecond resolution of the span
- // of time. Durations less than one second are represented with a 0
- // `seconds` field and a positive or negative `nanos` field. For durations
- // of one second or more, a non-zero value for the `nanos` field must be
- // of the same sign as the `seconds` field. Must be from -999,999,999
- // to +999,999,999 inclusive.
- int32 nanos = 2;
-}
diff --git a/include/google/protobuf/dynamic_message.h b/include/google/protobuf/dynamic_message.h
deleted file mode 100644
index 6fa64259ee..0000000000
--- a/include/google/protobuf/dynamic_message.h
+++ /dev/null
@@ -1,227 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Defines an implementation of Message which can emulate types which are not
-// known at compile-time.
-
-#ifndef GOOGLE_PROTOBUF_DYNAMIC_MESSAGE_H__
-#define GOOGLE_PROTOBUF_DYNAMIC_MESSAGE_H__
-
-
-#include <algorithm>
-#include <memory>
-#include <unordered_map>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/mutex.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/reflection.h>
-#include <google/protobuf/repeated_field.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-// Defined in other files.
-class Descriptor; // descriptor.h
-class DescriptorPool; // descriptor.h
-
-// Constructs implementations of Message which can emulate types which are not
-// known at compile-time.
-//
-// Sometimes you want to be able to manipulate protocol types that you don't
-// know about at compile time. It would be nice to be able to construct
-// a Message object which implements the message type given by any arbitrary
-// Descriptor. DynamicMessage provides this.
-//
-// As it turns out, a DynamicMessage needs to construct extra
-// information about its type in order to operate. Most of this information
-// can be shared between all DynamicMessages of the same type. But, caching
-// this information in some sort of global map would be a bad idea, since
-// the cached information for a particular descriptor could outlive the
-// descriptor itself. To avoid this problem, DynamicMessageFactory
-// encapsulates this "cache". All DynamicMessages of the same type created
-// from the same factory will share the same support data. Any Descriptors
-// used with a particular factory must outlive the factory.
-class PROTOBUF_EXPORT DynamicMessageFactory : public MessageFactory {
- public:
- // Construct a DynamicMessageFactory that will search for extensions in
- // the DescriptorPool in which the extendee is defined.
- DynamicMessageFactory();
-
- // Construct a DynamicMessageFactory that will search for extensions in
- // the given DescriptorPool.
- //
- // DEPRECATED: Use CodedInputStream::SetExtensionRegistry() to tell the
- // parser to look for extensions in an alternate pool. However, note that
- // this is almost never what you want to do. Almost all users should use
- // the zero-arg constructor.
- DynamicMessageFactory(const DescriptorPool* pool);
-
- ~DynamicMessageFactory() override;
-
- // Call this to tell the DynamicMessageFactory that if it is given a
- // Descriptor d for which:
- // d->file()->pool() == DescriptorPool::generated_pool(),
- // then it should delegate to MessageFactory::generated_factory() instead
- // of constructing a dynamic implementation of the message. In theory there
- // is no down side to doing this, so it may become the default in the future.
- void SetDelegateToGeneratedFactory(bool enable) {
- delegate_to_generated_factory_ = enable;
- }
-
- // implements MessageFactory ---------------------------------------
-
- // Given a Descriptor, constructs the default (prototype) Message of that
- // type. You can then call that message's New() method to construct a
- // mutable message of that type.
- //
- // Calling this method twice with the same Descriptor returns the same
- // object. The returned object remains property of the factory and will
- // be destroyed when the factory is destroyed. Also, any objects created
- // by calling the prototype's New() method share some data with the
- // prototype, so these must be destroyed before the DynamicMessageFactory
- // is destroyed.
- //
- // The given descriptor must outlive the returned message, and hence must
- // outlive the DynamicMessageFactory.
- //
- // The method is thread-safe.
- const Message* GetPrototype(const Descriptor* type) override;
-
- private:
- const DescriptorPool* pool_;
- bool delegate_to_generated_factory_;
-
- struct TypeInfo;
- std::unordered_map<const Descriptor*, const TypeInfo*> prototypes_;
- mutable internal::WrappedMutex prototypes_mutex_;
-
- friend class DynamicMessage;
- const Message* GetPrototypeNoLock(const Descriptor* type);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DynamicMessageFactory);
-};
-
-// Helper for computing a sorted list of map entries via reflection.
-class PROTOBUF_EXPORT DynamicMapSorter {
- public:
- static std::vector<const Message*> Sort(const Message& message, int map_size,
- const Reflection* reflection,
- const FieldDescriptor* field) {
- std::vector<const Message*> result;
- result.reserve(map_size);
- RepeatedFieldRef<Message> map_field =
- reflection->GetRepeatedFieldRef<Message>(message, field);
- for (auto it = map_field.begin(); it != map_field.end(); ++it) {
- result.push_back(&*it);
- }
- MapEntryMessageComparator comparator(field->message_type());
- std::stable_sort(result.begin(), result.end(), comparator);
- // Complain if the keys aren't in ascending order.
-#ifndef NDEBUG
- for (size_t j = 1; j < static_cast<size_t>(map_size); j++) {
- if (!comparator(result[j - 1], result[j])) {
- GOOGLE_LOG(ERROR) << (comparator(result[j], result[j - 1])
- ? "internal error in map key sorting"
- : "map keys are not unique");
- }
- }
-#endif
- return result;
- }
-
- private:
- class PROTOBUF_EXPORT MapEntryMessageComparator {
- public:
- explicit MapEntryMessageComparator(const Descriptor* descriptor)
- : field_(descriptor->field(0)) {}
-
- bool operator()(const Message* a, const Message* b) {
- const Reflection* reflection = a->GetReflection();
- switch (field_->cpp_type()) {
- case FieldDescriptor::CPPTYPE_BOOL: {
- bool first = reflection->GetBool(*a, field_);
- bool second = reflection->GetBool(*b, field_);
- return first < second;
- }
- case FieldDescriptor::CPPTYPE_INT32: {
- int32_t first = reflection->GetInt32(*a, field_);
- int32_t second = reflection->GetInt32(*b, field_);
- return first < second;
- }
- case FieldDescriptor::CPPTYPE_INT64: {
- int64_t first = reflection->GetInt64(*a, field_);
- int64_t second = reflection->GetInt64(*b, field_);
- return first < second;
- }
- case FieldDescriptor::CPPTYPE_UINT32: {
- uint32_t first = reflection->GetUInt32(*a, field_);
- uint32_t second = reflection->GetUInt32(*b, field_);
- return first < second;
- }
- case FieldDescriptor::CPPTYPE_UINT64: {
- uint64_t first = reflection->GetUInt64(*a, field_);
- uint64_t second = reflection->GetUInt64(*b, field_);
- return first < second;
- }
- case FieldDescriptor::CPPTYPE_STRING: {
- std::string first = reflection->GetString(*a, field_);
- std::string second = reflection->GetString(*b, field_);
- return first < second;
- }
- default:
- GOOGLE_LOG(DFATAL) << "Invalid key for map field.";
- return true;
- }
- }
-
- private:
- const FieldDescriptor* field_;
- };
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_DYNAMIC_MESSAGE_H__
diff --git a/include/google/protobuf/empty.pb.h b/include/google/protobuf/empty.pb.h
deleted file mode 100644
index c5f528b9e8..0000000000
--- a/include/google/protobuf/empty.pb.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/empty.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fempty_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fempty_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_bases.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fempty_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fempty_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fempty_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Empty;
-struct EmptyDefaultTypeInternal;
-PROTOBUF_EXPORT extern EmptyDefaultTypeInternal _Empty_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Empty* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Empty>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT Empty final :
- public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:google.protobuf.Empty) */ {
- public:
- inline Empty() : Empty(nullptr) {}
- explicit PROTOBUF_CONSTEXPR Empty(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Empty(const Empty& from);
- Empty(Empty&& from) noexcept
- : Empty() {
- *this = ::std::move(from);
- }
-
- inline Empty& operator=(const Empty& from) {
- CopyFrom(from);
- return *this;
- }
- inline Empty& operator=(Empty&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Empty& default_instance() {
- return *internal_default_instance();
- }
- static inline const Empty* internal_default_instance() {
- return reinterpret_cast<const Empty*>(
- &_Empty_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Empty& a, Empty& b) {
- a.Swap(&b);
- }
- inline void Swap(Empty* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Empty* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Empty* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Empty>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
- inline void CopyFrom(const Empty& from) {
- ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from);
- }
- using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
- void MergeFrom(const Empty& from) {
- ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from);
- }
- public:
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Empty";
- }
- protected:
- explicit Empty(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Empty)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- };
- friend struct ::TableStruct_google_2fprotobuf_2fempty_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Empty
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fempty_2eproto
diff --git a/include/google/protobuf/empty.proto b/include/google/protobuf/empty.proto
deleted file mode 100644
index 2227462198..0000000000
--- a/include/google/protobuf/empty.proto
+++ /dev/null
@@ -1,51 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option go_package = "google.golang.org/protobuf/types/known/emptypb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "EmptyProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option cc_enable_arenas = true;
-
-// A generic empty message that you can re-use to avoid defining duplicated
-// empty messages in your APIs. A typical example is to use it as the request
-// or the response type of an API method. For instance:
-//
-// service Foo {
-// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
-// }
-//
-message Empty {}
diff --git a/include/google/protobuf/endian.h b/include/google/protobuf/endian.h
deleted file mode 100644
index e0ee6cdf28..0000000000
--- a/include/google/protobuf/endian.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_ENDIAN_H__
-#define GOOGLE_PROTOBUF_ENDIAN_H__
-
-#if defined(_MSC_VER)
-#include <stdlib.h>
-#endif
-
-#include <cstdint>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-inline uint64_t BSwap64(uint64_t host_int) {
-#if defined(PROTOBUF_BUILTIN_BSWAP64)
- return PROTOBUF_BUILTIN_BSWAP64(host_int);
-#elif defined(_MSC_VER)
- return _byteswap_uint64(host_int);
-#else
- return (((host_int & uint64_t{0xFF}) << 56) |
- ((host_int & uint64_t{0xFF00}) << 40) |
- ((host_int & uint64_t{0xFF0000}) << 24) |
- ((host_int & uint64_t{0xFF000000}) << 8) |
- ((host_int & uint64_t{0xFF00000000}) >> 8) |
- ((host_int & uint64_t{0xFF0000000000}) >> 24) |
- ((host_int & uint64_t{0xFF000000000000}) >> 40) |
- ((host_int & uint64_t{0xFF00000000000000}) >> 56));
-#endif
-}
-
-inline uint32_t BSwap32(uint32_t host_int) {
-#if defined(PROTOBUF_BUILTIN_BSWAP32)
- return PROTOBUF_BUILTIN_BSWAP32(host_int);
-#elif defined(_MSC_VER)
- return _byteswap_ulong(host_int);
-#else
- return (((host_int & uint32_t{0xFF}) << 24) |
- ((host_int & uint32_t{0xFF00}) << 8) |
- ((host_int & uint32_t{0xFF0000}) >> 8) |
- ((host_int & uint32_t{0xFF000000}) >> 24));
-#endif
-}
-
-inline uint16_t BSwap16(uint16_t host_int) {
-#if defined(PROTOBUF_BUILTIN_BSWAP16)
- return PROTOBUF_BUILTIN_BSWAP16(host_int);
-#elif defined(_MSC_VER)
- return _byteswap_ushort(host_int);
-#else
- return (((host_int & uint16_t{0xFF}) << 8) |
- ((host_int & uint16_t{0xFF00}) >> 8));
-#endif
-}
-
-namespace little_endian {
-
-inline uint16_t FromHost(uint16_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap16(value);
-#else
- return value;
-#endif
-}
-
-inline uint32_t FromHost(uint32_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap32(value);
-#else
- return value;
-#endif
-}
-
-inline uint64_t FromHost(uint64_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap64(value);
-#else
- return value;
-#endif
-}
-
-inline uint16_t ToHost(uint16_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap16(value);
-#else
- return value;
-#endif
-}
-
-inline uint32_t ToHost(uint32_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap32(value);
-#else
- return value;
-#endif
-}
-
-inline uint64_t ToHost(uint64_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return BSwap64(value);
-#else
- return value;
-#endif
-}
-
-} // namespace little_endian
-
-namespace big_endian {
-
-inline uint16_t FromHost(uint16_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap16(value);
-#endif
-}
-
-inline uint32_t FromHost(uint32_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap32(value);
-#endif
-}
-
-inline uint64_t FromHost(uint64_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap64(value);
-#endif
-}
-
-inline uint16_t ToHost(uint16_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap16(value);
-#endif
-}
-
-inline uint32_t ToHost(uint32_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap32(value);
-#endif
-}
-
-inline uint64_t ToHost(uint64_t value) {
-#if defined(PROTOBUF_BIG_ENDIAN)
- return value;
-#else
- return BSwap64(value);
-#endif
-}
-
-} // namespace big_endian
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_ENDIAN_H__
diff --git a/include/google/protobuf/explicitly_constructed.h b/include/google/protobuf/explicitly_constructed.h
deleted file mode 100644
index 174c59ab4b..0000000000
--- a/include/google/protobuf/explicitly_constructed.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_EXPLICITLY_CONSTRUCTED_H__
-#define GOOGLE_PROTOBUF_EXPLICITLY_CONSTRUCTED_H__
-
-#include <stdint.h>
-
-#include <utility>
-
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/common.h>
-
-// clang-format off
-#include <google/protobuf/port_def.inc>
-// clang-format on
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Wraps a variable whose constructor and destructor are explicitly
-// called. It is particularly useful for a global variable, without its
-// constructor and destructor run on start and end of the program lifetime.
-// This circumvents the initial construction order fiasco, while keeping
-// the address of the empty string a compile time constant.
-//
-// Pay special attention to the initialization state of the object.
-// 1. The object is "uninitialized" to begin with.
-// 2. Call Construct() or DefaultConstruct() only if the object is
-// uninitialized. After the call, the object becomes "initialized".
-// 3. Call get() and get_mutable() only if the object is initialized.
-// 4. Call Destruct() only if the object is initialized.
-// After the call, the object becomes uninitialized.
-template <typename T, size_t min_align = 1>
-class ExplicitlyConstructed {
- public:
- void DefaultConstruct() { new (&union_) T(); }
-
- template <typename... Args>
- void Construct(Args&&... args) {
- new (&union_) T(std::forward<Args>(args)...);
- }
-
- void Destruct() { get_mutable()->~T(); }
-
- constexpr const T& get() const { return reinterpret_cast<const T&>(union_); }
- T* get_mutable() { return reinterpret_cast<T*>(&union_); }
-
- private:
- union AlignedUnion {
- alignas(min_align > alignof(T) ? min_align
- : alignof(T)) char space[sizeof(T)];
- int64_t align_to_int64;
- void* align_to_ptr;
- } union_;
-};
-
-// ArenaStringPtr compatible explicitly constructed string type.
-// This empty string type is aligned with a minimum alignment of 8 bytes
-// which is the minimum requirement of ArenaStringPtr
-using ExplicitlyConstructedArenaString = ExplicitlyConstructed<std::string, 8>;
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_EXPLICITLY_CONSTRUCTED_H__
diff --git a/include/google/protobuf/extension_set.h b/include/google/protobuf/extension_set.h
deleted file mode 100644
index 0e6d052110..0000000000
--- a/include/google/protobuf/extension_set.h
+++ /dev/null
@@ -1,1561 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-
-#ifndef GOOGLE_PROTOBUF_EXTENSION_SET_H__
-#define GOOGLE_PROTOBUF_EXTENSION_SET_H__
-
-
-#include <algorithm>
-#include <cassert>
-#include <map>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/repeated_field.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// clang-format off
-#include <google/protobuf/port_def.inc> // Must be last
-// clang-format on
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-class Arena;
-class Descriptor; // descriptor.h
-class FieldDescriptor; // descriptor.h
-class DescriptorPool; // descriptor.h
-class MessageLite; // message_lite.h
-class Message; // message.h
-class MessageFactory; // message.h
-class Reflection; // message.h
-class UnknownFieldSet; // unknown_field_set.h
-namespace internal {
-class FieldSkipper; // wire_format_lite.h
-enum class LazyVerifyOption;
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-class InternalMetadata;
-
-// Used to store values of type WireFormatLite::FieldType without having to
-// #include wire_format_lite.h. Also, ensures that we use only one byte to
-// store these values, which is important to keep the layout of
-// ExtensionSet::Extension small.
-typedef uint8_t FieldType;
-
-// A function which, given an integer value, returns true if the number
-// matches one of the defined values for the corresponding enum type. This
-// is used with RegisterEnumExtension, below.
-typedef bool EnumValidityFunc(int number);
-
-// Version of the above which takes an argument. This is needed to deal with
-// extensions that are not compiled in.
-typedef bool EnumValidityFuncWithArg(const void* arg, int number);
-
-// Information about a registered extension.
-struct ExtensionInfo {
- constexpr ExtensionInfo() : enum_validity_check() {}
- constexpr ExtensionInfo(const MessageLite* extendee, int param_number,
- FieldType type_param, bool isrepeated, bool ispacked,
- LazyEagerVerifyFnType verify_func)
- : message(extendee),
- number(param_number),
- type(type_param),
- is_repeated(isrepeated),
- is_packed(ispacked),
- enum_validity_check(),
- lazy_eager_verify_func(verify_func) {}
-
- const MessageLite* message = nullptr;
- int number = 0;
-
- FieldType type = 0;
- bool is_repeated = false;
- bool is_packed = false;
-
- struct EnumValidityCheck {
- EnumValidityFuncWithArg* func;
- const void* arg;
- };
-
- struct MessageInfo {
- const MessageLite* prototype;
- };
-
- union {
- EnumValidityCheck enum_validity_check;
- MessageInfo message_info;
- };
-
- // The descriptor for this extension, if one exists and is known. May be
- // nullptr. Must not be nullptr if the descriptor for the extension does not
- // live in the same pool as the descriptor for the containing type.
- const FieldDescriptor* descriptor = nullptr;
-
- // If this field is potentially lazy this function can be used as a cheap
- // verification of the raw bytes.
- // If nullptr then no verification is performed.
- LazyEagerVerifyFnType lazy_eager_verify_func = nullptr;
-};
-
-// An ExtensionFinder is an object which looks up extension definitions. It
-// must implement this method:
-//
-// bool Find(int number, ExtensionInfo* output);
-
-// GeneratedExtensionFinder is an ExtensionFinder which finds extensions
-// defined in .proto files which have been compiled into the binary.
-class PROTOBUF_EXPORT GeneratedExtensionFinder {
- public:
- explicit GeneratedExtensionFinder(const MessageLite* extendee)
- : extendee_(extendee) {}
-
- // Returns true and fills in *output if found, otherwise returns false.
- bool Find(int number, ExtensionInfo* output);
-
- private:
- const MessageLite* extendee_;
-};
-
-// Note: extension_set_heavy.cc defines DescriptorPoolExtensionFinder for
-// finding extensions from a DescriptorPool.
-
-// This is an internal helper class intended for use within the protocol buffer
-// library and generated classes. Clients should not use it directly. Instead,
-// use the generated accessors such as GetExtension() of the class being
-// extended.
-//
-// This class manages extensions for a protocol message object. The
-// message's HasExtension(), GetExtension(), MutableExtension(), and
-// ClearExtension() methods are just thin wrappers around the embedded
-// ExtensionSet. When parsing, if a tag number is encountered which is
-// inside one of the message type's extension ranges, the tag is passed
-// off to the ExtensionSet for parsing. Etc.
-class PROTOBUF_EXPORT ExtensionSet {
- public:
- constexpr ExtensionSet();
- explicit ExtensionSet(Arena* arena);
- ExtensionSet(ArenaInitialized, Arena* arena) : ExtensionSet(arena) {}
- ~ExtensionSet();
-
- // These are called at startup by protocol-compiler-generated code to
- // register known extensions. The registrations are used by ParseField()
- // to look up extensions for parsed field numbers. Note that dynamic parsing
- // does not use ParseField(); only protocol-compiler-generated parsing
- // methods do.
- static void RegisterExtension(const MessageLite* extendee, int number,
- FieldType type, bool is_repeated,
- bool is_packed,
- LazyEagerVerifyFnType verify_func);
- static void RegisterEnumExtension(const MessageLite* extendee, int number,
- FieldType type, bool is_repeated,
- bool is_packed, EnumValidityFunc* is_valid);
- static void RegisterMessageExtension(const MessageLite* extendee, int number,
- FieldType type, bool is_repeated,
- bool is_packed,
- const MessageLite* prototype,
- LazyEagerVerifyFnType verify_func);
-
- // =================================================================
-
- // Add all fields which are currently present to the given vector. This
- // is useful to implement Reflection::ListFields().
- void AppendToList(const Descriptor* extendee, const DescriptorPool* pool,
- std::vector<const FieldDescriptor*>* output) const;
-
- // =================================================================
- // Accessors
- //
- // Generated message classes include type-safe templated wrappers around
- // these methods. Generally you should use those rather than call these
- // directly, unless you are doing low-level memory management.
- //
- // When calling any of these accessors, the extension number requested
- // MUST exist in the DescriptorPool provided to the constructor. Otherwise,
- // the method will fail an assert. Normally, though, you would not call
- // these directly; you would either call the generated accessors of your
- // message class (e.g. GetExtension()) or you would call the accessors
- // of the reflection interface. In both cases, it is impossible to
- // trigger this assert failure: the generated accessors only accept
- // linked-in extension types as parameters, while the Reflection interface
- // requires you to provide the FieldDescriptor describing the extension.
- //
- // When calling any of these accessors, a protocol-compiler-generated
- // implementation of the extension corresponding to the number MUST
- // be linked in, and the FieldDescriptor used to refer to it MUST be
- // the one generated by that linked-in code. Otherwise, the method will
- // die on an assert failure. The message objects returned by the message
- // accessors are guaranteed to be of the correct linked-in type.
- //
- // These methods pretty much match Reflection except that:
- // - They're not virtual.
- // - They identify fields by number rather than FieldDescriptors.
- // - They identify enum values using integers rather than descriptors.
- // - Strings provide Mutable() in addition to Set() accessors.
-
- bool Has(int number) const;
- int ExtensionSize(int number) const; // Size of a repeated extension.
- int NumExtensions() const; // The number of extensions
- FieldType ExtensionType(int number) const;
- void ClearExtension(int number);
-
- // singular fields -------------------------------------------------
-
- int32_t GetInt32(int number, int32_t default_value) const;
- int64_t GetInt64(int number, int64_t default_value) const;
- uint32_t GetUInt32(int number, uint32_t default_value) const;
- uint64_t GetUInt64(int number, uint64_t default_value) const;
- float GetFloat(int number, float default_value) const;
- double GetDouble(int number, double default_value) const;
- bool GetBool(int number, bool default_value) const;
- int GetEnum(int number, int default_value) const;
- const std::string& GetString(int number,
- const std::string& default_value) const;
- const MessageLite& GetMessage(int number,
- const MessageLite& default_value) const;
- const MessageLite& GetMessage(int number, const Descriptor* message_type,
- MessageFactory* factory) const;
-
- // |descriptor| may be nullptr so long as it is known that the descriptor for
- // the extension lives in the same pool as the descriptor for the containing
- // type.
-#define desc const FieldDescriptor* descriptor // avoid line wrapping
- void SetInt32(int number, FieldType type, int32_t value, desc);
- void SetInt64(int number, FieldType type, int64_t value, desc);
- void SetUInt32(int number, FieldType type, uint32_t value, desc);
- void SetUInt64(int number, FieldType type, uint64_t value, desc);
- void SetFloat(int number, FieldType type, float value, desc);
- void SetDouble(int number, FieldType type, double value, desc);
- void SetBool(int number, FieldType type, bool value, desc);
- void SetEnum(int number, FieldType type, int value, desc);
- void SetString(int number, FieldType type, std::string value, desc);
- std::string* MutableString(int number, FieldType type, desc);
- MessageLite* MutableMessage(int number, FieldType type,
- const MessageLite& prototype, desc);
- MessageLite* MutableMessage(const FieldDescriptor* descriptor,
- MessageFactory* factory);
- // Adds the given message to the ExtensionSet, taking ownership of the
- // message object. Existing message with the same number will be deleted.
- // If "message" is nullptr, this is equivalent to "ClearExtension(number)".
- void SetAllocatedMessage(int number, FieldType type,
- const FieldDescriptor* descriptor,
- MessageLite* message);
- void UnsafeArenaSetAllocatedMessage(int number, FieldType type,
- const FieldDescriptor* descriptor,
- MessageLite* message);
- PROTOBUF_NODISCARD MessageLite* ReleaseMessage(int number,
- const MessageLite& prototype);
- MessageLite* UnsafeArenaReleaseMessage(int number,
- const MessageLite& prototype);
-
- PROTOBUF_NODISCARD MessageLite* ReleaseMessage(
- const FieldDescriptor* descriptor, MessageFactory* factory);
- MessageLite* UnsafeArenaReleaseMessage(const FieldDescriptor* descriptor,
- MessageFactory* factory);
-#undef desc
- Arena* GetArena() const { return arena_; }
-
- // repeated fields -------------------------------------------------
-
- // Fetches a RepeatedField extension by number; returns |default_value|
- // if no such extension exists. User should not touch this directly; it is
- // used by the GetRepeatedExtension() method.
- const void* GetRawRepeatedField(int number, const void* default_value) const;
- // Fetches a mutable version of a RepeatedField extension by number,
- // instantiating one if none exists. Similar to above, user should not use
- // this directly; it underlies MutableRepeatedExtension().
- void* MutableRawRepeatedField(int number, FieldType field_type, bool packed,
- const FieldDescriptor* desc);
-
- // This is an overload of MutableRawRepeatedField to maintain compatibility
- // with old code using a previous API. This version of
- // MutableRawRepeatedField() will GOOGLE_CHECK-fail on a missing extension.
- // (E.g.: borg/clients/internal/proto1/proto2_reflection.cc.)
- void* MutableRawRepeatedField(int number);
-
- int32_t GetRepeatedInt32(int number, int index) const;
- int64_t GetRepeatedInt64(int number, int index) const;
- uint32_t GetRepeatedUInt32(int number, int index) const;
- uint64_t GetRepeatedUInt64(int number, int index) const;
- float GetRepeatedFloat(int number, int index) const;
- double GetRepeatedDouble(int number, int index) const;
- bool GetRepeatedBool(int number, int index) const;
- int GetRepeatedEnum(int number, int index) const;
- const std::string& GetRepeatedString(int number, int index) const;
- const MessageLite& GetRepeatedMessage(int number, int index) const;
-
- void SetRepeatedInt32(int number, int index, int32_t value);
- void SetRepeatedInt64(int number, int index, int64_t value);
- void SetRepeatedUInt32(int number, int index, uint32_t value);
- void SetRepeatedUInt64(int number, int index, uint64_t value);
- void SetRepeatedFloat(int number, int index, float value);
- void SetRepeatedDouble(int number, int index, double value);
- void SetRepeatedBool(int number, int index, bool value);
- void SetRepeatedEnum(int number, int index, int value);
- void SetRepeatedString(int number, int index, std::string value);
- std::string* MutableRepeatedString(int number, int index);
- MessageLite* MutableRepeatedMessage(int number, int index);
-
-#define desc const FieldDescriptor* descriptor // avoid line wrapping
- void AddInt32(int number, FieldType type, bool packed, int32_t value, desc);
- void AddInt64(int number, FieldType type, bool packed, int64_t value, desc);
- void AddUInt32(int number, FieldType type, bool packed, uint32_t value, desc);
- void AddUInt64(int number, FieldType type, bool packed, uint64_t value, desc);
- void AddFloat(int number, FieldType type, bool packed, float value, desc);
- void AddDouble(int number, FieldType type, bool packed, double value, desc);
- void AddBool(int number, FieldType type, bool packed, bool value, desc);
- void AddEnum(int number, FieldType type, bool packed, int value, desc);
- void AddString(int number, FieldType type, std::string value, desc);
- std::string* AddString(int number, FieldType type, desc);
- MessageLite* AddMessage(int number, FieldType type,
- const MessageLite& prototype, desc);
- MessageLite* AddMessage(const FieldDescriptor* descriptor,
- MessageFactory* factory);
- void AddAllocatedMessage(const FieldDescriptor* descriptor,
- MessageLite* new_entry);
- void UnsafeArenaAddAllocatedMessage(const FieldDescriptor* descriptor,
- MessageLite* new_entry);
-#undef desc
-
- void RemoveLast(int number);
- PROTOBUF_NODISCARD MessageLite* ReleaseLast(int number);
- MessageLite* UnsafeArenaReleaseLast(int number);
- void SwapElements(int number, int index1, int index2);
-
- // =================================================================
- // convenience methods for implementing methods of Message
- //
- // These could all be implemented in terms of the other methods of this
- // class, but providing them here helps keep the generated code size down.
-
- void Clear();
- void MergeFrom(const MessageLite* extendee, const ExtensionSet& other);
- void Swap(const MessageLite* extendee, ExtensionSet* other);
- void InternalSwap(ExtensionSet* other);
- void SwapExtension(const MessageLite* extendee, ExtensionSet* other,
- int number);
- void UnsafeShallowSwapExtension(ExtensionSet* other, int number);
- bool IsInitialized() const;
-
- // Lite parser
- const char* ParseField(uint64_t tag, const char* ptr,
- const MessageLite* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
- // Full parser
- const char* ParseField(uint64_t tag, const char* ptr, const Message* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
- template <typename Msg>
- const char* ParseMessageSet(const char* ptr, const Msg* extendee,
- InternalMetadata* metadata,
- internal::ParseContext* ctx) {
- struct MessageSetItem {
- const char* _InternalParse(const char* ptr, ParseContext* ctx) {
- return me->ParseMessageSetItem(ptr, extendee, metadata, ctx);
- }
- ExtensionSet* me;
- const Msg* extendee;
- InternalMetadata* metadata;
- } item{this, extendee, metadata};
- while (!ctx->Done(&ptr)) {
- uint32_t tag;
- ptr = ReadTag(ptr, &tag);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- if (tag == WireFormatLite::kMessageSetItemStartTag) {
- ptr = ctx->ParseGroup(&item, ptr, tag);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- } else {
- if (tag == 0 || (tag & 7) == 4) {
- ctx->SetLastTag(tag);
- return ptr;
- }
- ptr = ParseField(tag, ptr, extendee, metadata, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- }
- }
- return ptr;
- }
-
- // Write all extension fields with field numbers in the range
- // [start_field_number, end_field_number)
- // to the output stream, using the cached sizes computed when ByteSize() was
- // last called. Note that the range bounds are inclusive-exclusive.
- void SerializeWithCachedSizes(const MessageLite* extendee,
- int start_field_number, int end_field_number,
- io::CodedOutputStream* output) const {
- output->SetCur(_InternalSerialize(extendee, start_field_number,
- end_field_number, output->Cur(),
- output->EpsCopy()));
- }
-
- // Same as SerializeWithCachedSizes, but without any bounds checking.
- // The caller must ensure that target has sufficient capacity for the
- // serialized extensions.
- //
- // Returns a pointer past the last written byte.
-
- uint8_t* _InternalSerialize(const MessageLite* extendee,
- int start_field_number, int end_field_number,
- uint8_t* target,
- io::EpsCopyOutputStream* stream) const {
- if (flat_size_ == 0) {
- assert(!is_large());
- return target;
- }
- return _InternalSerializeImpl(extendee, start_field_number,
- end_field_number, target, stream);
- }
-
- // Like above but serializes in MessageSet format.
- void SerializeMessageSetWithCachedSizes(const MessageLite* extendee,
- io::CodedOutputStream* output) const {
- output->SetCur(InternalSerializeMessageSetWithCachedSizesToArray(
- extendee, output->Cur(), output->EpsCopy()));
- }
- uint8_t* InternalSerializeMessageSetWithCachedSizesToArray(
- const MessageLite* extendee, uint8_t* target,
- io::EpsCopyOutputStream* stream) const;
-
- // For backward-compatibility, versions of two of the above methods that
- // serialize deterministically iff SetDefaultSerializationDeterministic()
- // has been called.
- uint8_t* SerializeWithCachedSizesToArray(int start_field_number,
- int end_field_number,
- uint8_t* target) const;
- uint8_t* SerializeMessageSetWithCachedSizesToArray(
- const MessageLite* extendee, uint8_t* target) const;
-
- // Returns the total serialized size of all the extensions.
- size_t ByteSize() const;
-
- // Like ByteSize() but uses MessageSet format.
- size_t MessageSetByteSize() const;
-
- // Returns (an estimate of) the total number of bytes used for storing the
- // extensions in memory, excluding sizeof(*this). If the ExtensionSet is
- // for a lite message (and thus possibly contains lite messages), the results
- // are undefined (might work, might crash, might corrupt data, might not even
- // be linked in). It's up to the protocol compiler to avoid calling this on
- // such ExtensionSets (easy enough since lite messages don't implement
- // SpaceUsed()).
- size_t SpaceUsedExcludingSelfLong() const;
-
- // This method just calls SpaceUsedExcludingSelfLong() but it can not be
- // inlined because the definition of SpaceUsedExcludingSelfLong() is not
- // included in lite runtime and when an inline method refers to it MSVC
- // will complain about unresolved symbols when building the lite runtime
- // as .dll.
- int SpaceUsedExcludingSelf() const;
-
- private:
- template <typename Type>
- friend class PrimitiveTypeTraits;
-
- template <typename Type>
- friend class RepeatedPrimitiveTypeTraits;
-
- template <typename Type, bool IsValid(int)>
- friend class EnumTypeTraits;
-
- template <typename Type, bool IsValid(int)>
- friend class RepeatedEnumTypeTraits;
-
- friend class google::protobuf::Reflection;
-
- const int32_t& GetRefInt32(int number, const int32_t& default_value) const;
- const int64_t& GetRefInt64(int number, const int64_t& default_value) const;
- const uint32_t& GetRefUInt32(int number, const uint32_t& default_value) const;
- const uint64_t& GetRefUInt64(int number, const uint64_t& default_value) const;
- const float& GetRefFloat(int number, const float& default_value) const;
- const double& GetRefDouble(int number, const double& default_value) const;
- const bool& GetRefBool(int number, const bool& default_value) const;
- const int& GetRefEnum(int number, const int& default_value) const;
- const int32_t& GetRefRepeatedInt32(int number, int index) const;
- const int64_t& GetRefRepeatedInt64(int number, int index) const;
- const uint32_t& GetRefRepeatedUInt32(int number, int index) const;
- const uint64_t& GetRefRepeatedUInt64(int number, int index) const;
- const float& GetRefRepeatedFloat(int number, int index) const;
- const double& GetRefRepeatedDouble(int number, int index) const;
- const bool& GetRefRepeatedBool(int number, int index) const;
- const int& GetRefRepeatedEnum(int number, int index) const;
-
- // Implementation of _InternalSerialize for non-empty map_.
- uint8_t* _InternalSerializeImpl(const MessageLite* extendee,
- int start_field_number, int end_field_number,
- uint8_t* target,
- io::EpsCopyOutputStream* stream) const;
- // Interface of a lazily parsed singular message extension.
- class PROTOBUF_EXPORT LazyMessageExtension {
- public:
- LazyMessageExtension() {}
- virtual ~LazyMessageExtension() {}
-
- virtual LazyMessageExtension* New(Arena* arena) const = 0;
- virtual const MessageLite& GetMessage(const MessageLite& prototype,
- Arena* arena) const = 0;
- virtual MessageLite* MutableMessage(const MessageLite& prototype,
- Arena* arena) = 0;
- virtual void SetAllocatedMessage(MessageLite* message, Arena* arena) = 0;
- virtual void UnsafeArenaSetAllocatedMessage(MessageLite* message,
- Arena* arena) = 0;
- PROTOBUF_NODISCARD virtual MessageLite* ReleaseMessage(
- const MessageLite& prototype, Arena* arena) = 0;
- virtual MessageLite* UnsafeArenaReleaseMessage(const MessageLite& prototype,
- Arena* arena) = 0;
-
- virtual bool IsInitialized() const = 0;
-
- PROTOBUF_DEPRECATED_MSG("Please use ByteSizeLong() instead")
- virtual int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
- virtual size_t ByteSizeLong() const = 0;
- virtual size_t SpaceUsedLong() const = 0;
-
- virtual void MergeFrom(const MessageLite* prototype,
- const LazyMessageExtension& other, Arena* arena) = 0;
- virtual void MergeFromMessage(const MessageLite& msg, Arena* arena) = 0;
- virtual void Clear() = 0;
-
- virtual const char* _InternalParse(const Message& prototype, Arena* arena,
- LazyVerifyOption option, const char* ptr,
- ParseContext* ctx) = 0;
- virtual uint8_t* WriteMessageToArray(
- const MessageLite* prototype, int number, uint8_t* target,
- io::EpsCopyOutputStream* stream) const = 0;
-
- private:
- virtual void UnusedKeyMethod(); // Dummy key method to avoid weak vtable.
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(LazyMessageExtension);
- };
- // Give access to function defined below to see LazyMessageExtension.
- friend LazyMessageExtension* MaybeCreateLazyExtension(Arena* arena);
- struct Extension {
- // The order of these fields packs Extension into 24 bytes when using 8
- // byte alignment. Consider this when adding or removing fields here.
- union {
- int32_t int32_t_value;
- int64_t int64_t_value;
- uint32_t uint32_t_value;
- uint64_t uint64_t_value;
- float float_value;
- double double_value;
- bool bool_value;
- int enum_value;
- std::string* string_value;
- MessageLite* message_value;
- LazyMessageExtension* lazymessage_value;
-
- RepeatedField<int32_t>* repeated_int32_t_value;
- RepeatedField<int64_t>* repeated_int64_t_value;
- RepeatedField<uint32_t>* repeated_uint32_t_value;
- RepeatedField<uint64_t>* repeated_uint64_t_value;
- RepeatedField<float>* repeated_float_value;
- RepeatedField<double>* repeated_double_value;
- RepeatedField<bool>* repeated_bool_value;
- RepeatedField<int>* repeated_enum_value;
- RepeatedPtrField<std::string>* repeated_string_value;
- RepeatedPtrField<MessageLite>* repeated_message_value;
- };
-
- FieldType type;
- bool is_repeated;
-
- // For singular types, indicates if the extension is "cleared". This
- // happens when an extension is set and then later cleared by the caller.
- // We want to keep the Extension object around for reuse, so instead of
- // removing it from the map, we just set is_cleared = true. This has no
- // meaning for repeated types; for those, the size of the RepeatedField
- // simply becomes zero when cleared.
- bool is_cleared : 4;
-
- // For singular message types, indicates whether lazy parsing is enabled
- // for this extension. This field is only valid when type == TYPE_MESSAGE
- // and !is_repeated because we only support lazy parsing for singular
- // message types currently. If is_lazy = true, the extension is stored in
- // lazymessage_value. Otherwise, the extension will be message_value.
- bool is_lazy : 4;
-
- // For repeated types, this indicates if the [packed=true] option is set.
- bool is_packed;
-
- // For packed fields, the size of the packed data is recorded here when
- // ByteSize() is called then used during serialization.
- // TODO(kenton): Use atomic<int> when C++ supports it.
- mutable int cached_size;
-
- // The descriptor for this extension, if one exists and is known. May be
- // nullptr. Must not be nullptr if the descriptor for the extension does
- // not live in the same pool as the descriptor for the containing type.
- const FieldDescriptor* descriptor;
-
- // Some helper methods for operations on a single Extension.
- uint8_t* InternalSerializeFieldWithCachedSizesToArray(
- const MessageLite* extendee, const ExtensionSet* extension_set,
- int number, uint8_t* target, io::EpsCopyOutputStream* stream) const;
- uint8_t* InternalSerializeMessageSetItemWithCachedSizesToArray(
- const MessageLite* extendee, const ExtensionSet* extension_set,
- int number, uint8_t* target, io::EpsCopyOutputStream* stream) const;
- size_t ByteSize(int number) const;
- size_t MessageSetItemByteSize(int number) const;
- void Clear();
- int GetSize() const;
- void Free();
- size_t SpaceUsedExcludingSelfLong() const;
- bool IsInitialized() const;
- };
-
- // The Extension struct is small enough to be passed by value, so we use it
- // directly as the value type in mappings rather than use pointers. We use
- // sorted maps rather than hash-maps because we expect most ExtensionSets will
- // only contain a small number of extension. Also, we want AppendToList and
- // deterministic serialization to order fields by field number.
-
- struct KeyValue {
- int first;
- Extension second;
-
- struct FirstComparator {
- bool operator()(const KeyValue& lhs, const KeyValue& rhs) const {
- return lhs.first < rhs.first;
- }
- bool operator()(const KeyValue& lhs, int key) const {
- return lhs.first < key;
- }
- bool operator()(int key, const KeyValue& rhs) const {
- return key < rhs.first;
- }
- };
- };
-
- typedef std::map<int, Extension> LargeMap;
-
- // Wrapper API that switches between flat-map and LargeMap.
-
- // Finds a key (if present) in the ExtensionSet.
- const Extension* FindOrNull(int key) const;
- Extension* FindOrNull(int key);
-
- // Helper-functions that only inspect the LargeMap.
- const Extension* FindOrNullInLargeMap(int key) const;
- Extension* FindOrNullInLargeMap(int key);
-
- // Inserts a new (key, Extension) into the ExtensionSet (and returns true), or
- // finds the already-existing Extension for that key (returns false).
- // The Extension* will point to the new-or-found Extension.
- std::pair<Extension*, bool> Insert(int key);
-
- // Grows the flat_capacity_.
- // If flat_capacity_ > kMaximumFlatCapacity, converts to LargeMap.
- void GrowCapacity(size_t minimum_new_capacity);
- static constexpr uint16_t kMaximumFlatCapacity = 256;
- bool is_large() const { return static_cast<int16_t>(flat_size_) < 0; }
-
- // Removes a key from the ExtensionSet.
- void Erase(int key);
-
- size_t Size() const {
- return PROTOBUF_PREDICT_FALSE(is_large()) ? map_.large->size() : flat_size_;
- }
-
- // Similar to std::for_each.
- // Each Iterator is decomposed into ->first and ->second fields, so
- // that the KeyValueFunctor can be agnostic vis-a-vis KeyValue-vs-std::pair.
- template <typename Iterator, typename KeyValueFunctor>
- static KeyValueFunctor ForEach(Iterator begin, Iterator end,
- KeyValueFunctor func) {
- for (Iterator it = begin; it != end; ++it) func(it->first, it->second);
- return std::move(func);
- }
-
- // Applies a functor to the <int, Extension&> pairs in sorted order.
- template <typename KeyValueFunctor>
- KeyValueFunctor ForEach(KeyValueFunctor func) {
- if (PROTOBUF_PREDICT_FALSE(is_large())) {
- return ForEach(map_.large->begin(), map_.large->end(), std::move(func));
- }
- return ForEach(flat_begin(), flat_end(), std::move(func));
- }
-
- // Applies a functor to the <int, const Extension&> pairs in sorted order.
- template <typename KeyValueFunctor>
- KeyValueFunctor ForEach(KeyValueFunctor func) const {
- if (PROTOBUF_PREDICT_FALSE(is_large())) {
- return ForEach(map_.large->begin(), map_.large->end(), std::move(func));
- }
- return ForEach(flat_begin(), flat_end(), std::move(func));
- }
-
- // Merges existing Extension from other_extension
- void InternalExtensionMergeFrom(const MessageLite* extendee, int number,
- const Extension& other_extension,
- Arena* other_arena);
-
- inline static bool is_packable(WireFormatLite::WireType type) {
- switch (type) {
- case WireFormatLite::WIRETYPE_VARINT:
- case WireFormatLite::WIRETYPE_FIXED64:
- case WireFormatLite::WIRETYPE_FIXED32:
- return true;
- case WireFormatLite::WIRETYPE_LENGTH_DELIMITED:
- case WireFormatLite::WIRETYPE_START_GROUP:
- case WireFormatLite::WIRETYPE_END_GROUP:
- return false;
-
- // Do not add a default statement. Let the compiler complain when
- // someone
- // adds a new wire type.
- }
- PROTOBUF_ASSUME(false); // switch handles all possible enum values
- return false;
- }
-
- // Returns true and fills field_number and extension if extension is found.
- // Note to support packed repeated field compatibility, it also fills whether
- // the tag on wire is packed, which can be different from
- // extension->is_packed (whether packed=true is specified).
- template <typename ExtensionFinder>
- bool FindExtensionInfoFromTag(uint32_t tag, ExtensionFinder* extension_finder,
- int* field_number, ExtensionInfo* extension,
- bool* was_packed_on_wire) {
- *field_number = WireFormatLite::GetTagFieldNumber(tag);
- WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag);
- return FindExtensionInfoFromFieldNumber(wire_type, *field_number,
- extension_finder, extension,
- was_packed_on_wire);
- }
-
- // Returns true and fills extension if extension is found.
- // Note to support packed repeated field compatibility, it also fills whether
- // the tag on wire is packed, which can be different from
- // extension->is_packed (whether packed=true is specified).
- template <typename ExtensionFinder>
- bool FindExtensionInfoFromFieldNumber(int wire_type, int field_number,
- ExtensionFinder* extension_finder,
- ExtensionInfo* extension,
- bool* was_packed_on_wire) const {
- if (!extension_finder->Find(field_number, extension)) {
- return false;
- }
-
- GOOGLE_DCHECK(extension->type > 0 &&
- extension->type <= WireFormatLite::MAX_FIELD_TYPE);
- auto real_type = static_cast<WireFormatLite::FieldType>(extension->type);
-
- WireFormatLite::WireType expected_wire_type =
- WireFormatLite::WireTypeForFieldType(real_type);
-
- // Check if this is a packed field.
- *was_packed_on_wire = false;
- if (extension->is_repeated &&
- wire_type == WireFormatLite::WIRETYPE_LENGTH_DELIMITED &&
- is_packable(expected_wire_type)) {
- *was_packed_on_wire = true;
- return true;
- }
- // Otherwise the wire type must match.
- return expected_wire_type == wire_type;
- }
-
- // Find the prototype for a LazyMessage from the extension registry. Returns
- // null if the extension is not found.
- const MessageLite* GetPrototypeForLazyMessage(const MessageLite* extendee,
- int number) const;
-
- // Returns true if extension is present and lazy.
- bool HasLazy(int number) const;
-
- // Gets the extension with the given number, creating it if it does not
- // already exist. Returns true if the extension did not already exist.
- bool MaybeNewExtension(int number, const FieldDescriptor* descriptor,
- Extension** result);
-
- // Gets the repeated extension for the given descriptor, creating it if
- // it does not exist.
- Extension* MaybeNewRepeatedExtension(const FieldDescriptor* descriptor);
-
- bool FindExtension(int wire_type, uint32_t field, const MessageLite* extendee,
- const internal::ParseContext* /*ctx*/,
- ExtensionInfo* extension, bool* was_packed_on_wire) {
- GeneratedExtensionFinder finder(extendee);
- return FindExtensionInfoFromFieldNumber(wire_type, field, &finder,
- extension, was_packed_on_wire);
- }
- inline bool FindExtension(int wire_type, uint32_t field,
- const Message* extendee,
- const internal::ParseContext* ctx,
- ExtensionInfo* extension, bool* was_packed_on_wire);
- // Used for MessageSet only
- const char* ParseFieldMaybeLazily(uint64_t tag, const char* ptr,
- const MessageLite* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx) {
- // Lite MessageSet doesn't implement lazy.
- return ParseField(tag, ptr, extendee, metadata, ctx);
- }
- const char* ParseFieldMaybeLazily(uint64_t tag, const char* ptr,
- const Message* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
- const char* ParseMessageSetItem(const char* ptr, const MessageLite* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
- const char* ParseMessageSetItem(const char* ptr, const Message* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
-
- // Implemented in extension_set_inl.h to keep code out of the header file.
- template <typename T>
- const char* ParseFieldWithExtensionInfo(int number, bool was_packed_on_wire,
- const ExtensionInfo& info,
- internal::InternalMetadata* metadata,
- const char* ptr,
- internal::ParseContext* ctx);
- template <typename Msg, typename T>
- const char* ParseMessageSetItemTmpl(const char* ptr, const Msg* extendee,
- internal::InternalMetadata* metadata,
- internal::ParseContext* ctx);
-
- // Hack: RepeatedPtrFieldBase declares ExtensionSet as a friend. This
- // friendship should automatically extend to ExtensionSet::Extension, but
- // unfortunately some older compilers (e.g. GCC 3.4.4) do not implement this
- // correctly. So, we must provide helpers for calling methods of that
- // class.
-
- // Defined in extension_set_heavy.cc.
- static inline size_t RepeatedMessage_SpaceUsedExcludingSelfLong(
- RepeatedPtrFieldBase* field);
-
- KeyValue* flat_begin() {
- assert(!is_large());
- return map_.flat;
- }
- const KeyValue* flat_begin() const {
- assert(!is_large());
- return map_.flat;
- }
- KeyValue* flat_end() {
- assert(!is_large());
- return map_.flat + flat_size_;
- }
- const KeyValue* flat_end() const {
- assert(!is_large());
- return map_.flat + flat_size_;
- }
-
- Arena* arena_;
-
- // Manual memory-management:
- // map_.flat is an allocated array of flat_capacity_ elements.
- // [map_.flat, map_.flat + flat_size_) is the currently-in-use prefix.
- uint16_t flat_capacity_;
- uint16_t flat_size_; // negative int16_t(flat_size_) indicates is_large()
- union AllocatedData {
- KeyValue* flat;
-
- // If flat_capacity_ > kMaximumFlatCapacity, switch to LargeMap,
- // which guarantees O(n lg n) CPU but larger constant factors.
- LargeMap* large;
- } map_;
-
- static void DeleteFlatMap(const KeyValue* flat, uint16_t flat_capacity);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionSet);
-};
-
-constexpr ExtensionSet::ExtensionSet()
- : arena_(nullptr), flat_capacity_(0), flat_size_(0), map_{nullptr} {}
-
-// These are just for convenience...
-inline void ExtensionSet::SetString(int number, FieldType type,
- std::string value,
- const FieldDescriptor* descriptor) {
- MutableString(number, type, descriptor)->assign(std::move(value));
-}
-inline void ExtensionSet::SetRepeatedString(int number, int index,
- std::string value) {
- MutableRepeatedString(number, index)->assign(std::move(value));
-}
-inline void ExtensionSet::AddString(int number, FieldType type,
- std::string value,
- const FieldDescriptor* descriptor) {
- AddString(number, type, descriptor)->assign(std::move(value));
-}
-// ===================================================================
-// Glue for generated extension accessors
-
-// -------------------------------------------------------------------
-// Template magic
-
-// First we have a set of classes representing "type traits" for different
-// field types. A type traits class knows how to implement basic accessors
-// for extensions of a particular type given an ExtensionSet. The signature
-// for a type traits class looks like this:
-//
-// class TypeTraits {
-// public:
-// typedef ? ConstType;
-// typedef ? MutableType;
-// // TypeTraits for singular fields and repeated fields will define the
-// // symbol "Singular" or "Repeated" respectively. These two symbols will
-// // be used in extension accessors to distinguish between singular
-// // extensions and repeated extensions. If the TypeTraits for the passed
-// // in extension doesn't have the expected symbol defined, it means the
-// // user is passing a repeated extension to a singular accessor, or the
-// // opposite. In that case the C++ compiler will generate an error
-// // message "no matching member function" to inform the user.
-// typedef ? Singular
-// typedef ? Repeated
-//
-// static inline ConstType Get(int number, const ExtensionSet& set);
-// static inline void Set(int number, ConstType value, ExtensionSet* set);
-// static inline MutableType Mutable(int number, ExtensionSet* set);
-//
-// // Variants for repeated fields.
-// static inline ConstType Get(int number, const ExtensionSet& set,
-// int index);
-// static inline void Set(int number, int index,
-// ConstType value, ExtensionSet* set);
-// static inline MutableType Mutable(int number, int index,
-// ExtensionSet* set);
-// static inline void Add(int number, ConstType value, ExtensionSet* set);
-// static inline MutableType Add(int number, ExtensionSet* set);
-// This is used by the ExtensionIdentifier constructor to register
-// the extension at dynamic initialization.
-// template <typename ExtendeeT>
-// static void Register(int number, FieldType type, bool is_packed);
-// };
-//
-// Not all of these methods make sense for all field types. For example, the
-// "Mutable" methods only make sense for strings and messages, and the
-// repeated methods only make sense for repeated types. So, each type
-// traits class implements only the set of methods from this signature that it
-// actually supports. This will cause a compiler error if the user tries to
-// access an extension using a method that doesn't make sense for its type.
-// For example, if "foo" is an extension of type "optional int32", then if you
-// try to write code like:
-// my_message.MutableExtension(foo)
-// you will get a compile error because PrimitiveTypeTraits<int32_t> does not
-// have a "Mutable()" method.
-
-// -------------------------------------------------------------------
-// PrimitiveTypeTraits
-
-// Since the ExtensionSet has different methods for each primitive type,
-// we must explicitly define the methods of the type traits class for each
-// known type.
-template <typename Type>
-class PrimitiveTypeTraits {
- public:
- typedef Type ConstType;
- typedef Type MutableType;
- typedef PrimitiveTypeTraits<Type> Singular;
-
- static inline ConstType Get(int number, const ExtensionSet& set,
- ConstType default_value);
-
- static inline const ConstType* GetPtr(int number, const ExtensionSet& set,
- const ConstType& default_value);
- static inline void Set(int number, FieldType field_type, ConstType value,
- ExtensionSet* set);
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType verify_func) {
- ExtensionSet::RegisterExtension(&ExtendeeT::default_instance(), number,
- type, false, is_packed, verify_func);
- }
-};
-
-template <typename Type>
-class RepeatedPrimitiveTypeTraits {
- public:
- typedef Type ConstType;
- typedef Type MutableType;
- typedef RepeatedPrimitiveTypeTraits<Type> Repeated;
-
- typedef RepeatedField<Type> RepeatedFieldType;
-
- static inline Type Get(int number, const ExtensionSet& set, int index);
- static inline const Type* GetPtr(int number, const ExtensionSet& set,
- int index);
- static inline const RepeatedField<ConstType>* GetRepeatedPtr(
- int number, const ExtensionSet& set);
- static inline void Set(int number, int index, Type value, ExtensionSet* set);
- static inline void Add(int number, FieldType field_type, bool is_packed,
- Type value, ExtensionSet* set);
-
- static inline const RepeatedField<ConstType>& GetRepeated(
- int number, const ExtensionSet& set);
- static inline RepeatedField<Type>* MutableRepeated(int number,
- FieldType field_type,
- bool is_packed,
- ExtensionSet* set);
-
- static const RepeatedFieldType* GetDefaultRepeatedField();
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType verify_func) {
- ExtensionSet::RegisterExtension(&ExtendeeT::default_instance(), number,
- type, true, is_packed, verify_func);
- }
-};
-
-class PROTOBUF_EXPORT RepeatedPrimitiveDefaults {
- private:
- template <typename Type>
- friend class RepeatedPrimitiveTypeTraits;
- static const RepeatedPrimitiveDefaults* default_instance();
- RepeatedField<int32_t> default_repeated_field_int32_t_;
- RepeatedField<int64_t> default_repeated_field_int64_t_;
- RepeatedField<uint32_t> default_repeated_field_uint32_t_;
- RepeatedField<uint64_t> default_repeated_field_uint64_t_;
- RepeatedField<double> default_repeated_field_double_;
- RepeatedField<float> default_repeated_field_float_;
- RepeatedField<bool> default_repeated_field_bool_;
-};
-
-#define PROTOBUF_DEFINE_PRIMITIVE_TYPE(TYPE, METHOD) \
- template <> \
- inline TYPE PrimitiveTypeTraits<TYPE>::Get( \
- int number, const ExtensionSet& set, TYPE default_value) { \
- return set.Get##METHOD(number, default_value); \
- } \
- template <> \
- inline const TYPE* PrimitiveTypeTraits<TYPE>::GetPtr( \
- int number, const ExtensionSet& set, const TYPE& default_value) { \
- return &set.GetRef##METHOD(number, default_value); \
- } \
- template <> \
- inline void PrimitiveTypeTraits<TYPE>::Set(int number, FieldType field_type, \
- TYPE value, ExtensionSet* set) { \
- set->Set##METHOD(number, field_type, value, nullptr); \
- } \
- \
- template <> \
- inline TYPE RepeatedPrimitiveTypeTraits<TYPE>::Get( \
- int number, const ExtensionSet& set, int index) { \
- return set.GetRepeated##METHOD(number, index); \
- } \
- template <> \
- inline const TYPE* RepeatedPrimitiveTypeTraits<TYPE>::GetPtr( \
- int number, const ExtensionSet& set, int index) { \
- return &set.GetRefRepeated##METHOD(number, index); \
- } \
- template <> \
- inline void RepeatedPrimitiveTypeTraits<TYPE>::Set( \
- int number, int index, TYPE value, ExtensionSet* set) { \
- set->SetRepeated##METHOD(number, index, value); \
- } \
- template <> \
- inline void RepeatedPrimitiveTypeTraits<TYPE>::Add( \
- int number, FieldType field_type, bool is_packed, TYPE value, \
- ExtensionSet* set) { \
- set->Add##METHOD(number, field_type, is_packed, value, nullptr); \
- } \
- template <> \
- inline const RepeatedField<TYPE>* \
- RepeatedPrimitiveTypeTraits<TYPE>::GetDefaultRepeatedField() { \
- return &RepeatedPrimitiveDefaults::default_instance() \
- ->default_repeated_field_##TYPE##_; \
- } \
- template <> \
- inline const RepeatedField<TYPE>& \
- RepeatedPrimitiveTypeTraits<TYPE>::GetRepeated(int number, \
- const ExtensionSet& set) { \
- return *reinterpret_cast<const RepeatedField<TYPE>*>( \
- set.GetRawRepeatedField(number, GetDefaultRepeatedField())); \
- } \
- template <> \
- inline const RepeatedField<TYPE>* \
- RepeatedPrimitiveTypeTraits<TYPE>::GetRepeatedPtr(int number, \
- const ExtensionSet& set) { \
- return &GetRepeated(number, set); \
- } \
- template <> \
- inline RepeatedField<TYPE>* \
- RepeatedPrimitiveTypeTraits<TYPE>::MutableRepeated( \
- int number, FieldType field_type, bool is_packed, ExtensionSet* set) { \
- return reinterpret_cast<RepeatedField<TYPE>*>( \
- set->MutableRawRepeatedField(number, field_type, is_packed, nullptr)); \
- }
-
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(int32_t, Int32)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(int64_t, Int64)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint32_t, UInt32)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint64_t, UInt64)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(float, Float)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(double, Double)
-PROTOBUF_DEFINE_PRIMITIVE_TYPE(bool, Bool)
-
-#undef PROTOBUF_DEFINE_PRIMITIVE_TYPE
-
-// -------------------------------------------------------------------
-// StringTypeTraits
-
-// Strings support both Set() and Mutable().
-class PROTOBUF_EXPORT StringTypeTraits {
- public:
- typedef const std::string& ConstType;
- typedef std::string* MutableType;
- typedef StringTypeTraits Singular;
-
- static inline const std::string& Get(int number, const ExtensionSet& set,
- ConstType default_value) {
- return set.GetString(number, default_value);
- }
- static inline const std::string* GetPtr(int number, const ExtensionSet& set,
- ConstType default_value) {
- return &Get(number, set, default_value);
- }
- static inline void Set(int number, FieldType field_type,
- const std::string& value, ExtensionSet* set) {
- set->SetString(number, field_type, value, nullptr);
- }
- static inline std::string* Mutable(int number, FieldType field_type,
- ExtensionSet* set) {
- return set->MutableString(number, field_type, nullptr);
- }
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType verify_func) {
- ExtensionSet::RegisterExtension(&ExtendeeT::default_instance(), number,
- type, false, is_packed, verify_func);
- }
-};
-
-class PROTOBUF_EXPORT RepeatedStringTypeTraits {
- public:
- typedef const std::string& ConstType;
- typedef std::string* MutableType;
- typedef RepeatedStringTypeTraits Repeated;
-
- typedef RepeatedPtrField<std::string> RepeatedFieldType;
-
- static inline const std::string& Get(int number, const ExtensionSet& set,
- int index) {
- return set.GetRepeatedString(number, index);
- }
- static inline const std::string* GetPtr(int number, const ExtensionSet& set,
- int index) {
- return &Get(number, set, index);
- }
- static inline const RepeatedPtrField<std::string>* GetRepeatedPtr(
- int number, const ExtensionSet& set) {
- return &GetRepeated(number, set);
- }
- static inline void Set(int number, int index, const std::string& value,
- ExtensionSet* set) {
- set->SetRepeatedString(number, index, value);
- }
- static inline std::string* Mutable(int number, int index, ExtensionSet* set) {
- return set->MutableRepeatedString(number, index);
- }
- static inline void Add(int number, FieldType field_type, bool /*is_packed*/,
- const std::string& value, ExtensionSet* set) {
- set->AddString(number, field_type, value, nullptr);
- }
- static inline std::string* Add(int number, FieldType field_type,
- ExtensionSet* set) {
- return set->AddString(number, field_type, nullptr);
- }
- static inline const RepeatedPtrField<std::string>& GetRepeated(
- int number, const ExtensionSet& set) {
- return *reinterpret_cast<const RepeatedPtrField<std::string>*>(
- set.GetRawRepeatedField(number, GetDefaultRepeatedField()));
- }
-
- static inline RepeatedPtrField<std::string>* MutableRepeated(
- int number, FieldType field_type, bool is_packed, ExtensionSet* set) {
- return reinterpret_cast<RepeatedPtrField<std::string>*>(
- set->MutableRawRepeatedField(number, field_type, is_packed, nullptr));
- }
-
- static const RepeatedFieldType* GetDefaultRepeatedField();
-
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType fn) {
- ExtensionSet::RegisterExtension(&ExtendeeT::default_instance(), number,
- type, true, is_packed, fn);
- }
-
- private:
- static void InitializeDefaultRepeatedFields();
- static void DestroyDefaultRepeatedFields();
-};
-
-// -------------------------------------------------------------------
-// EnumTypeTraits
-
-// ExtensionSet represents enums using integers internally, so we have to
-// static_cast around.
-template <typename Type, bool IsValid(int)>
-class EnumTypeTraits {
- public:
- typedef Type ConstType;
- typedef Type MutableType;
- typedef EnumTypeTraits<Type, IsValid> Singular;
-
- static inline ConstType Get(int number, const ExtensionSet& set,
- ConstType default_value) {
- return static_cast<Type>(set.GetEnum(number, default_value));
- }
- static inline const ConstType* GetPtr(int number, const ExtensionSet& set,
- const ConstType& default_value) {
- return reinterpret_cast<const Type*>(
- &set.GetRefEnum(number, default_value));
- }
- static inline void Set(int number, FieldType field_type, ConstType value,
- ExtensionSet* set) {
- GOOGLE_DCHECK(IsValid(value));
- set->SetEnum(number, field_type, value, nullptr);
- }
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType fn) {
- ExtensionSet::RegisterEnumExtension(&ExtendeeT::default_instance(), number,
- type, false, is_packed, IsValid);
- }
-};
-
-template <typename Type, bool IsValid(int)>
-class RepeatedEnumTypeTraits {
- public:
- typedef Type ConstType;
- typedef Type MutableType;
- typedef RepeatedEnumTypeTraits<Type, IsValid> Repeated;
-
- typedef RepeatedField<Type> RepeatedFieldType;
-
- static inline ConstType Get(int number, const ExtensionSet& set, int index) {
- return static_cast<Type>(set.GetRepeatedEnum(number, index));
- }
- static inline const ConstType* GetPtr(int number, const ExtensionSet& set,
- int index) {
- return reinterpret_cast<const Type*>(
- &set.GetRefRepeatedEnum(number, index));
- }
- static inline void Set(int number, int index, ConstType value,
- ExtensionSet* set) {
- GOOGLE_DCHECK(IsValid(value));
- set->SetRepeatedEnum(number, index, value);
- }
- static inline void Add(int number, FieldType field_type, bool is_packed,
- ConstType value, ExtensionSet* set) {
- GOOGLE_DCHECK(IsValid(value));
- set->AddEnum(number, field_type, is_packed, value, nullptr);
- }
- static inline const RepeatedField<Type>& GetRepeated(
- int number, const ExtensionSet& set) {
- // Hack: the `Extension` struct stores a RepeatedField<int> for enums.
- // RepeatedField<int> cannot implicitly convert to RepeatedField<EnumType>
- // so we need to do some casting magic. See message.h for similar
- // contortions for non-extension fields.
- return *reinterpret_cast<const RepeatedField<Type>*>(
- set.GetRawRepeatedField(number, GetDefaultRepeatedField()));
- }
- static inline const RepeatedField<Type>* GetRepeatedPtr(
- int number, const ExtensionSet& set) {
- return &GetRepeated(number, set);
- }
- static inline RepeatedField<Type>* MutableRepeated(int number,
- FieldType field_type,
- bool is_packed,
- ExtensionSet* set) {
- return reinterpret_cast<RepeatedField<Type>*>(
- set->MutableRawRepeatedField(number, field_type, is_packed, nullptr));
- }
-
- static const RepeatedFieldType* GetDefaultRepeatedField() {
- // Hack: as noted above, repeated enum fields are internally stored as a
- // RepeatedField<int>. We need to be able to instantiate global static
- // objects to return as default (empty) repeated fields on non-existent
- // extensions. We would not be able to know a-priori all of the enum types
- // (values of |Type|) to instantiate all of these, so we just re-use
- // int32_t's default repeated field object.
- return reinterpret_cast<const RepeatedField<Type>*>(
- RepeatedPrimitiveTypeTraits<int32_t>::GetDefaultRepeatedField());
- }
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType fn) {
- ExtensionSet::RegisterEnumExtension(&ExtendeeT::default_instance(), number,
- type, true, is_packed, IsValid);
- }
-};
-
-// -------------------------------------------------------------------
-// MessageTypeTraits
-
-// ExtensionSet guarantees that when manipulating extensions with message
-// types, the implementation used will be the compiled-in class representing
-// that type. So, we can static_cast down to the exact type we expect.
-template <typename Type>
-class MessageTypeTraits {
- public:
- typedef const Type& ConstType;
- typedef Type* MutableType;
- typedef MessageTypeTraits<Type> Singular;
-
- static inline ConstType Get(int number, const ExtensionSet& set,
- ConstType default_value) {
- return static_cast<const Type&>(set.GetMessage(number, default_value));
- }
- static inline std::nullptr_t GetPtr(int /* number */,
- const ExtensionSet& /* set */,
- ConstType /* default_value */) {
- // Cannot be implemented because of forward declared messages?
- return nullptr;
- }
- static inline MutableType Mutable(int number, FieldType field_type,
- ExtensionSet* set) {
- return static_cast<Type*>(set->MutableMessage(
- number, field_type, Type::default_instance(), nullptr));
- }
- static inline void SetAllocated(int number, FieldType field_type,
- MutableType message, ExtensionSet* set) {
- set->SetAllocatedMessage(number, field_type, nullptr, message);
- }
- static inline void UnsafeArenaSetAllocated(int number, FieldType field_type,
- MutableType message,
- ExtensionSet* set) {
- set->UnsafeArenaSetAllocatedMessage(number, field_type, nullptr, message);
- }
- PROTOBUF_NODISCARD static inline MutableType Release(
- int number, FieldType /* field_type */, ExtensionSet* set) {
- return static_cast<Type*>(
- set->ReleaseMessage(number, Type::default_instance()));
- }
- static inline MutableType UnsafeArenaRelease(int number,
- FieldType /* field_type */,
- ExtensionSet* set) {
- return static_cast<Type*>(
- set->UnsafeArenaReleaseMessage(number, Type::default_instance()));
- }
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType fn) {
- ExtensionSet::RegisterMessageExtension(&ExtendeeT::default_instance(),
- number, type, false, is_packed,
- &Type::default_instance(), fn);
- }
-};
-
-// Used by WireFormatVerify to extract the verify function from the registry.
-LazyEagerVerifyFnType FindExtensionLazyEagerVerifyFn(
- const MessageLite* extendee, int number);
-
-// forward declaration.
-class RepeatedMessageGenericTypeTraits;
-
-template <typename Type>
-class RepeatedMessageTypeTraits {
- public:
- typedef const Type& ConstType;
- typedef Type* MutableType;
- typedef RepeatedMessageTypeTraits<Type> Repeated;
-
- typedef RepeatedPtrField<Type> RepeatedFieldType;
-
- static inline ConstType Get(int number, const ExtensionSet& set, int index) {
- return static_cast<const Type&>(set.GetRepeatedMessage(number, index));
- }
- static inline std::nullptr_t GetPtr(int /* number */,
- const ExtensionSet& /* set */,
- int /* index */) {
- // Cannot be implemented because of forward declared messages?
- return nullptr;
- }
- static inline std::nullptr_t GetRepeatedPtr(int /* number */,
- const ExtensionSet& /* set */) {
- // Cannot be implemented because of forward declared messages?
- return nullptr;
- }
- static inline MutableType Mutable(int number, int index, ExtensionSet* set) {
- return static_cast<Type*>(set->MutableRepeatedMessage(number, index));
- }
- static inline MutableType Add(int number, FieldType field_type,
- ExtensionSet* set) {
- return static_cast<Type*>(
- set->AddMessage(number, field_type, Type::default_instance(), nullptr));
- }
- static inline const RepeatedPtrField<Type>& GetRepeated(
- int number, const ExtensionSet& set) {
- // See notes above in RepeatedEnumTypeTraits::GetRepeated(): same
- // casting hack applies here, because a RepeatedPtrField<MessageLite>
- // cannot naturally become a RepeatedPtrType<Type> even though Type is
- // presumably a message. google::protobuf::Message goes through similar contortions
- // with a reinterpret_cast<>.
- return *reinterpret_cast<const RepeatedPtrField<Type>*>(
- set.GetRawRepeatedField(number, GetDefaultRepeatedField()));
- }
- static inline RepeatedPtrField<Type>* MutableRepeated(int number,
- FieldType field_type,
- bool is_packed,
- ExtensionSet* set) {
- return reinterpret_cast<RepeatedPtrField<Type>*>(
- set->MutableRawRepeatedField(number, field_type, is_packed, nullptr));
- }
-
- static const RepeatedFieldType* GetDefaultRepeatedField();
- template <typename ExtendeeT>
- static void Register(int number, FieldType type, bool is_packed,
- LazyEagerVerifyFnType fn) {
- ExtensionSet::RegisterMessageExtension(&ExtendeeT::default_instance(),
- number, type, true, is_packed,
- &Type::default_instance(), fn);
- }
-};
-
-template <typename Type>
-inline const typename RepeatedMessageTypeTraits<Type>::RepeatedFieldType*
-RepeatedMessageTypeTraits<Type>::GetDefaultRepeatedField() {
- static auto instance = OnShutdownDelete(new RepeatedFieldType);
- return instance;
-}
-
-// -------------------------------------------------------------------
-// ExtensionIdentifier
-
-// This is the type of actual extension objects. E.g. if you have:
-// extend Foo {
-// optional int32 bar = 1234;
-// }
-// then "bar" will be defined in C++ as:
-// ExtensionIdentifier<Foo, PrimitiveTypeTraits<int32_t>, 5, false> bar(1234);
-//
-// Note that we could, in theory, supply the field number as a template
-// parameter, and thus make an instance of ExtensionIdentifier have no
-// actual contents. However, if we did that, then using an extension
-// identifier would not necessarily cause the compiler to output any sort
-// of reference to any symbol defined in the extension's .pb.o file. Some
-// linkers will actually drop object files that are not explicitly referenced,
-// but that would be bad because it would cause this extension to not be
-// registered at static initialization, and therefore using it would crash.
-
-template <typename ExtendeeType, typename TypeTraitsType, FieldType field_type,
- bool is_packed>
-class ExtensionIdentifier {
- public:
- typedef TypeTraitsType TypeTraits;
- typedef ExtendeeType Extendee;
-
- ExtensionIdentifier(int number, typename TypeTraits::ConstType default_value,
- LazyEagerVerifyFnType verify_func = nullptr)
- : number_(number), default_value_(default_value) {
- Register(number, verify_func);
- }
- inline int number() const { return number_; }
- typename TypeTraits::ConstType default_value() const {
- return default_value_;
- }
-
- static void Register(int number, LazyEagerVerifyFnType verify_func) {
- TypeTraits::template Register<ExtendeeType>(number, field_type, is_packed,
- verify_func);
- }
-
- typename TypeTraits::ConstType const& default_value_ref() const {
- return default_value_;
- }
-
- private:
- const int number_;
- typename TypeTraits::ConstType default_value_;
-};
-
-// -------------------------------------------------------------------
-// Generated accessors
-
-
-// Used to retrieve a lazy extension, may return nullptr in some environments.
-extern PROTOBUF_ATTRIBUTE_WEAK ExtensionSet::LazyMessageExtension*
-MaybeCreateLazyExtension(Arena* arena);
-
-} // namespace internal
-
-// Call this function to ensure that this extensions's reflection is linked into
-// the binary:
-//
-// google::protobuf::LinkExtensionReflection(Foo::my_extension);
-//
-// This will ensure that the following lookup will succeed:
-//
-// DescriptorPool::generated_pool()->FindExtensionByName("Foo.my_extension");
-//
-// This is often relevant for parsing extensions in text mode.
-//
-// As a side-effect, it will also guarantee that anything else from the same
-// .proto file will also be available for lookup in the generated pool.
-//
-// This function does not actually register the extension, so it does not need
-// to be called before the lookup. However it does need to occur in a function
-// that cannot be stripped from the binary (ie. it must be reachable from main).
-//
-// Best practice is to call this function as close as possible to where the
-// reflection is actually needed. This function is very cheap to call, so you
-// should not need to worry about its runtime overhead except in tight loops (on
-// x86-64 it compiles into two "mov" instructions).
-template <typename ExtendeeType, typename TypeTraitsType,
- internal::FieldType field_type, bool is_packed>
-void LinkExtensionReflection(
- const google::protobuf::internal::ExtensionIdentifier<
- ExtendeeType, TypeTraitsType, field_type, is_packed>& extension) {
- internal::StrongReference(extension);
-}
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_EXTENSION_SET_H__
diff --git a/include/google/protobuf/extension_set_inl.h b/include/google/protobuf/extension_set_inl.h
deleted file mode 100644
index 95936cc243..0000000000
--- a/include/google/protobuf/extension_set_inl.h
+++ /dev/null
@@ -1,276 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__
-#define GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__
-
-#include <google/protobuf/extension_set.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/parse_context.h>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-template <typename T>
-const char* ExtensionSet::ParseFieldWithExtensionInfo(
- int number, bool was_packed_on_wire, const ExtensionInfo& extension,
- InternalMetadata* metadata, const char* ptr, internal::ParseContext* ctx) {
- if (was_packed_on_wire) {
- switch (extension.type) {
-#define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE) \
- case WireFormatLite::TYPE_##UPPERCASE: \
- return internal::Packed##CPP_CAMELCASE##Parser( \
- MutableRawRepeatedField(number, extension.type, extension.is_packed, \
- extension.descriptor), \
- ptr, ctx);
- HANDLE_TYPE(INT32, Int32);
- HANDLE_TYPE(INT64, Int64);
- HANDLE_TYPE(UINT32, UInt32);
- HANDLE_TYPE(UINT64, UInt64);
- HANDLE_TYPE(SINT32, SInt32);
- HANDLE_TYPE(SINT64, SInt64);
- HANDLE_TYPE(FIXED32, Fixed32);
- HANDLE_TYPE(FIXED64, Fixed64);
- HANDLE_TYPE(SFIXED32, SFixed32);
- HANDLE_TYPE(SFIXED64, SFixed64);
- HANDLE_TYPE(FLOAT, Float);
- HANDLE_TYPE(DOUBLE, Double);
- HANDLE_TYPE(BOOL, Bool);
-#undef HANDLE_TYPE
-
- case WireFormatLite::TYPE_ENUM:
- return internal::PackedEnumParserArg<T>(
- MutableRawRepeatedField(number, extension.type, extension.is_packed,
- extension.descriptor),
- ptr, ctx, extension.enum_validity_check.func,
- extension.enum_validity_check.arg, metadata, number);
- case WireFormatLite::TYPE_STRING:
- case WireFormatLite::TYPE_BYTES:
- case WireFormatLite::TYPE_GROUP:
- case WireFormatLite::TYPE_MESSAGE:
- GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed.";
- break;
- }
- } else {
- switch (extension.type) {
-#define HANDLE_VARINT_TYPE(UPPERCASE, CPP_CAMELCASE) \
- case WireFormatLite::TYPE_##UPPERCASE: { \
- uint64_t value; \
- ptr = VarintParse(ptr, &value); \
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); \
- if (extension.is_repeated) { \
- Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \
- extension.is_packed, value, extension.descriptor); \
- } else { \
- Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \
- extension.descriptor); \
- } \
- } break
-
- HANDLE_VARINT_TYPE(INT32, Int32);
- HANDLE_VARINT_TYPE(INT64, Int64);
- HANDLE_VARINT_TYPE(UINT32, UInt32);
- HANDLE_VARINT_TYPE(UINT64, UInt64);
- HANDLE_VARINT_TYPE(BOOL, Bool);
-#undef HANDLE_VARINT_TYPE
-#define HANDLE_SVARINT_TYPE(UPPERCASE, CPP_CAMELCASE, SIZE) \
- case WireFormatLite::TYPE_##UPPERCASE: { \
- uint64_t val; \
- ptr = VarintParse(ptr, &val); \
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); \
- auto value = WireFormatLite::ZigZagDecode##SIZE(val); \
- if (extension.is_repeated) { \
- Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \
- extension.is_packed, value, extension.descriptor); \
- } else { \
- Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \
- extension.descriptor); \
- } \
- } break
-
- HANDLE_SVARINT_TYPE(SINT32, Int32, 32);
- HANDLE_SVARINT_TYPE(SINT64, Int64, 64);
-#undef HANDLE_SVARINT_TYPE
-#define HANDLE_FIXED_TYPE(UPPERCASE, CPP_CAMELCASE, CPPTYPE) \
- case WireFormatLite::TYPE_##UPPERCASE: { \
- auto value = UnalignedLoad<CPPTYPE>(ptr); \
- ptr += sizeof(CPPTYPE); \
- if (extension.is_repeated) { \
- Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \
- extension.is_packed, value, extension.descriptor); \
- } else { \
- Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \
- extension.descriptor); \
- } \
- } break
-
- HANDLE_FIXED_TYPE(FIXED32, UInt32, uint32_t);
- HANDLE_FIXED_TYPE(FIXED64, UInt64, uint64_t);
- HANDLE_FIXED_TYPE(SFIXED32, Int32, int32_t);
- HANDLE_FIXED_TYPE(SFIXED64, Int64, int64_t);
- HANDLE_FIXED_TYPE(FLOAT, Float, float);
- HANDLE_FIXED_TYPE(DOUBLE, Double, double);
-#undef HANDLE_FIXED_TYPE
-
- case WireFormatLite::TYPE_ENUM: {
- uint64_t val;
- ptr = VarintParse(ptr, &val);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- int value = val;
-
- if (!extension.enum_validity_check.func(
- extension.enum_validity_check.arg, value)) {
- WriteVarint(number, val, metadata->mutable_unknown_fields<T>());
- } else if (extension.is_repeated) {
- AddEnum(number, WireFormatLite::TYPE_ENUM, extension.is_packed, value,
- extension.descriptor);
- } else {
- SetEnum(number, WireFormatLite::TYPE_ENUM, value,
- extension.descriptor);
- }
- break;
- }
-
- case WireFormatLite::TYPE_BYTES:
- case WireFormatLite::TYPE_STRING: {
- std::string* value =
- extension.is_repeated
- ? AddString(number, WireFormatLite::TYPE_STRING,
- extension.descriptor)
- : MutableString(number, WireFormatLite::TYPE_STRING,
- extension.descriptor);
- int size = ReadSize(&ptr);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- return ctx->ReadString(ptr, size, value);
- }
-
- case WireFormatLite::TYPE_GROUP: {
- MessageLite* value =
- extension.is_repeated
- ? AddMessage(number, WireFormatLite::TYPE_GROUP,
- *extension.message_info.prototype,
- extension.descriptor)
- : MutableMessage(number, WireFormatLite::TYPE_GROUP,
- *extension.message_info.prototype,
- extension.descriptor);
- uint32_t tag = (number << 3) + WireFormatLite::WIRETYPE_START_GROUP;
- return ctx->ParseGroup(value, ptr, tag);
- }
-
- case WireFormatLite::TYPE_MESSAGE: {
- MessageLite* value =
- extension.is_repeated
- ? AddMessage(number, WireFormatLite::TYPE_MESSAGE,
- *extension.message_info.prototype,
- extension.descriptor)
- : MutableMessage(number, WireFormatLite::TYPE_MESSAGE,
- *extension.message_info.prototype,
- extension.descriptor);
- return ctx->ParseMessage(value, ptr);
- }
- }
- }
- return ptr;
-}
-
-template <typename Msg, typename T>
-const char* ExtensionSet::ParseMessageSetItemTmpl(
- const char* ptr, const Msg* extendee, internal::InternalMetadata* metadata,
- internal::ParseContext* ctx) {
- std::string payload;
- uint32_t type_id = 0;
- bool payload_read = false;
- while (!ctx->Done(&ptr)) {
- uint32_t tag = static_cast<uint8_t>(*ptr++);
- if (tag == WireFormatLite::kMessageSetTypeIdTag) {
- uint64_t tmp;
- ptr = ParseBigVarint(ptr, &tmp);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- type_id = tmp;
- if (payload_read) {
- ExtensionInfo extension;
- bool was_packed_on_wire;
- if (!FindExtension(2, type_id, extendee, ctx, &extension,
- &was_packed_on_wire)) {
- WriteLengthDelimited(type_id, payload,
- metadata->mutable_unknown_fields<T>());
- } else {
- MessageLite* value =
- extension.is_repeated
- ? AddMessage(type_id, WireFormatLite::TYPE_MESSAGE,
- *extension.message_info.prototype,
- extension.descriptor)
- : MutableMessage(type_id, WireFormatLite::TYPE_MESSAGE,
- *extension.message_info.prototype,
- extension.descriptor);
-
- const char* p;
- // We can't use regular parse from string as we have to track
- // proper recursion depth and descriptor pools.
- ParseContext tmp_ctx(ctx->depth(), false, &p, payload);
- tmp_ctx.data().pool = ctx->data().pool;
- tmp_ctx.data().factory = ctx->data().factory;
- GOOGLE_PROTOBUF_PARSER_ASSERT(value->_InternalParse(p, &tmp_ctx) &&
- tmp_ctx.EndedAtLimit());
- }
- type_id = 0;
- }
- } else if (tag == WireFormatLite::kMessageSetMessageTag) {
- if (type_id != 0) {
- ptr = ParseFieldMaybeLazily(static_cast<uint64_t>(type_id) * 8 + 2, ptr,
- extendee, metadata, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
- type_id = 0;
- } else {
- int32_t size = ReadSize(&ptr);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- ptr = ctx->ReadString(ptr, size, &payload);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- payload_read = true;
- }
- } else {
- ptr = ReadTag(ptr - 1, &tag);
- if (tag == 0 || (tag & 7) == 4) {
- ctx->SetLastTag(tag);
- return ptr;
- }
- ptr = ParseField(tag, ptr, extendee, metadata, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- }
- }
- return ptr;
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_EXTENSION_SET_INL_H__
diff --git a/include/google/protobuf/field_access_listener.h b/include/google/protobuf/field_access_listener.h
deleted file mode 100644
index 47422e63c1..0000000000
--- a/include/google/protobuf/field_access_listener.h
+++ /dev/null
@@ -1,172 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_FIELD_ACCESS_LISTENER_H__
-#define GOOGLE_PROTOBUF_FIELD_ACCESS_LISTENER_H__
-
-#include <cstddef>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/message_lite.h>
-
-
-namespace google {
-namespace protobuf {
-
-// A default/no-op implementation of message hooks.
-//
-// See go/statically-dispatched-message-hooks for details.
-template <typename Proto>
-struct NoOpAccessListener {
- // Number of fields are provided at compile time for the trackers to be able
- // to have stack allocated bitmaps for the fields. This is useful for
- // performance critical trackers. This is also to avoid cyclic dependencies
- // if the number of fields is needed.
- static constexpr int kFields = Proto::_kInternalFieldNumber;
- // Default constructor is called during the static global initialization of
- // the program.
- // We provide a pointer to extract the name of the proto not to get cyclic
- // dependencies on GetDescriptor() and OnGetMetadata() calls. If you want
- // to differentiate the protos during the runtime before the start of the
- // program, use this functor to get its name. We either way need it for
- // LITE_RUNTIME protos as they don't have descriptors at all.
- explicit NoOpAccessListener(StringPiece (*name_extractor)()) {}
- // called repeatedly during serialization/deserialization/ByteSize of
- // Reflection as:
- // AccessListener<MessageT>::OnSerialize(this);
- static void OnSerialize(const MessageLite* msg) {}
- static void OnDeserialize(const MessageLite* msg) {}
- static void OnByteSize(const MessageLite* msg) {}
- static void OnMergeFrom(const MessageLite* to, const MessageLite* from) {}
-
- // NOTE: This function can be called pre-main. Make sure it does not make
- // the state of the listener invalid.
- static void OnGetMetadata() {}
-
- // called from accessors as:
- // AccessListener<MessageT>::On$operation(this, &field_storage_);
- // If you need to override this with type, in your hook implementation
- // introduce
- // template <int kFieldNum, typename T>
- // static void On$operation(const MessageLite* msg,
- // const T* field) {}
- // And overloads for std::nullptr_t for incomplete types such as Messages,
- // Maps. Extract them using reflection if you need. Consequently, second
- // argument can be null pointer.
- // For an example, see proto_hooks/testing/memory_test_field_listener.h
- // And argument template deduction will deduce the type itself without
- // changing the generated code.
-
- // add_<field>(f)
- template <int kFieldNum>
- static void OnAdd(const MessageLite* msg, const void* field) {}
-
- // add_<field>()
- template <int kFieldNum>
- static void OnAddMutable(const MessageLite* msg, const void* field) {}
-
- // <field>() and <repeated_field>(i)
- template <int kFieldNum>
- static void OnGet(const MessageLite* msg, const void* field) {}
-
- // clear_<field>()
- template <int kFieldNum>
- static void OnClear(const MessageLite* msg, const void* field) {}
-
- // has_<field>()
- template <int kFieldNum>
- static void OnHas(const MessageLite* msg, const void* field) {}
-
- // <repeated_field>()
- template <int kFieldNum>
- static void OnList(const MessageLite* msg, const void* field) {}
-
- // mutable_<field>()
- template <int kFieldNum>
- static void OnMutable(const MessageLite* msg, const void* field) {}
-
- // mutable_<repeated_field>()
- template <int kFieldNum>
- static void OnMutableList(const MessageLite* msg, const void* field) {}
-
- // release_<field>()
- template <int kFieldNum>
- static void OnRelease(const MessageLite* msg, const void* field) {}
-
- // set_<field>() and set_<repeated_field>(i)
- template <int kFieldNum>
- static void OnSet(const MessageLite* msg, const void* field) {}
-
- // <repeated_field>_size()
- template <int kFieldNum>
- static void OnSize(const MessageLite* msg, const void* field) {}
-
- static void OnHasExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- // TODO(b/190614678): Support clear in the proto compiler.
- static void OnClearExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnExtensionSize(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnGetExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnMutableExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnSetExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnReleaseExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnAddExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnAddMutableExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnListExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
- static void OnMutableListExtension(const MessageLite* msg, int extension_tag,
- const void* field) {}
-};
-
-} // namespace protobuf
-} // namespace google
-
-#ifndef REPLACE_PROTO_LISTENER_IMPL
-namespace google {
-namespace protobuf {
-template <class T>
-using AccessListener = NoOpAccessListener<T>;
-} // namespace protobuf
-} // namespace google
-#else
-// You can put your implementations of hooks/listeners here.
-// All hooks are subject to approval by protobuf-team@.
-
-#endif // !REPLACE_PROTO_LISTENER_IMPL
-
-#endif // GOOGLE_PROTOBUF_FIELD_ACCESS_LISTENER_H__
diff --git a/include/google/protobuf/field_mask.pb.h b/include/google/protobuf/field_mask.pb.h
deleted file mode 100644
index 01ecfacb1a..0000000000
--- a/include/google/protobuf/field_mask.pb.h
+++ /dev/null
@@ -1,317 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/field_mask.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ffield_5fmask_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ffield_5fmask_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ffield_5fmask_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2ffield_5fmask_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2ffield_5fmask_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class FieldMask;
-struct FieldMaskDefaultTypeInternal;
-PROTOBUF_EXPORT extern FieldMaskDefaultTypeInternal _FieldMask_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FieldMask* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldMask>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT FieldMask final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FieldMask) */ {
- public:
- inline FieldMask() : FieldMask(nullptr) {}
- ~FieldMask() override;
- explicit PROTOBUF_CONSTEXPR FieldMask(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FieldMask(const FieldMask& from);
- FieldMask(FieldMask&& from) noexcept
- : FieldMask() {
- *this = ::std::move(from);
- }
-
- inline FieldMask& operator=(const FieldMask& from) {
- CopyFrom(from);
- return *this;
- }
- inline FieldMask& operator=(FieldMask&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FieldMask& default_instance() {
- return *internal_default_instance();
- }
- static inline const FieldMask* internal_default_instance() {
- return reinterpret_cast<const FieldMask*>(
- &_FieldMask_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(FieldMask& a, FieldMask& b) {
- a.Swap(&b);
- }
- inline void Swap(FieldMask* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FieldMask* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FieldMask* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FieldMask>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FieldMask& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FieldMask& from) {
- FieldMask::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FieldMask* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FieldMask";
- }
- protected:
- explicit FieldMask(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kPathsFieldNumber = 1,
- };
- // repeated string paths = 1;
- int paths_size() const;
- private:
- int _internal_paths_size() const;
- public:
- void clear_paths();
- const std::string& paths(int index) const;
- std::string* mutable_paths(int index);
- void set_paths(int index, const std::string& value);
- void set_paths(int index, std::string&& value);
- void set_paths(int index, const char* value);
- void set_paths(int index, const char* value, size_t size);
- std::string* add_paths();
- void add_paths(const std::string& value);
- void add_paths(std::string&& value);
- void add_paths(const char* value);
- void add_paths(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& paths() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_paths();
- private:
- const std::string& _internal_paths(int index) const;
- std::string* _internal_add_paths();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FieldMask)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> paths_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ffield_5fmask_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// FieldMask
-
-// repeated string paths = 1;
-inline int FieldMask::_internal_paths_size() const {
- return _impl_.paths_.size();
-}
-inline int FieldMask::paths_size() const {
- return _internal_paths_size();
-}
-inline void FieldMask::clear_paths() {
- _impl_.paths_.Clear();
-}
-inline std::string* FieldMask::add_paths() {
- std::string* _s = _internal_add_paths();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.FieldMask.paths)
- return _s;
-}
-inline const std::string& FieldMask::_internal_paths(int index) const {
- return _impl_.paths_.Get(index);
-}
-inline const std::string& FieldMask::paths(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.FieldMask.paths)
- return _internal_paths(index);
-}
-inline std::string* FieldMask::mutable_paths(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.FieldMask.paths)
- return _impl_.paths_.Mutable(index);
-}
-inline void FieldMask::set_paths(int index, const std::string& value) {
- _impl_.paths_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::set_paths(int index, std::string&& value) {
- _impl_.paths_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::set_paths(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.paths_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::set_paths(int index, const char* value, size_t size) {
- _impl_.paths_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.FieldMask.paths)
-}
-inline std::string* FieldMask::_internal_add_paths() {
- return _impl_.paths_.Add();
-}
-inline void FieldMask::add_paths(const std::string& value) {
- _impl_.paths_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::add_paths(std::string&& value) {
- _impl_.paths_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::add_paths(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.paths_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.FieldMask.paths)
-}
-inline void FieldMask::add_paths(const char* value, size_t size) {
- _impl_.paths_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.FieldMask.paths)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-FieldMask::paths() const {
- // @@protoc_insertion_point(field_list:google.protobuf.FieldMask.paths)
- return _impl_.paths_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-FieldMask::mutable_paths() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.FieldMask.paths)
- return &_impl_.paths_;
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ffield_5fmask_2eproto
diff --git a/include/google/protobuf/field_mask.proto b/include/google/protobuf/field_mask.proto
deleted file mode 100644
index 6b5104f188..0000000000
--- a/include/google/protobuf/field_mask.proto
+++ /dev/null
@@ -1,245 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "FieldMaskProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option go_package = "google.golang.org/protobuf/types/known/fieldmaskpb";
-option cc_enable_arenas = true;
-
-// `FieldMask` represents a set of symbolic field paths, for example:
-//
-// paths: "f.a"
-// paths: "f.b.d"
-//
-// Here `f` represents a field in some root message, `a` and `b`
-// fields in the message found in `f`, and `d` a field found in the
-// message in `f.b`.
-//
-// Field masks are used to specify a subset of fields that should be
-// returned by a get operation or modified by an update operation.
-// Field masks also have a custom JSON encoding (see below).
-//
-// # Field Masks in Projections
-//
-// When used in the context of a projection, a response message or
-// sub-message is filtered by the API to only contain those fields as
-// specified in the mask. For example, if the mask in the previous
-// example is applied to a response message as follows:
-//
-// f {
-// a : 22
-// b {
-// d : 1
-// x : 2
-// }
-// y : 13
-// }
-// z: 8
-//
-// The result will not contain specific values for fields x,y and z
-// (their value will be set to the default, and omitted in proto text
-// output):
-//
-//
-// f {
-// a : 22
-// b {
-// d : 1
-// }
-// }
-//
-// A repeated field is not allowed except at the last position of a
-// paths string.
-//
-// If a FieldMask object is not present in a get operation, the
-// operation applies to all fields (as if a FieldMask of all fields
-// had been specified).
-//
-// Note that a field mask does not necessarily apply to the
-// top-level response message. In case of a REST get operation, the
-// field mask applies directly to the response, but in case of a REST
-// list operation, the mask instead applies to each individual message
-// in the returned resource list. In case of a REST custom method,
-// other definitions may be used. Where the mask applies will be
-// clearly documented together with its declaration in the API. In
-// any case, the effect on the returned resource/resources is required
-// behavior for APIs.
-//
-// # Field Masks in Update Operations
-//
-// A field mask in update operations specifies which fields of the
-// targeted resource are going to be updated. The API is required
-// to only change the values of the fields as specified in the mask
-// and leave the others untouched. If a resource is passed in to
-// describe the updated values, the API ignores the values of all
-// fields not covered by the mask.
-//
-// If a repeated field is specified for an update operation, new values will
-// be appended to the existing repeated field in the target resource. Note that
-// a repeated field is only allowed in the last position of a `paths` string.
-//
-// If a sub-message is specified in the last position of the field mask for an
-// update operation, then new value will be merged into the existing sub-message
-// in the target resource.
-//
-// For example, given the target message:
-//
-// f {
-// b {
-// d: 1
-// x: 2
-// }
-// c: [1]
-// }
-//
-// And an update message:
-//
-// f {
-// b {
-// d: 10
-// }
-// c: [2]
-// }
-//
-// then if the field mask is:
-//
-// paths: ["f.b", "f.c"]
-//
-// then the result will be:
-//
-// f {
-// b {
-// d: 10
-// x: 2
-// }
-// c: [1, 2]
-// }
-//
-// An implementation may provide options to override this default behavior for
-// repeated and message fields.
-//
-// In order to reset a field's value to the default, the field must
-// be in the mask and set to the default value in the provided resource.
-// Hence, in order to reset all fields of a resource, provide a default
-// instance of the resource and set all fields in the mask, or do
-// not provide a mask as described below.
-//
-// If a field mask is not present on update, the operation applies to
-// all fields (as if a field mask of all fields has been specified).
-// Note that in the presence of schema evolution, this may mean that
-// fields the client does not know and has therefore not filled into
-// the request will be reset to their default. If this is unwanted
-// behavior, a specific service may require a client to always specify
-// a field mask, producing an error if not.
-//
-// As with get operations, the location of the resource which
-// describes the updated values in the request message depends on the
-// operation kind. In any case, the effect of the field mask is
-// required to be honored by the API.
-//
-// ## Considerations for HTTP REST
-//
-// The HTTP kind of an update operation which uses a field mask must
-// be set to PATCH instead of PUT in order to satisfy HTTP semantics
-// (PUT must only be used for full updates).
-//
-// # JSON Encoding of Field Masks
-//
-// In JSON, a field mask is encoded as a single string where paths are
-// separated by a comma. Fields name in each path are converted
-// to/from lower-camel naming conventions.
-//
-// As an example, consider the following message declarations:
-//
-// message Profile {
-// User user = 1;
-// Photo photo = 2;
-// }
-// message User {
-// string display_name = 1;
-// string address = 2;
-// }
-//
-// In proto a field mask for `Profile` may look as such:
-//
-// mask {
-// paths: "user.display_name"
-// paths: "photo"
-// }
-//
-// In JSON, the same mask is represented as below:
-//
-// {
-// mask: "user.displayName,photo"
-// }
-//
-// # Field Masks and Oneof Fields
-//
-// Field masks treat fields in oneofs just as regular fields. Consider the
-// following message:
-//
-// message SampleMessage {
-// oneof test_oneof {
-// string name = 4;
-// SubMessage sub_message = 9;
-// }
-// }
-//
-// The field mask can be:
-//
-// mask {
-// paths: "name"
-// }
-//
-// Or:
-//
-// mask {
-// paths: "sub_message"
-// }
-//
-// Note that oneof type names ("test_oneof" in this case) cannot be used in
-// paths.
-//
-// ## Field Mask Verification
-//
-// The implementation of any API method which has a FieldMask type field in the
-// request should verify the included field paths, and return an
-// `INVALID_ARGUMENT` error if any path is unmappable.
-message FieldMask {
- // The set of field mask paths.
- repeated string paths = 1;
-}
diff --git a/include/google/protobuf/generated_enum_reflection.h b/include/google/protobuf/generated_enum_reflection.h
deleted file mode 100644
index b96a9c61f9..0000000000
--- a/include/google/protobuf/generated_enum_reflection.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jasonh@google.com (Jason Hsueh)
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-// It provides reflection support for generated enums, and is included in
-// generated .pb.h files and should have minimal dependencies. The methods are
-// implemented in generated_message_reflection.cc.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__
-#define GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__
-
-
-#include <string>
-
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/generated_enum_util.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-class EnumDescriptor;
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-
-// Returns the EnumDescriptor for enum type E, which must be a
-// proto-declared enum type. Code generated by the protocol compiler
-// will include specializations of this template for each enum type declared.
-template <typename E>
-const EnumDescriptor* GetEnumDescriptor();
-
-namespace internal {
-
-// Helper for EnumType_Parse functions: try to parse the string 'name' as
-// an enum name of the given type, returning true and filling in value on
-// success, or returning false and leaving value unchanged on failure.
-PROTOBUF_EXPORT bool ParseNamedEnum(const EnumDescriptor* descriptor,
- ConstStringParam name, int* value);
-
-template <typename EnumType>
-bool ParseNamedEnum(const EnumDescriptor* descriptor, ConstStringParam name,
- EnumType* value) {
- int tmp;
- if (!ParseNamedEnum(descriptor, name, &tmp)) return false;
- *value = static_cast<EnumType>(tmp);
- return true;
-}
-
-// Just a wrapper around printing the name of a value. The main point of this
-// function is not to be inlined, so that you can do this without including
-// descriptor.h.
-PROTOBUF_EXPORT const std::string& NameOfEnum(const EnumDescriptor* descriptor,
- int value);
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_ENUM_REFLECTION_H__
diff --git a/include/google/protobuf/generated_enum_util.h b/include/google/protobuf/generated_enum_util.h
deleted file mode 100644
index 5d10ac010e..0000000000
--- a/include/google/protobuf/generated_enum_util.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_ENUM_UTIL_H__
-#define GOOGLE_PROTOBUF_GENERATED_ENUM_UTIL_H__
-
-
-#include <type_traits>
-
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/message_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-// This type trait can be used to cause templates to only match proto2 enum
-// types.
-template <typename T>
-struct is_proto_enum : ::std::false_type {};
-
-namespace internal {
-
-// The table entry format for storing enum name-to-value mapping used with lite
-// protos. This struct and the following related functions should only be used
-// by protobuf generated code.
-struct EnumEntry {
- StringPiece name;
- int value;
-};
-
-// Looks up a numeric enum value given the string name.
-PROTOBUF_EXPORT bool LookUpEnumValue(const EnumEntry* enums, size_t size,
- StringPiece name, int* value);
-
-// Looks up an enum name given the numeric value.
-PROTOBUF_EXPORT int LookUpEnumName(const EnumEntry* enums,
- const int* sorted_indices, size_t size,
- int value);
-
-// Initializes the list of enum names in std::string form.
-PROTOBUF_EXPORT bool InitializeEnumStrings(
- const EnumEntry* enums, const int* sorted_indices, size_t size,
- internal::ExplicitlyConstructed<std::string>* enum_strings);
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_ENUM_UTIL_H__
diff --git a/include/google/protobuf/generated_message_bases.h b/include/google/protobuf/generated_message_bases.h
deleted file mode 100644
index b295218a70..0000000000
--- a/include/google/protobuf/generated_message_bases.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// 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/io/zero_copy_stream_impl.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/generated_message_util.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:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final { return true; }
- size_t ByteSizeLong() const final;
- int GetCachedSize() const final { return _cached_size_.Get(); }
- const char* _InternalParse(const char* ptr,
- internal::ParseContext* ctx) final;
- ::uint8_t* _InternalSerialize(::uint8_t* target,
- io::EpsCopyOutputStream* stream) const final;
-
- protected:
- constexpr ZeroFieldsBase() {}
- explicit ZeroFieldsBase(Arena* arena, bool is_message_owned)
- : Message(arena, is_message_owned) {}
- ZeroFieldsBase(const ZeroFieldsBase&) = delete;
- ZeroFieldsBase& operator=(const ZeroFieldsBase&) = delete;
- ~ZeroFieldsBase() override;
-
- void SetCachedSize(int size) const final { _cached_size_.Set(size); }
-
- static void MergeImpl(Message& to, const Message& from);
- static void CopyImpl(Message& to, const Message& from);
- void InternalSwap(ZeroFieldsBase* other);
-
- mutable internal::CachedSize _cached_size_;
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
diff --git a/include/google/protobuf/generated_message_reflection.h b/include/google/protobuf/generated_message_reflection.h
deleted file mode 100644
index 334b2ccf1d..0000000000
--- a/include/google/protobuf/generated_message_reflection.h
+++ /dev/null
@@ -1,354 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_REFLECTION_H__
-#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_REFLECTION_H__
-
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/once.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-class MapKey;
-class MapValueRef;
-class MessageLayoutInspector;
-class Message;
-struct Metadata;
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace internal {
-class DefaultEmptyOneof;
-// Defined in other files.
-class ExtensionSet; // extension_set.h
-class WeakFieldMap; // weak_field_map.h
-
-// This struct describes the internal layout of the message, hence this is
-// used to act on the message reflectively.
-// default_instance: The default instance of the message. This is only
-// used to obtain pointers to default instances of embedded
-// messages, which GetMessage() will return if the particular
-// sub-message has not been initialized yet. (Thus, all
-// embedded message fields *must* have non-null pointers
-// in the default instance.)
-// offsets: An array of ints giving the byte offsets.
-// For each oneof or weak field, the offset is relative to the
-// default_instance. These can be computed at compile time
-// using the
-// PROTO2_GENERATED_DEFAULT_ONEOF_FIELD_OFFSET()
-// macro. For each none oneof field, the offset is related to
-// the start of the message object. These can be computed at
-// compile time using the
-// PROTO2_GENERATED_MESSAGE_FIELD_OFFSET() macro.
-// Besides offsets for all fields, this array also contains
-// offsets for oneof unions. The offset of the i-th oneof union
-// is offsets[descriptor->field_count() + i].
-// has_bit_indices: Mapping from field indexes to their index in the has
-// bit array.
-// has_bits_offset: Offset in the message of an array of uint32s of size
-// descriptor->field_count()/32, rounded up. This is a
-// bitfield where each bit indicates whether or not the
-// corresponding field of the message has been initialized.
-// The bit for field index i is obtained by the expression:
-// has_bits[i / 32] & (1 << (i % 32))
-// unknown_fields_offset: Offset in the message of the UnknownFieldSet for
-// the message.
-// extensions_offset: Offset in the message of the ExtensionSet for the
-// message, or -1 if the message type has no extension
-// ranges.
-// oneof_case_offset: Offset in the message of an array of uint32s of
-// size descriptor->oneof_decl_count(). Each uint32_t
-// indicates what field is set for each oneof.
-// object_size: The size of a message object of this type, as measured
-// by sizeof().
-// arena_offset: If a message doesn't have a unknown_field_set that stores
-// the arena, it must have a direct pointer to the arena.
-// weak_field_map_offset: If the message proto has weak fields, this is the
-// offset of _weak_field_map_ in the generated proto. Otherwise
-// -1.
-struct ReflectionSchema {
- public:
- // Size of a google::protobuf::Message object of this type.
- uint32_t GetObjectSize() const { return static_cast<uint32_t>(object_size_); }
-
- bool InRealOneof(const FieldDescriptor* field) const {
- return field->containing_oneof() &&
- !field->containing_oneof()->is_synthetic();
- }
-
- // Offset of a non-oneof field. Getting a field offset is slightly more
- // efficient when we know statically that it is not a oneof field.
- uint32_t GetFieldOffsetNonOneof(const FieldDescriptor* field) const {
- GOOGLE_DCHECK(!InRealOneof(field));
- return OffsetValue(offsets_[field->index()], field->type());
- }
-
- // Offset of any field.
- uint32_t GetFieldOffset(const FieldDescriptor* field) const {
- if (InRealOneof(field)) {
- size_t offset =
- static_cast<size_t>(field->containing_type()->field_count()) +
- field->containing_oneof()->index();
- return OffsetValue(offsets_[offset], field->type());
- } else {
- return GetFieldOffsetNonOneof(field);
- }
- }
-
- bool IsFieldInlined(const FieldDescriptor* field) const {
- return Inlined(offsets_[field->index()], field->type());
- }
-
- uint32_t GetOneofCaseOffset(const OneofDescriptor* oneof_descriptor) const {
- return static_cast<uint32_t>(oneof_case_offset_) +
- static_cast<uint32_t>(
- static_cast<size_t>(oneof_descriptor->index()) *
- sizeof(uint32_t));
- }
-
- bool HasHasbits() const { return has_bits_offset_ != -1; }
-
- // Bit index within the bit array of hasbits. Bit order is low-to-high.
- uint32_t HasBitIndex(const FieldDescriptor* field) const {
- if (has_bits_offset_ == -1) return static_cast<uint32_t>(-1);
- GOOGLE_DCHECK(HasHasbits());
- return has_bit_indices_[field->index()];
- }
-
- // Byte offset of the hasbits array.
- uint32_t HasBitsOffset() const {
- GOOGLE_DCHECK(HasHasbits());
- return static_cast<uint32_t>(has_bits_offset_);
- }
-
- bool HasInlinedString() const { return inlined_string_donated_offset_ != -1; }
-
- // Bit index within the bit array of _inlined_string_donated_. Bit order is
- // low-to-high.
- uint32_t InlinedStringIndex(const FieldDescriptor* field) const {
- GOOGLE_DCHECK(HasInlinedString());
- return inlined_string_indices_[field->index()];
- }
-
- // Byte offset of the _inlined_string_donated_ array.
- uint32_t InlinedStringDonatedOffset() const {
- GOOGLE_DCHECK(HasInlinedString());
- return static_cast<uint32_t>(inlined_string_donated_offset_);
- }
-
- // The offset of the InternalMetadataWithArena member.
- // For Lite this will actually be an InternalMetadataWithArenaLite.
- // The schema doesn't contain enough information to distinguish between
- // these two cases.
- uint32_t GetMetadataOffset() const {
- return static_cast<uint32_t>(metadata_offset_);
- }
-
- // Whether this message has an ExtensionSet.
- bool HasExtensionSet() const { return extensions_offset_ != -1; }
-
- // The offset of the ExtensionSet in this message.
- uint32_t GetExtensionSetOffset() const {
- GOOGLE_DCHECK(HasExtensionSet());
- return static_cast<uint32_t>(extensions_offset_);
- }
-
- // The off set of WeakFieldMap when the message contains weak fields.
- // The default is 0 for now.
- int GetWeakFieldMapOffset() const { return weak_field_map_offset_; }
-
- bool IsDefaultInstance(const Message& message) const {
- return &message == default_instance_;
- }
-
- // Returns a pointer to the default value for this field. The size and type
- // of the underlying data depends on the field's type.
- const void* GetFieldDefault(const FieldDescriptor* field) const {
- return reinterpret_cast<const uint8_t*>(default_instance_) +
- OffsetValue(offsets_[field->index()], field->type());
- }
-
- // Returns true if the field is implicitly backed by LazyField.
- bool IsEagerlyVerifiedLazyField(const FieldDescriptor* field) const {
- GOOGLE_DCHECK_EQ(field->type(), FieldDescriptor::TYPE_MESSAGE);
- (void)field;
- return false;
- }
-
- bool IsFieldStripped(const FieldDescriptor* field) const {
- (void)field;
- return false;
- }
-
- bool IsMessageStripped(const Descriptor* descriptor) const {
- (void)descriptor;
- return false;
- }
-
-
- bool HasWeakFields() const { return weak_field_map_offset_ > 0; }
-
- // These members are intended to be private, but we cannot actually make them
- // private because this prevents us from using aggregate initialization of
- // them, ie.
- //
- // ReflectionSchema schema = {a, b, c, d, e, ...};
- // private:
- const Message* default_instance_;
- const uint32_t* offsets_;
- const uint32_t* has_bit_indices_;
- int has_bits_offset_;
- int metadata_offset_;
- int extensions_offset_;
- int oneof_case_offset_;
- int object_size_;
- int weak_field_map_offset_;
- const uint32_t* inlined_string_indices_;
- int inlined_string_donated_offset_;
-
- // We tag offset values to provide additional data about fields (such as
- // "unused" or "lazy" or "inlined").
- static uint32_t OffsetValue(uint32_t v, FieldDescriptor::Type type) {
- if (type == FieldDescriptor::TYPE_MESSAGE ||
- type == FieldDescriptor::TYPE_STRING ||
- type == FieldDescriptor::TYPE_BYTES) {
- return v & 0xFFFFFFFEu;
- }
- return v;
- }
-
- static bool Inlined(uint32_t v, FieldDescriptor::Type type) {
- if (type == FieldDescriptor::TYPE_STRING ||
- type == FieldDescriptor::TYPE_BYTES) {
- return (v & 1u) != 0u;
- } else {
- // Non string/byte fields are not inlined.
- return false;
- }
- }
-};
-
-// Structs that the code generator emits directly to describe a message.
-// These should never used directly except to build a ReflectionSchema
-// object.
-//
-// EXPERIMENTAL: these are changing rapidly, and may completely disappear
-// or merge with ReflectionSchema.
-struct MigrationSchema {
- int32_t offsets_index;
- int32_t has_bit_indices_index;
- int32_t inlined_string_indices_index;
- int object_size;
-};
-
-// This struct tries to reduce unnecessary padding.
-// The num_xxx might not be close to their respective pointer, but this saves
-// padding.
-struct PROTOBUF_EXPORT DescriptorTable {
- mutable bool is_initialized;
- bool is_eager;
- int size; // of serialized descriptor
- const char* descriptor;
- const char* filename;
- once_flag* once;
- const DescriptorTable* const* deps;
- int num_deps;
- int num_messages;
- const MigrationSchema* schemas;
- const Message* const* default_instances;
- const uint32_t* offsets;
- // update the following descriptor arrays.
- Metadata* file_level_metadata;
- const EnumDescriptor** file_level_enum_descriptors;
- const ServiceDescriptor** file_level_service_descriptors;
-};
-
-enum {
- // Tag used on offsets for fields that don't have a real offset.
- // For example, weak message fields go into the WeakFieldMap and not in an
- // actual field.
- kInvalidFieldOffsetTag = 0x40000000u,
-};
-
-// AssignDescriptors() pulls the compiled FileDescriptor from the DescriptorPool
-// and uses it to populate all of the global variables which store pointers to
-// the descriptor objects. It also constructs the reflection objects. It is
-// called the first time anyone calls descriptor() or GetReflection() on one of
-// the types defined in the file. AssignDescriptors() is thread-safe.
-void PROTOBUF_EXPORT AssignDescriptors(const DescriptorTable* table,
- bool eager = false);
-
-// Overload used to implement GetMetadataStatic in the generated code.
-// See comments in compiler/cpp/internal/file.cc as to why.
-// It takes a `Metadata` and returns it to allow for tail calls and reduce
-// binary size.
-Metadata PROTOBUF_EXPORT AssignDescriptors(const DescriptorTable* (*table)(),
- internal::once_flag* once,
- const Metadata& metadata);
-
-// These cannot be in lite so we put them in the reflection.
-PROTOBUF_EXPORT void UnknownFieldSetSerializer(const uint8_t* base,
- uint32_t offset, uint32_t tag,
- uint32_t has_offset,
- io::CodedOutputStream* output);
-
-struct PROTOBUF_EXPORT AddDescriptorsRunner {
- explicit AddDescriptorsRunner(const DescriptorTable* table);
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_REFLECTION_H__
diff --git a/include/google/protobuf/generated_message_tctable_decl.h b/include/google/protobuf/generated_message_tctable_decl.h
deleted file mode 100644
index b1bb1def70..0000000000
--- a/include/google/protobuf/generated_message_tctable_decl.h
+++ /dev/null
@@ -1,312 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file contains declarations needed in generated headers for messages
-// that use tail-call table parsing. Everything in this file is for internal
-// use only.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_DECL_H__
-#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_DECL_H__
-
-#include <array>
-#include <cstddef>
-#include <cstdint>
-#include <type_traits>
-
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/parse_context.h>
-
-// Must come last:
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Additional information about this field:
-struct TcFieldData {
- constexpr TcFieldData() : data(0) {}
-
- // Fast table entry constructor:
- constexpr TcFieldData(uint16_t coded_tag, uint8_t hasbit_idx, uint8_t aux_idx,
- uint16_t offset)
- : data(uint64_t{offset} << 48 | //
- uint64_t{aux_idx} << 24 | //
- uint64_t{hasbit_idx} << 16 | //
- uint64_t{coded_tag}) {}
-
- // Fields used in fast table parsing:
- //
- // Bit:
- // +-----------+-------------------+
- // |63 .. 32|31 .. 0|
- // +---------------+---------------+
- // : . : . : . 16|=======| [16] coded_tag()
- // : . : . : 24|===| . : [ 8] hasbit_idx()
- // : . : . 32|===| : . : [ 8] aux_idx()
- // : . 48:---.---: . : . : [16] (unused)
- // |=======| . : . : . : [16] offset()
- // +-----------+-------------------+
- // |63 .. 32|31 .. 0|
- // +---------------+---------------+
-
- template <typename TagType = uint16_t>
- TagType coded_tag() const {
- return static_cast<TagType>(data);
- }
- uint8_t hasbit_idx() const { return static_cast<uint8_t>(data >> 16); }
- uint8_t aux_idx() const { return static_cast<uint8_t>(data >> 24); }
- uint16_t offset() const { return static_cast<uint16_t>(data >> 48); }
-
- // Fields used in mini table parsing:
- //
- // Bit:
- // +-----------+-------------------+
- // |63 .. 32|31 .. 0|
- // +---------------+---------------+
- // : . : . |===============| [32] tag() (decoded)
- // |===============| . : . : [32] entry_offset()
- // +-----------+-------------------+
- // |63 .. 32|31 .. 0|
- // +---------------+---------------+
-
- uint32_t tag() const { return static_cast<uint32_t>(data); }
- uint32_t entry_offset() const { return static_cast<uint32_t>(data >> 32); }
-
- uint64_t data;
-};
-
-struct TcParseTableBase;
-
-// TailCallParseFunc is the function pointer type used in the tailcall table.
-typedef const char* (*TailCallParseFunc)(PROTOBUF_TC_PARAM_DECL);
-
-namespace field_layout {
-struct Offset {
- uint32_t off;
-};
-} // namespace field_layout
-
-#if defined(_MSC_VER) && !defined(_WIN64)
-#pragma warning(push)
-// TcParseTableBase is intentionally overaligned on 32 bit targets.
-#pragma warning(disable : 4324)
-#endif
-
-// Base class for message-level table with info for the tail-call parser.
-struct alignas(uint64_t) TcParseTableBase {
- // Common attributes for message layout:
- uint16_t has_bits_offset;
- uint16_t extension_offset;
- uint32_t extension_range_low;
- uint32_t extension_range_high;
- uint32_t max_field_number;
- uint8_t fast_idx_mask;
- uint16_t lookup_table_offset;
- uint32_t skipmap32;
- uint32_t field_entries_offset;
- uint16_t num_field_entries;
-
- uint16_t num_aux_entries;
- uint32_t aux_offset;
-
- const MessageLite* default_instance;
-
- // Handler for fields which are not handled by table dispatch.
- TailCallParseFunc fallback;
-
- // This constructor exactly follows the field layout, so it's technically
- // not necessary. However, it makes it much much easier to add or re-arrange
- // fields, because it can be overloaded with an additional constructor,
- // temporarily allowing both old and new protocol buffer headers to be
- // compiled.
- constexpr TcParseTableBase(
- uint16_t has_bits_offset, uint16_t extension_offset,
- uint32_t extension_range_low, uint32_t extension_range_high,
- uint32_t max_field_number, uint8_t fast_idx_mask,
- uint16_t lookup_table_offset, uint32_t skipmap32,
- uint32_t field_entries_offset, uint16_t num_field_entries,
- uint16_t num_aux_entries, uint32_t aux_offset,
- const MessageLite* default_instance, TailCallParseFunc fallback)
- : has_bits_offset(has_bits_offset),
- extension_offset(extension_offset),
- extension_range_low(extension_range_low),
- extension_range_high(extension_range_high),
- max_field_number(max_field_number),
- fast_idx_mask(fast_idx_mask),
- lookup_table_offset(lookup_table_offset),
- skipmap32(skipmap32),
- field_entries_offset(field_entries_offset),
- num_field_entries(num_field_entries),
- num_aux_entries(num_aux_entries),
- aux_offset(aux_offset),
- default_instance(default_instance),
- fallback(fallback) {}
-
- // Table entry for fast-path tailcall dispatch handling.
- struct FastFieldEntry {
- // Target function for dispatch:
- TailCallParseFunc target;
- // Field data used during parse:
- TcFieldData bits;
- };
- // There is always at least one table entry.
- const FastFieldEntry* fast_entry(size_t idx) const {
- return reinterpret_cast<const FastFieldEntry*>(this + 1) + idx;
- }
-
- // Returns a begin iterator (pointer) to the start of the field lookup table.
- const uint16_t* field_lookup_begin() const {
- return reinterpret_cast<const uint16_t*>(reinterpret_cast<uintptr_t>(this) +
- lookup_table_offset);
- }
-
- // Field entry for all fields.
- struct FieldEntry {
- uint32_t offset; // offset in the message object
- int32_t has_idx; // has-bit index
- uint16_t aux_idx; // index for `field_aux`.
- uint16_t type_card; // `FieldType` and `Cardinality` (see _impl.h)
- };
-
- // Returns a begin iterator (pointer) to the start of the field entries array.
- const FieldEntry* field_entries_begin() const {
- return reinterpret_cast<const FieldEntry*>(
- reinterpret_cast<uintptr_t>(this) + field_entries_offset);
- }
-
- // Auxiliary entries for field types that need extra information.
- union FieldAux {
- constexpr FieldAux() : message_default(nullptr) {}
- constexpr FieldAux(bool (*enum_validator)(int))
- : enum_validator(enum_validator) {}
- constexpr FieldAux(field_layout::Offset off) : offset(off.off) {}
- constexpr FieldAux(int16_t range_start, uint16_t range_length)
- : enum_range{range_start, range_length} {}
- constexpr FieldAux(const MessageLite* msg) : message_default(msg) {}
- bool (*enum_validator)(int);
- struct {
- int16_t start; // minimum enum number (if it fits)
- uint16_t length; // length of range (i.e., max = start + length - 1)
- } enum_range;
- uint32_t offset;
- const MessageLite* message_default;
- };
- const FieldAux* field_aux(uint32_t idx) const {
- return reinterpret_cast<const FieldAux*>(reinterpret_cast<uintptr_t>(this) +
- aux_offset) +
- idx;
- }
- const FieldAux* field_aux(const FieldEntry* entry) const {
- return field_aux(entry->aux_idx);
- }
-
- // Field name data
- const char* name_data() const {
- return reinterpret_cast<const char*>(reinterpret_cast<uintptr_t>(this) +
- aux_offset +
- num_aux_entries * sizeof(FieldAux));
- }
-};
-
-#if defined(_MSC_VER) && !defined(_WIN64)
-#pragma warning(pop)
-#endif
-
-static_assert(sizeof(TcParseTableBase::FastFieldEntry) <= 16,
- "Fast field entry is too big.");
-static_assert(sizeof(TcParseTableBase::FieldEntry) <= 16,
- "Field entry is too big.");
-
-template <size_t kFastTableSizeLog2, size_t kNumFieldEntries = 0,
- size_t kNumFieldAux = 0, size_t kNameTableSize = 0,
- size_t kFieldLookupSize = 2>
-struct TcParseTable {
- TcParseTableBase header;
-
- // Entries for each field.
- //
- // Fields are indexed by the lowest bits of their field number. The field
- // number is masked to fit inside the table. Note that the parsing logic
- // generally calls `TailCallParseTableBase::fast_entry()` instead of accessing
- // this field directly.
- std::array<TcParseTableBase::FastFieldEntry, (1 << kFastTableSizeLog2)>
- fast_entries;
-
- // Just big enough to find all the field entries.
- std::array<uint16_t, kFieldLookupSize> field_lookup_table;
- // Entries for all fields:
- std::array<TcParseTableBase::FieldEntry, kNumFieldEntries> field_entries;
- std::array<TcParseTableBase::FieldAux, kNumFieldAux> aux_entries;
- std::array<char, kNameTableSize> field_names;
-};
-
-// Partial specialization: if there are no aux entries, there will be no array.
-// In C++, arrays cannot have length 0, but (C++11) std::array<T, 0> is valid.
-// However, different implementations have different sizeof(std::array<T, 0>).
-// Skipping the member makes offset computations portable.
-template <size_t kFastTableSizeLog2, size_t kNumFieldEntries,
- size_t kNameTableSize, size_t kFieldLookupSize>
-struct TcParseTable<kFastTableSizeLog2, kNumFieldEntries, 0, kNameTableSize,
- kFieldLookupSize> {
- TcParseTableBase header;
- std::array<TcParseTableBase::FastFieldEntry, (1 << kFastTableSizeLog2)>
- fast_entries;
- std::array<uint16_t, kFieldLookupSize> field_lookup_table;
- std::array<TcParseTableBase::FieldEntry, kNumFieldEntries> field_entries;
- std::array<char, kNameTableSize> field_names;
-};
-
-// Partial specialization: if there are no fields at all, then we can save space
-// by skipping the field numbers and entries.
-template <size_t kNameTableSize, size_t kFieldLookupSize>
-struct TcParseTable<0, 0, 0, kNameTableSize, kFieldLookupSize> {
- TcParseTableBase header;
- // N.B.: the fast entries are sized by log2, so 2**0 fields = 1 entry.
- // The fast parsing loop will always use this entry, so it must be present.
- std::array<TcParseTableBase::FastFieldEntry, 1> fast_entries;
- std::array<uint16_t, kFieldLookupSize> field_lookup_table;
- std::array<char, kNameTableSize> field_names;
-};
-
-static_assert(std::is_standard_layout<TcParseTable<1>>::value,
- "TcParseTable must be standard layout.");
-
-static_assert(offsetof(TcParseTable<1>, fast_entries) ==
- sizeof(TcParseTableBase),
- "Table entries must be laid out after TcParseTableBase.");
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_DECL_H__
diff --git a/include/google/protobuf/generated_message_tctable_impl.h b/include/google/protobuf/generated_message_tctable_impl.h
deleted file mode 100644
index 21fa5332d3..0000000000
--- a/include/google/protobuf/generated_message_tctable_impl.h
+++ /dev/null
@@ -1,553 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_IMPL_H__
-#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_IMPL_H__
-
-#include <cstdint>
-#include <type_traits>
-
-#include <google/protobuf/port.h>
-#include <google/protobuf/extension_set.h>
-#include <google/protobuf/generated_message_tctable_decl.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// Must come last:
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Message;
-class UnknownFieldSet;
-
-namespace internal {
-
-// Field layout enums.
-//
-// Structural information about fields is packed into a 16-bit value. The enum
-// types below represent bitwise fields, along with their respective widths,
-// shifts, and masks.
-//
-// Bit:
-// +-----------------------+-----------------------+
-// |15 .. 8|7 .. 0|
-// +-----------------------+-----------------------+
-// : . : . : . : . : . : . : 3|========| [3] FieldType
-// : : : : : : 5|=====| : : [2] FieldCardinality
-// : . : . : . : . 8|========| : . : . : [3] FieldRep
-// : : : 10|=====| : : : : [2] TransformValidation
-// : . : .12|=====| . : . : . : . : . : [2] FormatDiscriminator
-// +-----------------------+-----------------------+
-// |15 .. 8|7 .. 0|
-// +-----------------------+-----------------------+
-//
-namespace field_layout {
-// clang-format off
-
-// Field kind (3 bits):
-// These values broadly represent a wire type and an in-memory storage class.
-enum FieldKind : uint16_t {
- kFkShift = 0,
- kFkBits = 3,
- kFkMask = ((1 << kFkBits) - 1) << kFkShift,
-
- kFkNone = 0,
- kFkVarint, // WT=0 rep=8,32,64 bits
- kFkPackedVarint, // WT=2 rep=8,32,64 bits
- kFkFixed, // WT=1,5 rep=32,64 bits
- kFkPackedFixed, // WT=2 rep=32,64 bits
- kFkString, // WT=2 rep=various
- kFkMessage, // WT=2,3,4 rep=MessageLite*
- // Maps are a special case of Message, but use different parsing logic.
- kFkMap, // WT=2 rep=Map(Lite)<various, various>
-};
-
-static_assert(kFkMap < (1 << kFkBits), "too many types");
-
-// Cardinality (2 bits):
-// These values determine how many values a field can have and its presence.
-// Packed fields are represented in FieldType.
-enum Cardinality : uint16_t {
- kFcShift = kFkShift + kFkBits,
- kFcBits = 2,
- kFcMask = ((1 << kFcBits) - 1) << kFcShift,
-
- kFcSingular = 0,
- kFcOptional = 1 << kFcShift,
- kFcRepeated = 2 << kFcShift,
- kFcOneof = 3 << kFcShift,
-};
-
-// Field representation (3 bits):
-// These values are the specific refinements of storage classes in FieldType.
-enum FieldRep : uint16_t {
- kRepShift = kFcShift + kFcBits,
- kRepBits = 3,
- kRepMask = ((1 << kRepBits) - 1) << kRepShift,
-
- // Numeric types (used for optional and repeated fields):
- kRep8Bits = 0,
- kRep32Bits = 2 << kRepShift,
- kRep64Bits = 3 << kRepShift,
- // String types:
- kRepAString = 0, // ArenaStringPtr
- kRepIString = 1 << kRepShift, // InlinedString
- kRepCord = 2 << kRepShift, // absl::Cord
- kRepSPiece = 3 << kRepShift, // StringPieceField
- kRepSString = 4 << kRepShift, // std::string*
- // Message types (WT=2 unless otherwise noted):
- kRepMessage = 0, // MessageLite*
- kRepGroup = 1 << kRepShift, // MessageLite* (WT=3,4)
- kRepLazy = 2 << kRepShift, // LazyField*
- kRepIWeak = 3 << kRepShift, // ImplicitWeak
-};
-
-// Transform/validation (2 bits):
-// These values determine transforms or validation to/from wire format.
-enum TransformValidation : uint16_t {
- kTvShift = kRepShift + kRepBits,
- kTvBits = 2,
- kTvMask = ((1 << kTvBits) - 1) << kTvShift,
-
- // Varint fields:
- kTvZigZag = 1 << kTvShift,
- kTvEnum = 2 << kTvShift, // validate using generated _IsValid()
- kTvRange = 3 << kTvShift, // validate using FieldAux::enum_range
- // String fields:
- kTvUtf8Debug = 1 << kTvShift, // proto2
- kTvUtf8 = 2 << kTvShift, // proto3
-};
-
-static_assert((kTvEnum & kTvRange) != 0,
- "enum validation types must share a bit");
-static_assert((kTvEnum & kTvRange & kTvZigZag) == 0,
- "zigzag encoding is not enum validation");
-
-// Format discriminators (2 bits):
-enum FormatDiscriminator : uint16_t {
- kFmtShift = kTvShift + kTvBits,
- kFmtBits = 2,
- kFmtMask = ((1 << kFmtBits) - 1) << kFmtShift,
-
- // Numeric:
- kFmtUnsigned = 1 << kFmtShift, // fixed, varint
- kFmtSigned = 2 << kFmtShift, // fixed, varint
- kFmtFloating = 3 << kFmtShift, // fixed
- kFmtEnum = 3 << kFmtShift, // varint
- // Strings:
- kFmtUtf8 = 1 << kFmtShift, // string (proto3, enforce_utf8=true)
- kFmtUtf8Escape = 2 << kFmtShift, // string (proto2, enforce_utf8=false)
- // Bytes:
- kFmtArray = 1 << kFmtShift, // bytes
- // Messages:
- kFmtShow = 1 << kFmtShift, // message, map
-};
-
-// Update this assertion (and comments above) when adding or removing bits:
-static_assert(kFmtShift + kFmtBits == 12, "number of bits changed");
-
-// This assertion should not change unless the storage width changes:
-static_assert(kFmtShift + kFmtBits <= 16, "too many bits");
-
-// Convenience aliases (16 bits, with format):
-enum FieldType : uint16_t {
- // Numeric types:
- kBool = kFkVarint | kRep8Bits,
-
- kFixed32 = kFkFixed | kRep32Bits | kFmtUnsigned,
- kUInt32 = kFkVarint | kRep32Bits | kFmtUnsigned,
- kSFixed32 = kFkFixed | kRep32Bits | kFmtSigned,
- kInt32 = kFkVarint | kRep32Bits | kFmtSigned,
- kSInt32 = kFkVarint | kRep32Bits | kFmtSigned | kTvZigZag,
- kFloat = kFkFixed | kRep32Bits | kFmtFloating,
- kEnum = kFkVarint | kRep32Bits | kFmtEnum | kTvEnum,
- kEnumRange = kFkVarint | kRep32Bits | kFmtEnum | kTvRange,
- kOpenEnum = kFkVarint | kRep32Bits | kFmtEnum,
-
- kFixed64 = kFkFixed | kRep64Bits | kFmtUnsigned,
- kUInt64 = kFkVarint | kRep64Bits | kFmtUnsigned,
- kSFixed64 = kFkFixed | kRep64Bits | kFmtSigned,
- kInt64 = kFkVarint | kRep64Bits | kFmtSigned,
- kSInt64 = kFkVarint | kRep64Bits | kFmtSigned | kTvZigZag,
- kDouble = kFkFixed | kRep64Bits | kFmtFloating,
-
- kPackedBool = kFkPackedVarint | kRep8Bits,
-
- kPackedFixed32 = kFkPackedFixed | kRep32Bits | kFmtUnsigned,
- kPackedUInt32 = kFkPackedVarint | kRep32Bits | kFmtUnsigned,
- kPackedSFixed32 = kFkPackedFixed | kRep32Bits | kFmtSigned,
- kPackedInt32 = kFkPackedVarint | kRep32Bits | kFmtSigned,
- kPackedSInt32 = kFkPackedVarint | kRep32Bits | kFmtSigned | kTvZigZag,
- kPackedFloat = kFkPackedFixed | kRep32Bits | kFmtFloating,
- kPackedEnum = kFkPackedVarint | kRep32Bits | kFmtEnum | kTvEnum,
- kPackedEnumRange = kFkPackedVarint | kRep32Bits | kFmtEnum | kTvRange,
- kPackedOpenEnum = kFkPackedVarint | kRep32Bits | kFmtEnum,
-
- kPackedFixed64 = kFkPackedFixed | kRep64Bits | kFmtUnsigned,
- kPackedUInt64 = kFkPackedVarint | kRep64Bits | kFmtUnsigned,
- kPackedSFixed64 = kFkPackedFixed | kRep64Bits | kFmtSigned,
- kPackedInt64 = kFkPackedVarint | kRep64Bits | kFmtSigned,
- kPackedSInt64 = kFkPackedVarint | kRep64Bits | kFmtSigned | kTvZigZag,
- kPackedDouble = kFkPackedFixed | kRep64Bits | kFmtFloating,
-
- // String types:
- kBytes = kFkString | kFmtArray,
- kRawString = kFkString | kFmtUtf8 | kTvUtf8Debug,
- kUtf8String = kFkString | kFmtUtf8 | kTvUtf8,
-
- // Message types:
- kMessage = kFkMessage,
-
- // Map types:
- kMap = kFkMap,
-};
-
-// clang-format on
-} // namespace field_layout
-
-// PROTOBUF_TC_PARAM_DECL are the parameters for tailcall functions, it is
-// defined in port_def.inc.
-//
-// Note that this is performance sensitive: changing the parameters will change
-// the registers used by the ABI calling convention, which subsequently affects
-// register selection logic inside the function.
-
-// PROTOBUF_TC_PARAM_PASS passes values to match PROTOBUF_TC_PARAM_DECL.
-#define PROTOBUF_TC_PARAM_PASS msg, ptr, ctx, table, hasbits, data
-
-#ifndef NDEBUG
-template <size_t align>
-#ifndef _MSC_VER
-[[noreturn]]
-#endif
-void AlignFail(uintptr_t address) {
- GOOGLE_LOG(FATAL) << "Unaligned (" << align << ") access at " << address;
-}
-
-extern template void AlignFail<4>(uintptr_t);
-extern template void AlignFail<8>(uintptr_t);
-#endif
-
-// TcParser implements most of the parsing logic for tailcall tables.
-class PROTOBUF_EXPORT TcParser final {
- public:
- static const char* GenericFallback(PROTOBUF_TC_PARAM_DECL);
- static const char* GenericFallbackLite(PROTOBUF_TC_PARAM_DECL);
-
- static const char* ParseLoop(MessageLite* msg, const char* ptr,
- ParseContext* ctx,
- const TcParseTableBase* table);
-
- // Functions referenced by generated fast tables (numeric types):
- // F: fixed V: varint Z: zigzag
- // 8/32/64: storage type width (bits)
- // S: singular R: repeated P: packed
- // 1/2: tag length (bytes)
-
- // Fixed:
- static const char* FastF32S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF32S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF32R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF32R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF32P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF32P2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastF64P2(PROTOBUF_TC_PARAM_DECL);
-
- // Varint:
- static const char* FastV8S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV8S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV8R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV8R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV8P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV8P2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV32P2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastV64P2(PROTOBUF_TC_PARAM_DECL);
-
- // Varint (with zigzag):
- static const char* FastZ32S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ32S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ32R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ32R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ32P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ32P2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64S1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64S2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64R1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64R2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64P1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastZ64P2(PROTOBUF_TC_PARAM_DECL);
-
- // Functions referenced by generated fast tables (closed enum):
- // E: closed enum (N.B.: open enums use V32, above)
- // r: enum range v: enum validator (_IsValid function)
- // S: singular R: repeated
- // 1/2: tag length (bytes)
- static const char* FastErS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastErS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastErR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastErR2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastEvS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastEvS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastEvR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastEvR2(PROTOBUF_TC_PARAM_DECL);
-
- // Functions referenced by generated fast tables (string types):
- // B: bytes S: string U: UTF-8 string
- // (empty): ArenaStringPtr i: InlinedString
- // S: singular R: repeated
- // 1/2: tag length (bytes)
- static const char* FastBS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastBS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastBR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastBR2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSR2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUR2(PROTOBUF_TC_PARAM_DECL);
-
- static const char* FastBiS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastBiS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSiS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastSiS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUiS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastUiS2(PROTOBUF_TC_PARAM_DECL);
-
- // Functions referenced by generated fast tables (message types):
- // M: message G: group
- // S: singular R: repeated
- // 1/2: tag length (bytes)
- static const char* FastMS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastMS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastMR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastMR2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastGS1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastGS2(PROTOBUF_TC_PARAM_DECL);
- static const char* FastGR1(PROTOBUF_TC_PARAM_DECL);
- static const char* FastGR2(PROTOBUF_TC_PARAM_DECL);
-
- template <typename T>
- static inline T& RefAt(void* x, size_t offset) {
- T* target = reinterpret_cast<T*>(static_cast<char*>(x) + offset);
-#ifndef NDEBUG
- if (PROTOBUF_PREDICT_FALSE(
- reinterpret_cast<uintptr_t>(target) % alignof(T) != 0)) {
- AlignFail<alignof(T)>(reinterpret_cast<uintptr_t>(target));
- }
-#endif
- return *target;
- }
-
- template <typename T>
- static inline const T& RefAt(const void* x, size_t offset) {
- const T* target =
- reinterpret_cast<const T*>(static_cast<const char*>(x) + offset);
-#ifndef NDEBUG
- if (PROTOBUF_PREDICT_FALSE(
- reinterpret_cast<uintptr_t>(target) % alignof(T) != 0)) {
- AlignFail<alignof(T)>(reinterpret_cast<uintptr_t>(target));
- }
-#endif
- return *target;
- }
-
- template <typename T>
- static inline T ReadAt(const void* x, size_t offset) {
- T out;
- memcpy(&out, static_cast<const char*>(x) + offset, sizeof(T));
- return out;
- }
-
- // Mini parsing:
- //
- // This function parses a field from incoming data based on metadata stored in
- // the message definition. If the field is not defined in the message, it is
- // stored in either the ExtensionSet (if applicable) or the UnknownFieldSet.
- //
- // NOTE: Currently, this function only calls the table-level fallback
- // function, so it should only be called as the fallback from fast table
- // parsing.
- static const char* MiniParse(PROTOBUF_TC_PARAM_DECL);
-
- private:
- friend class GeneratedTcTableLiteTest;
-
- template <typename TagType, bool group_coding>
- static inline const char* SingularParseMessageAuxImpl(PROTOBUF_TC_PARAM_DECL);
- template <typename TagType, bool group_coding>
- static inline const char* RepeatedParseMessageAuxImpl(PROTOBUF_TC_PARAM_DECL);
-
- static inline PROTOBUF_ALWAYS_INLINE void SyncHasbits(
- MessageLite* msg, uint64_t hasbits, const TcParseTableBase* table) {
- const uint32_t has_bits_offset = table->has_bits_offset;
- if (has_bits_offset) {
- // Only the first 32 has-bits are updated. Nothing above those is stored,
- // but e.g. messages without has-bits update the upper bits.
- RefAt<uint32_t>(msg, has_bits_offset) = static_cast<uint32_t>(hasbits);
- }
- }
-
- static const char* TagDispatch(PROTOBUF_TC_PARAM_DECL);
- static const char* ToTagDispatch(PROTOBUF_TC_PARAM_DECL);
- static const char* ToParseLoop(PROTOBUF_TC_PARAM_DECL);
- static const char* Error(PROTOBUF_TC_PARAM_DECL);
-
- static const char* FastUnknownEnumFallback(PROTOBUF_TC_PARAM_DECL);
-
- class ScopedArenaSwap;
-
- template <class MessageBaseT, class UnknownFieldsT>
- static const char* GenericFallbackImpl(PROTOBUF_TC_PARAM_DECL) {
-#define CHK_(x) \
- if (PROTOBUF_PREDICT_FALSE(!(x))) return nullptr /* NOLINT */
-
- SyncHasbits(msg, hasbits, table);
- CHK_(ptr);
- uint32_t tag = data.tag();
- if ((tag & 7) == WireFormatLite::WIRETYPE_END_GROUP || tag == 0) {
- ctx->SetLastTag(tag);
- return ptr;
- }
- uint32_t num = tag >> 3;
- if (table->extension_range_low <= num &&
- num <= table->extension_range_high) {
- return RefAt<ExtensionSet>(msg, table->extension_offset)
- .ParseField(tag, ptr,
- static_cast<const MessageBaseT*>(table->default_instance),
- &msg->_internal_metadata_, ctx);
- }
- return UnknownFieldParse(
- tag, msg->_internal_metadata_.mutable_unknown_fields<UnknownFieldsT>(),
- ptr, ctx);
-#undef CHK_
- }
-
- // Note: `inline` is needed on template function declarations below to avoid
- // -Wattributes diagnostic in GCC.
-
- // Implementations for fast fixed field parsing functions:
- template <typename LayoutType, typename TagType>
- static inline const char* SingularFixed(PROTOBUF_TC_PARAM_DECL);
- template <typename LayoutType, typename TagType>
- static inline const char* RepeatedFixed(PROTOBUF_TC_PARAM_DECL);
- template <typename LayoutType, typename TagType>
- static inline const char* PackedFixed(PROTOBUF_TC_PARAM_DECL);
-
- // Implementations for fast varint field parsing functions:
- template <typename FieldType, typename TagType, bool zigzag = false>
- static inline const char* SingularVarint(PROTOBUF_TC_PARAM_DECL);
- template <typename FieldType, typename TagType, bool zigzag = false>
- static inline const char* RepeatedVarint(PROTOBUF_TC_PARAM_DECL);
- template <typename FieldType, typename TagType, bool zigzag = false>
- static inline const char* PackedVarint(PROTOBUF_TC_PARAM_DECL);
-
- // Helper for ints > 127:
- template <typename FieldType, typename TagType, bool zigzag = false>
- static const char* SingularVarBigint(PROTOBUF_TC_PARAM_DECL);
-
- // Implementations for fast enum field parsing functions:
- template <typename TagType, uint16_t xform_val>
- static inline const char* SingularEnum(PROTOBUF_TC_PARAM_DECL);
- template <typename TagType, uint16_t xform_val>
- static inline const char* RepeatedEnum(PROTOBUF_TC_PARAM_DECL);
-
- // Implementations for fast string field parsing functions:
- enum Utf8Type { kNoUtf8 = 0, kUtf8 = 1, kUtf8ValidateOnly = 2 };
- template <typename TagType, Utf8Type utf8>
- static inline const char* SingularString(PROTOBUF_TC_PARAM_DECL);
- template <typename TagType, Utf8Type utf8>
- static inline const char* RepeatedString(PROTOBUF_TC_PARAM_DECL);
-
- // Mini field lookup:
- static const TcParseTableBase::FieldEntry* FindFieldEntry(
- const TcParseTableBase* table, uint32_t field_num);
- static StringPiece MessageName(const TcParseTableBase* table);
- static StringPiece FieldName(const TcParseTableBase* table,
- const TcParseTableBase::FieldEntry*);
- static bool ChangeOneof(const TcParseTableBase* table,
- const TcParseTableBase::FieldEntry& entry,
- uint32_t field_num, ParseContext* ctx,
- MessageLite* msg);
-
- // UTF-8 validation:
- static void ReportFastUtf8Error(uint32_t decoded_tag,
- const TcParseTableBase* table);
- static bool MpVerifyUtf8(StringPiece wire_bytes,
- const TcParseTableBase* table,
- const TcParseTableBase::FieldEntry& entry,
- uint16_t xform_val);
-
- // For FindFieldEntry tests:
- friend class FindFieldEntryTest;
- static constexpr const uint32_t kMtSmallScanSize = 4;
-
- // Mini parsing:
- static const char* MpVarint(PROTOBUF_TC_PARAM_DECL);
- static const char* MpRepeatedVarint(PROTOBUF_TC_PARAM_DECL);
- static const char* MpPackedVarint(PROTOBUF_TC_PARAM_DECL);
- static const char* MpFixed(PROTOBUF_TC_PARAM_DECL);
- static const char* MpRepeatedFixed(PROTOBUF_TC_PARAM_DECL);
- static const char* MpPackedFixed(PROTOBUF_TC_PARAM_DECL);
- static const char* MpString(PROTOBUF_TC_PARAM_DECL);
- static const char* MpRepeatedString(PROTOBUF_TC_PARAM_DECL);
- static const char* MpMessage(PROTOBUF_TC_PARAM_DECL);
- static const char* MpRepeatedMessage(PROTOBUF_TC_PARAM_DECL);
- static const char* MpMap(PROTOBUF_TC_PARAM_DECL);
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_TCTABLE_IMPL_H__
diff --git a/include/google/protobuf/generated_message_util.h b/include/google/protobuf/generated_message_util.h
deleted file mode 100644
index 71d15cdebc..0000000000
--- a/include/google/protobuf/generated_message_util.h
+++ /dev/null
@@ -1,214 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains miscellaneous helper code used by generated code --
-// including lite types -- but which should not be used directly by users.
-
-#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__
-#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__
-
-#include <assert.h>
-
-#include <atomic>
-#include <climits>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/once.h> // Add direct dep on port for pb.cc
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/any.h>
-#include <google/protobuf/has_bits.h>
-#include <google/protobuf/implicit_weak_message.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/repeated_field.h>
-#include <google/protobuf/wire_format_lite.h>
-#include <google/protobuf/stubs/casts.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-class Arena;
-class Message;
-
-namespace io {
-class CodedInputStream;
-}
-
-namespace internal {
-
-template <typename To, typename From>
-inline To DownCast(From* f) {
- return PROTOBUF_NAMESPACE_ID::internal::down_cast<To>(f);
-}
-template <typename To, typename From>
-inline To DownCast(From& f) {
- return PROTOBUF_NAMESPACE_ID::internal::down_cast<To>(f);
-}
-
-
-// This fastpath inlines a single branch instead of having to make the
-// InitProtobufDefaults function call.
-// It also generates less inlined code than a function-scope static initializer.
-PROTOBUF_EXPORT extern std::atomic<bool> init_protobuf_defaults_state;
-PROTOBUF_EXPORT void InitProtobufDefaultsSlow();
-PROTOBUF_EXPORT inline void InitProtobufDefaults() {
- if (PROTOBUF_PREDICT_FALSE(
- !init_protobuf_defaults_state.load(std::memory_order_acquire))) {
- InitProtobufDefaultsSlow();
- }
-}
-
-// This used by proto1
-PROTOBUF_EXPORT inline const std::string& GetEmptyString() {
- InitProtobufDefaults();
- return GetEmptyStringAlreadyInited();
-}
-
-
-// True if IsInitialized() is true for all elements of t. Type is expected
-// to be a RepeatedPtrField<some message type>. It's useful to have this
-// helper here to keep the protobuf compiler from ever having to emit loops in
-// IsInitialized() methods. We want the C++ compiler to inline this or not
-// as it sees fit.
-template <typename Msg>
-bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
- for (int i = t.size(); --i >= 0;) {
- if (!t.Get(i).IsInitialized()) return false;
- }
- return true;
-}
-
-// "Weak" variant of AllAreInitialized, used to implement implicit weak fields.
-// This version operates on MessageLite to avoid introducing a dependency on the
-// concrete message type.
-template <class T>
-bool AllAreInitializedWeak(const RepeatedPtrField<T>& t) {
- for (int i = t.size(); --i >= 0;) {
- if (!reinterpret_cast<const RepeatedPtrFieldBase&>(t)
- .Get<ImplicitWeakTypeHandler<T> >(i)
- .IsInitialized()) {
- return false;
- }
- }
- return true;
-}
-
-inline bool IsPresent(const void* base, uint32_t hasbit) {
- const uint32_t* has_bits_array = static_cast<const uint32_t*>(base);
- return (has_bits_array[hasbit / 32] & (1u << (hasbit & 31))) != 0;
-}
-
-inline bool IsOneofPresent(const void* base, uint32_t offset, uint32_t tag) {
- const uint32_t* oneof = reinterpret_cast<const uint32_t*>(
- static_cast<const uint8_t*>(base) + offset);
- return *oneof == tag >> 3;
-}
-
-typedef void (*SpecialSerializer)(const uint8_t* base, uint32_t offset,
- uint32_t tag, uint32_t has_offset,
- io::CodedOutputStream* output);
-
-PROTOBUF_EXPORT void ExtensionSerializer(const MessageLite* extendee,
- const uint8_t* ptr, uint32_t offset,
- uint32_t tag, uint32_t has_offset,
- io::CodedOutputStream* output);
-PROTOBUF_EXPORT void UnknownFieldSerializerLite(const uint8_t* base,
- uint32_t offset, uint32_t tag,
- uint32_t has_offset,
- io::CodedOutputStream* output);
-
-PROTOBUF_EXPORT MessageLite* DuplicateIfNonNullInternal(MessageLite* message);
-PROTOBUF_EXPORT MessageLite* GetOwnedMessageInternal(Arena* message_arena,
- MessageLite* submessage,
- Arena* submessage_arena);
-PROTOBUF_EXPORT void GenericSwap(MessageLite* m1, MessageLite* m2);
-// We specialize GenericSwap for non-lite messages to benefit from reflection.
-PROTOBUF_EXPORT void GenericSwap(Message* m1, Message* m2);
-
-template <typename T>
-T* DuplicateIfNonNull(T* message) {
- // The casts must be reinterpret_cast<> because T might be a forward-declared
- // type that the compiler doesn't know is related to MessageLite.
- return reinterpret_cast<T*>(
- DuplicateIfNonNullInternal(reinterpret_cast<MessageLite*>(message)));
-}
-
-template <typename T>
-T* GetOwnedMessage(Arena* message_arena, T* submessage,
- Arena* submessage_arena) {
- // The casts must be reinterpret_cast<> because T might be a forward-declared
- // type that the compiler doesn't know is related to MessageLite.
- return reinterpret_cast<T*>(GetOwnedMessageInternal(
- message_arena, reinterpret_cast<MessageLite*>(submessage),
- submessage_arena));
-}
-
-// Hide atomic from the public header and allow easy change to regular int
-// on platforms where the atomic might have a perf impact.
-class PROTOBUF_EXPORT CachedSize {
- public:
- int Get() const { return size_.load(std::memory_order_relaxed); }
- void Set(int size) { size_.store(size, std::memory_order_relaxed); }
-
- private:
- std::atomic<int> size_{0};
-};
-
-PROTOBUF_EXPORT void DestroyMessage(const void* message);
-PROTOBUF_EXPORT void DestroyString(const void* s);
-// Destroy (not delete) the message
-inline void OnShutdownDestroyMessage(const void* ptr) {
- OnShutdownRun(DestroyMessage, ptr);
-}
-// Destroy the string (call std::string destructor)
-inline void OnShutdownDestroyString(const std::string* ptr) {
- OnShutdownRun(DestroyString, ptr);
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__
diff --git a/include/google/protobuf/has_bits.h b/include/google/protobuf/has_bits.h
deleted file mode 100644
index f8a45879f1..0000000000
--- a/include/google/protobuf/has_bits.h
+++ /dev/null
@@ -1,117 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_HAS_BITS_H__
-#define GOOGLE_PROTOBUF_HAS_BITS_H__
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/port.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-template <size_t doublewords>
-class HasBits {
- public:
- PROTOBUF_NDEBUG_INLINE constexpr HasBits() : has_bits_{} {}
-
- PROTOBUF_NDEBUG_INLINE void Clear() {
- memset(has_bits_, 0, sizeof(has_bits_));
- }
-
- PROTOBUF_NDEBUG_INLINE uint32_t& operator[](int index) {
- return has_bits_[index];
- }
-
- PROTOBUF_NDEBUG_INLINE const uint32_t& operator[](int index) const {
- return has_bits_[index];
- }
-
- bool operator==(const HasBits<doublewords>& rhs) const {
- return memcmp(has_bits_, rhs.has_bits_, sizeof(has_bits_)) == 0;
- }
-
- bool operator!=(const HasBits<doublewords>& rhs) const {
- return !(*this == rhs);
- }
-
- void Or(const HasBits<doublewords>& rhs) {
- for (size_t i = 0; i < doublewords; i++) has_bits_[i] |= rhs[i];
- }
-
- bool empty() const;
-
- private:
- uint32_t has_bits_[doublewords];
-};
-
-template <>
-inline bool HasBits<1>::empty() const {
- return !has_bits_[0];
-}
-
-template <>
-inline bool HasBits<2>::empty() const {
- return !(has_bits_[0] | has_bits_[1]);
-}
-
-template <>
-inline bool HasBits<3>::empty() const {
- return !(has_bits_[0] | has_bits_[1] | has_bits_[2]);
-}
-
-template <>
-inline bool HasBits<4>::empty() const {
- return !(has_bits_[0] | has_bits_[1] | has_bits_[2] | has_bits_[3]);
-}
-
-template <size_t doublewords>
-inline bool HasBits<doublewords>::empty() const {
- for (size_t i = 0; i < doublewords; ++i) {
- if (has_bits_[i]) return false;
- }
- return true;
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_HAS_BITS_H__
diff --git a/include/google/protobuf/implicit_weak_message.h b/include/google/protobuf/implicit_weak_message.h
deleted file mode 100644
index b894ab4809..0000000000
--- a/include/google/protobuf/implicit_weak_message.h
+++ /dev/null
@@ -1,213 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_IMPLICIT_WEAK_MESSAGE_H__
-#define GOOGLE_PROTOBUF_IMPLICIT_WEAK_MESSAGE_H__
-
-#include <string>
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/repeated_field.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-// This file is logically internal-only and should only be used by protobuf
-// generated code.
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// An implementation of MessageLite that treats all data as unknown. This type
-// acts as a placeholder for an implicit weak field in the case where the true
-// message type does not get linked into the binary.
-class PROTOBUF_EXPORT ImplicitWeakMessage : public MessageLite {
- public:
- ImplicitWeakMessage() : data_(new std::string) {}
- explicit constexpr ImplicitWeakMessage(ConstantInitialized)
- : data_(nullptr) {}
- explicit ImplicitWeakMessage(Arena* arena)
- : MessageLite(arena), data_(new std::string) {}
-
- ~ImplicitWeakMessage() override {
- // data_ will be null in the default instance, but we can safely call delete
- // here because the default instance will never be destroyed.
- delete data_;
- }
-
- static const ImplicitWeakMessage* default_instance();
-
- std::string GetTypeName() const override { return ""; }
-
- MessageLite* New(Arena* arena) const override {
- return Arena::CreateMessage<ImplicitWeakMessage>(arena);
- }
-
- void Clear() override { data_->clear(); }
-
- bool IsInitialized() const override { return true; }
-
- void CheckTypeAndMergeFrom(const MessageLite& other) override {
- const std::string* other_data =
- static_cast<const ImplicitWeakMessage&>(other).data_;
- if (other_data != nullptr) {
- data_->append(*other_data);
- }
- }
-
- const char* _InternalParse(const char* ptr, ParseContext* ctx) final;
-
- size_t ByteSizeLong() const override {
- return data_ == nullptr ? 0 : data_->size();
- }
-
- uint8_t* _InternalSerialize(uint8_t* target,
- io::EpsCopyOutputStream* stream) const final {
- if (data_ == nullptr) {
- return target;
- }
- return stream->WriteRaw(data_->data(), static_cast<int>(data_->size()),
- target);
- }
-
- int GetCachedSize() const override {
- return data_ == nullptr ? 0 : static_cast<int>(data_->size());
- }
-
- typedef void InternalArenaConstructable_;
-
- private:
- // This std::string is allocated on the heap, but we use a raw pointer so that
- // the default instance can be constant-initialized. In the const methods, we
- // have to handle the possibility of data_ being null.
- std::string* data_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImplicitWeakMessage);
-};
-
-struct ImplicitWeakMessageDefaultType;
-extern ImplicitWeakMessageDefaultType implicit_weak_message_default_instance;
-
-// A type handler for use with implicit weak repeated message fields.
-template <typename ImplicitWeakType>
-class ImplicitWeakTypeHandler {
- public:
- typedef MessageLite Type;
- static constexpr bool Moveable = false;
-
- static inline MessageLite* NewFromPrototype(const MessageLite* prototype,
- Arena* arena = nullptr) {
- return prototype->New(arena);
- }
-
- static inline void Delete(MessageLite* value, Arena* arena) {
- if (arena == nullptr) {
- delete value;
- }
- }
- static inline Arena* GetArena(MessageLite* value) {
- return value->GetArena();
- }
- static inline void Clear(MessageLite* value) { value->Clear(); }
- static void Merge(const MessageLite& from, MessageLite* to) {
- to->CheckTypeAndMergeFrom(from);
- }
-};
-
-} // namespace internal
-
-template <typename T>
-struct WeakRepeatedPtrField {
- using TypeHandler = internal::ImplicitWeakTypeHandler<T>;
- constexpr WeakRepeatedPtrField() : weak() {}
- explicit WeakRepeatedPtrField(Arena* arena) : weak(arena) {}
- ~WeakRepeatedPtrField() { weak.template Destroy<TypeHandler>(); }
-
- typedef internal::RepeatedPtrIterator<MessageLite> iterator;
- typedef internal::RepeatedPtrIterator<const MessageLite> const_iterator;
- typedef internal::RepeatedPtrOverPtrsIterator<MessageLite*, void*>
- pointer_iterator;
- typedef internal::RepeatedPtrOverPtrsIterator<const MessageLite* const,
- const void* const>
- const_pointer_iterator;
-
- iterator begin() { return iterator(base().raw_data()); }
- const_iterator begin() const { return iterator(base().raw_data()); }
- const_iterator cbegin() const { return begin(); }
- iterator end() { return begin() + base().size(); }
- const_iterator end() const { return begin() + base().size(); }
- const_iterator cend() const { return end(); }
- pointer_iterator pointer_begin() {
- return pointer_iterator(base().raw_mutable_data());
- }
- const_pointer_iterator pointer_begin() const {
- return const_pointer_iterator(base().raw_mutable_data());
- }
- pointer_iterator pointer_end() {
- return pointer_iterator(base().raw_mutable_data() + base().size());
- }
- const_pointer_iterator pointer_end() const {
- return const_pointer_iterator(base().raw_mutable_data() + base().size());
- }
-
- MessageLite* AddWeak(const MessageLite* prototype) {
- return base().AddWeak(prototype);
- }
- T* Add() { return weak.Add(); }
- void Clear() { base().template Clear<TypeHandler>(); }
- void MergeFrom(const WeakRepeatedPtrField& other) {
- base().template MergeFrom<TypeHandler>(other.base());
- }
- void InternalSwap(WeakRepeatedPtrField* other) {
- base().InternalSwap(&other->base());
- }
-
- const internal::RepeatedPtrFieldBase& base() const { return weak; }
- internal::RepeatedPtrFieldBase& base() { return weak; }
- // Union disables running the destructor. Which would create a strong link.
- // Instead we explicitly destroy the underlying base through the virtual
- // destructor.
- union {
- RepeatedPtrField<T> weak;
- };
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IMPLICIT_WEAK_MESSAGE_H__
diff --git a/include/google/protobuf/inlined_string_field.h b/include/google/protobuf/inlined_string_field.h
deleted file mode 100644
index 79e37d414b..0000000000
--- a/include/google/protobuf/inlined_string_field.h
+++ /dev/null
@@ -1,532 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_INLINED_STRING_FIELD_H__
-#define GOOGLE_PROTOBUF_INLINED_STRING_FIELD_H__
-
-#include <string>
-#include <utility>
-
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/message_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-class Arena;
-
-namespace internal {
-
-// InlinedStringField wraps a std::string instance and exposes an API similar to
-// ArenaStringPtr's wrapping of a std::string* instance.
-//
-// default_value parameters are taken for consistency with ArenaStringPtr, but
-// are not used for most methods. With inlining, these should be removed from
-// the generated binary.
-//
-// InlinedStringField has a donating mechanism that allows string buffer
-// allocated on arena. A string is donated means both the string container and
-// the data buffer are on arena. The donating mechanism here is similar to the
-// one in ArenaStringPtr with some differences:
-//
-// When an InlinedStringField is constructed, the donating state is true. This
-// is because the string container is directly stored in the message on the
-// arena:
-//
-// Construction: donated=true
-// Arena:
-// +-----------------------+
-// |Message foo: |
-// | +-------------------+ |
-// | |InlinedStringField:| |
-// | | +-----+ | |
-// | | | | | | | |
-// | | +-----+ | |
-// | +-------------------+ |
-// +-----------------------+
-//
-// When lvalue Set is called, the donating state is still true. String data will
-// be allocated on the arena:
-//
-// Lvalue Set: donated=true
-// Arena:
-// +-----------------------+
-// |Message foo: |
-// | +-------------------+ |
-// | |InlinedStringField:| |
-// | | +-----+ | |
-// | | | | | | | |
-// | | +|----+ | |
-// | +--|----------------+ |
-// | V |
-// | +----------------+ |
-// | |'f','o','o',... | |
-// | +----------------+ |
-// +-----------------------+
-//
-// Some operations will undonate a donated string, including: Mutable,
-// SetAllocated, Rvalue Set, and Swap with a non-donated string.
-//
-// For more details of the donating states transitions, go/pd-inlined-string.
-class PROTOBUF_EXPORT InlinedStringField {
- public:
- InlinedStringField() { Init(); }
- inline void Init() { new (get_mutable()) std::string(); }
- // Add the dummy parameter just to make InlinedStringField(nullptr)
- // unambiguous.
- constexpr InlinedStringField(
- const ExplicitlyConstructed<std::string>* /*default_value*/,
- bool /*dummy*/)
- : value_{} {}
- explicit InlinedStringField(const std::string& default_value);
- explicit InlinedStringField(Arena* arena);
- ~InlinedStringField() { Destruct(); }
-
- // Lvalue Set. To save space, we pack the donating states of multiple
- // InlinedStringFields into an uint32_t `donating_states`. The `mask`
- // indicates the position of the bit for this InlinedStringField. `donated` is
- // whether this field is donated.
- //
- // The caller should guarantee that:
- //
- // `donated == ((donating_states & ~mask) != 0)`
- //
- // This method never changes the `donating_states`.
- void Set(ConstStringParam value, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- // Rvalue Set. If this field is donated, this method will undonate this field
- // by mutating the `donating_states` according to `mask`.
- void Set(std::string&& value, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- void Set(const char* str, ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- void Set(const char* str, size_t size, ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- template <typename RefWrappedType>
- void Set(std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg);
-
- void SetBytes(ConstStringParam value, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- void SetBytes(std::string&& value, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- void SetBytes(const char* str, ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg);
-
- void SetBytes(const void* p, size_t size, ::google::protobuf::Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg);
-
- template <typename RefWrappedType>
- void SetBytes(std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg);
-
- PROTOBUF_NDEBUG_INLINE void SetNoArena(StringPiece value);
- PROTOBUF_NDEBUG_INLINE void SetNoArena(std::string&& value);
-
- // Basic accessors.
- PROTOBUF_NDEBUG_INLINE const std::string& Get() const { return GetNoArena(); }
- PROTOBUF_NDEBUG_INLINE const std::string& GetNoArena() const;
-
- // Mutable returns a std::string* instance that is heap-allocated. If this
- // field is donated, this method undonates this field by mutating the
- // `donating_states` according to `mask`, and copies the content of the
- // original string to the returning string.
- std::string* Mutable(Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg);
- std::string* Mutable(const LazyString& default_value, Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg);
-
- // Mutable(nullptr_t) is an overload to explicitly support Mutable(nullptr)
- // calls used by the internal parser logic. This provides API equivalence with
- // ArenaStringPtr, while still protecting against calls with arena pointers.
- std::string* Mutable(std::nullptr_t);
- std::string* MutableNoCopy(std::nullptr_t);
-
- // Takes a std::string that is heap-allocated, and takes ownership. The
- // std::string's destructor is registered with the arena. Used to implement
- // set_allocated_<field> in generated classes.
- //
- // If this field is donated, this method undonates this field by mutating the
- // `donating_states` according to `mask`.
- void SetAllocated(const std::string* default_value, std::string* value,
- Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg);
-
- void SetAllocatedNoArena(const std::string* default_value,
- std::string* value);
-
- // Release returns a std::string* instance that is heap-allocated and is not
- // Own()'d by any arena. If the field is not set, this returns nullptr. The
- // caller retains ownership. Clears this field back to nullptr state. Used to
- // implement release_<field>() methods on generated classes.
- PROTOBUF_NODISCARD std::string* Release(Arena* arena, bool donated);
- PROTOBUF_NODISCARD std::string* Release();
-
- // --------------------------------------------------------
- // Below functions will be removed in subsequent code change
- // --------------------------------------------------------
-#ifdef DEPRECATED_METHODS_TO_BE_DELETED
- PROTOBUF_NODISCARD std::string* Release(const std::string*, Arena* arena,
- bool donated) {
- return Release(arena, donated);
- }
-
- PROTOBUF_NODISCARD std::string* ReleaseNonDefault(const std::string*,
- Arena* arena) {
- return Release();
- }
-
- std::string* ReleaseNonDefaultNoArena(const std::string* default_value) {
- return Release();
- }
-
- void Set(const std::string*, ConstStringParam value, Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- Set(value, arena, donated, donating_states, mask, msg);
- }
-
- void Set(const std::string*, std::string&& value, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg) {
- Set(std::move(value), arena, donated, donating_states, mask, msg);
- }
-
-
- template <typename FirstParam>
- void Set(FirstParam, const char* str, ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask, MessageLite* msg) {
- Set(str, arena, donated, donating_states, mask, msg);
- }
-
- template <typename FirstParam>
- void Set(FirstParam p1, const char* str, size_t size, ::google::protobuf::Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- Set(str, size, arena, donated, donating_states, mask, msg);
- }
-
- template <typename FirstParam, typename RefWrappedType>
- void Set(FirstParam p1,
- std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(const_string_ref, arena, donated, donating_states, mask, msg);
- }
-
- void SetBytes(const std::string*, ConstStringParam value, Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- Set(value, arena, donated, donating_states, mask, msg);
- }
-
-
- void SetBytes(const std::string*, std::string&& value, Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- Set(std::move(value), arena, donated, donating_states, mask, msg);
- }
-
- template <typename FirstParam>
- void SetBytes(FirstParam p1, const char* str, ::google::protobuf::Arena* arena,
- bool donated, uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- SetBytes(str, arena, donated, donating_states, mask, msg);
- }
-
- template <typename FirstParam>
- void SetBytes(FirstParam p1, const void* p, size_t size,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- SetBytes(p, size, arena, donated, donating_states, mask, msg);
- }
-
- template <typename FirstParam, typename RefWrappedType>
- void SetBytes(FirstParam p1,
- std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- SetBytes(const_string_ref.get(), arena, donated, donating_states, mask,
- msg);
- }
-
- void SetNoArena(const std::string*, StringPiece value) {
- SetNoArena(value);
- }
- void SetNoArena(const std::string*, std::string&& value) {
- SetNoArena(std::move(value));
- }
-
- std::string* Mutable(ArenaStringPtr::EmptyDefault, Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- return Mutable(arena, donated, donating_states, mask, msg);
- }
-
- PROTOBUF_NDEBUG_INLINE std::string* MutableNoArenaNoDefault(
- const std::string* /*default_value*/) {
- return MutableNoCopy(nullptr);
- }
-
-#endif // DEPRECATED_METHODS_TO_BE_DELETED
-
- // Arena-safety semantics: this is guarded by the logic in
- // Swap()/UnsafeArenaSwap() at the message level, so this method is
- // 'unsafe' if called directly.
- inline PROTOBUF_NDEBUG_INLINE static void InternalSwap(
- InlinedStringField* lhs, Arena* lhs_arena, bool lhs_arena_dtor_registered,
- MessageLite* lhs_msg, //
- InlinedStringField* rhs, Arena* rhs_arena, bool rhs_arena_dtor_registered,
- MessageLite* rhs_msg);
-
- // Frees storage (if not on an arena).
- PROTOBUF_NDEBUG_INLINE void Destroy(const std::string* default_value,
- Arena* arena) {
- if (arena == nullptr) {
- DestroyNoArena(default_value);
- }
- }
- PROTOBUF_NDEBUG_INLINE void DestroyNoArena(const std::string* default_value);
-
- // Clears content, but keeps allocated std::string, to avoid the overhead of
- // heap operations. After this returns, the content (as seen by the user) will
- // always be the empty std::string.
- PROTOBUF_NDEBUG_INLINE void ClearToEmpty() { ClearNonDefaultToEmpty(); }
- PROTOBUF_NDEBUG_INLINE void ClearNonDefaultToEmpty() {
- get_mutable()->clear();
- }
-
- // Clears content, but keeps allocated std::string if arena != nullptr, to
- // avoid the overhead of heap operations. After this returns, the content (as
- // seen by the user) will always be equal to |default_value|.
- void ClearToDefault(const LazyString& default_value, Arena* arena,
- bool donated);
-
- // Generated code / reflection only! Returns a mutable pointer to the string.
- PROTOBUF_NDEBUG_INLINE std::string* UnsafeMutablePointer();
-
- // InlinedStringField doesn't have things like the `default_value` pointer in
- // ArenaStringPtr.
- static constexpr bool IsDefault() { return false; }
- static constexpr bool IsDefault(const std::string*) { return false; }
-
- private:
- void Destruct() { get_mutable()->~basic_string(); }
-
- PROTOBUF_NDEBUG_INLINE std::string* get_mutable();
- PROTOBUF_NDEBUG_INLINE const std::string* get_const() const;
-
- alignas(std::string) char value_[sizeof(std::string)];
-
- std::string* MutableSlow(::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask,
- MessageLite* msg);
-
-
- // When constructed in an Arena, we want our destructor to be skipped.
- friend class ::google::protobuf::Arena;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
-};
-
-inline std::string* InlinedStringField::get_mutable() {
- return reinterpret_cast<std::string*>(&value_);
-}
-
-inline const std::string* InlinedStringField::get_const() const {
- return reinterpret_cast<const std::string*>(&value_);
-}
-
-inline InlinedStringField::InlinedStringField(
- const std::string& default_value) {
- new (get_mutable()) std::string(default_value);
-}
-
-
-inline InlinedStringField::InlinedStringField(Arena* /*arena*/) { Init(); }
-
-inline const std::string& InlinedStringField::GetNoArena() const {
- return *get_const();
-}
-
-inline void InlinedStringField::SetAllocatedNoArena(
- const std::string* /*default_value*/, std::string* value) {
- if (value == nullptr) {
- // Currently, inlined string field can't have non empty default.
- get_mutable()->clear();
- } else {
- get_mutable()->assign(std::move(*value));
- delete value;
- }
-}
-
-inline void InlinedStringField::DestroyNoArena(const std::string*) {
- // This is invoked from the generated message's ArenaDtor, which is used to
- // clean up objects not allocated on the Arena.
- this->~InlinedStringField();
-}
-
-inline void InlinedStringField::SetNoArena(StringPiece value) {
- get_mutable()->assign(value.data(), value.length());
-}
-
-inline void InlinedStringField::SetNoArena(std::string&& value) {
- get_mutable()->assign(std::move(value));
-}
-
-// Caller should make sure rhs_arena allocated rhs, and lhs_arena allocated lhs.
-inline PROTOBUF_NDEBUG_INLINE void InlinedStringField::InternalSwap(
- InlinedStringField* lhs, Arena* lhs_arena, bool lhs_arena_dtor_registered,
- MessageLite* lhs_msg, //
- InlinedStringField* rhs, Arena* rhs_arena, bool rhs_arena_dtor_registered,
- MessageLite* rhs_msg) {
-#if GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE
- lhs->get_mutable()->swap(*rhs->get_mutable());
- if (!lhs_arena_dtor_registered && rhs_arena_dtor_registered) {
- lhs_msg->OnDemandRegisterArenaDtor(lhs_arena);
- } else if (lhs_arena_dtor_registered && !rhs_arena_dtor_registered) {
- rhs_msg->OnDemandRegisterArenaDtor(rhs_arena);
- }
-#else
- (void)lhs_arena;
- (void)rhs_arena;
- (void)lhs_arena_dtor_registered;
- (void)rhs_arena_dtor_registered;
- (void)lhs_msg;
- (void)rhs_msg;
- lhs->get_mutable()->swap(*rhs->get_mutable());
-#endif
-}
-
-inline void InlinedStringField::Set(ConstStringParam value, Arena* arena,
- bool donated, uint32_t* /*donating_states*/,
- uint32_t /*mask*/, MessageLite* /*msg*/) {
- (void)arena;
- (void)donated;
- SetNoArena(value);
-}
-
-inline void InlinedStringField::Set(const char* str, ::google::protobuf::Arena* arena,
- bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(ConstStringParam(str), arena, donated, donating_states, mask, msg);
-}
-
-inline void InlinedStringField::Set(const char* str, size_t size,
- ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states, uint32_t mask,
- MessageLite* msg) {
- Set(ConstStringParam{str, size}, arena, donated, donating_states, mask, msg);
-}
-
-inline void InlinedStringField::SetBytes(ConstStringParam value, Arena* arena,
- bool donated,
- uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(value, arena, donated, donating_states, mask, msg);
-}
-
-inline void InlinedStringField::SetBytes(std::string&& value, Arena* arena,
- bool donated,
- uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(std::move(value), arena, donated, donating_states, mask, msg);
-}
-
-inline void InlinedStringField::SetBytes(const char* str,
- ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(str, arena, donated, donating_states, mask, msg);
-}
-
-inline void InlinedStringField::SetBytes(const void* p, size_t size,
- ::google::protobuf::Arena* arena, bool donated,
- uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(static_cast<const char*>(p), size, arena, donated, donating_states, mask,
- msg);
-}
-
-template <typename RefWrappedType>
-inline void InlinedStringField::Set(
- std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(const_string_ref.get(), arena, donated, donating_states, mask, msg);
-}
-
-template <typename RefWrappedType>
-inline void InlinedStringField::SetBytes(
- std::reference_wrapper<RefWrappedType> const_string_ref,
- ::google::protobuf::Arena* arena, bool donated, uint32_t* donating_states,
- uint32_t mask, MessageLite* msg) {
- Set(const_string_ref.get(), arena, donated, donating_states, mask, msg);
-}
-
-inline std::string* InlinedStringField::UnsafeMutablePointer() {
- return get_mutable();
-}
-
-inline std::string* InlinedStringField::Mutable(std::nullptr_t) {
- return get_mutable();
-}
-
-inline std::string* InlinedStringField::MutableNoCopy(std::nullptr_t) {
- return get_mutable();
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_INLINED_STRING_FIELD_H__
diff --git a/include/google/protobuf/io/coded_stream.h b/include/google/protobuf/io/coded_stream.h
deleted file mode 100644
index c8fc994f91..0000000000
--- a/include/google/protobuf/io/coded_stream.h
+++ /dev/null
@@ -1,1799 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains the CodedInputStream and CodedOutputStream classes,
-// which wrap a ZeroCopyInputStream or ZeroCopyOutputStream, respectively,
-// and allow you to read or write individual pieces of data in various
-// formats. In particular, these implement the varint encoding for
-// integers, a simple variable-length encoding in which smaller numbers
-// take fewer bytes.
-//
-// Typically these classes will only be used internally by the protocol
-// buffer library in order to encode and decode protocol buffers. Clients
-// of the library only need to know about this class if they wish to write
-// custom message parsing or serialization procedures.
-//
-// CodedOutputStream example:
-// // Write some data to "myfile". First we write a 4-byte "magic number"
-// // to identify the file type, then write a length-delimited string. The
-// // string is composed of a varint giving the length followed by the raw
-// // bytes.
-// int fd = open("myfile", O_CREAT | O_WRONLY);
-// ZeroCopyOutputStream* raw_output = new FileOutputStream(fd);
-// CodedOutputStream* coded_output = new CodedOutputStream(raw_output);
-//
-// int magic_number = 1234;
-// char text[] = "Hello world!";
-// coded_output->WriteLittleEndian32(magic_number);
-// coded_output->WriteVarint32(strlen(text));
-// coded_output->WriteRaw(text, strlen(text));
-//
-// delete coded_output;
-// delete raw_output;
-// close(fd);
-//
-// CodedInputStream example:
-// // Read a file created by the above code.
-// int fd = open("myfile", O_RDONLY);
-// ZeroCopyInputStream* raw_input = new FileInputStream(fd);
-// CodedInputStream* coded_input = new CodedInputStream(raw_input);
-//
-// coded_input->ReadLittleEndian32(&magic_number);
-// if (magic_number != 1234) {
-// cerr << "File not in expected format." << endl;
-// return;
-// }
-//
-// uint32_t size;
-// coded_input->ReadVarint32(&size);
-//
-// char* text = new char[size + 1];
-// coded_input->ReadRaw(buffer, size);
-// text[size] = '\0';
-//
-// delete coded_input;
-// delete raw_input;
-// close(fd);
-//
-// cout << "Text is: " << text << endl;
-// delete [] text;
-//
-// For those who are interested, varint encoding is defined as follows:
-//
-// The encoding operates on unsigned integers of up to 64 bits in length.
-// Each byte of the encoded value has the format:
-// * bits 0-6: Seven bits of the number being encoded.
-// * bit 7: Zero if this is the last byte in the encoding (in which
-// case all remaining bits of the number are zero) or 1 if
-// more bytes follow.
-// The first byte contains the least-significant 7 bits of the number, the
-// second byte (if present) contains the next-least-significant 7 bits,
-// and so on. So, the binary number 1011000101011 would be encoded in two
-// bytes as "10101011 00101100".
-//
-// In theory, varint could be used to encode integers of any length.
-// However, for practicality we set a limit at 64 bits. The maximum encoded
-// length of a number is thus 10 bytes.
-
-#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_H__
-#define GOOGLE_PROTOBUF_IO_CODED_STREAM_H__
-
-
-#include <assert.h>
-
-#include <atomic>
-#include <climits>
-#include <cstddef>
-#include <cstring>
-#include <limits>
-#include <string>
-#include <type_traits>
-#include <utility>
-
-#if defined(_MSC_VER) && _MSC_VER >= 1300 && !defined(__INTEL_COMPILER)
-// If MSVC has "/RTCc" set, it will complain about truncating casts at
-// runtime. This file contains some intentional truncating casts.
-#pragma runtime_checks("c", off)
-#endif
-
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/port.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class DescriptorPool;
-class MessageFactory;
-class ZeroCopyCodedInputStream;
-
-namespace internal {
-void MapTestForceDeterministic();
-class EpsCopyByteStream;
-} // namespace internal
-
-namespace io {
-
-// Defined in this file.
-class CodedInputStream;
-class CodedOutputStream;
-
-// Defined in other files.
-class ZeroCopyInputStream; // zero_copy_stream.h
-class ZeroCopyOutputStream; // zero_copy_stream.h
-
-// Class which reads and decodes binary data which is composed of varint-
-// encoded integers and fixed-width pieces. Wraps a ZeroCopyInputStream.
-// Most users will not need to deal with CodedInputStream.
-//
-// Most methods of CodedInputStream that return a bool return false if an
-// underlying I/O error occurs or if the data is malformed. Once such a
-// failure occurs, the CodedInputStream is broken and is no longer useful.
-// After a failure, callers also should assume writes to "out" args may have
-// occurred, though nothing useful can be determined from those writes.
-class PROTOBUF_EXPORT CodedInputStream {
- public:
- // Create a CodedInputStream that reads from the given ZeroCopyInputStream.
- explicit CodedInputStream(ZeroCopyInputStream* input);
-
- // Create a CodedInputStream that reads from the given flat array. This is
- // faster than using an ArrayInputStream. PushLimit(size) is implied by
- // this constructor.
- explicit CodedInputStream(const uint8_t* buffer, int size);
-
- // Destroy the CodedInputStream and position the underlying
- // ZeroCopyInputStream at the first unread byte. If an error occurred while
- // reading (causing a method to return false), then the exact position of
- // the input stream may be anywhere between the last value that was read
- // successfully and the stream's byte limit.
- ~CodedInputStream();
-
- // Return true if this CodedInputStream reads from a flat array instead of
- // a ZeroCopyInputStream.
- inline bool IsFlat() const;
-
- // Skips a number of bytes. Returns false if an underlying read error
- // occurs.
- inline bool Skip(int count);
-
- // Sets *data to point directly at the unread part of the CodedInputStream's
- // underlying buffer, and *size to the size of that buffer, but does not
- // advance the stream's current position. This will always either produce
- // a non-empty buffer or return false. If the caller consumes any of
- // this data, it should then call Skip() to skip over the consumed bytes.
- // This may be useful for implementing external fast parsing routines for
- // types of data not covered by the CodedInputStream interface.
- bool GetDirectBufferPointer(const void** data, int* size);
-
- // Like GetDirectBufferPointer, but this method is inlined, and does not
- // attempt to Refresh() if the buffer is currently empty.
- PROTOBUF_ALWAYS_INLINE
- void GetDirectBufferPointerInline(const void** data, int* size);
-
- // Read raw bytes, copying them into the given buffer.
- bool ReadRaw(void* buffer, int size);
-
- // Like ReadRaw, but reads into a string.
- bool ReadString(std::string* buffer, int size);
-
-
- // Read a 32-bit little-endian integer.
- bool ReadLittleEndian32(uint32_t* value);
- // Read a 64-bit little-endian integer.
- bool ReadLittleEndian64(uint64_t* value);
-
- // These methods read from an externally provided buffer. The caller is
- // responsible for ensuring that the buffer has sufficient space.
- // Read a 32-bit little-endian integer.
- static const uint8_t* ReadLittleEndian32FromArray(const uint8_t* buffer,
- uint32_t* value);
- // Read a 64-bit little-endian integer.
- static const uint8_t* ReadLittleEndian64FromArray(const uint8_t* buffer,
- uint64_t* value);
-
- // Read an unsigned integer with Varint encoding, truncating to 32 bits.
- // Reading a 32-bit value is equivalent to reading a 64-bit one and casting
- // it to uint32_t, but may be more efficient.
- bool ReadVarint32(uint32_t* value);
- // Read an unsigned integer with Varint encoding.
- bool ReadVarint64(uint64_t* value);
-
- // Reads a varint off the wire into an "int". This should be used for reading
- // sizes off the wire (sizes of strings, submessages, bytes fields, etc).
- //
- // The value from the wire is interpreted as unsigned. If its value exceeds
- // the representable value of an integer on this platform, instead of
- // truncating we return false. Truncating (as performed by ReadVarint32()
- // above) is an acceptable approach for fields representing an integer, but
- // when we are parsing a size from the wire, truncating the value would result
- // in us misparsing the payload.
- bool ReadVarintSizeAsInt(int* value);
-
- // Read a tag. This calls ReadVarint32() and returns the result, or returns
- // zero (which is not a valid tag) if ReadVarint32() fails. Also, ReadTag
- // (but not ReadTagNoLastTag) updates the last tag value, which can be checked
- // with LastTagWas().
- //
- // Always inline because this is only called in one place per parse loop
- // but it is called for every iteration of said loop, so it should be fast.
- // GCC doesn't want to inline this by default.
- PROTOBUF_ALWAYS_INLINE uint32_t ReadTag() {
- return last_tag_ = ReadTagNoLastTag();
- }
-
- PROTOBUF_ALWAYS_INLINE uint32_t ReadTagNoLastTag();
-
- // This usually a faster alternative to ReadTag() when cutoff is a manifest
- // constant. It does particularly well for cutoff >= 127. The first part
- // of the return value is the tag that was read, though it can also be 0 in
- // the cases where ReadTag() would return 0. If the second part is true
- // then the tag is known to be in [0, cutoff]. If not, the tag either is
- // above cutoff or is 0. (There's intentional wiggle room when tag is 0,
- // because that can arise in several ways, and for best performance we want
- // to avoid an extra "is tag == 0?" check here.)
- PROTOBUF_ALWAYS_INLINE
- std::pair<uint32_t, bool> ReadTagWithCutoff(uint32_t cutoff) {
- std::pair<uint32_t, bool> result = ReadTagWithCutoffNoLastTag(cutoff);
- last_tag_ = result.first;
- return result;
- }
-
- PROTOBUF_ALWAYS_INLINE
- std::pair<uint32_t, bool> ReadTagWithCutoffNoLastTag(uint32_t cutoff);
-
- // Usually returns true if calling ReadVarint32() now would produce the given
- // value. Will always return false if ReadVarint32() would not return the
- // given value. If ExpectTag() returns true, it also advances past
- // the varint. For best performance, use a compile-time constant as the
- // parameter.
- // Always inline because this collapses to a small number of instructions
- // when given a constant parameter, but GCC doesn't want to inline by default.
- PROTOBUF_ALWAYS_INLINE bool ExpectTag(uint32_t expected);
-
- // Like above, except this reads from the specified buffer. The caller is
- // responsible for ensuring that the buffer is large enough to read a varint
- // of the expected size. For best performance, use a compile-time constant as
- // the expected tag parameter.
- //
- // Returns a pointer beyond the expected tag if it was found, or NULL if it
- // was not.
- PROTOBUF_ALWAYS_INLINE
- static const uint8_t* ExpectTagFromArray(const uint8_t* buffer,
- uint32_t expected);
-
- // Usually returns true if no more bytes can be read. Always returns false
- // if more bytes can be read. If ExpectAtEnd() returns true, a subsequent
- // call to LastTagWas() will act as if ReadTag() had been called and returned
- // zero, and ConsumedEntireMessage() will return true.
- bool ExpectAtEnd();
-
- // If the last call to ReadTag() or ReadTagWithCutoff() returned the given
- // value, returns true. Otherwise, returns false.
- // ReadTagNoLastTag/ReadTagWithCutoffNoLastTag do not preserve the last
- // returned value.
- //
- // This is needed because parsers for some types of embedded messages
- // (with field type TYPE_GROUP) don't actually know that they've reached the
- // end of a message until they see an ENDGROUP tag, which was actually part
- // of the enclosing message. The enclosing message would like to check that
- // tag to make sure it had the right number, so it calls LastTagWas() on
- // return from the embedded parser to check.
- bool LastTagWas(uint32_t expected);
- void SetLastTag(uint32_t tag) { last_tag_ = tag; }
-
- // When parsing message (but NOT a group), this method must be called
- // immediately after MergeFromCodedStream() returns (if it returns true)
- // to further verify that the message ended in a legitimate way. For
- // example, this verifies that parsing did not end on an end-group tag.
- // It also checks for some cases where, due to optimizations,
- // MergeFromCodedStream() can incorrectly return true.
- bool ConsumedEntireMessage();
- void SetConsumed() { legitimate_message_end_ = true; }
-
- // Limits ----------------------------------------------------------
- // Limits are used when parsing length-delimited embedded messages.
- // After the message's length is read, PushLimit() is used to prevent
- // the CodedInputStream from reading beyond that length. Once the
- // embedded message has been parsed, PopLimit() is called to undo the
- // limit.
-
- // Opaque type used with PushLimit() and PopLimit(). Do not modify
- // values of this type yourself. The only reason that this isn't a
- // struct with private internals is for efficiency.
- typedef int Limit;
-
- // Places a limit on the number of bytes that the stream may read,
- // starting from the current position. Once the stream hits this limit,
- // it will act like the end of the input has been reached until PopLimit()
- // is called.
- //
- // As the names imply, the stream conceptually has a stack of limits. The
- // shortest limit on the stack is always enforced, even if it is not the
- // top limit.
- //
- // The value returned by PushLimit() is opaque to the caller, and must
- // be passed unchanged to the corresponding call to PopLimit().
- Limit PushLimit(int byte_limit);
-
- // Pops the last limit pushed by PushLimit(). The input must be the value
- // returned by that call to PushLimit().
- void PopLimit(Limit limit);
-
- // Returns the number of bytes left until the nearest limit on the
- // stack is hit, or -1 if no limits are in place.
- int BytesUntilLimit() const;
-
- // Returns current position relative to the beginning of the input stream.
- int CurrentPosition() const;
-
- // Total Bytes Limit -----------------------------------------------
- // To prevent malicious users from sending excessively large messages
- // and causing memory exhaustion, CodedInputStream imposes a hard limit on
- // the total number of bytes it will read.
-
- // Sets the maximum number of bytes that this CodedInputStream will read
- // before refusing to continue. To prevent servers from allocating enormous
- // amounts of memory to hold parsed messages, the maximum message length
- // should be limited to the shortest length that will not harm usability.
- // The default limit is INT_MAX (~2GB) and apps should set shorter limits
- // if possible. An error will always be printed to stderr if the limit is
- // reached.
- //
- // Note: setting a limit less than the current read position is interpreted
- // as a limit on the current position.
- //
- // This is unrelated to PushLimit()/PopLimit().
- void SetTotalBytesLimit(int total_bytes_limit);
-
- // The Total Bytes Limit minus the Current Position, or -1 if the total bytes
- // limit is INT_MAX.
- int BytesUntilTotalBytesLimit() const;
-
- // Recursion Limit -------------------------------------------------
- // To prevent corrupt or malicious messages from causing stack overflows,
- // we must keep track of the depth of recursion when parsing embedded
- // messages and groups. CodedInputStream keeps track of this because it
- // is the only object that is passed down the stack during parsing.
-
- // Sets the maximum recursion depth. The default is 100.
- void SetRecursionLimit(int limit);
- int RecursionBudget() { return recursion_budget_; }
-
- static int GetDefaultRecursionLimit() { return default_recursion_limit_; }
-
- // Increments the current recursion depth. Returns true if the depth is
- // under the limit, false if it has gone over.
- bool IncrementRecursionDepth();
-
- // Decrements the recursion depth if possible.
- void DecrementRecursionDepth();
-
- // Decrements the recursion depth blindly. This is faster than
- // DecrementRecursionDepth(). It should be used only if all previous
- // increments to recursion depth were successful.
- void UnsafeDecrementRecursionDepth();
-
- // Shorthand for make_pair(PushLimit(byte_limit), --recursion_budget_).
- // Using this can reduce code size and complexity in some cases. The caller
- // is expected to check that the second part of the result is non-negative (to
- // bail out if the depth of recursion is too high) and, if all is well, to
- // later pass the first part of the result to PopLimit() or similar.
- std::pair<CodedInputStream::Limit, int> IncrementRecursionDepthAndPushLimit(
- int byte_limit);
-
- // Shorthand for PushLimit(ReadVarint32(&length) ? length : 0).
- Limit ReadLengthAndPushLimit();
-
- // Helper that is equivalent to: {
- // bool result = ConsumedEntireMessage();
- // PopLimit(limit);
- // UnsafeDecrementRecursionDepth();
- // return result; }
- // Using this can reduce code size and complexity in some cases.
- // Do not use unless the current recursion depth is greater than zero.
- bool DecrementRecursionDepthAndPopLimit(Limit limit);
-
- // Helper that is equivalent to: {
- // bool result = ConsumedEntireMessage();
- // PopLimit(limit);
- // return result; }
- // Using this can reduce code size and complexity in some cases.
- bool CheckEntireMessageConsumedAndPopLimit(Limit limit);
-
- // Extension Registry ----------------------------------------------
- // ADVANCED USAGE: 99.9% of people can ignore this section.
- //
- // By default, when parsing extensions, the parser looks for extension
- // definitions in the pool which owns the outer message's Descriptor.
- // However, you may call SetExtensionRegistry() to provide an alternative
- // pool instead. This makes it possible, for example, to parse a message
- // using a generated class, but represent some extensions using
- // DynamicMessage.
-
- // Set the pool used to look up extensions. Most users do not need to call
- // this as the correct pool will be chosen automatically.
- //
- // WARNING: It is very easy to misuse this. Carefully read the requirements
- // below. Do not use this unless you are sure you need it. Almost no one
- // does.
- //
- // Let's say you are parsing a message into message object m, and you want
- // to take advantage of SetExtensionRegistry(). You must follow these
- // requirements:
- //
- // The given DescriptorPool must contain m->GetDescriptor(). It is not
- // sufficient for it to simply contain a descriptor that has the same name
- // and content -- it must be the *exact object*. In other words:
- // assert(pool->FindMessageTypeByName(m->GetDescriptor()->full_name()) ==
- // m->GetDescriptor());
- // There are two ways to satisfy this requirement:
- // 1) Use m->GetDescriptor()->pool() as the pool. This is generally useless
- // because this is the pool that would be used anyway if you didn't call
- // SetExtensionRegistry() at all.
- // 2) Use a DescriptorPool which has m->GetDescriptor()->pool() as an
- // "underlay". Read the documentation for DescriptorPool for more
- // information about underlays.
- //
- // You must also provide a MessageFactory. This factory will be used to
- // construct Message objects representing extensions. The factory's
- // GetPrototype() MUST return non-NULL for any Descriptor which can be found
- // through the provided pool.
- //
- // If the provided factory might return instances of protocol-compiler-
- // generated (i.e. compiled-in) types, or if the outer message object m is
- // a generated type, then the given factory MUST have this property: If
- // GetPrototype() is given a Descriptor which resides in
- // DescriptorPool::generated_pool(), the factory MUST return the same
- // prototype which MessageFactory::generated_factory() would return. That
- // is, given a descriptor for a generated type, the factory must return an
- // instance of the generated class (NOT DynamicMessage). However, when
- // given a descriptor for a type that is NOT in generated_pool, the factory
- // is free to return any implementation.
- //
- // The reason for this requirement is that generated sub-objects may be
- // accessed via the standard (non-reflection) extension accessor methods,
- // and these methods will down-cast the object to the generated class type.
- // If the object is not actually of that type, the results would be undefined.
- // On the other hand, if an extension is not compiled in, then there is no
- // way the code could end up accessing it via the standard accessors -- the
- // only way to access the extension is via reflection. When using reflection,
- // DynamicMessage and generated messages are indistinguishable, so it's fine
- // if these objects are represented using DynamicMessage.
- //
- // Using DynamicMessageFactory on which you have called
- // SetDelegateToGeneratedFactory(true) should be sufficient to satisfy the
- // above requirement.
- //
- // If either pool or factory is NULL, both must be NULL.
- //
- // Note that this feature is ignored when parsing "lite" messages as they do
- // not have descriptors.
- void SetExtensionRegistry(const DescriptorPool* pool,
- MessageFactory* factory);
-
- // Get the DescriptorPool set via SetExtensionRegistry(), or NULL if no pool
- // has been provided.
- const DescriptorPool* GetExtensionPool();
-
- // Get the MessageFactory set via SetExtensionRegistry(), or NULL if no
- // factory has been provided.
- MessageFactory* GetExtensionFactory();
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedInputStream);
-
- const uint8_t* buffer_;
- const uint8_t* buffer_end_; // pointer to the end of the buffer.
- ZeroCopyInputStream* input_;
- int total_bytes_read_; // total bytes read from input_, including
- // the current buffer
-
- // If total_bytes_read_ surpasses INT_MAX, we record the extra bytes here
- // so that we can BackUp() on destruction.
- int overflow_bytes_;
-
- // LastTagWas() stuff.
- uint32_t last_tag_; // result of last ReadTag() or ReadTagWithCutoff().
-
- // This is set true by ReadTag{Fallback/Slow}() if it is called when exactly
- // at EOF, or by ExpectAtEnd() when it returns true. This happens when we
- // reach the end of a message and attempt to read another tag.
- bool legitimate_message_end_;
-
- // See EnableAliasing().
- bool aliasing_enabled_;
-
- // Limits
- Limit current_limit_; // if position = -1, no limit is applied
-
- // For simplicity, if the current buffer crosses a limit (either a normal
- // limit created by PushLimit() or the total bytes limit), buffer_size_
- // only tracks the number of bytes before that limit. This field
- // contains the number of bytes after it. Note that this implies that if
- // buffer_size_ == 0 and buffer_size_after_limit_ > 0, we know we've
- // hit a limit. However, if both are zero, it doesn't necessarily mean
- // we aren't at a limit -- the buffer may have ended exactly at the limit.
- int buffer_size_after_limit_;
-
- // Maximum number of bytes to read, period. This is unrelated to
- // current_limit_. Set using SetTotalBytesLimit().
- int total_bytes_limit_;
-
- // Current recursion budget, controlled by IncrementRecursionDepth() and
- // similar. Starts at recursion_limit_ and goes down: if this reaches
- // -1 we are over budget.
- int recursion_budget_;
- // Recursion depth limit, set by SetRecursionLimit().
- int recursion_limit_;
-
- // See SetExtensionRegistry().
- const DescriptorPool* extension_pool_;
- MessageFactory* extension_factory_;
-
- // Private member functions.
-
- // Fallback when Skip() goes past the end of the current buffer.
- bool SkipFallback(int count, int original_buffer_size);
-
- // Advance the buffer by a given number of bytes.
- void Advance(int amount);
-
- // Back up input_ to the current buffer position.
- void BackUpInputToCurrentPosition();
-
- // Recomputes the value of buffer_size_after_limit_. Must be called after
- // current_limit_ or total_bytes_limit_ changes.
- void RecomputeBufferLimits();
-
- // Writes an error message saying that we hit total_bytes_limit_.
- void PrintTotalBytesLimitError();
-
- // Called when the buffer runs out to request more data. Implies an
- // Advance(BufferSize()).
- bool Refresh();
-
- // When parsing varints, we optimize for the common case of small values, and
- // then optimize for the case when the varint fits within the current buffer
- // piece. The Fallback method is used when we can't use the one-byte
- // optimization. The Slow method is yet another fallback when the buffer is
- // not large enough. Making the slow path out-of-line speeds up the common
- // case by 10-15%. The slow path is fairly uncommon: it only triggers when a
- // message crosses multiple buffers. Note: ReadVarint32Fallback() and
- // ReadVarint64Fallback() are called frequently and generally not inlined, so
- // they have been optimized to avoid "out" parameters. The former returns -1
- // if it fails and the uint32_t it read otherwise. The latter has a bool
- // indicating success or failure as part of its return type.
- int64_t ReadVarint32Fallback(uint32_t first_byte_or_zero);
- int ReadVarintSizeAsIntFallback();
- std::pair<uint64_t, bool> ReadVarint64Fallback();
- bool ReadVarint32Slow(uint32_t* value);
- bool ReadVarint64Slow(uint64_t* value);
- int ReadVarintSizeAsIntSlow();
- bool ReadLittleEndian32Fallback(uint32_t* value);
- bool ReadLittleEndian64Fallback(uint64_t* value);
-
- // Fallback/slow methods for reading tags. These do not update last_tag_,
- // but will set legitimate_message_end_ if we are at the end of the input
- // stream.
- uint32_t ReadTagFallback(uint32_t first_byte_or_zero);
- uint32_t ReadTagSlow();
- bool ReadStringFallback(std::string* buffer, int size);
-
- // Return the size of the buffer.
- int BufferSize() const;
-
- static const int kDefaultTotalBytesLimit = INT_MAX;
-
- static int default_recursion_limit_; // 100 by default.
-
- friend class google::protobuf::ZeroCopyCodedInputStream;
- friend class google::protobuf::internal::EpsCopyByteStream;
-};
-
-// EpsCopyOutputStream wraps a ZeroCopyOutputStream and exposes a new stream,
-// which has the property you can write kSlopBytes (16 bytes) from the current
-// position without bounds checks. The cursor into the stream is managed by
-// the user of the class and is an explicit parameter in the methods. Careful
-// use of this class, ie. keep ptr a local variable, eliminates the need to
-// for the compiler to sync the ptr value between register and memory.
-class PROTOBUF_EXPORT EpsCopyOutputStream {
- public:
- enum { kSlopBytes = 16 };
-
- // Initialize from a stream.
- EpsCopyOutputStream(ZeroCopyOutputStream* stream, bool deterministic,
- uint8_t** pp)
- : end_(buffer_),
- stream_(stream),
- is_serialization_deterministic_(deterministic) {
- *pp = buffer_;
- }
-
- // Only for array serialization. No overflow protection, end_ will be the
- // pointed to the end of the array. When using this the total size is already
- // known, so no need to maintain the slop region.
- EpsCopyOutputStream(void* data, int size, bool deterministic)
- : end_(static_cast<uint8_t*>(data) + size),
- buffer_end_(nullptr),
- stream_(nullptr),
- is_serialization_deterministic_(deterministic) {}
-
- // Initialize from stream but with the first buffer already given (eager).
- EpsCopyOutputStream(void* data, int size, ZeroCopyOutputStream* stream,
- bool deterministic, uint8_t** pp)
- : stream_(stream), is_serialization_deterministic_(deterministic) {
- *pp = SetInitialBuffer(data, size);
- }
-
- // Flush everything that's written into the underlying ZeroCopyOutputStream
- // and trims the underlying stream to the location of ptr.
- uint8_t* Trim(uint8_t* ptr);
-
- // After this it's guaranteed you can safely write kSlopBytes to ptr. This
- // will never fail! The underlying stream can produce an error. Use HadError
- // to check for errors.
- PROTOBUF_NODISCARD uint8_t* EnsureSpace(uint8_t* ptr) {
- if (PROTOBUF_PREDICT_FALSE(ptr >= end_)) {
- return EnsureSpaceFallback(ptr);
- }
- return ptr;
- }
-
- uint8_t* WriteRaw(const void* data, int size, uint8_t* ptr) {
- if (PROTOBUF_PREDICT_FALSE(end_ - ptr < size)) {
- return WriteRawFallback(data, size, ptr);
- }
- std::memcpy(ptr, data, size);
- return ptr + size;
- }
- // Writes the buffer specified by data, size to the stream. Possibly by
- // aliasing the buffer (ie. not copying the data). The caller is responsible
- // to make sure the buffer is alive for the duration of the
- // ZeroCopyOutputStream.
-#ifndef NDEBUG
- PROTOBUF_NOINLINE
-#endif
- uint8_t* WriteRawMaybeAliased(const void* data, int size, uint8_t* ptr) {
- if (aliasing_enabled_) {
- return WriteAliasedRaw(data, size, ptr);
- } else {
- return WriteRaw(data, size, ptr);
- }
- }
-
-
-#ifndef NDEBUG
- PROTOBUF_NOINLINE
-#endif
- uint8_t* WriteStringMaybeAliased(uint32_t num, const std::string& s,
- uint8_t* ptr) {
- std::ptrdiff_t size = s.size();
- if (PROTOBUF_PREDICT_FALSE(
- size >= 128 || end_ - ptr + 16 - TagSize(num << 3) - 1 < size)) {
- return WriteStringMaybeAliasedOutline(num, s, ptr);
- }
- ptr = UnsafeVarint((num << 3) | 2, ptr);
- *ptr++ = static_cast<uint8_t>(size);
- std::memcpy(ptr, s.data(), size);
- return ptr + size;
- }
- uint8_t* WriteBytesMaybeAliased(uint32_t num, const std::string& s,
- uint8_t* ptr) {
- return WriteStringMaybeAliased(num, s, ptr);
- }
-
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteString(uint32_t num, const T& s,
- uint8_t* ptr) {
- std::ptrdiff_t size = s.size();
- if (PROTOBUF_PREDICT_FALSE(
- size >= 128 || end_ - ptr + 16 - TagSize(num << 3) - 1 < size)) {
- return WriteStringOutline(num, s, ptr);
- }
- ptr = UnsafeVarint((num << 3) | 2, ptr);
- *ptr++ = static_cast<uint8_t>(size);
- std::memcpy(ptr, s.data(), size);
- return ptr + size;
- }
- template <typename T>
-#ifndef NDEBUG
- PROTOBUF_NOINLINE
-#endif
- uint8_t* WriteBytes(uint32_t num, const T& s, uint8_t* ptr) {
- return WriteString(num, s, ptr);
- }
-
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteInt32Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, Encode64);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteUInt32Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, Encode32);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteSInt32Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, ZigZagEncode32);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteInt64Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, Encode64);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteUInt64Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, Encode64);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteSInt64Packed(int num, const T& r,
- int size, uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, ZigZagEncode64);
- }
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteEnumPacked(int num, const T& r, int size,
- uint8_t* ptr) {
- return WriteVarintPacked(num, r, size, ptr, Encode64);
- }
-
- template <typename T>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteFixedPacked(int num, const T& r,
- uint8_t* ptr) {
- ptr = EnsureSpace(ptr);
- constexpr auto element_size = sizeof(typename T::value_type);
- auto size = r.size() * element_size;
- ptr = WriteLengthDelim(num, size, ptr);
- return WriteRawLittleEndian<element_size>(r.data(), static_cast<int>(size),
- ptr);
- }
-
- // Returns true if there was an underlying I/O error since this object was
- // created.
- bool HadError() const { return had_error_; }
-
- // Instructs the EpsCopyOutputStream to allow the underlying
- // ZeroCopyOutputStream to hold pointers to the original structure instead of
- // copying, if it supports it (i.e. output->AllowsAliasing() is true). If the
- // underlying stream does not support aliasing, then enabling it has no
- // affect. For now, this only affects the behavior of
- // WriteRawMaybeAliased().
- //
- // NOTE: It is caller's responsibility to ensure that the chunk of memory
- // remains live until all of the data has been consumed from the stream.
- void EnableAliasing(bool enabled);
-
- // See documentation on CodedOutputStream::SetSerializationDeterministic.
- void SetSerializationDeterministic(bool value) {
- is_serialization_deterministic_ = value;
- }
-
- // See documentation on CodedOutputStream::IsSerializationDeterministic.
- bool IsSerializationDeterministic() const {
- return is_serialization_deterministic_;
- }
-
- // The number of bytes written to the stream at position ptr, relative to the
- // stream's overall position.
- int64_t ByteCount(uint8_t* ptr) const;
-
-
- private:
- uint8_t* end_;
- uint8_t* buffer_end_ = buffer_;
- uint8_t buffer_[2 * kSlopBytes];
- ZeroCopyOutputStream* stream_;
- bool had_error_ = false;
- bool aliasing_enabled_ = false; // See EnableAliasing().
- bool is_serialization_deterministic_;
- bool skip_check_consistency = false;
-
- uint8_t* EnsureSpaceFallback(uint8_t* ptr);
- inline uint8_t* Next();
- int Flush(uint8_t* ptr);
- std::ptrdiff_t GetSize(uint8_t* ptr) const {
- GOOGLE_DCHECK(ptr <= end_ + kSlopBytes); // NOLINT
- return end_ + kSlopBytes - ptr;
- }
-
- uint8_t* Error() {
- had_error_ = true;
- // We use the patch buffer to always guarantee space to write to.
- end_ = buffer_ + kSlopBytes;
- return buffer_;
- }
-
- static constexpr int TagSize(uint32_t tag) {
- return (tag < (1 << 7)) ? 1
- : (tag < (1 << 14)) ? 2
- : (tag < (1 << 21)) ? 3
- : (tag < (1 << 28)) ? 4
- : 5;
- }
-
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteTag(uint32_t num, uint32_t wt,
- uint8_t* ptr) {
- GOOGLE_DCHECK(ptr < end_); // NOLINT
- return UnsafeVarint((num << 3) | wt, ptr);
- }
-
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteLengthDelim(int num, uint32_t size,
- uint8_t* ptr) {
- ptr = WriteTag(num, 2, ptr);
- return UnsafeWriteSize(size, ptr);
- }
-
- uint8_t* WriteRawFallback(const void* data, int size, uint8_t* ptr);
-
- uint8_t* WriteAliasedRaw(const void* data, int size, uint8_t* ptr);
-
- uint8_t* WriteStringMaybeAliasedOutline(uint32_t num, const std::string& s,
- uint8_t* ptr);
- uint8_t* WriteStringOutline(uint32_t num, const std::string& s, uint8_t* ptr);
-
- template <typename T, typename E>
- PROTOBUF_ALWAYS_INLINE uint8_t* WriteVarintPacked(int num, const T& r,
- int size, uint8_t* ptr,
- const E& encode) {
- ptr = EnsureSpace(ptr);
- ptr = WriteLengthDelim(num, size, ptr);
- auto it = r.data();
- auto end = it + r.size();
- do {
- ptr = EnsureSpace(ptr);
- ptr = UnsafeVarint(encode(*it++), ptr);
- } while (it < end);
- return ptr;
- }
-
- static uint32_t Encode32(uint32_t v) { return v; }
- static uint64_t Encode64(uint64_t v) { return v; }
- static uint32_t ZigZagEncode32(int32_t v) {
- return (static_cast<uint32_t>(v) << 1) ^ static_cast<uint32_t>(v >> 31);
- }
- static uint64_t ZigZagEncode64(int64_t v) {
- return (static_cast<uint64_t>(v) << 1) ^ static_cast<uint64_t>(v >> 63);
- }
-
- template <typename T>
- PROTOBUF_ALWAYS_INLINE static uint8_t* UnsafeVarint(T value, uint8_t* ptr) {
- static_assert(std::is_unsigned<T>::value,
- "Varint serialization must be unsigned");
- ptr[0] = static_cast<uint8_t>(value);
- if (value < 0x80) {
- return ptr + 1;
- }
- // Turn on continuation bit in the byte we just wrote.
- ptr[0] |= static_cast<uint8_t>(0x80);
- value >>= 7;
- ptr[1] = static_cast<uint8_t>(value);
- if (value < 0x80) {
- return ptr + 2;
- }
- ptr += 2;
- do {
- // Turn on continuation bit in the byte we just wrote.
- ptr[-1] |= static_cast<uint8_t>(0x80);
- value >>= 7;
- *ptr = static_cast<uint8_t>(value);
- ++ptr;
- } while (value >= 0x80);
- return ptr;
- }
-
- PROTOBUF_ALWAYS_INLINE static uint8_t* UnsafeWriteSize(uint32_t value,
- uint8_t* ptr) {
- while (PROTOBUF_PREDICT_FALSE(value >= 0x80)) {
- *ptr = static_cast<uint8_t>(value | 0x80);
- value >>= 7;
- ++ptr;
- }
- *ptr++ = static_cast<uint8_t>(value);
- return ptr;
- }
-
- template <int S>
- uint8_t* WriteRawLittleEndian(const void* data, int size, uint8_t* ptr);
-#if !defined(PROTOBUF_LITTLE_ENDIAN) || \
- defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- uint8_t* WriteRawLittleEndian32(const void* data, int size, uint8_t* ptr);
- uint8_t* WriteRawLittleEndian64(const void* data, int size, uint8_t* ptr);
-#endif
-
- // These methods are for CodedOutputStream. Ideally they should be private
- // but to match current behavior of CodedOutputStream as close as possible
- // we allow it some functionality.
- public:
- uint8_t* SetInitialBuffer(void* data, int size) {
- auto ptr = static_cast<uint8_t*>(data);
- if (size > kSlopBytes) {
- end_ = ptr + size - kSlopBytes;
- buffer_end_ = nullptr;
- return ptr;
- } else {
- end_ = buffer_ + size;
- buffer_end_ = ptr;
- return buffer_;
- }
- }
-
- private:
- // Needed by CodedOutputStream HadError. HadError needs to flush the patch
- // buffers to ensure there is no error as of yet.
- uint8_t* FlushAndResetBuffer(uint8_t*);
-
- // The following functions mimic the old CodedOutputStream behavior as close
- // as possible. They flush the current state to the stream, behave as
- // the old CodedOutputStream and then return to normal operation.
- bool Skip(int count, uint8_t** pp);
- bool GetDirectBufferPointer(void** data, int* size, uint8_t** pp);
- uint8_t* GetDirectBufferForNBytesAndAdvance(int size, uint8_t** pp);
-
- friend class CodedOutputStream;
-};
-
-template <>
-inline uint8_t* EpsCopyOutputStream::WriteRawLittleEndian<1>(const void* data,
- int size,
- uint8_t* ptr) {
- return WriteRaw(data, size, ptr);
-}
-template <>
-inline uint8_t* EpsCopyOutputStream::WriteRawLittleEndian<4>(const void* data,
- int size,
- uint8_t* ptr) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- return WriteRaw(data, size, ptr);
-#else
- return WriteRawLittleEndian32(data, size, ptr);
-#endif
-}
-template <>
-inline uint8_t* EpsCopyOutputStream::WriteRawLittleEndian<8>(const void* data,
- int size,
- uint8_t* ptr) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- return WriteRaw(data, size, ptr);
-#else
- return WriteRawLittleEndian64(data, size, ptr);
-#endif
-}
-
-// Class which encodes and writes binary data which is composed of varint-
-// encoded integers and fixed-width pieces. Wraps a ZeroCopyOutputStream.
-// Most users will not need to deal with CodedOutputStream.
-//
-// Most methods of CodedOutputStream which return a bool return false if an
-// underlying I/O error occurs. Once such a failure occurs, the
-// CodedOutputStream is broken and is no longer useful. The Write* methods do
-// not return the stream status, but will invalidate the stream if an error
-// occurs. The client can probe HadError() to determine the status.
-//
-// Note that every method of CodedOutputStream which writes some data has
-// a corresponding static "ToArray" version. These versions write directly
-// to the provided buffer, returning a pointer past the last written byte.
-// They require that the buffer has sufficient capacity for the encoded data.
-// This allows an optimization where we check if an output stream has enough
-// space for an entire message before we start writing and, if there is, we
-// call only the ToArray methods to avoid doing bound checks for each
-// individual value.
-// i.e., in the example above:
-//
-// CodedOutputStream* coded_output = new CodedOutputStream(raw_output);
-// int magic_number = 1234;
-// char text[] = "Hello world!";
-//
-// int coded_size = sizeof(magic_number) +
-// CodedOutputStream::VarintSize32(strlen(text)) +
-// strlen(text);
-//
-// uint8_t* buffer =
-// coded_output->GetDirectBufferForNBytesAndAdvance(coded_size);
-// if (buffer != nullptr) {
-// // The output stream has enough space in the buffer: write directly to
-// // the array.
-// buffer = CodedOutputStream::WriteLittleEndian32ToArray(magic_number,
-// buffer);
-// buffer = CodedOutputStream::WriteVarint32ToArray(strlen(text), buffer);
-// buffer = CodedOutputStream::WriteRawToArray(text, strlen(text), buffer);
-// } else {
-// // Make bound-checked writes, which will ask the underlying stream for
-// // more space as needed.
-// coded_output->WriteLittleEndian32(magic_number);
-// coded_output->WriteVarint32(strlen(text));
-// coded_output->WriteRaw(text, strlen(text));
-// }
-//
-// delete coded_output;
-class PROTOBUF_EXPORT CodedOutputStream {
- public:
- // Creates a CodedOutputStream that writes to the given `stream`.
- // The provided stream must publicly derive from `ZeroCopyOutputStream`.
- template <class Stream, class = typename std::enable_if<std::is_base_of<
- ZeroCopyOutputStream, Stream>::value>::type>
- explicit CodedOutputStream(Stream* stream);
-
- // Creates a CodedOutputStream that writes to the given `stream`, and does
- // an 'eager initialization' of the internal state if `eager_init` is true.
- // The provided stream must publicly derive from `ZeroCopyOutputStream`.
- template <class Stream, class = typename std::enable_if<std::is_base_of<
- ZeroCopyOutputStream, Stream>::value>::type>
- CodedOutputStream(Stream* stream, bool eager_init);
-
- // Destroy the CodedOutputStream and position the underlying
- // ZeroCopyOutputStream immediately after the last byte written.
- ~CodedOutputStream();
-
- // Returns true if there was an underlying I/O error since this object was
- // created. On should call Trim before this function in order to catch all
- // errors.
- bool HadError() {
- cur_ = impl_.FlushAndResetBuffer(cur_);
- GOOGLE_DCHECK(cur_);
- return impl_.HadError();
- }
-
- // Trims any unused space in the underlying buffer so that its size matches
- // the number of bytes written by this stream. The underlying buffer will
- // automatically be trimmed when this stream is destroyed; this call is only
- // necessary if the underlying buffer is accessed *before* the stream is
- // destroyed.
- void Trim() { cur_ = impl_.Trim(cur_); }
-
- // Skips a number of bytes, leaving the bytes unmodified in the underlying
- // buffer. Returns false if an underlying write error occurs. This is
- // mainly useful with GetDirectBufferPointer().
- // Note of caution, the skipped bytes may contain uninitialized data. The
- // caller must make sure that the skipped bytes are properly initialized,
- // otherwise you might leak bytes from your heap.
- bool Skip(int count) { return impl_.Skip(count, &cur_); }
-
- // Sets *data to point directly at the unwritten part of the
- // CodedOutputStream's underlying buffer, and *size to the size of that
- // buffer, but does not advance the stream's current position. This will
- // always either produce a non-empty buffer or return false. If the caller
- // writes any data to this buffer, it should then call Skip() to skip over
- // the consumed bytes. This may be useful for implementing external fast
- // serialization routines for types of data not covered by the
- // CodedOutputStream interface.
- bool GetDirectBufferPointer(void** data, int* size) {
- return impl_.GetDirectBufferPointer(data, size, &cur_);
- }
-
- // If there are at least "size" bytes available in the current buffer,
- // returns a pointer directly into the buffer and advances over these bytes.
- // The caller may then write directly into this buffer (e.g. using the
- // *ToArray static methods) rather than go through CodedOutputStream. If
- // there are not enough bytes available, returns NULL. The return pointer is
- // invalidated as soon as any other non-const method of CodedOutputStream
- // is called.
- inline uint8_t* GetDirectBufferForNBytesAndAdvance(int size) {
- return impl_.GetDirectBufferForNBytesAndAdvance(size, &cur_);
- }
-
- // Write raw bytes, copying them from the given buffer.
- void WriteRaw(const void* buffer, int size) {
- cur_ = impl_.WriteRaw(buffer, size, cur_);
- }
- // Like WriteRaw() but will try to write aliased data if aliasing is
- // turned on.
- void WriteRawMaybeAliased(const void* data, int size);
- // Like WriteRaw() but writing directly to the target array.
- // This is _not_ inlined, as the compiler often optimizes memcpy into inline
- // copy loops. Since this gets called by every field with string or bytes
- // type, inlining may lead to a significant amount of code bloat, with only a
- // minor performance gain.
- static uint8_t* WriteRawToArray(const void* buffer, int size,
- uint8_t* target);
-
- // Equivalent to WriteRaw(str.data(), str.size()).
- void WriteString(const std::string& str);
- // Like WriteString() but writing directly to the target array.
- static uint8_t* WriteStringToArray(const std::string& str, uint8_t* target);
- // Write the varint-encoded size of str followed by str.
- static uint8_t* WriteStringWithSizeToArray(const std::string& str,
- uint8_t* target);
-
-
- // Write a 32-bit little-endian integer.
- void WriteLittleEndian32(uint32_t value) {
- cur_ = impl_.EnsureSpace(cur_);
- SetCur(WriteLittleEndian32ToArray(value, Cur()));
- }
- // Like WriteLittleEndian32() but writing directly to the target array.
- static uint8_t* WriteLittleEndian32ToArray(uint32_t value, uint8_t* target);
- // Write a 64-bit little-endian integer.
- void WriteLittleEndian64(uint64_t value) {
- cur_ = impl_.EnsureSpace(cur_);
- SetCur(WriteLittleEndian64ToArray(value, Cur()));
- }
- // Like WriteLittleEndian64() but writing directly to the target array.
- static uint8_t* WriteLittleEndian64ToArray(uint64_t value, uint8_t* target);
-
- // Write an unsigned integer with Varint encoding. Writing a 32-bit value
- // is equivalent to casting it to uint64_t and writing it as a 64-bit value,
- // but may be more efficient.
- void WriteVarint32(uint32_t value);
- // Like WriteVarint32() but writing directly to the target array.
- static uint8_t* WriteVarint32ToArray(uint32_t value, uint8_t* target);
- // Like WriteVarint32() but writing directly to the target array, and with
- // the less common-case paths being out of line rather than inlined.
- static uint8_t* WriteVarint32ToArrayOutOfLine(uint32_t value,
- uint8_t* target);
- // Write an unsigned integer with Varint encoding.
- void WriteVarint64(uint64_t value);
- // Like WriteVarint64() but writing directly to the target array.
- static uint8_t* WriteVarint64ToArray(uint64_t value, uint8_t* target);
-
- // Equivalent to WriteVarint32() except when the value is negative,
- // in which case it must be sign-extended to a full 10 bytes.
- void WriteVarint32SignExtended(int32_t value);
- // Like WriteVarint32SignExtended() but writing directly to the target array.
- static uint8_t* WriteVarint32SignExtendedToArray(int32_t value,
- uint8_t* target);
-
- // This is identical to WriteVarint32(), but optimized for writing tags.
- // In particular, if the input is a compile-time constant, this method
- // compiles down to a couple instructions.
- // Always inline because otherwise the aforementioned optimization can't work,
- // but GCC by default doesn't want to inline this.
- void WriteTag(uint32_t value);
- // Like WriteTag() but writing directly to the target array.
- PROTOBUF_ALWAYS_INLINE
- static uint8_t* WriteTagToArray(uint32_t value, uint8_t* target);
-
- // Returns the number of bytes needed to encode the given value as a varint.
- static size_t VarintSize32(uint32_t value);
- // Returns the number of bytes needed to encode the given value as a varint.
- static size_t VarintSize64(uint64_t value);
-
- // If negative, 10 bytes. Otherwise, same as VarintSize32().
- static size_t VarintSize32SignExtended(int32_t value);
-
- // Same as above, plus one. The additional one comes at no compute cost.
- static size_t VarintSize32PlusOne(uint32_t value);
- static size_t VarintSize64PlusOne(uint64_t value);
- static size_t VarintSize32SignExtendedPlusOne(int32_t value);
-
- // Compile-time equivalent of VarintSize32().
- template <uint32_t Value>
- struct StaticVarintSize32 {
- static const size_t value = (Value < (1 << 7)) ? 1
- : (Value < (1 << 14)) ? 2
- : (Value < (1 << 21)) ? 3
- : (Value < (1 << 28)) ? 4
- : 5;
- };
-
- // Returns the total number of bytes written since this object was created.
- int ByteCount() const {
- return static_cast<int>(impl_.ByteCount(cur_) - start_count_);
- }
-
- // Instructs the CodedOutputStream to allow the underlying
- // ZeroCopyOutputStream to hold pointers to the original structure instead of
- // copying, if it supports it (i.e. output->AllowsAliasing() is true). If the
- // underlying stream does not support aliasing, then enabling it has no
- // affect. For now, this only affects the behavior of
- // WriteRawMaybeAliased().
- //
- // NOTE: It is caller's responsibility to ensure that the chunk of memory
- // remains live until all of the data has been consumed from the stream.
- void EnableAliasing(bool enabled) { impl_.EnableAliasing(enabled); }
-
- // Indicate to the serializer whether the user wants deterministic
- // serialization. The default when this is not called comes from the global
- // default, controlled by SetDefaultSerializationDeterministic.
- //
- // What deterministic serialization means is entirely up to the driver of the
- // serialization process (i.e. the caller of methods like WriteVarint32). In
- // the case of serializing a proto buffer message using one of the methods of
- // MessageLite, this means that for a given binary equal messages will always
- // be serialized to the same bytes. This implies:
- //
- // * Repeated serialization of a message will return the same bytes.
- //
- // * Different processes running the same binary (including on different
- // machines) will serialize equal messages to the same bytes.
- //
- // Note that this is *not* canonical across languages. It is also unstable
- // across different builds with intervening message definition changes, due to
- // unknown fields. Users who need canonical serialization (e.g. persistent
- // storage in a canonical form, fingerprinting) should define their own
- // canonicalization specification and implement the serializer using
- // reflection APIs rather than relying on this API.
- void SetSerializationDeterministic(bool value) {
- impl_.SetSerializationDeterministic(value);
- }
-
- // Return whether the user wants deterministic serialization. See above.
- bool IsSerializationDeterministic() const {
- return impl_.IsSerializationDeterministic();
- }
-
- static bool IsDefaultSerializationDeterministic() {
- return default_serialization_deterministic_.load(
- std::memory_order_relaxed) != 0;
- }
-
- template <typename Func>
- void Serialize(const Func& func);
-
- uint8_t* Cur() const { return cur_; }
- void SetCur(uint8_t* ptr) { cur_ = ptr; }
- EpsCopyOutputStream* EpsCopy() { return &impl_; }
-
- private:
- template <class Stream>
- void InitEagerly(Stream* stream);
-
- EpsCopyOutputStream impl_;
- uint8_t* cur_;
- int64_t start_count_;
- static std::atomic<bool> default_serialization_deterministic_;
-
- // See above. Other projects may use "friend" to allow them to call this.
- // After SetDefaultSerializationDeterministic() completes, all protocol
- // buffer serializations will be deterministic by default. Thread safe.
- // However, the meaning of "after" is subtle here: to be safe, each thread
- // that wants deterministic serialization by default needs to call
- // SetDefaultSerializationDeterministic() or ensure on its own that another
- // thread has done so.
- friend void internal::MapTestForceDeterministic();
- static void SetDefaultSerializationDeterministic() {
- default_serialization_deterministic_.store(true, std::memory_order_relaxed);
- }
- // REQUIRES: value >= 0x80, and that (value & 7f) has been written to *target.
- static uint8_t* WriteVarint32ToArrayOutOfLineHelper(uint32_t value,
- uint8_t* target);
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedOutputStream);
-};
-
-// inline methods ====================================================
-// The vast majority of varints are only one byte. These inline
-// methods optimize for that case.
-
-inline bool CodedInputStream::ReadVarint32(uint32_t* value) {
- uint32_t v = 0;
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_)) {
- v = *buffer_;
- if (v < 0x80) {
- *value = v;
- Advance(1);
- return true;
- }
- }
- int64_t result = ReadVarint32Fallback(v);
- *value = static_cast<uint32_t>(result);
- return result >= 0;
-}
-
-inline bool CodedInputStream::ReadVarint64(uint64_t* value) {
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_) && *buffer_ < 0x80) {
- *value = *buffer_;
- Advance(1);
- return true;
- }
- std::pair<uint64_t, bool> p = ReadVarint64Fallback();
- *value = p.first;
- return p.second;
-}
-
-inline bool CodedInputStream::ReadVarintSizeAsInt(int* value) {
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_)) {
- int v = *buffer_;
- if (v < 0x80) {
- *value = v;
- Advance(1);
- return true;
- }
- }
- *value = ReadVarintSizeAsIntFallback();
- return *value >= 0;
-}
-
-// static
-inline const uint8_t* CodedInputStream::ReadLittleEndian32FromArray(
- const uint8_t* buffer, uint32_t* value) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- memcpy(value, buffer, sizeof(*value));
- return buffer + sizeof(*value);
-#else
- *value = (static_cast<uint32_t>(buffer[0])) |
- (static_cast<uint32_t>(buffer[1]) << 8) |
- (static_cast<uint32_t>(buffer[2]) << 16) |
- (static_cast<uint32_t>(buffer[3]) << 24);
- return buffer + sizeof(*value);
-#endif
-}
-// static
-inline const uint8_t* CodedInputStream::ReadLittleEndian64FromArray(
- const uint8_t* buffer, uint64_t* value) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- memcpy(value, buffer, sizeof(*value));
- return buffer + sizeof(*value);
-#else
- uint32_t part0 = (static_cast<uint32_t>(buffer[0])) |
- (static_cast<uint32_t>(buffer[1]) << 8) |
- (static_cast<uint32_t>(buffer[2]) << 16) |
- (static_cast<uint32_t>(buffer[3]) << 24);
- uint32_t part1 = (static_cast<uint32_t>(buffer[4])) |
- (static_cast<uint32_t>(buffer[5]) << 8) |
- (static_cast<uint32_t>(buffer[6]) << 16) |
- (static_cast<uint32_t>(buffer[7]) << 24);
- *value = static_cast<uint64_t>(part0) | (static_cast<uint64_t>(part1) << 32);
- return buffer + sizeof(*value);
-#endif
-}
-
-inline bool CodedInputStream::ReadLittleEndian32(uint32_t* value) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- if (PROTOBUF_PREDICT_TRUE(BufferSize() >= static_cast<int>(sizeof(*value)))) {
- buffer_ = ReadLittleEndian32FromArray(buffer_, value);
- return true;
- } else {
- return ReadLittleEndian32Fallback(value);
- }
-#else
- return ReadLittleEndian32Fallback(value);
-#endif
-}
-
-inline bool CodedInputStream::ReadLittleEndian64(uint64_t* value) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- if (PROTOBUF_PREDICT_TRUE(BufferSize() >= static_cast<int>(sizeof(*value)))) {
- buffer_ = ReadLittleEndian64FromArray(buffer_, value);
- return true;
- } else {
- return ReadLittleEndian64Fallback(value);
- }
-#else
- return ReadLittleEndian64Fallback(value);
-#endif
-}
-
-inline uint32_t CodedInputStream::ReadTagNoLastTag() {
- uint32_t v = 0;
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_)) {
- v = *buffer_;
- if (v < 0x80) {
- Advance(1);
- return v;
- }
- }
- v = ReadTagFallback(v);
- return v;
-}
-
-inline std::pair<uint32_t, bool> CodedInputStream::ReadTagWithCutoffNoLastTag(
- uint32_t cutoff) {
- // In performance-sensitive code we can expect cutoff to be a compile-time
- // constant, and things like "cutoff >= kMax1ByteVarint" to be evaluated at
- // compile time.
- uint32_t first_byte_or_zero = 0;
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_)) {
- // Hot case: buffer_ non_empty, buffer_[0] in [1, 128).
- // TODO(gpike): Is it worth rearranging this? E.g., if the number of fields
- // is large enough then is it better to check for the two-byte case first?
- first_byte_or_zero = buffer_[0];
- if (static_cast<int8_t>(buffer_[0]) > 0) {
- const uint32_t kMax1ByteVarint = 0x7f;
- uint32_t tag = buffer_[0];
- Advance(1);
- return std::make_pair(tag, cutoff >= kMax1ByteVarint || tag <= cutoff);
- }
- // Other hot case: cutoff >= 0x80, buffer_ has at least two bytes available,
- // and tag is two bytes. The latter is tested by bitwise-and-not of the
- // first byte and the second byte.
- if (cutoff >= 0x80 && PROTOBUF_PREDICT_TRUE(buffer_ + 1 < buffer_end_) &&
- PROTOBUF_PREDICT_TRUE((buffer_[0] & ~buffer_[1]) >= 0x80)) {
- const uint32_t kMax2ByteVarint = (0x7f << 7) + 0x7f;
- uint32_t tag = (1u << 7) * buffer_[1] + (buffer_[0] - 0x80);
- Advance(2);
- // It might make sense to test for tag == 0 now, but it is so rare that
- // that we don't bother. A varint-encoded 0 should be one byte unless
- // the encoder lost its mind. The second part of the return value of
- // this function is allowed to be either true or false if the tag is 0,
- // so we don't have to check for tag == 0. We may need to check whether
- // it exceeds cutoff.
- bool at_or_below_cutoff = cutoff >= kMax2ByteVarint || tag <= cutoff;
- return std::make_pair(tag, at_or_below_cutoff);
- }
- }
- // Slow path
- const uint32_t tag = ReadTagFallback(first_byte_or_zero);
- return std::make_pair(tag, static_cast<uint32_t>(tag - 1) < cutoff);
-}
-
-inline bool CodedInputStream::LastTagWas(uint32_t expected) {
- return last_tag_ == expected;
-}
-
-inline bool CodedInputStream::ConsumedEntireMessage() {
- return legitimate_message_end_;
-}
-
-inline bool CodedInputStream::ExpectTag(uint32_t expected) {
- if (expected < (1 << 7)) {
- if (PROTOBUF_PREDICT_TRUE(buffer_ < buffer_end_) &&
- buffer_[0] == expected) {
- Advance(1);
- return true;
- } else {
- return false;
- }
- } else if (expected < (1 << 14)) {
- if (PROTOBUF_PREDICT_TRUE(BufferSize() >= 2) &&
- buffer_[0] == static_cast<uint8_t>(expected | 0x80) &&
- buffer_[1] == static_cast<uint8_t>(expected >> 7)) {
- Advance(2);
- return true;
- } else {
- return false;
- }
- } else {
- // Don't bother optimizing for larger values.
- return false;
- }
-}
-
-inline const uint8_t* CodedInputStream::ExpectTagFromArray(
- const uint8_t* buffer, uint32_t expected) {
- if (expected < (1 << 7)) {
- if (buffer[0] == expected) {
- return buffer + 1;
- }
- } else if (expected < (1 << 14)) {
- if (buffer[0] == static_cast<uint8_t>(expected | 0x80) &&
- buffer[1] == static_cast<uint8_t>(expected >> 7)) {
- return buffer + 2;
- }
- }
- return nullptr;
-}
-
-inline void CodedInputStream::GetDirectBufferPointerInline(const void** data,
- int* size) {
- *data = buffer_;
- *size = static_cast<int>(buffer_end_ - buffer_);
-}
-
-inline bool CodedInputStream::ExpectAtEnd() {
- // If we are at a limit we know no more bytes can be read. Otherwise, it's
- // hard to say without calling Refresh(), and we'd rather not do that.
-
- if (buffer_ == buffer_end_ && ((buffer_size_after_limit_ != 0) ||
- (total_bytes_read_ == current_limit_))) {
- last_tag_ = 0; // Pretend we called ReadTag()...
- legitimate_message_end_ = true; // ... and it hit EOF.
- return true;
- } else {
- return false;
- }
-}
-
-inline int CodedInputStream::CurrentPosition() const {
- return total_bytes_read_ - (BufferSize() + buffer_size_after_limit_);
-}
-
-inline void CodedInputStream::Advance(int amount) { buffer_ += amount; }
-
-inline void CodedInputStream::SetRecursionLimit(int limit) {
- recursion_budget_ += limit - recursion_limit_;
- recursion_limit_ = limit;
-}
-
-inline bool CodedInputStream::IncrementRecursionDepth() {
- --recursion_budget_;
- return recursion_budget_ >= 0;
-}
-
-inline void CodedInputStream::DecrementRecursionDepth() {
- if (recursion_budget_ < recursion_limit_) ++recursion_budget_;
-}
-
-inline void CodedInputStream::UnsafeDecrementRecursionDepth() {
- assert(recursion_budget_ < recursion_limit_);
- ++recursion_budget_;
-}
-
-inline void CodedInputStream::SetExtensionRegistry(const DescriptorPool* pool,
- MessageFactory* factory) {
- extension_pool_ = pool;
- extension_factory_ = factory;
-}
-
-inline const DescriptorPool* CodedInputStream::GetExtensionPool() {
- return extension_pool_;
-}
-
-inline MessageFactory* CodedInputStream::GetExtensionFactory() {
- return extension_factory_;
-}
-
-inline int CodedInputStream::BufferSize() const {
- return static_cast<int>(buffer_end_ - buffer_);
-}
-
-inline CodedInputStream::CodedInputStream(ZeroCopyInputStream* input)
- : buffer_(nullptr),
- buffer_end_(nullptr),
- input_(input),
- total_bytes_read_(0),
- overflow_bytes_(0),
- last_tag_(0),
- legitimate_message_end_(false),
- aliasing_enabled_(false),
- current_limit_(std::numeric_limits<int32_t>::max()),
- buffer_size_after_limit_(0),
- total_bytes_limit_(kDefaultTotalBytesLimit),
- recursion_budget_(default_recursion_limit_),
- recursion_limit_(default_recursion_limit_),
- extension_pool_(nullptr),
- extension_factory_(nullptr) {
- // Eagerly Refresh() so buffer space is immediately available.
- Refresh();
-}
-
-inline CodedInputStream::CodedInputStream(const uint8_t* buffer, int size)
- : buffer_(buffer),
- buffer_end_(buffer + size),
- input_(nullptr),
- total_bytes_read_(size),
- overflow_bytes_(0),
- last_tag_(0),
- legitimate_message_end_(false),
- aliasing_enabled_(false),
- current_limit_(size),
- buffer_size_after_limit_(0),
- total_bytes_limit_(kDefaultTotalBytesLimit),
- recursion_budget_(default_recursion_limit_),
- recursion_limit_(default_recursion_limit_),
- extension_pool_(nullptr),
- extension_factory_(nullptr) {
- // Note that setting current_limit_ == size is important to prevent some
- // code paths from trying to access input_ and segfaulting.
-}
-
-inline bool CodedInputStream::IsFlat() const { return input_ == nullptr; }
-
-inline bool CodedInputStream::Skip(int count) {
- if (count < 0) return false; // security: count is often user-supplied
-
- const int original_buffer_size = BufferSize();
-
- if (count <= original_buffer_size) {
- // Just skipping within the current buffer. Easy.
- Advance(count);
- return true;
- }
-
- return SkipFallback(count, original_buffer_size);
-}
-
-template <class Stream, class>
-inline CodedOutputStream::CodedOutputStream(Stream* stream)
- : impl_(stream, IsDefaultSerializationDeterministic(), &cur_),
- start_count_(stream->ByteCount()) {
- InitEagerly(stream);
-}
-
-template <class Stream, class>
-inline CodedOutputStream::CodedOutputStream(Stream* stream, bool eager_init)
- : impl_(stream, IsDefaultSerializationDeterministic(), &cur_),
- start_count_(stream->ByteCount()) {
- if (eager_init) {
- InitEagerly(stream);
- }
-}
-
-template <class Stream>
-inline void CodedOutputStream::InitEagerly(Stream* stream) {
- void* data;
- int size;
- if (PROTOBUF_PREDICT_TRUE(stream->Next(&data, &size) && size > 0)) {
- cur_ = impl_.SetInitialBuffer(data, size);
- }
-}
-
-inline uint8_t* CodedOutputStream::WriteVarint32ToArray(uint32_t value,
- uint8_t* target) {
- return EpsCopyOutputStream::UnsafeVarint(value, target);
-}
-
-inline uint8_t* CodedOutputStream::WriteVarint32ToArrayOutOfLine(
- uint32_t value, uint8_t* target) {
- target[0] = static_cast<uint8_t>(value);
- if (value < 0x80) {
- return target + 1;
- } else {
- return WriteVarint32ToArrayOutOfLineHelper(value, target);
- }
-}
-
-inline uint8_t* CodedOutputStream::WriteVarint64ToArray(uint64_t value,
- uint8_t* target) {
- return EpsCopyOutputStream::UnsafeVarint(value, target);
-}
-
-inline void CodedOutputStream::WriteVarint32SignExtended(int32_t value) {
- WriteVarint64(static_cast<uint64_t>(value));
-}
-
-inline uint8_t* CodedOutputStream::WriteVarint32SignExtendedToArray(
- int32_t value, uint8_t* target) {
- return WriteVarint64ToArray(static_cast<uint64_t>(value), target);
-}
-
-inline uint8_t* CodedOutputStream::WriteLittleEndian32ToArray(uint32_t value,
- uint8_t* target) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- memcpy(target, &value, sizeof(value));
-#else
- target[0] = static_cast<uint8_t>(value);
- target[1] = static_cast<uint8_t>(value >> 8);
- target[2] = static_cast<uint8_t>(value >> 16);
- target[3] = static_cast<uint8_t>(value >> 24);
-#endif
- return target + sizeof(value);
-}
-
-inline uint8_t* CodedOutputStream::WriteLittleEndian64ToArray(uint64_t value,
- uint8_t* target) {
-#if defined(PROTOBUF_LITTLE_ENDIAN) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- memcpy(target, &value, sizeof(value));
-#else
- uint32_t part0 = static_cast<uint32_t>(value);
- uint32_t part1 = static_cast<uint32_t>(value >> 32);
-
- target[0] = static_cast<uint8_t>(part0);
- target[1] = static_cast<uint8_t>(part0 >> 8);
- target[2] = static_cast<uint8_t>(part0 >> 16);
- target[3] = static_cast<uint8_t>(part0 >> 24);
- target[4] = static_cast<uint8_t>(part1);
- target[5] = static_cast<uint8_t>(part1 >> 8);
- target[6] = static_cast<uint8_t>(part1 >> 16);
- target[7] = static_cast<uint8_t>(part1 >> 24);
-#endif
- return target + sizeof(value);
-}
-
-inline void CodedOutputStream::WriteVarint32(uint32_t value) {
- cur_ = impl_.EnsureSpace(cur_);
- SetCur(WriteVarint32ToArray(value, Cur()));
-}
-
-inline void CodedOutputStream::WriteVarint64(uint64_t value) {
- cur_ = impl_.EnsureSpace(cur_);
- SetCur(WriteVarint64ToArray(value, Cur()));
-}
-
-inline void CodedOutputStream::WriteTag(uint32_t value) {
- WriteVarint32(value);
-}
-
-inline uint8_t* CodedOutputStream::WriteTagToArray(uint32_t value,
- uint8_t* target) {
- return WriteVarint32ToArray(value, target);
-}
-
-inline size_t CodedOutputStream::VarintSize32(uint32_t value) {
- // This computes value == 0 ? 1 : floor(log2(value)) / 7 + 1
- // Use an explicit multiplication to implement the divide of
- // a number in the 1..31 range.
- // Explicit OR 0x1 to avoid calling Bits::Log2FloorNonZero(0), which is
- // undefined.
- uint32_t log2value = Bits::Log2FloorNonZero(value | 0x1);
- return static_cast<size_t>((log2value * 9 + 73) / 64);
-}
-
-inline size_t CodedOutputStream::VarintSize32PlusOne(uint32_t value) {
- // Same as above, but one more.
- uint32_t log2value = Bits::Log2FloorNonZero(value | 0x1);
- return static_cast<size_t>((log2value * 9 + 73 + 64) / 64);
-}
-
-inline size_t CodedOutputStream::VarintSize64(uint64_t value) {
- // This computes value == 0 ? 1 : floor(log2(value)) / 7 + 1
- // Use an explicit multiplication to implement the divide of
- // a number in the 1..63 range.
- // Explicit OR 0x1 to avoid calling Bits::Log2FloorNonZero(0), which is
- // undefined.
- uint32_t log2value = Bits::Log2FloorNonZero64(value | 0x1);
- return static_cast<size_t>((log2value * 9 + 73) / 64);
-}
-
-inline size_t CodedOutputStream::VarintSize64PlusOne(uint64_t value) {
- // Same as above, but one more.
- uint32_t log2value = Bits::Log2FloorNonZero64(value | 0x1);
- return static_cast<size_t>((log2value * 9 + 73 + 64) / 64);
-}
-
-inline size_t CodedOutputStream::VarintSize32SignExtended(int32_t value) {
- return VarintSize64(static_cast<uint64_t>(int64_t{value}));
-}
-
-inline size_t CodedOutputStream::VarintSize32SignExtendedPlusOne(
- int32_t value) {
- return VarintSize64PlusOne(static_cast<uint64_t>(int64_t{value}));
-}
-
-inline void CodedOutputStream::WriteString(const std::string& str) {
- WriteRaw(str.data(), static_cast<int>(str.size()));
-}
-
-inline void CodedOutputStream::WriteRawMaybeAliased(const void* data,
- int size) {
- cur_ = impl_.WriteRawMaybeAliased(data, size, cur_);
-}
-
-inline uint8_t* CodedOutputStream::WriteRawToArray(const void* data, int size,
- uint8_t* target) {
- memcpy(target, data, size);
- return target + size;
-}
-
-inline uint8_t* CodedOutputStream::WriteStringToArray(const std::string& str,
- uint8_t* target) {
- return WriteRawToArray(str.data(), static_cast<int>(str.size()), target);
-}
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#if defined(_MSC_VER) && _MSC_VER >= 1300 && !defined(__INTEL_COMPILER)
-#pragma runtime_checks("c", restore)
-#endif // _MSC_VER && !defined(__INTEL_COMPILER)
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_H__
diff --git a/include/google/protobuf/io/gzip_stream.h b/include/google/protobuf/io/gzip_stream.h
deleted file mode 100644
index 4cf71b6c32..0000000000
--- a/include/google/protobuf/io/gzip_stream.h
+++ /dev/null
@@ -1,205 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: brianolson@google.com (Brian Olson)
-//
-// This file contains the definition for classes GzipInputStream and
-// GzipOutputStream.
-//
-// GzipInputStream decompresses data from an underlying
-// ZeroCopyInputStream and provides the decompressed data as a
-// ZeroCopyInputStream.
-//
-// GzipOutputStream is an ZeroCopyOutputStream that compresses data to
-// an underlying ZeroCopyOutputStream.
-
-#ifndef GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
-#define GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
-
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/port.h>
-#include "zlib.h"
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-// A ZeroCopyInputStream that reads compressed data through zlib
-class PROTOBUF_EXPORT GzipInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- // Format key for constructor
- enum Format {
- // zlib will autodetect gzip header or deflate stream
- AUTO = 0,
-
- // GZIP streams have some extra header data for file attributes.
- GZIP = 1,
-
- // Simpler zlib stream format.
- ZLIB = 2,
- };
-
- // buffer_size and format may be -1 for default of 64kB and GZIP format
- explicit GzipInputStream(ZeroCopyInputStream* sub_stream,
- Format format = AUTO, int buffer_size = -1);
- virtual ~GzipInputStream();
-
- // Return last error message or NULL if no error.
- inline const char* ZlibErrorMessage() const { return zcontext_.msg; }
- inline int ZlibErrorCode() const { return zerror_; }
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
- private:
- Format format_;
-
- ZeroCopyInputStream* sub_stream_;
-
- z_stream zcontext_;
- int zerror_;
-
- void* output_buffer_;
- void* output_position_;
- size_t output_buffer_length_;
- int64_t byte_count_;
-
- int Inflate(int flush);
- void DoNextOutput(const void** data, int* size);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GzipInputStream);
-};
-
-class PROTOBUF_EXPORT GzipOutputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyOutputStream {
- public:
- // Format key for constructor
- enum Format {
- // GZIP streams have some extra header data for file attributes.
- GZIP = 1,
-
- // Simpler zlib stream format.
- ZLIB = 2,
- };
-
- struct PROTOBUF_EXPORT Options {
- // Defaults to GZIP.
- Format format;
-
- // What size buffer to use internally. Defaults to 64kB.
- int buffer_size;
-
- // A number between 0 and 9, where 0 is no compression and 9 is best
- // compression. Defaults to Z_DEFAULT_COMPRESSION (see zlib.h).
- int compression_level;
-
- // Defaults to Z_DEFAULT_STRATEGY. Can also be set to Z_FILTERED,
- // Z_HUFFMAN_ONLY, or Z_RLE. See the documentation for deflateInit2 in
- // zlib.h for definitions of these constants.
- int compression_strategy;
-
- Options(); // Initializes with default values.
- };
-
- // Create a GzipOutputStream with default options.
- explicit GzipOutputStream(ZeroCopyOutputStream* sub_stream);
-
- // Create a GzipOutputStream with the given options.
- GzipOutputStream(ZeroCopyOutputStream* sub_stream, const Options& options);
-
- virtual ~GzipOutputStream();
-
- // Return last error message or NULL if no error.
- inline const char* ZlibErrorMessage() const { return zcontext_.msg; }
- inline int ZlibErrorCode() const { return zerror_; }
-
- // Flushes data written so far to zipped data in the underlying stream.
- // It is the caller's responsibility to flush the underlying stream if
- // necessary.
- // Compression may be less efficient stopping and starting around flushes.
- // Returns true if no error.
- //
- // Please ensure that block size is > 6. Here is an excerpt from the zlib
- // doc that explains why:
- //
- // In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that avail_out
- // is greater than six to avoid repeated flush markers due to
- // avail_out == 0 on return.
- bool Flush();
-
- // Writes out all data and closes the gzip stream.
- // It is the caller's responsibility to close the underlying stream if
- // necessary.
- // Returns true if no error.
- bool Close();
-
- // implements ZeroCopyOutputStream ---------------------------------
- bool Next(void** data, int* size) override;
- void BackUp(int count) override;
- int64_t ByteCount() const override;
-
- private:
- ZeroCopyOutputStream* sub_stream_;
- // Result from calling Next() on sub_stream_
- void* sub_data_;
- int sub_data_size_;
-
- z_stream zcontext_;
- int zerror_;
- void* input_buffer_;
- size_t input_buffer_length_;
-
- // Shared constructor code.
- void Init(ZeroCopyOutputStream* sub_stream, const Options& options);
-
- // Do some compression.
- // Takes zlib flush mode.
- // Returns zlib error code.
- int Deflate(int flush);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GzipOutputStream);
-};
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_GZIP_STREAM_H__
diff --git a/include/google/protobuf/io/io_win32.h b/include/google/protobuf/io/io_win32.h
deleted file mode 100644
index a72b4ea3cf..0000000000
--- a/include/google/protobuf/io/io_win32.h
+++ /dev/null
@@ -1,141 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: laszlocsomor@google.com (Laszlo Csomor)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-
-// This file contains the declarations for Windows implementations of
-// commonly used POSIX functions such as open(2) and access(2), as well
-// as macro definitions for flags of these functions.
-//
-// By including this file you'll redefine open/access/etc. to
-// ::google::protobuf::io::win32::{open/access/etc.}.
-// Make sure you don't include a header that attempts to redeclare or
-// redefine these functions, that'll lead to confusing compilation
-// errors. It's best to #include this file as the last one to ensure that.
-//
-// This file is only used on Windows, it's empty on other platforms.
-
-#ifndef GOOGLE_PROTOBUF_IO_IO_WIN32_H__
-#define GOOGLE_PROTOBUF_IO_IO_WIN32_H__
-
-#if defined(_WIN32)
-
-#include <functional>
-#include <string>
-
-#include <google/protobuf/port.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-// Compilers on Windows other than MSVC (e.g. Cygwin, MinGW32) define the
-// following functions already, except for mkdir.
-namespace google {
-namespace protobuf {
-namespace io {
-namespace win32 {
-
-PROTOBUF_EXPORT FILE* fopen(const char* path, const char* mode);
-PROTOBUF_EXPORT int access(const char* path, int mode);
-PROTOBUF_EXPORT int chdir(const char* path);
-PROTOBUF_EXPORT int close(int fd);
-PROTOBUF_EXPORT int dup(int fd);
-PROTOBUF_EXPORT int dup2(int fd1, int fd2);
-PROTOBUF_EXPORT int mkdir(const char* path, int _mode);
-PROTOBUF_EXPORT int open(const char* path, int flags, int mode = 0);
-PROTOBUF_EXPORT int read(int fd, void* buffer, size_t size);
-PROTOBUF_EXPORT int setmode(int fd, int mode);
-PROTOBUF_EXPORT int stat(const char* path, struct _stat* buffer);
-PROTOBUF_EXPORT int write(int fd, const void* buffer, size_t size);
-PROTOBUF_EXPORT std::wstring testonly_utf8_to_winpath(const char* path);
-
-enum class ExpandWildcardsResult {
- kSuccess = 0,
- kErrorNoMatchingFile = 1,
- kErrorInputPathConversion = 2,
- kErrorOutputPathConversion = 3,
-};
-
-// Expand wildcards in a path pattern, feed the result to a consumer function.
-//
-// `path` must be a valid, Windows-style path. It may be absolute, or relative
-// to the current working directory, and it may contain wildcards ("*" and "?")
-// in the last path segment. This function passes all matching file names to
-// `consume`. The resulting paths may not be absolute nor normalized.
-//
-// The function returns a value from `ExpandWildcardsResult`.
-PROTOBUF_EXPORT ExpandWildcardsResult ExpandWildcards(
- const std::string& path, std::function<void(const std::string&)> consume);
-
-namespace strings {
-
-// Convert from UTF-16 to Active-Code-Page-encoded or to UTF-8-encoded text.
-PROTOBUF_EXPORT bool wcs_to_mbs(const wchar_t* s, std::string* out,
- bool outUtf8);
-
-// Convert from Active-Code-Page-encoded or UTF-8-encoded text to UTF-16.
-PROTOBUF_EXPORT bool mbs_to_wcs(const char* s, std::wstring* out, bool inUtf8);
-
-// Convert from UTF-8-encoded text to UTF-16.
-PROTOBUF_EXPORT bool utf8_to_wcs(const char* input, std::wstring* out);
-
-// Convert from UTF-16-encoded text to UTF-8.
-PROTOBUF_EXPORT bool wcs_to_utf8(const wchar_t* input, std::string* out);
-
-} // namespace strings
-
-} // namespace win32
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#ifndef W_OK
-#define W_OK 02 // not defined by MSVC for whatever reason
-#endif
-
-#ifndef F_OK
-#define F_OK 00 // not defined by MSVC for whatever reason
-#endif
-
-#ifndef STDIN_FILENO
-#define STDIN_FILENO 0
-#endif
-
-#ifndef STDOUT_FILENO
-#define STDOUT_FILENO 1
-#endif
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // defined(_WIN32)
-
-#endif // GOOGLE_PROTOBUF_IO_IO_WIN32_H__
diff --git a/include/google/protobuf/io/printer.h b/include/google/protobuf/io/printer.h
deleted file mode 100644
index 92a4321c04..0000000000
--- a/include/google/protobuf/io/printer.h
+++ /dev/null
@@ -1,387 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Utility class for writing text to a ZeroCopyOutputStream.
-
-#ifndef GOOGLE_PROTOBUF_IO_PRINTER_H__
-#define GOOGLE_PROTOBUF_IO_PRINTER_H__
-
-
-#include <map>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-class ZeroCopyOutputStream; // zero_copy_stream.h
-
-// Records annotations about a Printer's output.
-class PROTOBUF_EXPORT AnnotationCollector {
- public:
- // Annotation is a offset range and a payload pair.
- typedef std::pair<std::pair<size_t, size_t>, std::string> Annotation;
-
- // Records that the bytes in file_path beginning with begin_offset and ending
- // before end_offset are associated with the SourceCodeInfo-style path.
- virtual void AddAnnotation(size_t begin_offset, size_t end_offset,
- const std::string& file_path,
- const std::vector<int>& path) = 0;
-
- // TODO(gerbens) I don't see why we need virtuals here. Just a vector of
- // range, payload pairs stored in a context should suffice.
- virtual void AddAnnotationNew(Annotation& /* a */) {}
-
- virtual ~AnnotationCollector() {}
-};
-
-// Records annotations about a Printer's output to the given protocol buffer,
-// assuming that the buffer has an ::Annotation message exposing path,
-// source_file, begin and end fields.
-template <typename AnnotationProto>
-class AnnotationProtoCollector : public AnnotationCollector {
- public:
- // annotation_proto is the protocol buffer to which new Annotations should be
- // added. It is not owned by the AnnotationProtoCollector.
- explicit AnnotationProtoCollector(AnnotationProto* annotation_proto)
- : annotation_proto_(annotation_proto) {}
-
- // Override for AnnotationCollector::AddAnnotation.
- void AddAnnotation(size_t begin_offset, size_t end_offset,
- const std::string& file_path,
- const std::vector<int>& path) override {
- typename AnnotationProto::Annotation* annotation =
- annotation_proto_->add_annotation();
- for (int i = 0; i < path.size(); ++i) {
- annotation->add_path(path[i]);
- }
- annotation->set_source_file(file_path);
- annotation->set_begin(begin_offset);
- annotation->set_end(end_offset);
- }
- // Override for AnnotationCollector::AddAnnotation.
- void AddAnnotationNew(Annotation& a) override {
- auto* annotation = annotation_proto_->add_annotation();
- annotation->ParseFromString(a.second);
- annotation->set_begin(a.first.first);
- annotation->set_end(a.first.second);
- }
-
- private:
- // The protocol buffer to which new annotations should be added.
- AnnotationProto* const annotation_proto_;
-};
-
-// This simple utility class assists in code generation. It basically
-// allows the caller to define a set of variables and then output some
-// text with variable substitutions. Example usage:
-//
-// Printer printer(output, '$');
-// map<string, string> vars;
-// vars["name"] = "Bob";
-// printer.Print(vars, "My name is $name$.");
-//
-// The above writes "My name is Bob." to the output stream.
-//
-// Printer aggressively enforces correct usage, crashing (with assert failures)
-// in the case of undefined variables in debug builds. This helps greatly in
-// debugging code which uses it.
-//
-// If a Printer is constructed with an AnnotationCollector, it will provide it
-// with annotations that connect the Printer's output to paths that can identify
-// various descriptors. In the above example, if person_ is a descriptor that
-// identifies Bob, we can associate the output string "My name is Bob." with
-// a source path pointing to that descriptor with:
-//
-// printer.Annotate("name", person_);
-//
-// The AnnotationCollector will be sent an annotation linking the output range
-// covering "Bob" to the logical path provided by person_. Tools may use
-// this association to (for example) link "Bob" in the output back to the
-// source file that defined the person_ descriptor identifying Bob.
-//
-// Annotate can only examine variables substituted during the last call to
-// Print. It is invalid to refer to a variable that was used multiple times
-// in a single Print call.
-//
-// In full generality, one may specify a range of output text using a beginning
-// substitution variable and an ending variable. The resulting annotation will
-// span from the first character of the substituted value for the beginning
-// variable to the last character of the substituted value for the ending
-// variable. For example, the Annotate call above is equivalent to this one:
-//
-// printer.Annotate("name", "name", person_);
-//
-// This is useful if multiple variables combine to form a single span of output
-// that should be annotated with the same source path. For example:
-//
-// Printer printer(output, '$');
-// map<string, string> vars;
-// vars["first"] = "Alice";
-// vars["last"] = "Smith";
-// printer.Print(vars, "My name is $first$ $last$.");
-// printer.Annotate("first", "last", person_);
-//
-// This code would associate the span covering "Alice Smith" in the output with
-// the person_ descriptor.
-//
-// Note that the beginning variable must come before (or overlap with, in the
-// case of zero-sized substitution values) the ending variable.
-//
-// It is also sometimes useful to use variables with zero-sized values as
-// markers. This avoids issues with multiple references to the same variable
-// and also allows annotation ranges to span literal text from the Print
-// templates:
-//
-// Printer printer(output, '$');
-// map<string, string> vars;
-// vars["foo"] = "bar";
-// vars["function"] = "call";
-// vars["mark"] = "";
-// printer.Print(vars, "$function$($foo$,$foo$)$mark$");
-// printer.Annotate("function", "mark", call_);
-//
-// This code associates the span covering "call(bar,bar)" in the output with the
-// call_ descriptor.
-
-class PROTOBUF_EXPORT Printer {
- public:
- // Create a printer that writes text to the given output stream. Use the
- // given character as the delimiter for variables.
- Printer(ZeroCopyOutputStream* output, char variable_delimiter);
-
- // Create a printer that writes text to the given output stream. Use the
- // given character as the delimiter for variables. If annotation_collector
- // is not null, Printer will provide it with annotations about code written
- // to the stream. annotation_collector is not owned by Printer.
- Printer(ZeroCopyOutputStream* output, char variable_delimiter,
- AnnotationCollector* annotation_collector);
-
- ~Printer();
-
- // Link a substitution variable emitted by the last call to Print to the
- // object described by descriptor.
- template <typename SomeDescriptor>
- void Annotate(const char* varname, const SomeDescriptor* descriptor) {
- Annotate(varname, varname, descriptor);
- }
-
- // Link the output range defined by the substitution variables as emitted by
- // the last call to Print to the object described by descriptor. The range
- // begins at begin_varname's value and ends after the last character of the
- // value substituted for end_varname.
- template <typename SomeDescriptor>
- void Annotate(const char* begin_varname, const char* end_varname,
- const SomeDescriptor* descriptor) {
- if (annotation_collector_ == NULL) {
- // Annotations aren't turned on for this Printer, so don't pay the cost
- // of building the location path.
- return;
- }
- std::vector<int> path;
- descriptor->GetLocationPath(&path);
- Annotate(begin_varname, end_varname, descriptor->file()->name(), path);
- }
-
- // Link a substitution variable emitted by the last call to Print to the file
- // with path file_name.
- void Annotate(const char* varname, const std::string& file_name) {
- Annotate(varname, varname, file_name);
- }
-
- // Link the output range defined by the substitution variables as emitted by
- // the last call to Print to the file with path file_name. The range begins
- // at begin_varname's value and ends after the last character of the value
- // substituted for end_varname.
- void Annotate(const char* begin_varname, const char* end_varname,
- const std::string& file_name) {
- if (annotation_collector_ == NULL) {
- // Annotations aren't turned on for this Printer.
- return;
- }
- std::vector<int> empty_path;
- Annotate(begin_varname, end_varname, file_name, empty_path);
- }
-
- // Print some text after applying variable substitutions. If a particular
- // variable in the text is not defined, this will crash. Variables to be
- // substituted are identified by their names surrounded by delimiter
- // characters (as given to the constructor). The variable bindings are
- // defined by the given map.
- void Print(const std::map<std::string, std::string>& variables,
- const char* text);
-
- // Like the first Print(), except the substitutions are given as parameters.
- template <typename... Args>
- void Print(const char* text, const Args&... args) {
- std::map<std::string, std::string> vars;
- PrintInternal(&vars, text, args...);
- }
-
- // Indent text by two spaces. After calling Indent(), two spaces will be
- // inserted at the beginning of each line of text. Indent() may be called
- // multiple times to produce deeper indents.
- void Indent();
-
- // Reduces the current indent level by two spaces, or crashes if the indent
- // level is zero.
- void Outdent();
-
- // Write a string to the output buffer.
- // This method does not look for newlines to add indentation.
- void PrintRaw(const std::string& data);
-
- // Write a zero-delimited string to output buffer.
- // This method does not look for newlines to add indentation.
- void PrintRaw(const char* data);
-
- // Write some bytes to the output buffer.
- // This method does not look for newlines to add indentation.
- void WriteRaw(const char* data, int size);
-
- // FormatInternal is a helper function not meant to use directly, use
- // compiler::cpp::Formatter instead. This function is meant to support
- // formatting text using named variables (eq. "$foo$) from a lookup map (vars)
- // and variables directly supplied by arguments (eq "$1$" meaning first
- // argument which is the zero index element of args).
- void FormatInternal(const std::vector<std::string>& args,
- const std::map<std::string, std::string>& vars,
- const char* format);
-
- // True if any write to the underlying stream failed. (We don't just
- // crash in this case because this is an I/O failure, not a programming
- // error.)
- bool failed() const { return failed_; }
-
- private:
- // Link the output range defined by the substitution variables as emitted by
- // the last call to Print to the object found at the SourceCodeInfo-style path
- // in a file with path file_path. The range begins at the start of
- // begin_varname's value and ends after the last character of the value
- // substituted for end_varname. Note that begin_varname and end_varname
- // may refer to the same variable.
- void Annotate(const char* begin_varname, const char* end_varname,
- const std::string& file_path, const std::vector<int>& path);
-
- // Base case
- void PrintInternal(std::map<std::string, std::string>* vars,
- const char* text) {
- Print(*vars, text);
- }
-
- template <typename... Args>
- void PrintInternal(std::map<std::string, std::string>* vars, const char* text,
- const char* key, const std::string& value,
- const Args&... args) {
- (*vars)[key] = value;
- PrintInternal(vars, text, args...);
- }
-
- // Copy size worth of bytes from data to buffer_.
- void CopyToBuffer(const char* data, int size);
-
- void push_back(char c) {
- if (failed_) return;
- if (buffer_size_ == 0) {
- if (!Next()) return;
- }
- *buffer_++ = c;
- buffer_size_--;
- offset_++;
- }
-
- bool Next();
-
- inline void IndentIfAtStart();
- const char* WriteVariable(
- const std::vector<std::string>& args,
- const std::map<std::string, std::string>& vars, const char* format,
- int* arg_index,
- std::vector<AnnotationCollector::Annotation>* annotations);
-
- const char variable_delimiter_;
-
- ZeroCopyOutputStream* const output_;
- char* buffer_;
- int buffer_size_;
- // The current position, in bytes, in the output stream. This is equivalent
- // to the total number of bytes that have been written so far. This value is
- // used to calculate annotation ranges in the substitutions_ map below.
- size_t offset_;
-
- std::string indent_;
- bool at_start_of_line_;
- bool failed_;
-
- // A map from variable name to [start, end) offsets in the output buffer.
- // These refer to the offsets used for a variable after the last call to
- // Print. If a variable was used more than once, the entry used in
- // this map is set to a negative-length span. For singly-used variables, the
- // start offset is the beginning of the substitution; the end offset is the
- // last byte of the substitution plus one (such that (end - start) is the
- // length of the substituted string).
- std::map<std::string, std::pair<size_t, size_t> > substitutions_;
-
- // Keeps track of the keys in substitutions_ that need to be updated when
- // indents are inserted. These are keys that refer to the beginning of the
- // current line.
- std::vector<std::string> line_start_variables_;
-
- // Returns true and sets range to the substitution range in the output for
- // varname if varname was used once in the last call to Print. If varname
- // was not used, or if it was used multiple times, returns false (and
- // fails a debug assertion).
- bool GetSubstitutionRange(const char* varname,
- std::pair<size_t, size_t>* range);
-
- // If non-null, annotation_collector_ is used to store annotations about
- // generated code.
- AnnotationCollector* const annotation_collector_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Printer);
-};
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_PRINTER_H__
diff --git a/include/google/protobuf/io/strtod.h b/include/google/protobuf/io/strtod.h
deleted file mode 100644
index 38f544af34..0000000000
--- a/include/google/protobuf/io/strtod.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// A locale-independent version of strtod(), used to parse floating
-// point default values in .proto files, where the decimal separator
-// is always a dot.
-
-#ifndef GOOGLE_PROTOBUF_IO_STRTOD_H__
-#define GOOGLE_PROTOBUF_IO_STRTOD_H__
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-// A locale-independent version of the standard strtod(), which always
-// uses a dot as the decimal separator.
-double NoLocaleStrtod(const char* str, char** endptr);
-
-// Casts a double value to a float value. If the value is outside of the
-// representable range of float, it will be converted to positive or negative
-// infinity.
-float SafeDoubleToFloat(double value);
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_IO_STRTOD_H__
diff --git a/include/google/protobuf/io/tokenizer.h b/include/google/protobuf/io/tokenizer.h
deleted file mode 100644
index 4abab7e30c..0000000000
--- a/include/google/protobuf/io/tokenizer.h
+++ /dev/null
@@ -1,442 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Class for parsing tokenized text from a ZeroCopyInputStream.
-
-#ifndef GOOGLE_PROTOBUF_IO_TOKENIZER_H__
-#define GOOGLE_PROTOBUF_IO_TOKENIZER_H__
-
-
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-class ZeroCopyInputStream; // zero_copy_stream.h
-
-// Defined in this file.
-class ErrorCollector;
-class Tokenizer;
-
-// By "column number", the proto compiler refers to a count of the number
-// of bytes before a given byte, except that a tab character advances to
-// the next multiple of 8 bytes. Note in particular that column numbers
-// are zero-based, while many user interfaces use one-based column numbers.
-typedef int ColumnNumber;
-
-// Abstract interface for an object which collects the errors that occur
-// during parsing. A typical implementation might simply print the errors
-// to stdout.
-class PROTOBUF_EXPORT ErrorCollector {
- public:
- inline ErrorCollector() {}
- virtual ~ErrorCollector();
-
- // Indicates that there was an error in the input at the given line and
- // column numbers. The numbers are zero-based, so you may want to add
- // 1 to each before printing them.
- virtual void AddError(int line, ColumnNumber column,
- const std::string& message) = 0;
-
- // Indicates that there was a warning in the input at the given line and
- // column numbers. The numbers are zero-based, so you may want to add
- // 1 to each before printing them.
- virtual void AddWarning(int /* line */, ColumnNumber /* column */,
- const std::string& /* message */) {}
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ErrorCollector);
-};
-
-// This class converts a stream of raw text into a stream of tokens for
-// the protocol definition parser to parse. The tokens recognized are
-// similar to those that make up the C language; see the TokenType enum for
-// precise descriptions. Whitespace and comments are skipped. By default,
-// C- and C++-style comments are recognized, but other styles can be used by
-// calling set_comment_style().
-class PROTOBUF_EXPORT Tokenizer {
- public:
- // Construct a Tokenizer that reads and tokenizes text from the given
- // input stream and writes errors to the given error_collector.
- // The caller keeps ownership of input and error_collector.
- Tokenizer(ZeroCopyInputStream* input, ErrorCollector* error_collector);
- ~Tokenizer();
-
- enum TokenType {
- TYPE_START, // Next() has not yet been called.
- TYPE_END, // End of input reached. "text" is empty.
-
- TYPE_IDENTIFIER, // A sequence of letters, digits, and underscores, not
- // starting with a digit. It is an error for a number
- // to be followed by an identifier with no space in
- // between.
- TYPE_INTEGER, // A sequence of digits representing an integer. Normally
- // the digits are decimal, but a prefix of "0x" indicates
- // a hex number and a leading zero indicates octal, just
- // like with C numeric literals. A leading negative sign
- // is NOT included in the token; it's up to the parser to
- // interpret the unary minus operator on its own.
- TYPE_FLOAT, // A floating point literal, with a fractional part and/or
- // an exponent. Always in decimal. Again, never
- // negative.
- TYPE_STRING, // A quoted sequence of escaped characters. Either single
- // or double quotes can be used, but they must match.
- // A string literal cannot cross a line break.
- TYPE_SYMBOL, // Any other printable character, like '!' or '+'.
- // Symbols are always a single character, so "!+$%" is
- // four tokens.
- TYPE_WHITESPACE, // A sequence of whitespace. This token type is only
- // produced if report_whitespace() is true. It is not
- // reported for whitespace within comments or strings.
- TYPE_NEWLINE, // A newline (\n). This token type is only
- // produced if report_whitespace() is true and
- // report_newlines() is true. It is not reported for
- // newlines in comments or strings.
- };
-
- // Structure representing a token read from the token stream.
- struct Token {
- TokenType type;
- std::string text; // The exact text of the token as it appeared in
- // the input. e.g. tokens of TYPE_STRING will still
- // be escaped and in quotes.
-
- // "line" and "column" specify the position of the first character of
- // the token within the input stream. They are zero-based.
- int line;
- ColumnNumber column;
- ColumnNumber end_column;
- };
-
- // Get the current token. This is updated when Next() is called. Before
- // the first call to Next(), current() has type TYPE_START and no contents.
- const Token& current();
-
- // Return the previous token -- i.e. what current() returned before the
- // previous call to Next().
- const Token& previous();
-
- // Advance to the next token. Returns false if the end of the input is
- // reached.
- bool Next();
-
- // Like Next(), but also collects comments which appear between the previous
- // and next tokens.
- //
- // Comments which appear to be attached to the previous token are stored
- // in *prev_tailing_comments. Comments which appear to be attached to the
- // next token are stored in *next_leading_comments. Comments appearing in
- // between which do not appear to be attached to either will be added to
- // detached_comments. Any of these parameters can be NULL to simply discard
- // the comments.
- //
- // A series of line comments appearing on consecutive lines, with no other
- // tokens appearing on those lines, will be treated as a single comment.
- //
- // Only the comment content is returned; comment markers (e.g. //) are
- // stripped out. For block comments, leading whitespace and an asterisk will
- // be stripped from the beginning of each line other than the first. Newlines
- // are included in the output.
- //
- // Examples:
- //
- // optional int32 foo = 1; // Comment attached to foo.
- // // Comment attached to bar.
- // optional int32 bar = 2;
- //
- // optional string baz = 3;
- // // Comment attached to baz.
- // // Another line attached to baz.
- //
- // // Comment attached to qux.
- // //
- // // Another line attached to qux.
- // optional double qux = 4;
- //
- // // Detached comment. This is not attached to qux or corge
- // // because there are blank lines separating it from both.
- //
- // optional string corge = 5;
- // /* Block comment attached
- // * to corge. Leading asterisks
- // * will be removed. */
- // /* Block comment attached to
- // * grault. */
- // optional int32 grault = 6;
- bool NextWithComments(std::string* prev_trailing_comments,
- std::vector<std::string>* detached_comments,
- std::string* next_leading_comments);
-
- // Parse helpers ---------------------------------------------------
-
- // Parses a TYPE_FLOAT token. This never fails, so long as the text actually
- // comes from a TYPE_FLOAT token parsed by Tokenizer. If it doesn't, the
- // result is undefined (possibly an assert failure).
- static double ParseFloat(const std::string& text);
-
- // Parses a TYPE_STRING token. This never fails, so long as the text actually
- // comes from a TYPE_STRING token parsed by Tokenizer. If it doesn't, the
- // result is undefined (possibly an assert failure).
- static void ParseString(const std::string& text, std::string* output);
-
- // Identical to ParseString, but appends to output.
- static void ParseStringAppend(const std::string& text, std::string* output);
-
- // Parses a TYPE_INTEGER token. Returns false if the result would be
- // greater than max_value. Otherwise, returns true and sets *output to the
- // result. If the text is not from a Token of type TYPE_INTEGER originally
- // parsed by a Tokenizer, the result is undefined (possibly an assert
- // failure).
- static bool ParseInteger(const std::string& text, uint64_t max_value,
- uint64_t* output);
-
- // Options ---------------------------------------------------------
-
- // Set true to allow floats to be suffixed with the letter 'f'. Tokens
- // which would otherwise be integers but which have the 'f' suffix will be
- // forced to be interpreted as floats. For all other purposes, the 'f' is
- // ignored.
- void set_allow_f_after_float(bool value) { allow_f_after_float_ = value; }
-
- // Valid values for set_comment_style().
- enum CommentStyle {
- // Line comments begin with "//", block comments are delimited by "/*" and
- // "*/".
- CPP_COMMENT_STYLE,
- // Line comments begin with "#". No way to write block comments.
- SH_COMMENT_STYLE
- };
-
- // Sets the comment style.
- void set_comment_style(CommentStyle style) { comment_style_ = style; }
-
- // Whether to require whitespace between a number and a field name.
- // Default is true. Do not use this; for Google-internal cleanup only.
- void set_require_space_after_number(bool require) {
- require_space_after_number_ = require;
- }
-
- // Whether to allow string literals to span multiple lines. Default is false.
- // Do not use this; for Google-internal cleanup only.
- void set_allow_multiline_strings(bool allow) {
- allow_multiline_strings_ = allow;
- }
-
- // If true, whitespace tokens are reported by Next().
- // Note: `set_report_whitespace(false)` implies `set_report_newlines(false)`.
- bool report_whitespace() const;
- void set_report_whitespace(bool report);
-
- // If true, newline tokens are reported by Next().
- // Note: `set_report_newlines(true)` implies `set_report_whitespace(true)`.
- bool report_newlines() const;
- void set_report_newlines(bool report);
-
- // External helper: validate an identifier.
- static bool IsIdentifier(const std::string& text);
-
- // -----------------------------------------------------------------
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Tokenizer);
-
- Token current_; // Returned by current().
- Token previous_; // Returned by previous().
-
- ZeroCopyInputStream* input_;
- ErrorCollector* error_collector_;
-
- char current_char_; // == buffer_[buffer_pos_], updated by NextChar().
- const char* buffer_; // Current buffer returned from input_.
- int buffer_size_; // Size of buffer_.
- int buffer_pos_; // Current position within the buffer.
- bool read_error_; // Did we previously encounter a read error?
-
- // Line and column number of current_char_ within the whole input stream.
- int line_;
- ColumnNumber column_;
-
- // String to which text should be appended as we advance through it.
- // Call RecordTo(&str) to start recording and StopRecording() to stop.
- // E.g. StartToken() calls RecordTo(&current_.text). record_start_ is the
- // position within the current buffer where recording started.
- std::string* record_target_;
- int record_start_;
-
- // Options.
- bool allow_f_after_float_;
- CommentStyle comment_style_;
- bool require_space_after_number_;
- bool allow_multiline_strings_;
- bool report_whitespace_ = false;
- bool report_newlines_ = false;
-
- // Since we count columns we need to interpret tabs somehow. We'll take
- // the standard 8-character definition for lack of any way to do better.
- // This must match the documentation of ColumnNumber.
- static const int kTabWidth = 8;
-
- // -----------------------------------------------------------------
- // Helper methods.
-
- // Consume this character and advance to the next one.
- void NextChar();
-
- // Read a new buffer from the input.
- void Refresh();
-
- inline void RecordTo(std::string* target);
- inline void StopRecording();
-
- // Called when the current character is the first character of a new
- // token (not including whitespace or comments).
- inline void StartToken();
- // Called when the current character is the first character after the
- // end of the last token. After this returns, current_.text will
- // contain all text consumed since StartToken() was called.
- inline void EndToken();
-
- // Convenience method to add an error at the current line and column.
- void AddError(const std::string& message) {
- error_collector_->AddError(line_, column_, message);
- }
-
- // -----------------------------------------------------------------
- // The following four methods are used to consume tokens of specific
- // types. They are actually used to consume all characters *after*
- // the first, since the calling function consumes the first character
- // in order to decide what kind of token is being read.
-
- // Read and consume a string, ending when the given delimiter is
- // consumed.
- void ConsumeString(char delimiter);
-
- // Read and consume a number, returning TYPE_FLOAT or TYPE_INTEGER
- // depending on what was read. This needs to know if the first
- // character was a zero in order to correctly recognize hex and octal
- // numbers.
- // It also needs to know if the first character was a . to parse floating
- // point correctly.
- TokenType ConsumeNumber(bool started_with_zero, bool started_with_dot);
-
- // Consume the rest of a line.
- void ConsumeLineComment(std::string* content);
- // Consume until "*/".
- void ConsumeBlockComment(std::string* content);
-
- enum NextCommentStatus {
- // Started a line comment.
- LINE_COMMENT,
-
- // Started a block comment.
- BLOCK_COMMENT,
-
- // Consumed a slash, then realized it wasn't a comment. current_ has
- // been filled in with a slash token. The caller should return it.
- SLASH_NOT_COMMENT,
-
- // We do not appear to be starting a comment here.
- NO_COMMENT
- };
-
- // If we're at the start of a new comment, consume it and return what kind
- // of comment it is.
- NextCommentStatus TryConsumeCommentStart();
-
- // If we're looking at a TYPE_WHITESPACE token and `report_whitespace_` is
- // true, consume it and return true.
- bool TryConsumeWhitespace();
-
- // If we're looking at a TYPE_NEWLINE token and `report_newlines_` is true,
- // consume it and return true.
- bool TryConsumeNewline();
-
- // -----------------------------------------------------------------
- // These helper methods make the parsing code more readable. The
- // "character classes" referred to are defined at the top of the .cc file.
- // Basically it is a C++ class with one method:
- // static bool InClass(char c);
- // The method returns true if c is a member of this "class", like "Letter"
- // or "Digit".
-
- // Returns true if the current character is of the given character
- // class, but does not consume anything.
- template <typename CharacterClass>
- inline bool LookingAt();
-
- // If the current character is in the given class, consume it and return
- // true. Otherwise return false.
- // e.g. TryConsumeOne<Letter>()
- template <typename CharacterClass>
- inline bool TryConsumeOne();
-
- // Like above, but try to consume the specific character indicated.
- inline bool TryConsume(char c);
-
- // Consume zero or more of the given character class.
- template <typename CharacterClass>
- inline void ConsumeZeroOrMore();
-
- // Consume one or more of the given character class or log the given
- // error message.
- // e.g. ConsumeOneOrMore<Digit>("Expected digits.");
- template <typename CharacterClass>
- inline void ConsumeOneOrMore(const char* error);
-};
-
-// inline methods ====================================================
-inline const Tokenizer::Token& Tokenizer::current() { return current_; }
-
-inline const Tokenizer::Token& Tokenizer::previous() { return previous_; }
-
-inline void Tokenizer::ParseString(const std::string& text,
- std::string* output) {
- output->clear();
- ParseStringAppend(text, output);
-}
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_TOKENIZER_H__
diff --git a/include/google/protobuf/io/zero_copy_stream.h b/include/google/protobuf/io/zero_copy_stream.h
deleted file mode 100644
index 2041cbf648..0000000000
--- a/include/google/protobuf/io/zero_copy_stream.h
+++ /dev/null
@@ -1,260 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains the ZeroCopyInputStream and ZeroCopyOutputStream
-// interfaces, which represent abstract I/O streams to and from which
-// protocol buffers can be read and written. For a few simple
-// implementations of these interfaces, see zero_copy_stream_impl.h.
-//
-// These interfaces are different from classic I/O streams in that they
-// try to minimize the amount of data copying that needs to be done.
-// To accomplish this, responsibility for allocating buffers is moved to
-// the stream object, rather than being the responsibility of the caller.
-// So, the stream can return a buffer which actually points directly into
-// the final data structure where the bytes are to be stored, and the caller
-// can interact directly with that buffer, eliminating an intermediate copy
-// operation.
-//
-// As an example, consider the common case in which you are reading bytes
-// from an array that is already in memory (or perhaps an mmap()ed file).
-// With classic I/O streams, you would do something like:
-// char buffer[BUFFER_SIZE];
-// input->Read(buffer, BUFFER_SIZE);
-// DoSomething(buffer, BUFFER_SIZE);
-// Then, the stream basically just calls memcpy() to copy the data from
-// the array into your buffer. With a ZeroCopyInputStream, you would do
-// this instead:
-// const void* buffer;
-// int size;
-// input->Next(&buffer, &size);
-// DoSomething(buffer, size);
-// Here, no copy is performed. The input stream returns a pointer directly
-// into the backing array, and the caller ends up reading directly from it.
-//
-// If you want to be able to read the old-fashion way, you can create
-// a CodedInputStream or CodedOutputStream wrapping these objects and use
-// their ReadRaw()/WriteRaw() methods. These will, of course, add a copy
-// step, but Coded*Stream will handle buffering so at least it will be
-// reasonably efficient.
-//
-// ZeroCopyInputStream example:
-// // Read in a file and print its contents to stdout.
-// int fd = open("myfile", O_RDONLY);
-// ZeroCopyInputStream* input = new FileInputStream(fd);
-//
-// const void* buffer;
-// int size;
-// while (input->Next(&buffer, &size)) {
-// cout.write(buffer, size);
-// }
-//
-// delete input;
-// close(fd);
-//
-// ZeroCopyOutputStream example:
-// // Copy the contents of "infile" to "outfile", using plain read() for
-// // "infile" but a ZeroCopyOutputStream for "outfile".
-// int infd = open("infile", O_RDONLY);
-// int outfd = open("outfile", O_WRONLY);
-// ZeroCopyOutputStream* output = new FileOutputStream(outfd);
-//
-// void* buffer;
-// int size;
-// while (output->Next(&buffer, &size)) {
-// int bytes = read(infd, buffer, size);
-// if (bytes < size) {
-// // Reached EOF.
-// output->BackUp(size - bytes);
-// break;
-// }
-// }
-//
-// delete output;
-// close(infd);
-// close(outfd);
-
-#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__
-#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__
-
-
-#include <google/protobuf/stubs/common.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-// Defined in this file.
-class ZeroCopyInputStream;
-class ZeroCopyOutputStream;
-
-// Abstract interface similar to an input stream but designed to minimize
-// copying.
-class PROTOBUF_EXPORT ZeroCopyInputStream {
- public:
- ZeroCopyInputStream() {}
- virtual ~ZeroCopyInputStream() {}
-
- // Obtains a chunk of data from the stream.
- //
- // Preconditions:
- // * "size" and "data" are not NULL.
- //
- // Postconditions:
- // * If the returned value is false, there is no more data to return or
- // an error occurred. All errors are permanent.
- // * Otherwise, "size" points to the actual number of bytes read and "data"
- // points to a pointer to a buffer containing these bytes.
- // * Ownership of this buffer remains with the stream, and the buffer
- // remains valid only until some other method of the stream is called
- // or the stream is destroyed.
- // * It is legal for the returned buffer to have zero size, as long
- // as repeatedly calling Next() eventually yields a buffer with non-zero
- // size.
- virtual bool Next(const void** data, int* size) = 0;
-
- // Backs up a number of bytes, so that the next call to Next() returns
- // data again that was already returned by the last call to Next(). This
- // is useful when writing procedures that are only supposed to read up
- // to a certain point in the input, then return. If Next() returns a
- // buffer that goes beyond what you wanted to read, you can use BackUp()
- // to return to the point where you intended to finish.
- //
- // This method can be called with `count = 0` to finalize (flush) any
- // previously returned buffer. For example, a file output stream can
- // flush buffers returned from a previous call to Next() upon such
- // BackUp(0) invocations. ZeroCopyOutputStream callers should always
- // invoke BackUp() after a final Next() call, even if there is no
- // excess buffer data to be backed up to indicate a flush point.
- //
- // Preconditions:
- // * The last method called must have been Next().
- // * count must be less than or equal to the size of the last buffer
- // returned by Next().
- //
- // Postconditions:
- // * The last "count" bytes of the last buffer returned by Next() will be
- // pushed back into the stream. Subsequent calls to Next() will return
- // the same data again before producing new data.
- virtual void BackUp(int count) = 0;
-
- // Skips a number of bytes. Returns false if the end of the stream is
- // reached or some input error occurred. In the end-of-stream case, the
- // stream is advanced to the end of the stream (so ByteCount() will return
- // the total size of the stream).
- virtual bool Skip(int count) = 0;
-
- // Returns the total number of bytes read since this object was created.
- virtual int64_t ByteCount() const = 0;
-
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyInputStream);
-};
-
-// Abstract interface similar to an output stream but designed to minimize
-// copying.
-class PROTOBUF_EXPORT ZeroCopyOutputStream {
- public:
- ZeroCopyOutputStream() {}
- virtual ~ZeroCopyOutputStream() {}
-
- // Obtains a buffer into which data can be written. Any data written
- // into this buffer will eventually (maybe instantly, maybe later on)
- // be written to the output.
- //
- // Preconditions:
- // * "size" and "data" are not NULL.
- //
- // Postconditions:
- // * If the returned value is false, an error occurred. All errors are
- // permanent.
- // * Otherwise, "size" points to the actual number of bytes in the buffer
- // and "data" points to the buffer.
- // * Ownership of this buffer remains with the stream, and the buffer
- // remains valid only until some other method of the stream is called
- // or the stream is destroyed.
- // * Any data which the caller stores in this buffer will eventually be
- // written to the output (unless BackUp() is called).
- // * It is legal for the returned buffer to have zero size, as long
- // as repeatedly calling Next() eventually yields a buffer with non-zero
- // size.
- virtual bool Next(void** data, int* size) = 0;
-
- // Backs up a number of bytes, so that the end of the last buffer returned
- // by Next() is not actually written. This is needed when you finish
- // writing all the data you want to write, but the last buffer was bigger
- // than you needed. You don't want to write a bunch of garbage after the
- // end of your data, so you use BackUp() to back up.
- //
- // Preconditions:
- // * The last method called must have been Next().
- // * count must be less than or equal to the size of the last buffer
- // returned by Next().
- // * The caller must not have written anything to the last "count" bytes
- // of that buffer.
- //
- // Postconditions:
- // * The last "count" bytes of the last buffer returned by Next() will be
- // ignored.
- virtual void BackUp(int count) = 0;
-
- // Returns the total number of bytes written since this object was created.
- virtual int64_t ByteCount() const = 0;
-
- // Write a given chunk of data to the output. Some output streams may
- // implement this in a way that avoids copying. Check AllowsAliasing() before
- // calling WriteAliasedRaw(). It will GOOGLE_CHECK fail if WriteAliasedRaw() is
- // called on a stream that does not allow aliasing.
- //
- // NOTE: It is caller's responsibility to ensure that the chunk of memory
- // remains live until all of the data has been consumed from the stream.
- virtual bool WriteAliasedRaw(const void* data, int size);
- virtual bool AllowsAliasing() const { return false; }
-
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyOutputStream);
-};
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__
diff --git a/include/google/protobuf/io/zero_copy_stream_impl.h b/include/google/protobuf/io/zero_copy_stream_impl.h
deleted file mode 100644
index a385992f20..0000000000
--- a/include/google/protobuf/io/zero_copy_stream_impl.h
+++ /dev/null
@@ -1,336 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains common implementations of the interfaces defined in
-// zero_copy_stream.h which are only included in the full (non-lite)
-// protobuf library. These implementations include Unix file descriptors
-// and C++ iostreams. See also: zero_copy_stream_impl_lite.h
-
-#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__
-#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__
-
-
-#include <iosfwd>
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-// ===================================================================
-
-// A ZeroCopyInputStream which reads from a file descriptor.
-//
-// FileInputStream is preferred over using an ifstream with IstreamInputStream.
-// The latter will introduce an extra layer of buffering, harming performance.
-// Also, it's conceivable that FileInputStream could someday be enhanced
-// to use zero-copy file descriptors on OSs which support them.
-class PROTOBUF_EXPORT FileInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- // Creates a stream that reads from the given Unix file descriptor.
- // If a block_size is given, it specifies the number of bytes that
- // should be read and returned with each call to Next(). Otherwise,
- // a reasonable default is used.
- explicit FileInputStream(int file_descriptor, int block_size = -1);
-
- // Flushes any buffers and closes the underlying file. Returns false if
- // an error occurs during the process; use GetErrno() to examine the error.
- // Even if an error occurs, the file descriptor is closed when this returns.
- bool Close();
-
- // By default, the file descriptor is not closed when the stream is
- // destroyed. Call SetCloseOnDelete(true) to change that. WARNING:
- // This leaves no way for the caller to detect if close() fails. If
- // detecting close() errors is important to you, you should arrange
- // to close the descriptor yourself.
- void SetCloseOnDelete(bool value) { copying_input_.SetCloseOnDelete(value); }
-
- // If an I/O error has occurred on this file descriptor, this is the
- // errno from that error. Otherwise, this is zero. Once an error
- // occurs, the stream is broken and all subsequent operations will
- // fail.
- int GetErrno() const { return copying_input_.GetErrno(); }
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
- private:
- class PROTOBUF_EXPORT CopyingFileInputStream PROTOBUF_FUTURE_FINAL
- : public CopyingInputStream {
- public:
- CopyingFileInputStream(int file_descriptor);
- ~CopyingFileInputStream() override;
-
- bool Close();
- void SetCloseOnDelete(bool value) { close_on_delete_ = value; }
- int GetErrno() const { return errno_; }
-
- // implements CopyingInputStream ---------------------------------
- int Read(void* buffer, int size) override;
- int Skip(int count) override;
-
- private:
- // The file descriptor.
- const int file_;
- bool close_on_delete_;
- bool is_closed_;
-
- // The errno of the I/O error, if one has occurred. Otherwise, zero.
- int errno_;
-
- // Did we try to seek once and fail? If so, we assume this file descriptor
- // doesn't support seeking and won't try again.
- bool previous_seek_failed_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingFileInputStream);
- };
-
- CopyingFileInputStream copying_input_;
- CopyingInputStreamAdaptor impl_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileInputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyOutputStream which writes to a file descriptor.
-//
-// FileOutputStream is preferred over using an ofstream with
-// OstreamOutputStream. The latter will introduce an extra layer of buffering,
-// harming performance. Also, it's conceivable that FileOutputStream could
-// someday be enhanced to use zero-copy file descriptors on OSs which
-// support them.
-class PROTOBUF_EXPORT FileOutputStream PROTOBUF_FUTURE_FINAL
- : public CopyingOutputStreamAdaptor {
- public:
- // Creates a stream that writes to the given Unix file descriptor.
- // If a block_size is given, it specifies the size of the buffers
- // that should be returned by Next(). Otherwise, a reasonable default
- // is used.
- explicit FileOutputStream(int file_descriptor, int block_size = -1);
-
- ~FileOutputStream() override;
-
- // Flushes any buffers and closes the underlying file. Returns false if
- // an error occurs during the process; use GetErrno() to examine the error.
- // Even if an error occurs, the file descriptor is closed when this returns.
- bool Close();
-
- // By default, the file descriptor is not closed when the stream is
- // destroyed. Call SetCloseOnDelete(true) to change that. WARNING:
- // This leaves no way for the caller to detect if close() fails. If
- // detecting close() errors is important to you, you should arrange
- // to close the descriptor yourself.
- void SetCloseOnDelete(bool value) { copying_output_.SetCloseOnDelete(value); }
-
- // If an I/O error has occurred on this file descriptor, this is the
- // errno from that error. Otherwise, this is zero. Once an error
- // occurs, the stream is broken and all subsequent operations will
- // fail.
- int GetErrno() const { return copying_output_.GetErrno(); }
-
- private:
- class PROTOBUF_EXPORT CopyingFileOutputStream PROTOBUF_FUTURE_FINAL
- : public CopyingOutputStream {
- public:
- CopyingFileOutputStream(int file_descriptor);
- ~CopyingFileOutputStream() override;
-
- bool Close();
- void SetCloseOnDelete(bool value) { close_on_delete_ = value; }
- int GetErrno() const { return errno_; }
-
- // implements CopyingOutputStream --------------------------------
- bool Write(const void* buffer, int size) override;
-
- private:
- // The file descriptor.
- const int file_;
- bool close_on_delete_;
- bool is_closed_;
-
- // The errno of the I/O error, if one has occurred. Otherwise, zero.
- int errno_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingFileOutputStream);
- };
-
- CopyingFileOutputStream copying_output_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileOutputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyInputStream which reads from a C++ istream.
-//
-// Note that for reading files (or anything represented by a file descriptor),
-// FileInputStream is more efficient.
-class PROTOBUF_EXPORT IstreamInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- // Creates a stream that reads from the given C++ istream.
- // If a block_size is given, it specifies the number of bytes that
- // should be read and returned with each call to Next(). Otherwise,
- // a reasonable default is used.
- explicit IstreamInputStream(std::istream* stream, int block_size = -1);
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
- private:
- class PROTOBUF_EXPORT CopyingIstreamInputStream PROTOBUF_FUTURE_FINAL
- : public CopyingInputStream {
- public:
- CopyingIstreamInputStream(std::istream* input);
- ~CopyingIstreamInputStream() override;
-
- // implements CopyingInputStream ---------------------------------
- int Read(void* buffer, int size) override;
- // (We use the default implementation of Skip().)
-
- private:
- // The stream.
- std::istream* input_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingIstreamInputStream);
- };
-
- CopyingIstreamInputStream copying_input_;
- CopyingInputStreamAdaptor impl_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(IstreamInputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyOutputStream which writes to a C++ ostream.
-//
-// Note that for writing files (or anything represented by a file descriptor),
-// FileOutputStream is more efficient.
-class PROTOBUF_EXPORT OstreamOutputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyOutputStream {
- public:
- // Creates a stream that writes to the given C++ ostream.
- // If a block_size is given, it specifies the size of the buffers
- // that should be returned by Next(). Otherwise, a reasonable default
- // is used.
- explicit OstreamOutputStream(std::ostream* stream, int block_size = -1);
- ~OstreamOutputStream() override;
-
- // implements ZeroCopyOutputStream ---------------------------------
- bool Next(void** data, int* size) override;
- void BackUp(int count) override;
- int64_t ByteCount() const override;
-
- private:
- class PROTOBUF_EXPORT CopyingOstreamOutputStream PROTOBUF_FUTURE_FINAL
- : public CopyingOutputStream {
- public:
- CopyingOstreamOutputStream(std::ostream* output);
- ~CopyingOstreamOutputStream() override;
-
- // implements CopyingOutputStream --------------------------------
- bool Write(const void* buffer, int size) override;
-
- private:
- // The stream.
- std::ostream* output_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingOstreamOutputStream);
- };
-
- CopyingOstreamOutputStream copying_output_;
- CopyingOutputStreamAdaptor impl_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OstreamOutputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyInputStream which reads from several other streams in sequence.
-// ConcatenatingInputStream is unable to distinguish between end-of-stream
-// and read errors in the underlying streams, so it assumes any errors mean
-// end-of-stream. So, if the underlying streams fail for any other reason,
-// ConcatenatingInputStream may do odd things. It is suggested that you do
-// not use ConcatenatingInputStream on streams that might produce read errors
-// other than end-of-stream.
-class PROTOBUF_EXPORT ConcatenatingInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- // All streams passed in as well as the array itself must remain valid
- // until the ConcatenatingInputStream is destroyed.
- ConcatenatingInputStream(ZeroCopyInputStream* const streams[], int count);
- ~ConcatenatingInputStream() override = default;
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
-
- private:
- // As streams are retired, streams_ is incremented and count_ is
- // decremented.
- ZeroCopyInputStream* const* streams_;
- int stream_count_;
- int64_t bytes_retired_; // Bytes read from previous streams.
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ConcatenatingInputStream);
-};
-
-// ===================================================================
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__
diff --git a/include/google/protobuf/io/zero_copy_stream_impl_lite.h b/include/google/protobuf/io/zero_copy_stream_impl_lite.h
deleted file mode 100644
index cbda32871e..0000000000
--- a/include/google/protobuf/io/zero_copy_stream_impl_lite.h
+++ /dev/null
@@ -1,413 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file contains common implementations of the interfaces defined in
-// zero_copy_stream.h which are included in the "lite" protobuf library.
-// These implementations cover I/O on raw arrays and strings, as well as
-// adaptors which make it easy to implement streams based on traditional
-// streams. Of course, many users will probably want to write their own
-// implementations of these interfaces specific to the particular I/O
-// abstractions they prefer to use, but these should cover the most common
-// cases.
-
-#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__
-#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__
-
-
-#include <iosfwd>
-#include <memory>
-#include <string>
-
-#include <google/protobuf/stubs/callback.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/stubs/stl_util.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-
-// ===================================================================
-
-// A ZeroCopyInputStream backed by an in-memory array of bytes.
-class PROTOBUF_EXPORT ArrayInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- // Create an InputStream that returns the bytes pointed to by "data".
- // "data" remains the property of the caller but must remain valid until
- // the stream is destroyed. If a block_size is given, calls to Next()
- // will return data blocks no larger than the given size. Otherwise, the
- // first call to Next() returns the entire array. block_size is mainly
- // useful for testing; in production you would probably never want to set
- // it.
- ArrayInputStream(const void* data, int size, int block_size = -1);
- ~ArrayInputStream() override = default;
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
-
- private:
- const uint8_t* const data_; // The byte array.
- const int size_; // Total size of the array.
- const int block_size_; // How many bytes to return at a time.
-
- int position_;
- int last_returned_size_; // How many bytes we returned last time Next()
- // was called (used for error checking only).
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayInputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyOutputStream backed by an in-memory array of bytes.
-class PROTOBUF_EXPORT ArrayOutputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyOutputStream {
- public:
- // Create an OutputStream that writes to the bytes pointed to by "data".
- // "data" remains the property of the caller but must remain valid until
- // the stream is destroyed. If a block_size is given, calls to Next()
- // will return data blocks no larger than the given size. Otherwise, the
- // first call to Next() returns the entire array. block_size is mainly
- // useful for testing; in production you would probably never want to set
- // it.
- ArrayOutputStream(void* data, int size, int block_size = -1);
- ~ArrayOutputStream() override = default;
-
- // implements ZeroCopyOutputStream ---------------------------------
- bool Next(void** data, int* size) override;
- void BackUp(int count) override;
- int64_t ByteCount() const override;
-
- private:
- uint8_t* const data_; // The byte array.
- const int size_; // Total size of the array.
- const int block_size_; // How many bytes to return at a time.
-
- int position_;
- int last_returned_size_; // How many bytes we returned last time Next()
- // was called (used for error checking only).
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayOutputStream);
-};
-
-// ===================================================================
-
-// A ZeroCopyOutputStream which appends bytes to a string.
-class PROTOBUF_EXPORT StringOutputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyOutputStream {
- public:
- // Create a StringOutputStream which appends bytes to the given string.
- // The string remains property of the caller, but it is mutated in arbitrary
- // ways and MUST NOT be accessed in any way until you're done with the
- // stream. Either be sure there's no further usage, or (safest) destroy the
- // stream before using the contents.
- //
- // Hint: If you call target->reserve(n) before creating the stream,
- // the first call to Next() will return at least n bytes of buffer
- // space.
- explicit StringOutputStream(std::string* target);
- ~StringOutputStream() override = default;
-
- // implements ZeroCopyOutputStream ---------------------------------
- bool Next(void** data, int* size) override;
- void BackUp(int count) override;
- int64_t ByteCount() const override;
-
- private:
- static constexpr size_t kMinimumSize = 16;
-
- std::string* target_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringOutputStream);
-};
-
-// Note: There is no StringInputStream. Instead, just create an
-// ArrayInputStream as follows:
-// ArrayInputStream input(str.data(), str.size());
-
-// ===================================================================
-
-// A generic traditional input stream interface.
-//
-// Lots of traditional input streams (e.g. file descriptors, C stdio
-// streams, and C++ iostreams) expose an interface where every read
-// involves copying bytes into a buffer. If you want to take such an
-// interface and make a ZeroCopyInputStream based on it, simply implement
-// CopyingInputStream and then use CopyingInputStreamAdaptor.
-//
-// CopyingInputStream implementations should avoid buffering if possible.
-// CopyingInputStreamAdaptor does its own buffering and will read data
-// in large blocks.
-class PROTOBUF_EXPORT CopyingInputStream {
- public:
- virtual ~CopyingInputStream() {}
-
- // Reads up to "size" bytes into the given buffer. Returns the number of
- // bytes read. Read() waits until at least one byte is available, or
- // returns zero if no bytes will ever become available (EOF), or -1 if a
- // permanent read error occurred.
- virtual int Read(void* buffer, int size) = 0;
-
- // Skips the next "count" bytes of input. Returns the number of bytes
- // actually skipped. This will always be exactly equal to "count" unless
- // EOF was reached or a permanent read error occurred.
- //
- // The default implementation just repeatedly calls Read() into a scratch
- // buffer.
- virtual int Skip(int count);
-};
-
-// A ZeroCopyInputStream which reads from a CopyingInputStream. This is
-// useful for implementing ZeroCopyInputStreams that read from traditional
-// streams. Note that this class is not really zero-copy.
-//
-// If you want to read from file descriptors or C++ istreams, this is
-// already implemented for you: use FileInputStream or IstreamInputStream
-// respectively.
-class PROTOBUF_EXPORT CopyingInputStreamAdaptor : public ZeroCopyInputStream {
- public:
- // Creates a stream that reads from the given CopyingInputStream.
- // If a block_size is given, it specifies the number of bytes that
- // should be read and returned with each call to Next(). Otherwise,
- // a reasonable default is used. The caller retains ownership of
- // copying_stream unless SetOwnsCopyingStream(true) is called.
- explicit CopyingInputStreamAdaptor(CopyingInputStream* copying_stream,
- int block_size = -1);
- ~CopyingInputStreamAdaptor() override;
-
- // Call SetOwnsCopyingStream(true) to tell the CopyingInputStreamAdaptor to
- // delete the underlying CopyingInputStream when it is destroyed.
- void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; }
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
- private:
- // Insures that buffer_ is not NULL.
- void AllocateBufferIfNeeded();
- // Frees the buffer and resets buffer_used_.
- void FreeBuffer();
-
- // The underlying copying stream.
- CopyingInputStream* copying_stream_;
- bool owns_copying_stream_;
-
- // True if we have seen a permanent error from the underlying stream.
- bool failed_;
-
- // The current position of copying_stream_, relative to the point where
- // we started reading.
- int64_t position_;
-
- // Data is read into this buffer. It may be NULL if no buffer is currently
- // in use. Otherwise, it points to an array of size buffer_size_.
- std::unique_ptr<uint8_t[]> buffer_;
- const int buffer_size_;
-
- // Number of valid bytes currently in the buffer (i.e. the size last
- // returned by Next()). 0 <= buffer_used_ <= buffer_size_.
- int buffer_used_;
-
- // Number of bytes in the buffer which were backed up over by a call to
- // BackUp(). These need to be returned again.
- // 0 <= backup_bytes_ <= buffer_used_
- int backup_bytes_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingInputStreamAdaptor);
-};
-
-// ===================================================================
-
-// A generic traditional output stream interface.
-//
-// Lots of traditional output streams (e.g. file descriptors, C stdio
-// streams, and C++ iostreams) expose an interface where every write
-// involves copying bytes from a buffer. If you want to take such an
-// interface and make a ZeroCopyOutputStream based on it, simply implement
-// CopyingOutputStream and then use CopyingOutputStreamAdaptor.
-//
-// CopyingOutputStream implementations should avoid buffering if possible.
-// CopyingOutputStreamAdaptor does its own buffering and will write data
-// in large blocks.
-class PROTOBUF_EXPORT CopyingOutputStream {
- public:
- virtual ~CopyingOutputStream() {}
-
- // Writes "size" bytes from the given buffer to the output. Returns true
- // if successful, false on a write error.
- virtual bool Write(const void* buffer, int size) = 0;
-};
-
-// A ZeroCopyOutputStream which writes to a CopyingOutputStream. This is
-// useful for implementing ZeroCopyOutputStreams that write to traditional
-// streams. Note that this class is not really zero-copy.
-//
-// If you want to write to file descriptors or C++ ostreams, this is
-// already implemented for you: use FileOutputStream or OstreamOutputStream
-// respectively.
-class PROTOBUF_EXPORT CopyingOutputStreamAdaptor : public ZeroCopyOutputStream {
- public:
- // Creates a stream that writes to the given Unix file descriptor.
- // If a block_size is given, it specifies the size of the buffers
- // that should be returned by Next(). Otherwise, a reasonable default
- // is used.
- explicit CopyingOutputStreamAdaptor(CopyingOutputStream* copying_stream,
- int block_size = -1);
- ~CopyingOutputStreamAdaptor() override;
-
- // Writes all pending data to the underlying stream. Returns false if a
- // write error occurred on the underlying stream. (The underlying
- // stream itself is not necessarily flushed.)
- bool Flush();
-
- // Call SetOwnsCopyingStream(true) to tell the CopyingOutputStreamAdaptor to
- // delete the underlying CopyingOutputStream when it is destroyed.
- void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; }
-
- // implements ZeroCopyOutputStream ---------------------------------
- bool Next(void** data, int* size) override;
- void BackUp(int count) override;
- int64_t ByteCount() const override;
- bool WriteAliasedRaw(const void* data, int size) override;
- bool AllowsAliasing() const override { return true; }
-
- private:
- // Write the current buffer, if it is present.
- bool WriteBuffer();
- // Insures that buffer_ is not NULL.
- void AllocateBufferIfNeeded();
- // Frees the buffer.
- void FreeBuffer();
-
- // The underlying copying stream.
- CopyingOutputStream* copying_stream_;
- bool owns_copying_stream_;
-
- // True if we have seen a permanent error from the underlying stream.
- bool failed_;
-
- // The current position of copying_stream_, relative to the point where
- // we started writing.
- int64_t position_;
-
- // Data is written from this buffer. It may be NULL if no buffer is
- // currently in use. Otherwise, it points to an array of size buffer_size_.
- std::unique_ptr<uint8_t[]> buffer_;
- const int buffer_size_;
-
- // Number of valid bytes currently in the buffer (i.e. the size last
- // returned by Next()). When BackUp() is called, we just reduce this.
- // 0 <= buffer_used_ <= buffer_size_.
- int buffer_used_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingOutputStreamAdaptor);
-};
-
-// ===================================================================
-
-// A ZeroCopyInputStream which wraps some other stream and limits it to
-// a particular byte count.
-class PROTOBUF_EXPORT LimitingInputStream PROTOBUF_FUTURE_FINAL
- : public ZeroCopyInputStream {
- public:
- LimitingInputStream(ZeroCopyInputStream* input, int64_t limit);
- ~LimitingInputStream() override;
-
- // implements ZeroCopyInputStream ----------------------------------
- bool Next(const void** data, int* size) override;
- void BackUp(int count) override;
- bool Skip(int count) override;
- int64_t ByteCount() const override;
-
-
- private:
- ZeroCopyInputStream* input_;
- int64_t limit_; // Decreases as we go, becomes negative if we overshoot.
- int64_t prior_bytes_read_; // Bytes read on underlying stream at construction
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(LimitingInputStream);
-};
-
-
-// ===================================================================
-
-// mutable_string_data() and as_string_data() are workarounds to improve
-// the performance of writing new data to an existing string. Unfortunately
-// the methods provided by the string class are suboptimal, and using memcpy()
-// is mildly annoying because it requires its pointer args to be non-NULL even
-// if we ask it to copy 0 bytes. Furthermore, string_as_array() has the
-// property that it always returns NULL if its arg is the empty string, exactly
-// what we want to avoid if we're using it in conjunction with memcpy()!
-// With C++11, the desired memcpy() boils down to memcpy(..., &(*s)[0], size),
-// where s is a string*. Without C++11, &(*s)[0] is not guaranteed to be safe,
-// so we use string_as_array(), and live with the extra logic that tests whether
-// *s is empty.
-
-// Return a pointer to mutable characters underlying the given string. The
-// return value is valid until the next time the string is resized. We
-// trust the caller to treat the return value as an array of length s->size().
-inline char* mutable_string_data(std::string* s) {
- // This should be simpler & faster than string_as_array() because the latter
- // is guaranteed to return NULL when *s is empty, so it has to check for that.
- return &(*s)[0];
-}
-
-// as_string_data(s) is equivalent to
-// ({ char* p = mutable_string_data(s); make_pair(p, p != NULL); })
-// Sometimes it's faster: in some scenarios p cannot be NULL, and then the
-// code can avoid that check.
-inline std::pair<char*, bool> as_string_data(std::string* s) {
- char* p = mutable_string_data(s);
- return std::make_pair(p, true);
-}
-
-} // namespace io
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__
diff --git a/include/google/protobuf/map.h b/include/google/protobuf/map.h
deleted file mode 100644
index 008c192253..0000000000
--- a/include/google/protobuf/map.h
+++ /dev/null
@@ -1,1448 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file defines the map container and its helpers to support protobuf maps.
-//
-// The Map and MapIterator types are provided by this header file.
-// Please avoid using other types defined here, unless they are public
-// types within Map or MapIterator, such as Map::value_type.
-
-#ifndef GOOGLE_PROTOBUF_MAP_H__
-#define GOOGLE_PROTOBUF_MAP_H__
-
-
-#include <functional>
-#include <initializer_list>
-#include <iterator>
-#include <limits> // To support Visual Studio 2008
-#include <map>
-#include <string>
-#include <type_traits>
-#include <utility>
-
-#if defined(__cpp_lib_string_view)
-#include <string_view>
-#endif // defined(__cpp_lib_string_view)
-
-#if !defined(GOOGLE_PROTOBUF_NO_RDTSC) && defined(__APPLE__)
-#include <mach/mach_time.h>
-#endif
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/generated_enum_util.h>
-#include <google/protobuf/map_type_handler.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/hash.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-template <typename Key, typename T>
-class Map;
-
-class MapIterator;
-
-template <typename Enum>
-struct is_proto_enum;
-
-namespace internal {
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType key_wire_type,
- WireFormatLite::FieldType value_wire_type>
-class MapFieldLite;
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType key_wire_type,
- WireFormatLite::FieldType value_wire_type>
-class MapField;
-
-template <typename Key, typename T>
-class TypeDefinedMapFieldBase;
-
-class DynamicMapField;
-
-class GeneratedMessageReflection;
-
-// re-implement std::allocator to use arena allocator for memory allocation.
-// Used for Map implementation. Users should not use this class
-// directly.
-template <typename U>
-class MapAllocator {
- public:
- using value_type = U;
- using pointer = value_type*;
- using const_pointer = const value_type*;
- using reference = value_type&;
- using const_reference = const value_type&;
- using size_type = size_t;
- using difference_type = ptrdiff_t;
-
- constexpr MapAllocator() : arena_(nullptr) {}
- explicit constexpr MapAllocator(Arena* arena) : arena_(arena) {}
- template <typename X>
- MapAllocator(const MapAllocator<X>& allocator) // NOLINT(runtime/explicit)
- : arena_(allocator.arena()) {}
-
- // MapAllocator does not support alignments beyond 8. Technically we should
- // support up to std::max_align_t, but this fails with ubsan and tcmalloc
- // debug allocation logic which assume 8 as default alignment.
- static_assert(alignof(value_type) <= 8, "");
-
- pointer allocate(size_type n, const void* /* hint */ = nullptr) {
- // If arena is not given, malloc needs to be called which doesn't
- // construct element object.
- if (arena_ == nullptr) {
- return static_cast<pointer>(::operator new(n * sizeof(value_type)));
- } else {
- return reinterpret_cast<pointer>(
- Arena::CreateArray<uint8_t>(arena_, n * sizeof(value_type)));
- }
- }
-
- void deallocate(pointer p, size_type n) {
- if (arena_ == nullptr) {
- internal::SizedDelete(p, n * sizeof(value_type));
- }
- }
-
-#if !defined(GOOGLE_PROTOBUF_OS_APPLE) && !defined(GOOGLE_PROTOBUF_OS_NACL) && \
- !defined(GOOGLE_PROTOBUF_OS_EMSCRIPTEN)
- template <class NodeType, class... Args>
- void construct(NodeType* p, Args&&... args) {
- // Clang 3.6 doesn't compile static casting to void* directly. (Issue
- // #1266) According C++ standard 5.2.9/1: "The static_cast operator shall
- // not cast away constness". So first the maybe const pointer is casted to
- // const void* and after the const void* is const casted.
- new (const_cast<void*>(static_cast<const void*>(p)))
- NodeType(std::forward<Args>(args)...);
- }
-
- template <class NodeType>
- void destroy(NodeType* p) {
- p->~NodeType();
- }
-#else
- void construct(pointer p, const_reference t) { new (p) value_type(t); }
-
- void destroy(pointer p) { p->~value_type(); }
-#endif
-
- template <typename X>
- struct rebind {
- using other = MapAllocator<X>;
- };
-
- template <typename X>
- bool operator==(const MapAllocator<X>& other) const {
- return arena_ == other.arena_;
- }
-
- template <typename X>
- bool operator!=(const MapAllocator<X>& other) const {
- return arena_ != other.arena_;
- }
-
- // To support Visual Studio 2008
- size_type max_size() const {
- // parentheses around (std::...:max) prevents macro warning of max()
- return (std::numeric_limits<size_type>::max)();
- }
-
- // To support gcc-4.4, which does not properly
- // support templated friend classes
- Arena* arena() const { return arena_; }
-
- private:
- using DestructorSkippable_ = void;
- Arena* arena_;
-};
-
-template <typename T>
-using KeyForTree =
- typename std::conditional<std::is_scalar<T>::value, T,
- std::reference_wrapper<const T>>::type;
-
-// Default case: Not transparent.
-// We use std::hash<key_type>/std::less<key_type> and all the lookup functions
-// only accept `key_type`.
-template <typename key_type>
-struct TransparentSupport {
- using hash = std::hash<key_type>;
- using less = std::less<key_type>;
-
- static bool Equals(const key_type& a, const key_type& b) { return a == b; }
-
- template <typename K>
- using key_arg = key_type;
-};
-
-#if defined(__cpp_lib_string_view)
-// If std::string_view is available, we add transparent support for std::string
-// keys. We use std::hash<std::string_view> as it supports the input types we
-// care about. The lookup functions accept arbitrary `K`. This will include any
-// key type that is convertible to std::string_view.
-template <>
-struct TransparentSupport<std::string> {
- static std::string_view ImplicitConvert(std::string_view str) { return str; }
- // If the element is not convertible to std::string_view, try to convert to
- // std::string first.
- // The template makes this overload lose resolution when both have the same
- // rank otherwise.
- template <typename = void>
- static std::string_view ImplicitConvert(const std::string& str) {
- return str;
- }
-
- struct hash : private std::hash<std::string_view> {
- using is_transparent = void;
-
- template <typename T>
- size_t operator()(const T& str) const {
- return base()(ImplicitConvert(str));
- }
-
- private:
- const std::hash<std::string_view>& base() const { return *this; }
- };
- struct less {
- using is_transparent = void;
-
- template <typename T, typename U>
- bool operator()(const T& t, const U& u) const {
- return ImplicitConvert(t) < ImplicitConvert(u);
- }
- };
-
- template <typename T, typename U>
- static bool Equals(const T& t, const U& u) {
- return ImplicitConvert(t) == ImplicitConvert(u);
- }
-
- template <typename K>
- using key_arg = K;
-};
-#endif // defined(__cpp_lib_string_view)
-
-template <typename Key>
-using TreeForMap =
- std::map<KeyForTree<Key>, void*, typename TransparentSupport<Key>::less,
- MapAllocator<std::pair<const KeyForTree<Key>, void*>>>;
-
-inline bool TableEntryIsEmpty(void* const* table, size_t b) {
- return table[b] == nullptr;
-}
-inline bool TableEntryIsNonEmptyList(void* const* table, size_t b) {
- return table[b] != nullptr && table[b] != table[b ^ 1];
-}
-inline bool TableEntryIsTree(void* const* table, size_t b) {
- return !TableEntryIsEmpty(table, b) && !TableEntryIsNonEmptyList(table, b);
-}
-inline bool TableEntryIsList(void* const* table, size_t b) {
- return !TableEntryIsTree(table, b);
-}
-
-// This captures all numeric types.
-inline size_t MapValueSpaceUsedExcludingSelfLong(bool) { return 0; }
-inline size_t MapValueSpaceUsedExcludingSelfLong(const std::string& str) {
- return StringSpaceUsedExcludingSelfLong(str);
-}
-template <typename T,
- typename = decltype(std::declval<const T&>().SpaceUsedLong())>
-size_t MapValueSpaceUsedExcludingSelfLong(const T& message) {
- return message.SpaceUsedLong() - sizeof(T);
-}
-
-constexpr size_t kGlobalEmptyTableSize = 1;
-PROTOBUF_EXPORT extern void* const kGlobalEmptyTable[kGlobalEmptyTableSize];
-
-// Space used for the table, trees, and nodes.
-// Does not include the indirect space used. Eg the data of a std::string.
-template <typename Key>
-PROTOBUF_NOINLINE size_t SpaceUsedInTable(void** table, size_t num_buckets,
- size_t num_elements,
- size_t sizeof_node) {
- size_t size = 0;
- // The size of the table.
- size += sizeof(void*) * num_buckets;
- // All the nodes.
- size += sizeof_node * num_elements;
- // For each tree, count the overhead of the those nodes.
- // Two buckets at a time because we only care about trees.
- for (size_t b = 0; b < num_buckets; b += 2) {
- if (internal::TableEntryIsTree(table, b)) {
- using Tree = TreeForMap<Key>;
- Tree* tree = static_cast<Tree*>(table[b]);
- // Estimated cost of the red-black tree nodes, 3 pointers plus a
- // bool (plus alignment, so 4 pointers).
- size += tree->size() *
- (sizeof(typename Tree::value_type) + sizeof(void*) * 4);
- }
- }
- return size;
-}
-
-template <typename Map,
- typename = typename std::enable_if<
- !std::is_scalar<typename Map::key_type>::value ||
- !std::is_scalar<typename Map::mapped_type>::value>::type>
-size_t SpaceUsedInValues(const Map* map) {
- size_t size = 0;
- for (const auto& v : *map) {
- size += internal::MapValueSpaceUsedExcludingSelfLong(v.first) +
- internal::MapValueSpaceUsedExcludingSelfLong(v.second);
- }
- return size;
-}
-
-inline size_t SpaceUsedInValues(const void*) { return 0; }
-
-} // namespace internal
-
-// This is the class for Map's internal value_type. Instead of using
-// std::pair as value_type, we use this class which provides us more control of
-// its process of construction and destruction.
-template <typename Key, typename T>
-struct PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG MapPair {
- using first_type = const Key;
- using second_type = T;
-
- MapPair(const Key& other_first, const T& other_second)
- : first(other_first), second(other_second) {}
- explicit MapPair(const Key& other_first) : first(other_first), second() {}
- explicit MapPair(Key&& other_first)
- : first(std::move(other_first)), second() {}
- MapPair(const MapPair& other) : first(other.first), second(other.second) {}
-
- ~MapPair() {}
-
- // Implicitly convertible to std::pair of compatible types.
- template <typename T1, typename T2>
- operator std::pair<T1, T2>() const { // NOLINT(runtime/explicit)
- return std::pair<T1, T2>(first, second);
- }
-
- const Key first;
- T second;
-
- private:
- friend class Arena;
- friend class Map<Key, T>;
-};
-
-// Map is an associative container type used to store protobuf map
-// fields. Each Map instance may or may not use a different hash function, a
-// different iteration order, and so on. E.g., please don't examine
-// implementation details to decide if the following would work:
-// Map<int, int> m0, m1;
-// m0[0] = m1[0] = m0[1] = m1[1] = 0;
-// assert(m0.begin()->first == m1.begin()->first); // Bug!
-//
-// Map's interface is similar to std::unordered_map, except that Map is not
-// designed to play well with exceptions.
-template <typename Key, typename T>
-class Map {
- public:
- using key_type = Key;
- using mapped_type = T;
- using value_type = MapPair<Key, T>;
-
- using pointer = value_type*;
- using const_pointer = const value_type*;
- using reference = value_type&;
- using const_reference = const value_type&;
-
- using size_type = size_t;
- using hasher = typename internal::TransparentSupport<Key>::hash;
-
- constexpr Map() : elements_(nullptr) {}
- explicit Map(Arena* arena) : elements_(arena) {}
-
- Map(const Map& other) : Map() { insert(other.begin(), other.end()); }
-
- Map(Map&& other) noexcept : Map() {
- if (other.arena() != nullptr) {
- *this = other;
- } else {
- swap(other);
- }
- }
-
- Map& operator=(Map&& other) noexcept {
- if (this != &other) {
- if (arena() != other.arena()) {
- *this = other;
- } else {
- swap(other);
- }
- }
- return *this;
- }
-
- template <class InputIt>
- Map(const InputIt& first, const InputIt& last) : Map() {
- insert(first, last);
- }
-
- ~Map() {}
-
- private:
- using Allocator = internal::MapAllocator<void*>;
-
- // InnerMap is a generic hash-based map. It doesn't contain any
- // protocol-buffer-specific logic. It is a chaining hash map with the
- // additional feature that some buckets can be converted to use an ordered
- // container. This ensures O(lg n) bounds on find, insert, and erase, while
- // avoiding the overheads of ordered containers most of the time.
- //
- // The implementation doesn't need the full generality of unordered_map,
- // and it doesn't have it. More bells and whistles can be added as needed.
- // Some implementation details:
- // 1. The hash function has type hasher and the equality function
- // equal_to<Key>. We inherit from hasher to save space
- // (empty-base-class optimization).
- // 2. The number of buckets is a power of two.
- // 3. Buckets are converted to trees in pairs: if we convert bucket b then
- // buckets b and b^1 will share a tree. Invariant: buckets b and b^1 have
- // the same non-null value iff they are sharing a tree. (An alternative
- // implementation strategy would be to have a tag bit per bucket.)
- // 4. As is typical for hash_map and such, the Keys and Values are always
- // stored in linked list nodes. Pointers to elements are never invalidated
- // until the element is deleted.
- // 5. The trees' payload type is pointer to linked-list node. Tree-converting
- // a bucket doesn't copy Key-Value pairs.
- // 6. Once we've tree-converted a bucket, it is never converted back. However,
- // the items a tree contains may wind up assigned to trees or lists upon a
- // rehash.
- // 7. The code requires no C++ features from C++14 or later.
- // 8. Mutations to a map do not invalidate the map's iterators, pointers to
- // elements, or references to elements.
- // 9. Except for erase(iterator), any non-const method can reorder iterators.
- // 10. InnerMap uses KeyForTree<Key> when using the Tree representation, which
- // is either `Key`, if Key is a scalar, or `reference_wrapper<const Key>`
- // otherwise. This avoids unnecessary copies of string keys, for example.
- class InnerMap : private hasher {
- public:
- explicit constexpr InnerMap(Arena* arena)
- : hasher(),
- num_elements_(0),
- num_buckets_(internal::kGlobalEmptyTableSize),
- seed_(0),
- index_of_first_non_null_(internal::kGlobalEmptyTableSize),
- table_(const_cast<void**>(internal::kGlobalEmptyTable)),
- alloc_(arena) {}
-
- ~InnerMap() {
- if (alloc_.arena() == nullptr &&
- num_buckets_ != internal::kGlobalEmptyTableSize) {
- clear();
- Dealloc<void*>(table_, num_buckets_);
- }
- }
-
- private:
- enum { kMinTableSize = 8 };
-
- // Linked-list nodes, as one would expect for a chaining hash table.
- struct Node {
- value_type kv;
- Node* next;
- };
-
- // Trees. The payload type is a copy of Key, so that we can query the tree
- // with Keys that are not in any particular data structure.
- // The value is a void* pointing to Node. We use void* instead of Node* to
- // avoid code bloat. That way there is only one instantiation of the tree
- // class per key type.
- using Tree = internal::TreeForMap<Key>;
- using TreeIterator = typename Tree::iterator;
-
- static Node* NodeFromTreeIterator(TreeIterator it) {
- return static_cast<Node*>(it->second);
- }
-
- // iterator and const_iterator are instantiations of iterator_base.
- template <typename KeyValueType>
- class iterator_base {
- public:
- using reference = KeyValueType&;
- using pointer = KeyValueType*;
-
- // Invariants:
- // node_ is always correct. This is handy because the most common
- // operations are operator* and operator-> and they only use node_.
- // When node_ is set to a non-null value, all the other non-const fields
- // are updated to be correct also, but those fields can become stale
- // if the underlying map is modified. When those fields are needed they
- // are rechecked, and updated if necessary.
- iterator_base() : node_(nullptr), m_(nullptr), bucket_index_(0) {}
-
- explicit iterator_base(const InnerMap* m) : m_(m) {
- SearchFrom(m->index_of_first_non_null_);
- }
-
- // Any iterator_base can convert to any other. This is overkill, and we
- // rely on the enclosing class to use it wisely. The standard "iterator
- // can convert to const_iterator" is OK but the reverse direction is not.
- template <typename U>
- explicit iterator_base(const iterator_base<U>& it)
- : node_(it.node_), m_(it.m_), bucket_index_(it.bucket_index_) {}
-
- iterator_base(Node* n, const InnerMap* m, size_type index)
- : node_(n), m_(m), bucket_index_(index) {}
-
- iterator_base(TreeIterator tree_it, const InnerMap* m, size_type index)
- : node_(NodeFromTreeIterator(tree_it)), m_(m), bucket_index_(index) {
- // Invariant: iterators that use buckets with trees have an even
- // bucket_index_.
- GOOGLE_DCHECK_EQ(bucket_index_ % 2, 0u);
- }
-
- // Advance through buckets, looking for the first that isn't empty.
- // If nothing non-empty is found then leave node_ == nullptr.
- void SearchFrom(size_type start_bucket) {
- GOOGLE_DCHECK(m_->index_of_first_non_null_ == m_->num_buckets_ ||
- m_->table_[m_->index_of_first_non_null_] != nullptr);
- node_ = nullptr;
- for (bucket_index_ = start_bucket; bucket_index_ < m_->num_buckets_;
- bucket_index_++) {
- if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
- node_ = static_cast<Node*>(m_->table_[bucket_index_]);
- break;
- } else if (m_->TableEntryIsTree(bucket_index_)) {
- Tree* tree = static_cast<Tree*>(m_->table_[bucket_index_]);
- GOOGLE_DCHECK(!tree->empty());
- node_ = NodeFromTreeIterator(tree->begin());
- break;
- }
- }
- }
-
- reference operator*() const { return node_->kv; }
- pointer operator->() const { return &(operator*()); }
-
- friend bool operator==(const iterator_base& a, const iterator_base& b) {
- return a.node_ == b.node_;
- }
- friend bool operator!=(const iterator_base& a, const iterator_base& b) {
- return a.node_ != b.node_;
- }
-
- iterator_base& operator++() {
- if (node_->next == nullptr) {
- TreeIterator tree_it;
- const bool is_list = revalidate_if_necessary(&tree_it);
- if (is_list) {
- SearchFrom(bucket_index_ + 1);
- } else {
- GOOGLE_DCHECK_EQ(bucket_index_ & 1, 0u);
- Tree* tree = static_cast<Tree*>(m_->table_[bucket_index_]);
- if (++tree_it == tree->end()) {
- SearchFrom(bucket_index_ + 2);
- } else {
- node_ = NodeFromTreeIterator(tree_it);
- }
- }
- } else {
- node_ = node_->next;
- }
- return *this;
- }
-
- iterator_base operator++(int /* unused */) {
- iterator_base tmp = *this;
- ++*this;
- return tmp;
- }
-
- // Assumes node_ and m_ are correct and non-null, but other fields may be
- // stale. Fix them as needed. Then return true iff node_ points to a
- // Node in a list. If false is returned then *it is modified to be
- // a valid iterator for node_.
- bool revalidate_if_necessary(TreeIterator* it) {
- GOOGLE_DCHECK(node_ != nullptr && m_ != nullptr);
- // Force bucket_index_ to be in range.
- bucket_index_ &= (m_->num_buckets_ - 1);
- // Common case: the bucket we think is relevant points to node_.
- if (m_->table_[bucket_index_] == static_cast<void*>(node_)) return true;
- // Less common: the bucket is a linked list with node_ somewhere in it,
- // but not at the head.
- if (m_->TableEntryIsNonEmptyList(bucket_index_)) {
- Node* l = static_cast<Node*>(m_->table_[bucket_index_]);
- while ((l = l->next) != nullptr) {
- if (l == node_) {
- return true;
- }
- }
- }
- // Well, bucket_index_ still might be correct, but probably
- // not. Revalidate just to be sure. This case is rare enough that we
- // don't worry about potential optimizations, such as having a custom
- // find-like method that compares Node* instead of the key.
- iterator_base i(m_->find(node_->kv.first, it));
- bucket_index_ = i.bucket_index_;
- return m_->TableEntryIsList(bucket_index_);
- }
-
- Node* node_;
- const InnerMap* m_;
- size_type bucket_index_;
- };
-
- public:
- using iterator = iterator_base<value_type>;
- using const_iterator = iterator_base<const value_type>;
-
- Arena* arena() const { return alloc_.arena(); }
-
- void Swap(InnerMap* other) {
- std::swap(num_elements_, other->num_elements_);
- std::swap(num_buckets_, other->num_buckets_);
- std::swap(seed_, other->seed_);
- std::swap(index_of_first_non_null_, other->index_of_first_non_null_);
- std::swap(table_, other->table_);
- std::swap(alloc_, other->alloc_);
- }
-
- iterator begin() { return iterator(this); }
- iterator end() { return iterator(); }
- const_iterator begin() const { return const_iterator(this); }
- const_iterator end() const { return const_iterator(); }
-
- void clear() {
- for (size_type b = 0; b < num_buckets_; b++) {
- if (TableEntryIsNonEmptyList(b)) {
- Node* node = static_cast<Node*>(table_[b]);
- table_[b] = nullptr;
- do {
- Node* next = node->next;
- DestroyNode(node);
- node = next;
- } while (node != nullptr);
- } else if (TableEntryIsTree(b)) {
- Tree* tree = static_cast<Tree*>(table_[b]);
- GOOGLE_DCHECK(table_[b] == table_[b + 1] && (b & 1) == 0);
- table_[b] = table_[b + 1] = nullptr;
- typename Tree::iterator tree_it = tree->begin();
- do {
- Node* node = NodeFromTreeIterator(tree_it);
- typename Tree::iterator next = tree_it;
- ++next;
- tree->erase(tree_it);
- DestroyNode(node);
- tree_it = next;
- } while (tree_it != tree->end());
- DestroyTree(tree);
- b++;
- }
- }
- num_elements_ = 0;
- index_of_first_non_null_ = num_buckets_;
- }
-
- const hasher& hash_function() const { return *this; }
-
- static size_type max_size() {
- return static_cast<size_type>(1) << (sizeof(void**) >= 8 ? 60 : 28);
- }
- size_type size() const { return num_elements_; }
- bool empty() const { return size() == 0; }
-
- template <typename K>
- iterator find(const K& k) {
- return iterator(FindHelper(k).first);
- }
-
- template <typename K>
- const_iterator find(const K& k) const {
- return FindHelper(k).first;
- }
-
- // Inserts a new element into the container if there is no element with the
- // key in the container.
- // The new element is:
- // (1) Constructed in-place with the given args, if mapped_type is not
- // arena constructible.
- // (2) Constructed in-place with the arena and then assigned with a
- // mapped_type temporary constructed with the given args, otherwise.
- template <typename K, typename... Args>
- std::pair<iterator, bool> try_emplace(K&& k, Args&&... args) {
- return ArenaAwareTryEmplace(Arena::is_arena_constructable<mapped_type>(),
- std::forward<K>(k),
- std::forward<Args>(args)...);
- }
-
- // Inserts the key into the map, if not present. In that case, the value
- // will be value initialized.
- template <typename K>
- std::pair<iterator, bool> insert(K&& k) {
- return try_emplace(std::forward<K>(k));
- }
-
- template <typename K>
- value_type& operator[](K&& k) {
- return *try_emplace(std::forward<K>(k)).first;
- }
-
- void erase(iterator it) {
- GOOGLE_DCHECK_EQ(it.m_, this);
- typename Tree::iterator tree_it;
- const bool is_list = it.revalidate_if_necessary(&tree_it);
- size_type b = it.bucket_index_;
- Node* const item = it.node_;
- if (is_list) {
- GOOGLE_DCHECK(TableEntryIsNonEmptyList(b));
- Node* head = static_cast<Node*>(table_[b]);
- head = EraseFromLinkedList(item, head);
- table_[b] = static_cast<void*>(head);
- } else {
- GOOGLE_DCHECK(TableEntryIsTree(b));
- Tree* tree = static_cast<Tree*>(table_[b]);
- tree->erase(tree_it);
- if (tree->empty()) {
- // Force b to be the minimum of b and b ^ 1. This is important
- // only because we want index_of_first_non_null_ to be correct.
- b &= ~static_cast<size_type>(1);
- DestroyTree(tree);
- table_[b] = table_[b + 1] = nullptr;
- }
- }
- DestroyNode(item);
- --num_elements_;
- if (PROTOBUF_PREDICT_FALSE(b == index_of_first_non_null_)) {
- while (index_of_first_non_null_ < num_buckets_ &&
- table_[index_of_first_non_null_] == nullptr) {
- ++index_of_first_non_null_;
- }
- }
- }
-
- size_t SpaceUsedInternal() const {
- return internal::SpaceUsedInTable<Key>(table_, num_buckets_,
- num_elements_, sizeof(Node));
- }
-
- private:
- template <typename K, typename... Args>
- std::pair<iterator, bool> TryEmplaceInternal(K&& k, Args&&... args) {
- std::pair<const_iterator, size_type> p = FindHelper(k);
- // Case 1: key was already present.
- if (p.first.node_ != nullptr)
- return std::make_pair(iterator(p.first), false);
- // Case 2: insert.
- if (ResizeIfLoadIsOutOfRange(num_elements_ + 1)) {
- p = FindHelper(k);
- }
- const size_type b = p.second; // bucket number
- // If K is not key_type, make the conversion to key_type explicit.
- using TypeToInit = typename std::conditional<
- std::is_same<typename std::decay<K>::type, key_type>::value, K&&,
- key_type>::type;
- Node* node = Alloc<Node>(1);
- // Even when arena is nullptr, CreateInArenaStorage is still used to
- // ensure the arena of submessage will be consistent. Otherwise,
- // submessage may have its own arena when message-owned arena is enabled.
- // Note: This only works if `Key` is not arena constructible.
- Arena::CreateInArenaStorage(const_cast<Key*>(&node->kv.first),
- alloc_.arena(),
- static_cast<TypeToInit>(std::forward<K>(k)));
- // Note: if `T` is arena constructible, `Args` needs to be empty.
- Arena::CreateInArenaStorage(&node->kv.second, alloc_.arena(),
- std::forward<Args>(args)...);
-
- iterator result = InsertUnique(b, node);
- ++num_elements_;
- return std::make_pair(result, true);
- }
-
- // A helper function to perform an assignment of `mapped_type`.
- // If the first argument is true, then it is a regular assignment.
- // Otherwise, we first create a temporary and then perform an assignment.
- template <typename V>
- static void AssignMapped(std::true_type, mapped_type& mapped, V&& v) {
- mapped = std::forward<V>(v);
- }
- template <typename... Args>
- static void AssignMapped(std::false_type, mapped_type& mapped,
- Args&&... args) {
- mapped = mapped_type(std::forward<Args>(args)...);
- }
-
- // Case 1: `mapped_type` is arena constructible. A temporary object is
- // created and then (if `Args` are not empty) assigned to a mapped value
- // that was created with the arena.
- template <typename K>
- std::pair<iterator, bool> ArenaAwareTryEmplace(std::true_type, K&& k) {
- // case 1.1: "default" constructed (e.g. from arena only).
- return TryEmplaceInternal(std::forward<K>(k));
- }
- template <typename K, typename... Args>
- std::pair<iterator, bool> ArenaAwareTryEmplace(std::true_type, K&& k,
- Args&&... args) {
- // case 1.2: "default" constructed + copy/move assignment
- auto p = TryEmplaceInternal(std::forward<K>(k));
- if (p.second) {
- AssignMapped(std::is_same<void(typename std::decay<Args>::type...),
- void(mapped_type)>(),
- p.first->second, std::forward<Args>(args)...);
- }
- return p;
- }
- // Case 2: `mapped_type` is not arena constructible. Using in-place
- // construction.
- template <typename... Args>
- std::pair<iterator, bool> ArenaAwareTryEmplace(std::false_type,
- Args&&... args) {
- return TryEmplaceInternal(std::forward<Args>(args)...);
- }
-
- const_iterator find(const Key& k, TreeIterator* it) const {
- return FindHelper(k, it).first;
- }
- template <typename K>
- std::pair<const_iterator, size_type> FindHelper(const K& k) const {
- return FindHelper(k, nullptr);
- }
- template <typename K>
- std::pair<const_iterator, size_type> FindHelper(const K& k,
- TreeIterator* it) const {
- size_type b = BucketNumber(k);
- if (TableEntryIsNonEmptyList(b)) {
- Node* node = static_cast<Node*>(table_[b]);
- do {
- if (internal::TransparentSupport<Key>::Equals(node->kv.first, k)) {
- return std::make_pair(const_iterator(node, this, b), b);
- } else {
- node = node->next;
- }
- } while (node != nullptr);
- } else if (TableEntryIsTree(b)) {
- GOOGLE_DCHECK_EQ(table_[b], table_[b ^ 1]);
- b &= ~static_cast<size_t>(1);
- Tree* tree = static_cast<Tree*>(table_[b]);
- auto tree_it = tree->find(k);
- if (tree_it != tree->end()) {
- if (it != nullptr) *it = tree_it;
- return std::make_pair(const_iterator(tree_it, this, b), b);
- }
- }
- return std::make_pair(end(), b);
- }
-
- // Insert the given Node in bucket b. If that would make bucket b too big,
- // and bucket b is not a tree, create a tree for buckets b and b^1 to share.
- // Requires count(*KeyPtrFromNodePtr(node)) == 0 and that b is the correct
- // bucket. num_elements_ is not modified.
- iterator InsertUnique(size_type b, Node* node) {
- GOOGLE_DCHECK(index_of_first_non_null_ == num_buckets_ ||
- table_[index_of_first_non_null_] != nullptr);
- // In practice, the code that led to this point may have already
- // determined whether we are inserting into an empty list, a short list,
- // or whatever. But it's probably cheap enough to recompute that here;
- // it's likely that we're inserting into an empty or short list.
- iterator result;
- GOOGLE_DCHECK(find(node->kv.first) == end());
- if (TableEntryIsEmpty(b)) {
- result = InsertUniqueInList(b, node);
- } else if (TableEntryIsNonEmptyList(b)) {
- if (PROTOBUF_PREDICT_FALSE(TableEntryIsTooLong(b))) {
- TreeConvert(b);
- result = InsertUniqueInTree(b, node);
- GOOGLE_DCHECK_EQ(result.bucket_index_, b & ~static_cast<size_type>(1));
- } else {
- // Insert into a pre-existing list. This case cannot modify
- // index_of_first_non_null_, so we skip the code to update it.
- return InsertUniqueInList(b, node);
- }
- } else {
- // Insert into a pre-existing tree. This case cannot modify
- // index_of_first_non_null_, so we skip the code to update it.
- return InsertUniqueInTree(b, node);
- }
- // parentheses around (std::min) prevents macro expansion of min(...)
- index_of_first_non_null_ =
- (std::min)(index_of_first_non_null_, result.bucket_index_);
- return result;
- }
-
- // Returns whether we should insert after the head of the list. For
- // non-optimized builds, we randomly decide whether to insert right at the
- // head of the list or just after the head. This helps add a little bit of
- // non-determinism to the map ordering.
- bool ShouldInsertAfterHead(void* node) {
-#ifdef NDEBUG
- (void)node;
- return false;
-#else
- // Doing modulo with a prime mixes the bits more.
- return (reinterpret_cast<uintptr_t>(node) ^ seed_) % 13 > 6;
-#endif
- }
-
- // Helper for InsertUnique. Handles the case where bucket b is a
- // not-too-long linked list.
- iterator InsertUniqueInList(size_type b, Node* node) {
- if (table_[b] != nullptr && ShouldInsertAfterHead(node)) {
- Node* first = static_cast<Node*>(table_[b]);
- node->next = first->next;
- first->next = node;
- return iterator(node, this, b);
- }
-
- node->next = static_cast<Node*>(table_[b]);
- table_[b] = static_cast<void*>(node);
- return iterator(node, this, b);
- }
-
- // Helper for InsertUnique. Handles the case where bucket b points to a
- // Tree.
- iterator InsertUniqueInTree(size_type b, Node* node) {
- GOOGLE_DCHECK_EQ(table_[b], table_[b ^ 1]);
- // Maintain the invariant that node->next is null for all Nodes in Trees.
- node->next = nullptr;
- return iterator(
- static_cast<Tree*>(table_[b])->insert({node->kv.first, node}).first,
- this, b & ~static_cast<size_t>(1));
- }
-
- // Returns whether it did resize. Currently this is only used when
- // num_elements_ increases, though it could be used in other situations.
- // It checks for load too low as well as load too high: because any number
- // of erases can occur between inserts, the load could be as low as 0 here.
- // Resizing to a lower size is not always helpful, but failing to do so can
- // destroy the expected big-O bounds for some operations. By having the
- // policy that sometimes we resize down as well as up, clients can easily
- // keep O(size()) = O(number of buckets) if they want that.
- bool ResizeIfLoadIsOutOfRange(size_type new_size) {
- const size_type kMaxMapLoadTimes16 = 12; // controls RAM vs CPU tradeoff
- const size_type hi_cutoff = num_buckets_ * kMaxMapLoadTimes16 / 16;
- const size_type lo_cutoff = hi_cutoff / 4;
- // We don't care how many elements are in trees. If a lot are,
- // we may resize even though there are many empty buckets. In
- // practice, this seems fine.
- if (PROTOBUF_PREDICT_FALSE(new_size >= hi_cutoff)) {
- if (num_buckets_ <= max_size() / 2) {
- Resize(num_buckets_ * 2);
- return true;
- }
- } else if (PROTOBUF_PREDICT_FALSE(new_size <= lo_cutoff &&
- num_buckets_ > kMinTableSize)) {
- size_type lg2_of_size_reduction_factor = 1;
- // It's possible we want to shrink a lot here... size() could even be 0.
- // So, estimate how much to shrink by making sure we don't shrink so
- // much that we would need to grow the table after a few inserts.
- const size_type hypothetical_size = new_size * 5 / 4 + 1;
- while ((hypothetical_size << lg2_of_size_reduction_factor) <
- hi_cutoff) {
- ++lg2_of_size_reduction_factor;
- }
- size_type new_num_buckets = std::max<size_type>(
- kMinTableSize, num_buckets_ >> lg2_of_size_reduction_factor);
- if (new_num_buckets != num_buckets_) {
- Resize(new_num_buckets);
- return true;
- }
- }
- return false;
- }
-
- // Resize to the given number of buckets.
- void Resize(size_t new_num_buckets) {
- if (num_buckets_ == internal::kGlobalEmptyTableSize) {
- // This is the global empty array.
- // Just overwrite with a new one. No need to transfer or free anything.
- num_buckets_ = index_of_first_non_null_ = kMinTableSize;
- table_ = CreateEmptyTable(num_buckets_);
- seed_ = Seed();
- return;
- }
-
- GOOGLE_DCHECK_GE(new_num_buckets, kMinTableSize);
- void** const old_table = table_;
- const size_type old_table_size = num_buckets_;
- num_buckets_ = new_num_buckets;
- table_ = CreateEmptyTable(num_buckets_);
- const size_type start = index_of_first_non_null_;
- index_of_first_non_null_ = num_buckets_;
- for (size_type i = start; i < old_table_size; i++) {
- if (internal::TableEntryIsNonEmptyList(old_table, i)) {
- TransferList(old_table, i);
- } else if (internal::TableEntryIsTree(old_table, i)) {
- TransferTree(old_table, i++);
- }
- }
- Dealloc<void*>(old_table, old_table_size);
- }
-
- void TransferList(void* const* table, size_type index) {
- Node* node = static_cast<Node*>(table[index]);
- do {
- Node* next = node->next;
- InsertUnique(BucketNumber(node->kv.first), node);
- node = next;
- } while (node != nullptr);
- }
-
- void TransferTree(void* const* table, size_type index) {
- Tree* tree = static_cast<Tree*>(table[index]);
- typename Tree::iterator tree_it = tree->begin();
- do {
- InsertUnique(BucketNumber(std::cref(tree_it->first).get()),
- NodeFromTreeIterator(tree_it));
- } while (++tree_it != tree->end());
- DestroyTree(tree);
- }
-
- Node* EraseFromLinkedList(Node* item, Node* head) {
- if (head == item) {
- return head->next;
- } else {
- head->next = EraseFromLinkedList(item, head->next);
- return head;
- }
- }
-
- bool TableEntryIsEmpty(size_type b) const {
- return internal::TableEntryIsEmpty(table_, b);
- }
- bool TableEntryIsNonEmptyList(size_type b) const {
- return internal::TableEntryIsNonEmptyList(table_, b);
- }
- bool TableEntryIsTree(size_type b) const {
- return internal::TableEntryIsTree(table_, b);
- }
- bool TableEntryIsList(size_type b) const {
- return internal::TableEntryIsList(table_, b);
- }
-
- void TreeConvert(size_type b) {
- GOOGLE_DCHECK(!TableEntryIsTree(b) && !TableEntryIsTree(b ^ 1));
- Tree* tree =
- Arena::Create<Tree>(alloc_.arena(), typename Tree::key_compare(),
- typename Tree::allocator_type(alloc_));
- size_type count = CopyListToTree(b, tree) + CopyListToTree(b ^ 1, tree);
- GOOGLE_DCHECK_EQ(count, tree->size());
- table_[b] = table_[b ^ 1] = static_cast<void*>(tree);
- }
-
- // Copy a linked list in the given bucket to a tree.
- // Returns the number of things it copied.
- size_type CopyListToTree(size_type b, Tree* tree) {
- size_type count = 0;
- Node* node = static_cast<Node*>(table_[b]);
- while (node != nullptr) {
- tree->insert({node->kv.first, node});
- ++count;
- Node* next = node->next;
- node->next = nullptr;
- node = next;
- }
- return count;
- }
-
- // Return whether table_[b] is a linked list that seems awfully long.
- // Requires table_[b] to point to a non-empty linked list.
- bool TableEntryIsTooLong(size_type b) {
- const size_type kMaxLength = 8;
- size_type count = 0;
- Node* node = static_cast<Node*>(table_[b]);
- do {
- ++count;
- node = node->next;
- } while (node != nullptr);
- // Invariant: no linked list ever is more than kMaxLength in length.
- GOOGLE_DCHECK_LE(count, kMaxLength);
- return count >= kMaxLength;
- }
-
- template <typename K>
- size_type BucketNumber(const K& k) const {
- // We xor the hash value against the random seed so that we effectively
- // have a random hash function.
- uint64_t h = hash_function()(k) ^ seed_;
-
- // We use the multiplication method to determine the bucket number from
- // the hash value. The constant kPhi (suggested by Knuth) is roughly
- // (sqrt(5) - 1) / 2 * 2^64.
- constexpr uint64_t kPhi = uint64_t{0x9e3779b97f4a7c15};
- return ((kPhi * h) >> 32) & (num_buckets_ - 1);
- }
-
- // Return a power of two no less than max(kMinTableSize, n).
- // Assumes either n < kMinTableSize or n is a power of two.
- size_type TableSize(size_type n) {
- return n < static_cast<size_type>(kMinTableSize)
- ? static_cast<size_type>(kMinTableSize)
- : n;
- }
-
- // Use alloc_ to allocate an array of n objects of type U.
- template <typename U>
- U* Alloc(size_type n) {
- using alloc_type = typename Allocator::template rebind<U>::other;
- return alloc_type(alloc_).allocate(n);
- }
-
- // Use alloc_ to deallocate an array of n objects of type U.
- template <typename U>
- void Dealloc(U* t, size_type n) {
- using alloc_type = typename Allocator::template rebind<U>::other;
- alloc_type(alloc_).deallocate(t, n);
- }
-
- void DestroyNode(Node* node) {
- if (alloc_.arena() == nullptr) {
- delete node;
- }
- }
-
- void DestroyTree(Tree* tree) {
- if (alloc_.arena() == nullptr) {
- delete tree;
- }
- }
-
- void** CreateEmptyTable(size_type n) {
- GOOGLE_DCHECK(n >= kMinTableSize);
- GOOGLE_DCHECK_EQ(n & (n - 1), 0u);
- void** result = Alloc<void*>(n);
- memset(result, 0, n * sizeof(result[0]));
- return result;
- }
-
- // Return a randomish value.
- size_type Seed() const {
- // We get a little bit of randomness from the address of the map. The
- // lower bits are not very random, due to alignment, so we discard them
- // and shift the higher bits into their place.
- size_type s = reinterpret_cast<uintptr_t>(this) >> 4;
-#if !defined(GOOGLE_PROTOBUF_NO_RDTSC)
-#if defined(__APPLE__)
- // Use a commpage-based fast time function on Apple environments (MacOS,
- // iOS, tvOS, watchOS, etc).
- s += mach_absolute_time();
-#elif defined(__x86_64__) && defined(__GNUC__)
- uint32_t hi, lo;
- asm volatile("rdtsc" : "=a"(lo), "=d"(hi));
- s += ((static_cast<uint64_t>(hi) << 32) | lo);
-#elif defined(__aarch64__) && defined(__GNUC__)
- // There is no rdtsc on ARMv8. CNTVCT_EL0 is the virtual counter of the
- // system timer. It runs at a different frequency than the CPU's, but is
- // the best source of time-based entropy we get.
- uint64_t virtual_timer_value;
- asm volatile("mrs %0, cntvct_el0" : "=r"(virtual_timer_value));
- s += virtual_timer_value;
-#endif
-#endif // !defined(GOOGLE_PROTOBUF_NO_RDTSC)
- return s;
- }
-
- friend class Arena;
- using InternalArenaConstructable_ = void;
- using DestructorSkippable_ = void;
-
- size_type num_elements_;
- size_type num_buckets_;
- size_type seed_;
- size_type index_of_first_non_null_;
- void** table_; // an array with num_buckets_ entries
- Allocator alloc_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(InnerMap);
- }; // end of class InnerMap
-
- template <typename LookupKey>
- using key_arg = typename internal::TransparentSupport<
- key_type>::template key_arg<LookupKey>;
-
- public:
- // Iterators
- class const_iterator {
- using InnerIt = typename InnerMap::const_iterator;
-
- public:
- using iterator_category = std::forward_iterator_tag;
- using value_type = typename Map::value_type;
- using difference_type = ptrdiff_t;
- using pointer = const value_type*;
- using reference = const value_type&;
-
- const_iterator() {}
- explicit const_iterator(const InnerIt& it) : it_(it) {}
-
- const_reference operator*() const { return *it_; }
- const_pointer operator->() const { return &(operator*()); }
-
- const_iterator& operator++() {
- ++it_;
- return *this;
- }
- const_iterator operator++(int) { return const_iterator(it_++); }
-
- friend bool operator==(const const_iterator& a, const const_iterator& b) {
- return a.it_ == b.it_;
- }
- friend bool operator!=(const const_iterator& a, const const_iterator& b) {
- return !(a == b);
- }
-
- private:
- InnerIt it_;
- };
-
- class iterator {
- using InnerIt = typename InnerMap::iterator;
-
- public:
- using iterator_category = std::forward_iterator_tag;
- using value_type = typename Map::value_type;
- using difference_type = ptrdiff_t;
- using pointer = value_type*;
- using reference = value_type&;
-
- iterator() {}
- explicit iterator(const InnerIt& it) : it_(it) {}
-
- reference operator*() const { return *it_; }
- pointer operator->() const { return &(operator*()); }
-
- iterator& operator++() {
- ++it_;
- return *this;
- }
- iterator operator++(int) { return iterator(it_++); }
-
- // Allow implicit conversion to const_iterator.
- operator const_iterator() const { // NOLINT(runtime/explicit)
- return const_iterator(typename InnerMap::const_iterator(it_));
- }
-
- friend bool operator==(const iterator& a, const iterator& b) {
- return a.it_ == b.it_;
- }
- friend bool operator!=(const iterator& a, const iterator& b) {
- return !(a == b);
- }
-
- private:
- friend class Map;
-
- InnerIt it_;
- };
-
- iterator begin() { return iterator(elements_.begin()); }
- iterator end() { return iterator(elements_.end()); }
- const_iterator begin() const { return const_iterator(elements_.begin()); }
- const_iterator end() const { return const_iterator(elements_.end()); }
- const_iterator cbegin() const { return begin(); }
- const_iterator cend() const { return end(); }
-
- // Capacity
- size_type size() const { return elements_.size(); }
- bool empty() const { return size() == 0; }
-
- // Element access
- template <typename K = key_type>
- T& operator[](const key_arg<K>& key) {
- return elements_[key].second;
- }
- template <
- typename K = key_type,
- // Disable for integral types to reduce code bloat.
- typename = typename std::enable_if<!std::is_integral<K>::value>::type>
- T& operator[](key_arg<K>&& key) {
- return elements_[std::forward<K>(key)].second;
- }
-
- template <typename K = key_type>
- const T& at(const key_arg<K>& key) const {
- const_iterator it = find(key);
- GOOGLE_CHECK(it != end()) << "key not found: " << static_cast<Key>(key);
- return it->second;
- }
-
- template <typename K = key_type>
- T& at(const key_arg<K>& key) {
- iterator it = find(key);
- GOOGLE_CHECK(it != end()) << "key not found: " << static_cast<Key>(key);
- return it->second;
- }
-
- // Lookup
- template <typename K = key_type>
- size_type count(const key_arg<K>& key) const {
- return find(key) == end() ? 0 : 1;
- }
-
- template <typename K = key_type>
- const_iterator find(const key_arg<K>& key) const {
- return const_iterator(elements_.find(key));
- }
- template <typename K = key_type>
- iterator find(const key_arg<K>& key) {
- return iterator(elements_.find(key));
- }
-
- template <typename K = key_type>
- bool contains(const key_arg<K>& key) const {
- return find(key) != end();
- }
-
- template <typename K = key_type>
- std::pair<const_iterator, const_iterator> equal_range(
- const key_arg<K>& key) const {
- const_iterator it = find(key);
- if (it == end()) {
- return std::pair<const_iterator, const_iterator>(it, it);
- } else {
- const_iterator begin = it++;
- return std::pair<const_iterator, const_iterator>(begin, it);
- }
- }
-
- template <typename K = key_type>
- std::pair<iterator, iterator> equal_range(const key_arg<K>& key) {
- iterator it = find(key);
- if (it == end()) {
- return std::pair<iterator, iterator>(it, it);
- } else {
- iterator begin = it++;
- return std::pair<iterator, iterator>(begin, it);
- }
- }
-
- // insert
- template <typename K, typename... Args>
- std::pair<iterator, bool> try_emplace(K&& k, Args&&... args) {
- auto p =
- elements_.try_emplace(std::forward<K>(k), std::forward<Args>(args)...);
- return std::pair<iterator, bool>(iterator(p.first), p.second);
- }
- std::pair<iterator, bool> insert(const value_type& value) {
- return try_emplace(value.first, value.second);
- }
- std::pair<iterator, bool> insert(value_type&& value) {
- return try_emplace(value.first, std::move(value.second));
- }
- template <typename... Args>
- std::pair<iterator, bool> emplace(Args&&... args) {
- return insert(value_type(std::forward<Args>(args)...));
- }
- template <class InputIt>
- void insert(InputIt first, InputIt last) {
- for (; first != last; ++first) {
- try_emplace(first->first, first->second);
- }
- }
- void insert(std::initializer_list<value_type> values) {
- insert(values.begin(), values.end());
- }
-
- // Erase and clear
- template <typename K = key_type>
- size_type erase(const key_arg<K>& key) {
- iterator it = find(key);
- if (it == end()) {
- return 0;
- } else {
- erase(it);
- return 1;
- }
- }
- iterator erase(iterator pos) {
- iterator i = pos++;
- elements_.erase(i.it_);
- return pos;
- }
- void erase(iterator first, iterator last) {
- while (first != last) {
- first = erase(first);
- }
- }
- void clear() { elements_.clear(); }
-
- // Assign
- Map& operator=(const Map& other) {
- if (this != &other) {
- clear();
- insert(other.begin(), other.end());
- }
- return *this;
- }
-
- void swap(Map& other) {
- if (arena() == other.arena()) {
- InternalSwap(other);
- } else {
- // TODO(zuguang): optimize this. The temporary copy can be allocated
- // in the same arena as the other message, and the "other = copy" can
- // be replaced with the fast-path swap above.
- Map copy = *this;
- *this = other;
- other = copy;
- }
- }
-
- void InternalSwap(Map& other) { elements_.Swap(&other.elements_); }
-
- // Access to hasher. Currently this returns a copy, but it may
- // be modified to return a const reference in the future.
- hasher hash_function() const { return elements_.hash_function(); }
-
- size_t SpaceUsedExcludingSelfLong() const {
- if (empty()) return 0;
- return elements_.SpaceUsedInternal() + internal::SpaceUsedInValues(this);
- }
-
- private:
- Arena* arena() const { return elements_.arena(); }
- InnerMap elements_;
-
- friend class Arena;
- using InternalArenaConstructable_ = void;
- using DestructorSkippable_ = void;
- template <typename Derived, typename K, typename V,
- internal::WireFormatLite::FieldType key_wire_type,
- internal::WireFormatLite::FieldType value_wire_type>
- friend class internal::MapFieldLite;
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MAP_H__
diff --git a/include/google/protobuf/map_entry.h b/include/google/protobuf/map_entry.h
deleted file mode 100644
index 536dec9d0d..0000000000
--- a/include/google/protobuf/map_entry.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_ENTRY_H__
-#define GOOGLE_PROTOBUF_MAP_ENTRY_H__
-
-#include <google/protobuf/port.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/map_entry_lite.h>
-#include <google/protobuf/map_type_handler.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/unknown_field_set.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-class Arena;
-namespace internal {
-template <typename Derived, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapField;
-}
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// MapEntry is the returned google::protobuf::Message when calling AddMessage of
-// google::protobuf::Reflection. In order to let it work with generated message
-// reflection, its in-memory type is the same as generated message with the same
-// fields. However, in order to decide the in-memory type of key/value, we need
-// to know both their cpp type in generated api and proto type. In
-// implementation, all in-memory types have related wire format functions to
-// support except ArenaStringPtr. Therefore, we need to define another type with
-// supporting wire format functions. Since this type is only used as return type
-// of MapEntry accessors, it's named MapEntry accessor type.
-//
-// cpp type: the type visible to users in public API.
-// proto type: WireFormatLite::FieldType of the field.
-// in-memory type: type of the data member used to stored this field.
-// MapEntry accessor type: type used in MapEntry getters/mutators to access the
-// field.
-//
-// cpp type | proto type | in-memory type | MapEntry accessor type
-// int32_t TYPE_INT32 int32_t int32_t
-// int32_t TYPE_FIXED32 int32_t int32_t
-// string TYPE_STRING ArenaStringPtr string
-// FooEnum TYPE_ENUM int int
-// FooMessage TYPE_MESSAGE FooMessage* FooMessage
-//
-// The in-memory types of primitive types can be inferred from its proto type,
-// while we need to explicitly specify the cpp type if proto type is
-// TYPE_MESSAGE to infer the in-memory type.
-template <typename Derived, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapEntry : public MapEntryImpl<Derived, Message, Key, Value,
- kKeyFieldType, kValueFieldType> {
- public:
- constexpr MapEntry() {}
- explicit MapEntry(Arena* arena)
- : MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
- kValueFieldType>(arena) {}
- ~MapEntry() override {
- Message::_internal_metadata_.template Delete<UnknownFieldSet>();
- }
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
-
- typedef typename MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
- kValueFieldType>::KeyTypeHandler KeyTypeHandler;
- typedef
- typename MapEntryImpl<Derived, Message, Key, Value, kKeyFieldType,
- kValueFieldType>::ValueTypeHandler ValueTypeHandler;
- size_t SpaceUsedLong() const override {
- size_t size = sizeof(Derived);
- size += KeyTypeHandler::SpaceUsedInMapEntryLong(this->key_);
- size += ValueTypeHandler::SpaceUsedInMapEntryLong(this->value_);
- return size;
- }
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::Arena;
- template <typename C, typename K, typename V,
- WireFormatLite::FieldType k_wire_type, WireFormatLite::FieldType>
- friend class internal::MapField;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntry);
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MAP_ENTRY_H__
diff --git a/include/google/protobuf/map_entry_lite.h b/include/google/protobuf/map_entry_lite.h
deleted file mode 100644
index 6b08cd92ba..0000000000
--- a/include/google/protobuf/map_entry_lite.h
+++ /dev/null
@@ -1,563 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__
-#define GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__
-
-#include <assert.h>
-
-#include <algorithm>
-#include <string>
-#include <utility>
-
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/map.h>
-#include <google/protobuf/map_type_handler.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-template <typename Derived, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapEntry;
-template <typename Derived, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapFieldLite;
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// MoveHelper::Move is used to set *dest. It copies *src, or moves it (in
-// the C++11 sense), or swaps it. *src is left in a sane state for
-// subsequent destruction, but shouldn't be used for anything.
-template <bool is_enum, bool is_message, bool is_stringlike, typename T>
-struct MoveHelper { // primitives
- static void Move(T* src, T* dest) { *dest = *src; }
-};
-
-template <bool is_message, bool is_stringlike, typename T>
-struct MoveHelper<true, is_message, is_stringlike, T> { // enums
- static void Move(T* src, T* dest) { *dest = *src; }
- // T is an enum here, so allow conversions to and from int.
- static void Move(T* src, int* dest) { *dest = static_cast<int>(*src); }
- static void Move(int* src, T* dest) { *dest = static_cast<T>(*src); }
-};
-
-template <bool is_stringlike, typename T>
-struct MoveHelper<false, true, is_stringlike, T> { // messages
- static void Move(T* src, T* dest) { dest->Swap(src); }
-};
-
-template <typename T>
-struct MoveHelper<false, false, true, T> { // strings and similar
- static void Move(T* src, T* dest) {
- *dest = std::move(*src);
- }
-};
-
-// MapEntryImpl is used to implement parsing and serialization of map entries.
-// It uses Curious Recursive Template Pattern (CRTP) to provide the type of
-// the eventual code to the template code.
-template <typename Derived, typename Base, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapEntryImpl : public Base {
- public:
- typedef MapEntryFuncs<Key, Value, kKeyFieldType, kValueFieldType> Funcs;
-
- protected:
- // Provide utilities to parse/serialize key/value. Provide utilities to
- // manipulate internal stored type.
- typedef MapTypeHandler<kKeyFieldType, Key> KeyTypeHandler;
- typedef MapTypeHandler<kValueFieldType, Value> ValueTypeHandler;
-
- // Define internal memory layout. Strings and messages are stored as
- // pointers, while other types are stored as values.
- typedef typename KeyTypeHandler::TypeOnMemory KeyOnMemory;
- typedef typename ValueTypeHandler::TypeOnMemory ValueOnMemory;
-
- // Enum type cannot be used for MapTypeHandler::Read. Define a type
- // which will replace Enum with int.
- typedef typename KeyTypeHandler::MapEntryAccessorType KeyMapEntryAccessorType;
- typedef
- typename ValueTypeHandler::MapEntryAccessorType ValueMapEntryAccessorType;
-
- // Constants for field number.
- static const int kKeyFieldNumber = 1;
- static const int kValueFieldNumber = 2;
-
- // Constants for field tag.
- static const uint8_t kKeyTag =
- GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kKeyFieldNumber, KeyTypeHandler::kWireType);
- static const uint8_t kValueTag = GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(
- kValueFieldNumber, ValueTypeHandler::kWireType);
- static const size_t kTagSize = 1;
-
- public:
- // Work-around for a compiler bug (see repeated_field.h).
- typedef void MapEntryHasMergeTypeTrait;
- typedef Derived EntryType;
- typedef Key EntryKeyType;
- typedef Value EntryValueType;
- static const WireFormatLite::FieldType kEntryKeyFieldType = kKeyFieldType;
- static const WireFormatLite::FieldType kEntryValueFieldType = kValueFieldType;
-
- constexpr MapEntryImpl()
- : key_(KeyTypeHandler::Constinit()),
- value_(ValueTypeHandler::Constinit()),
- _has_bits_{} {}
-
- explicit MapEntryImpl(Arena* arena)
- : Base(arena),
- key_(KeyTypeHandler::Constinit()),
- value_(ValueTypeHandler::Constinit()),
- _has_bits_{} {}
-
- ~MapEntryImpl() override {
- if (Base::GetArenaForAllocation() != nullptr) return;
- KeyTypeHandler::DeleteNoArena(key_);
- ValueTypeHandler::DeleteNoArena(value_);
- }
-
- // accessors ======================================================
-
- virtual inline const KeyMapEntryAccessorType& key() const {
- return KeyTypeHandler::GetExternalReference(key_);
- }
- virtual inline const ValueMapEntryAccessorType& value() const {
- return ValueTypeHandler::DefaultIfNotInitialized(value_);
- }
- inline KeyMapEntryAccessorType* mutable_key() {
- set_has_key();
- return KeyTypeHandler::EnsureMutable(&key_, Base::GetArenaForAllocation());
- }
- inline ValueMapEntryAccessorType* mutable_value() {
- set_has_value();
- return ValueTypeHandler::EnsureMutable(&value_,
- Base::GetArenaForAllocation());
- }
-
- // implements MessageLite =========================================
-
- // MapEntryImpl is for implementation only and this function isn't called
- // anywhere. Just provide a fake implementation here for MessageLite.
- std::string GetTypeName() const override { return ""; }
-
- void CheckTypeAndMergeFrom(const MessageLite& other) override {
- MergeFromInternal(*::google::protobuf::internal::DownCast<const Derived*>(&other));
- }
-
- const char* _InternalParse(const char* ptr, ParseContext* ctx) final {
- while (!ctx->Done(&ptr)) {
- uint32_t tag;
- ptr = ReadTag(ptr, &tag);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- if (tag == kKeyTag) {
- set_has_key();
- KeyMapEntryAccessorType* key = mutable_key();
- ptr = KeyTypeHandler::Read(ptr, ctx, key);
- if (!Derived::ValidateKey(key)) return nullptr;
- } else if (tag == kValueTag) {
- set_has_value();
- ValueMapEntryAccessorType* value = mutable_value();
- ptr = ValueTypeHandler::Read(ptr, ctx, value);
- if (!Derived::ValidateValue(value)) return nullptr;
- } else {
- if (tag == 0 || WireFormatLite::GetTagWireType(tag) ==
- WireFormatLite::WIRETYPE_END_GROUP) {
- ctx->SetLastTag(tag);
- return ptr;
- }
- ptr = UnknownFieldParse(tag, static_cast<std::string*>(nullptr), ptr,
- ctx);
- }
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- }
- return ptr;
- }
-
- size_t ByteSizeLong() const override {
- size_t size = 0;
- size += kTagSize + static_cast<size_t>(KeyTypeHandler::ByteSize(key()));
- size += kTagSize + static_cast<size_t>(ValueTypeHandler::ByteSize(value()));
- return size;
- }
-
- ::uint8_t* _InternalSerialize(
- ::uint8_t* ptr, io::EpsCopyOutputStream* stream) const override {
- ptr = KeyTypeHandler::Write(kKeyFieldNumber, key(), ptr, stream);
- return ValueTypeHandler::Write(kValueFieldNumber, value(), ptr, stream);
- }
-
- // Don't override SerializeWithCachedSizesToArray. Use MessageLite's.
-
- int GetCachedSize() const override {
- int size = 0;
- size += has_key() ? static_cast<int>(kTagSize) +
- KeyTypeHandler::GetCachedSize(key())
- : 0;
- size += has_value() ? static_cast<int>(kTagSize) +
- ValueTypeHandler::GetCachedSize(value())
- : 0;
- return size;
- }
-
- bool IsInitialized() const override {
- return ValueTypeHandler::IsInitialized(value_);
- }
-
- Base* New(Arena* arena) const override {
- Derived* entry = Arena::CreateMessage<Derived>(arena);
- return entry;
- }
-
- protected:
- // We can't declare this function directly here as it would hide the other
- // overload (const Message&).
- void MergeFromInternal(const MapEntryImpl& from) {
- if (from._has_bits_[0]) {
- if (from.has_key()) {
- KeyTypeHandler::EnsureMutable(&key_, Base::GetArenaForAllocation());
- KeyTypeHandler::Merge(from.key(), &key_, Base::GetArenaForAllocation());
- set_has_key();
- }
- if (from.has_value()) {
- ValueTypeHandler::EnsureMutable(&value_, Base::GetArenaForAllocation());
- ValueTypeHandler::Merge(from.value(), &value_,
- Base::GetArenaForAllocation());
- set_has_value();
- }
- }
- }
-
- public:
- void Clear() override {
- KeyTypeHandler::Clear(&key_, Base::GetArenaForAllocation());
- ValueTypeHandler::Clear(&value_, Base::GetArenaForAllocation());
- clear_has_key();
- clear_has_value();
- }
-
- // Parsing using MergePartialFromCodedStream, above, is not as
- // efficient as it could be. This helper class provides a speedier way.
- template <typename MapField, typename Map>
- class Parser {
- public:
- explicit Parser(MapField* mf) : mf_(mf), map_(mf->MutableMap()) {}
- ~Parser() {
- if (entry_ != nullptr && entry_->GetArenaForAllocation() == nullptr)
- delete entry_;
- }
-
- const char* _InternalParse(const char* ptr, ParseContext* ctx) {
- if (PROTOBUF_PREDICT_TRUE(!ctx->Done(&ptr) && *ptr == kKeyTag)) {
- ptr = KeyTypeHandler::Read(ptr + 1, ctx, &key_);
- if (PROTOBUF_PREDICT_FALSE(!ptr || !Derived::ValidateKey(&key_))) {
- return nullptr;
- }
- if (PROTOBUF_PREDICT_TRUE(!ctx->Done(&ptr) && *ptr == kValueTag)) {
- typename Map::size_type map_size = map_->size();
- value_ptr_ = &(*map_)[key_];
- if (PROTOBUF_PREDICT_TRUE(map_size != map_->size())) {
- using T =
- typename MapIf<ValueTypeHandler::kIsEnum, int*, Value*>::type;
- ptr = ValueTypeHandler::Read(ptr + 1, ctx,
- reinterpret_cast<T>(value_ptr_));
- if (PROTOBUF_PREDICT_FALSE(!ptr ||
- !Derived::ValidateValue(value_ptr_))) {
- map_->erase(key_); // Failure! Undo insertion.
- return nullptr;
- }
- if (PROTOBUF_PREDICT_TRUE(ctx->Done(&ptr))) return ptr;
- if (!ptr) return nullptr;
- NewEntry();
- ValueMover::Move(value_ptr_, entry_->mutable_value());
- map_->erase(key_);
- goto move_key;
- }
- } else {
- if (!ptr) return nullptr;
- }
- NewEntry();
- move_key:
- KeyMover::Move(&key_, entry_->mutable_key());
- } else {
- if (!ptr) return nullptr;
- NewEntry();
- }
- ptr = entry_->_InternalParse(ptr, ctx);
- if (ptr) UseKeyAndValueFromEntry();
- return ptr;
- }
-
- template <typename UnknownType>
- const char* ParseWithEnumValidation(const char* ptr, ParseContext* ctx,
- bool (*is_valid)(int),
- uint32_t field_num,
- InternalMetadata* metadata) {
- auto entry = NewEntry();
- ptr = entry->_InternalParse(ptr, ctx);
- if (!ptr) return nullptr;
- if (is_valid(entry->value())) {
- UseKeyAndValueFromEntry();
- } else {
- WriteLengthDelimited(field_num, entry->SerializeAsString(),
- metadata->mutable_unknown_fields<UnknownType>());
- }
- return ptr;
- }
-
- MapEntryImpl* NewEntry() { return entry_ = mf_->NewEntry(); }
-
- const Key& key() const { return key_; }
- const Value& value() const { return *value_ptr_; }
-
- const Key& entry_key() const { return entry_->key(); }
- const Value& entry_value() const { return entry_->value(); }
-
- private:
- void UseKeyAndValueFromEntry() {
- // Update key_ in case we need it later (because key() is called).
- // This is potentially inefficient, especially if the key is
- // expensive to copy (e.g., a long string), but this is a cold
- // path, so it's not a big deal.
- key_ = entry_->key();
- value_ptr_ = &(*map_)[key_];
- ValueMover::Move(entry_->mutable_value(), value_ptr_);
- }
-
- // After reading a key and value successfully, and inserting that data
- // into map_, we are not at the end of the input. This is unusual, but
- // allowed by the spec.
- bool ReadBeyondKeyValuePair(io::CodedInputStream* input) PROTOBUF_COLD {
- NewEntry();
- ValueMover::Move(value_ptr_, entry_->mutable_value());
- map_->erase(key_);
- KeyMover::Move(&key_, entry_->mutable_key());
- const bool result = entry_->MergePartialFromCodedStream(input);
- if (result) UseKeyAndValueFromEntry();
- return result;
- }
-
- typedef MoveHelper<KeyTypeHandler::kIsEnum, KeyTypeHandler::kIsMessage,
- KeyTypeHandler::kWireType ==
- WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
- Key>
- KeyMover;
- typedef MoveHelper<ValueTypeHandler::kIsEnum, ValueTypeHandler::kIsMessage,
- ValueTypeHandler::kWireType ==
- WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
- Value>
- ValueMover;
-
- MapField* const mf_;
- Map* const map_;
- Key key_;
- Value* value_ptr_;
- MapEntryImpl* entry_ = nullptr;
- };
-
- protected:
- void set_has_key() { _has_bits_[0] |= 0x00000001u; }
- bool has_key() const { return (_has_bits_[0] & 0x00000001u) != 0; }
- void clear_has_key() { _has_bits_[0] &= ~0x00000001u; }
- void set_has_value() { _has_bits_[0] |= 0x00000002u; }
- bool has_value() const { return (_has_bits_[0] & 0x00000002u) != 0; }
- void clear_has_value() { _has_bits_[0] &= ~0x00000002u; }
-
- public:
- inline Arena* GetArena() const { return Base::GetArena(); }
-
- protected: // Needed for constructing tables
- KeyOnMemory key_;
- ValueOnMemory value_;
- uint32_t _has_bits_[1];
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::Arena;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- template <typename C, typename K, typename V, WireFormatLite::FieldType,
- WireFormatLite::FieldType>
- friend class internal::MapEntry;
- template <typename C, typename K, typename V, WireFormatLite::FieldType,
- WireFormatLite::FieldType>
- friend class internal::MapFieldLite;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntryImpl);
-};
-
-template <typename T, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapEntryLite : public MapEntryImpl<T, MessageLite, Key, Value,
- kKeyFieldType, kValueFieldType> {
- public:
- typedef MapEntryImpl<T, MessageLite, Key, Value, kKeyFieldType,
- kValueFieldType>
- SuperType;
- constexpr MapEntryLite() {}
- explicit MapEntryLite(Arena* arena) : SuperType(arena) {}
- ~MapEntryLite() override {
- MessageLite::_internal_metadata_.template Delete<std::string>();
- }
- void MergeFrom(const MapEntryLite& other) { MergeFromInternal(other); }
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapEntryLite);
-};
-
-// Helpers for deterministic serialization =============================
-
-// Iterator base for MapSorterFlat and MapSorterPtr.
-template <typename storage_type>
-struct MapSorterIt {
- storage_type* ptr;
- MapSorterIt(storage_type* ptr) : ptr(ptr) {}
- bool operator==(const MapSorterIt& other) const { return ptr == other.ptr; }
- bool operator!=(const MapSorterIt& other) const { return !(*this == other); }
- MapSorterIt& operator++() { ++ptr; return *this; }
- MapSorterIt operator++(int) { auto other = *this; ++ptr; return other; }
- MapSorterIt operator+(int v) { return MapSorterIt{ptr + v}; }
-};
-
-// MapSorterFlat stores keys inline with pointers to map entries, so that
-// keys can be compared without indirection. This type is used for maps with
-// keys that are not strings.
-template <typename MapT>
-class MapSorterFlat {
- public:
- using value_type = typename MapT::value_type;
- using storage_type = std::pair<typename MapT::key_type, const value_type*>;
-
- // This const_iterator dereferenes to the map entry stored in the sorting
- // array pairs. This is the same interface as the Map::const_iterator type,
- // and allows generated code to use the same loop body with either form:
- // for (const auto& entry : map) { ... }
- // for (const auto& entry : MapSorterFlat(map)) { ... }
- struct const_iterator : public MapSorterIt<storage_type> {
- using pointer = const typename MapT::value_type*;
- using reference = const typename MapT::value_type&;
- using MapSorterIt<storage_type>::MapSorterIt;
-
- pointer operator->() const { return this->ptr->second; }
- reference operator*() const { return *this->operator->(); }
- };
-
- explicit MapSorterFlat(const MapT& m)
- : size_(m.size()), items_(size_ ? new storage_type[size_] : nullptr) {
- if (!size_) return;
- storage_type* it = &items_[0];
- for (const auto& entry : m) {
- *it++ = {entry.first, &entry};
- }
- std::sort(&items_[0], &items_[size_],
- [](const storage_type& a, const storage_type& b) {
- return a.first < b.first;
- });
- }
- size_t size() const { return size_; }
- const_iterator begin() const { return {items_.get()}; }
- const_iterator end() const { return {items_.get() + size_}; }
-
- private:
- size_t size_;
- std::unique_ptr<storage_type[]> items_;
-};
-
-// MapSorterPtr stores and sorts pointers to map entries. This type is used for
-// maps with keys that are strings.
-template <typename MapT>
-class MapSorterPtr {
- public:
- using value_type = typename MapT::value_type;
- using storage_type = const typename MapT::value_type*;
-
- // This const_iterator dereferenes the map entry pointer stored in the sorting
- // array. This is the same interface as the Map::const_iterator type, and
- // allows generated code to use the same loop body with either form:
- // for (const auto& entry : map) { ... }
- // for (const auto& entry : MapSorterPtr(map)) { ... }
- struct const_iterator : public MapSorterIt<storage_type> {
- using pointer = const typename MapT::value_type*;
- using reference = const typename MapT::value_type&;
- using MapSorterIt<storage_type>::MapSorterIt;
-
- pointer operator->() const { return *this->ptr; }
- reference operator*() const { return *this->operator->(); }
- };
-
- explicit MapSorterPtr(const MapT& m)
- : size_(m.size()), items_(size_ ? new storage_type[size_] : nullptr) {
- if (!size_) return;
- storage_type* it = &items_[0];
- for (const auto& entry : m) {
- *it++ = &entry;
- }
- std::sort(&items_[0], &items_[size_],
- [](const storage_type& a, const storage_type& b) {
- return a->first < b->first;
- });
- }
- size_t size() const { return size_; }
- const_iterator begin() const { return {items_.get()}; }
- const_iterator end() const { return {items_.get() + size_}; }
-
- private:
- size_t size_;
- std::unique_ptr<storage_type[]> items_;
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MAP_ENTRY_LITE_H__
diff --git a/include/google/protobuf/map_field.h b/include/google/protobuf/map_field.h
deleted file mode 100644
index 287d58f312..0000000000
--- a/include/google/protobuf/map_field.h
+++ /dev/null
@@ -1,946 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_FIELD_H__
-#define GOOGLE_PROTOBUF_MAP_FIELD_H__
-
-#include <atomic>
-#include <functional>
-
-#include <google/protobuf/arena.h>
-#include <google/protobuf/stubs/mutex.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/map_entry.h>
-#include <google/protobuf/map_field_lite.h>
-#include <google/protobuf/map_type_handler.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h>
-#include <google/protobuf/unknown_field_set.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-class DynamicMessage;
-class MapIterator;
-
-// Microsoft compiler complains about non-virtual destructor,
-// even when the destructor is private.
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4265)
-#endif // _MSC_VER
-
-#define TYPE_CHECK(EXPECTEDTYPE, METHOD) \
- if (type() != EXPECTEDTYPE) { \
- GOOGLE_LOG(FATAL) << "Protocol Buffer map usage error:\n" \
- << METHOD << " type does not match\n" \
- << " Expected : " \
- << FieldDescriptor::CppTypeName(EXPECTEDTYPE) << "\n" \
- << " Actual : " << FieldDescriptor::CppTypeName(type()); \
- }
-
-// MapKey is an union type for representing any possible
-// map key.
-class PROTOBUF_EXPORT MapKey {
- public:
- MapKey() : type_() {}
- MapKey(const MapKey& other) : type_() { CopyFrom(other); }
-
- MapKey& operator=(const MapKey& other) {
- CopyFrom(other);
- return *this;
- }
-
- ~MapKey() {
- if (type_ == FieldDescriptor::CPPTYPE_STRING) {
- val_.string_value_.Destruct();
- }
- }
-
- FieldDescriptor::CppType type() const {
- if (type_ == FieldDescriptor::CppType()) {
- GOOGLE_LOG(FATAL) << "Protocol Buffer map usage error:\n"
- << "MapKey::type MapKey is not initialized. "
- << "Call set methods to initialize MapKey.";
- }
- return type_;
- }
-
- void SetInt64Value(int64_t value) {
- SetType(FieldDescriptor::CPPTYPE_INT64);
- val_.int64_value_ = value;
- }
- void SetUInt64Value(uint64_t value) {
- SetType(FieldDescriptor::CPPTYPE_UINT64);
- val_.uint64_value_ = value;
- }
- void SetInt32Value(int32_t value) {
- SetType(FieldDescriptor::CPPTYPE_INT32);
- val_.int32_value_ = value;
- }
- void SetUInt32Value(uint32_t value) {
- SetType(FieldDescriptor::CPPTYPE_UINT32);
- val_.uint32_value_ = value;
- }
- void SetBoolValue(bool value) {
- SetType(FieldDescriptor::CPPTYPE_BOOL);
- val_.bool_value_ = value;
- }
- void SetStringValue(std::string val) {
- SetType(FieldDescriptor::CPPTYPE_STRING);
- *val_.string_value_.get_mutable() = std::move(val);
- }
-
- int64_t GetInt64Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT64, "MapKey::GetInt64Value");
- return val_.int64_value_;
- }
- uint64_t GetUInt64Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT64, "MapKey::GetUInt64Value");
- return val_.uint64_value_;
- }
- int32_t GetInt32Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT32, "MapKey::GetInt32Value");
- return val_.int32_value_;
- }
- uint32_t GetUInt32Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT32, "MapKey::GetUInt32Value");
- return val_.uint32_value_;
- }
- bool GetBoolValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_BOOL, "MapKey::GetBoolValue");
- return val_.bool_value_;
- }
- const std::string& GetStringValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_STRING, "MapKey::GetStringValue");
- return val_.string_value_.get();
- }
-
- bool operator<(const MapKey& other) const {
- if (type_ != other.type_) {
- // We could define a total order that handles this case, but
- // there currently no need. So, for now, fail.
- GOOGLE_LOG(FATAL) << "Unsupported: type mismatch";
- }
- switch (type()) {
- case FieldDescriptor::CPPTYPE_DOUBLE:
- case FieldDescriptor::CPPTYPE_FLOAT:
- case FieldDescriptor::CPPTYPE_ENUM:
- case FieldDescriptor::CPPTYPE_MESSAGE:
- GOOGLE_LOG(FATAL) << "Unsupported";
- return false;
- case FieldDescriptor::CPPTYPE_STRING:
- return val_.string_value_.get() < other.val_.string_value_.get();
- case FieldDescriptor::CPPTYPE_INT64:
- return val_.int64_value_ < other.val_.int64_value_;
- case FieldDescriptor::CPPTYPE_INT32:
- return val_.int32_value_ < other.val_.int32_value_;
- case FieldDescriptor::CPPTYPE_UINT64:
- return val_.uint64_value_ < other.val_.uint64_value_;
- case FieldDescriptor::CPPTYPE_UINT32:
- return val_.uint32_value_ < other.val_.uint32_value_;
- case FieldDescriptor::CPPTYPE_BOOL:
- return val_.bool_value_ < other.val_.bool_value_;
- }
- return false;
- }
-
- bool operator==(const MapKey& other) const {
- if (type_ != other.type_) {
- // To be consistent with operator<, we don't allow this either.
- GOOGLE_LOG(FATAL) << "Unsupported: type mismatch";
- }
- switch (type()) {
- case FieldDescriptor::CPPTYPE_DOUBLE:
- case FieldDescriptor::CPPTYPE_FLOAT:
- case FieldDescriptor::CPPTYPE_ENUM:
- case FieldDescriptor::CPPTYPE_MESSAGE:
- GOOGLE_LOG(FATAL) << "Unsupported";
- break;
- case FieldDescriptor::CPPTYPE_STRING:
- return val_.string_value_.get() == other.val_.string_value_.get();
- case FieldDescriptor::CPPTYPE_INT64:
- return val_.int64_value_ == other.val_.int64_value_;
- case FieldDescriptor::CPPTYPE_INT32:
- return val_.int32_value_ == other.val_.int32_value_;
- case FieldDescriptor::CPPTYPE_UINT64:
- return val_.uint64_value_ == other.val_.uint64_value_;
- case FieldDescriptor::CPPTYPE_UINT32:
- return val_.uint32_value_ == other.val_.uint32_value_;
- case FieldDescriptor::CPPTYPE_BOOL:
- return val_.bool_value_ == other.val_.bool_value_;
- }
- GOOGLE_LOG(FATAL) << "Can't get here.";
- return false;
- }
-
- void CopyFrom(const MapKey& other) {
- SetType(other.type());
- switch (type_) {
- case FieldDescriptor::CPPTYPE_DOUBLE:
- case FieldDescriptor::CPPTYPE_FLOAT:
- case FieldDescriptor::CPPTYPE_ENUM:
- case FieldDescriptor::CPPTYPE_MESSAGE:
- GOOGLE_LOG(FATAL) << "Unsupported";
- break;
- case FieldDescriptor::CPPTYPE_STRING:
- *val_.string_value_.get_mutable() = other.val_.string_value_.get();
- break;
- case FieldDescriptor::CPPTYPE_INT64:
- val_.int64_value_ = other.val_.int64_value_;
- break;
- case FieldDescriptor::CPPTYPE_INT32:
- val_.int32_value_ = other.val_.int32_value_;
- break;
- case FieldDescriptor::CPPTYPE_UINT64:
- val_.uint64_value_ = other.val_.uint64_value_;
- break;
- case FieldDescriptor::CPPTYPE_UINT32:
- val_.uint32_value_ = other.val_.uint32_value_;
- break;
- case FieldDescriptor::CPPTYPE_BOOL:
- val_.bool_value_ = other.val_.bool_value_;
- break;
- }
- }
-
- private:
- template <typename K, typename V>
- friend class internal::TypeDefinedMapFieldBase;
- friend class ::PROTOBUF_NAMESPACE_ID::MapIterator;
- friend class internal::DynamicMapField;
-
- union KeyValue {
- KeyValue() {}
- internal::ExplicitlyConstructed<std::string> string_value_;
- int64_t int64_value_;
- int32_t int32_value_;
- uint64_t uint64_value_;
- uint32_t uint32_value_;
- bool bool_value_;
- } val_;
-
- void SetType(FieldDescriptor::CppType type) {
- if (type_ == type) return;
- if (type_ == FieldDescriptor::CPPTYPE_STRING) {
- val_.string_value_.Destruct();
- }
- type_ = type;
- if (type_ == FieldDescriptor::CPPTYPE_STRING) {
- val_.string_value_.DefaultConstruct();
- }
- }
-
- // type_ is 0 or a valid FieldDescriptor::CppType.
- // Use "CppType()" to indicate zero.
- FieldDescriptor::CppType type_;
-};
-
-} // namespace protobuf
-} // namespace google
-namespace std {
-template <>
-struct hash<::PROTOBUF_NAMESPACE_ID::MapKey> {
- size_t operator()(const ::PROTOBUF_NAMESPACE_ID::MapKey& map_key) const {
- switch (map_key.type()) {
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_DOUBLE:
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_FLOAT:
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_ENUM:
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_MESSAGE:
- GOOGLE_LOG(FATAL) << "Unsupported";
- break;
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_STRING:
- return hash<std::string>()(map_key.GetStringValue());
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_INT64: {
- auto value = map_key.GetInt64Value();
- return hash<decltype(value)>()(value);
- }
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_INT32: {
- auto value = map_key.GetInt32Value();
- return hash<decltype(value)>()(map_key.GetInt32Value());
- }
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_UINT64: {
- auto value = map_key.GetUInt64Value();
- return hash<decltype(value)>()(map_key.GetUInt64Value());
- }
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_UINT32: {
- auto value = map_key.GetUInt32Value();
- return hash<decltype(value)>()(map_key.GetUInt32Value());
- }
- case ::PROTOBUF_NAMESPACE_ID::FieldDescriptor::CPPTYPE_BOOL: {
- return hash<bool>()(map_key.GetBoolValue());
- }
- }
- GOOGLE_LOG(FATAL) << "Can't get here.";
- return 0;
- }
- bool operator()(const ::PROTOBUF_NAMESPACE_ID::MapKey& map_key1,
- const ::PROTOBUF_NAMESPACE_ID::MapKey& map_key2) const {
- return map_key1 < map_key2;
- }
-};
-} // namespace std
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-class ContendedMapCleanTest;
-class GeneratedMessageReflection;
-class MapFieldAccessor;
-
-// This class provides access to map field using reflection, which is the same
-// as those provided for RepeatedPtrField<Message>. It is used for internal
-// reflection implementation only. Users should never use this directly.
-class PROTOBUF_EXPORT MapFieldBase {
- public:
- MapFieldBase()
- : arena_(nullptr), repeated_field_(nullptr), state_(STATE_MODIFIED_MAP) {}
-
- // This constructor is for constant initialized global instances.
- // It uses a linker initialized mutex, so it is not compatible with regular
- // runtime instances.
- // Except in MSVC, where we can't have a constinit mutex.
- // NOLINTNEXTLINE(google-explicit-constructor)
- constexpr MapFieldBase(ConstantInitialized)
- : arena_(nullptr),
- repeated_field_(nullptr),
- mutex_(GOOGLE_PROTOBUF_LINKER_INITIALIZED),
- state_(STATE_MODIFIED_MAP) {}
- explicit MapFieldBase(Arena* arena)
- : arena_(arena), repeated_field_(nullptr), state_(STATE_MODIFIED_MAP) {}
-
- protected:
- ~MapFieldBase() { // "protected" stops users from deleting a `MapFieldBase *`
- GOOGLE_DCHECK(repeated_field_ == nullptr);
- }
- void Destruct();
-
- public:
- // Returns reference to internal repeated field. Data written using
- // Map's api prior to calling this function is guarantted to be
- // included in repeated field.
- const RepeatedPtrFieldBase& GetRepeatedField() const;
-
- // Like above. Returns mutable pointer to the internal repeated field.
- RepeatedPtrFieldBase* MutableRepeatedField();
-
- // Pure virtual map APIs for Map Reflection.
- virtual bool ContainsMapKey(const MapKey& map_key) const = 0;
- virtual bool InsertOrLookupMapValue(const MapKey& map_key,
- MapValueRef* val) = 0;
- virtual bool LookupMapValue(const MapKey& map_key,
- MapValueConstRef* val) const = 0;
- bool LookupMapValue(const MapKey&, MapValueRef*) const = delete;
-
- // Returns whether changes to the map are reflected in the repeated field.
- bool IsRepeatedFieldValid() const;
- // Insures operations after won't get executed before calling this.
- bool IsMapValid() const;
- virtual bool DeleteMapValue(const MapKey& map_key) = 0;
- virtual bool EqualIterator(const MapIterator& a,
- const MapIterator& b) const = 0;
- virtual void MapBegin(MapIterator* map_iter) const = 0;
- virtual void MapEnd(MapIterator* map_iter) const = 0;
- virtual void MergeFrom(const MapFieldBase& other) = 0;
- virtual void Swap(MapFieldBase* other);
- virtual void UnsafeShallowSwap(MapFieldBase* other);
- // Sync Map with repeated field and returns the size of map.
- virtual int size() const = 0;
- virtual void Clear() = 0;
-
- // Returns the number of bytes used by the repeated field, excluding
- // sizeof(*this)
- size_t SpaceUsedExcludingSelfLong() const;
-
- int SpaceUsedExcludingSelf() const {
- return internal::ToIntSize(SpaceUsedExcludingSelfLong());
- }
-
- protected:
- // Gets the size of space used by map field.
- virtual size_t SpaceUsedExcludingSelfNoLock() const;
-
- // Synchronizes the content in Map to RepeatedPtrField if there is any change
- // to Map after last synchronization.
- void SyncRepeatedFieldWithMap() const;
- virtual void SyncRepeatedFieldWithMapNoLock() const;
-
- // Synchronizes the content in RepeatedPtrField to Map if there is any change
- // to RepeatedPtrField after last synchronization.
- void SyncMapWithRepeatedField() const;
- virtual void SyncMapWithRepeatedFieldNoLock() const {}
-
- // Tells MapFieldBase that there is new change to Map.
- void SetMapDirty();
-
- // Tells MapFieldBase that there is new change to RepeatedPtrField.
- void SetRepeatedDirty();
-
- // Provides derived class the access to repeated field.
- void* MutableRepeatedPtrField() const;
-
- void InternalSwap(MapFieldBase* other);
-
- // Support thread sanitizer (tsan) by making const / mutable races
- // more apparent. If one thread calls MutableAccess() while another
- // thread calls either ConstAccess() or MutableAccess(), on the same
- // MapFieldBase-derived object, and there is no synchronization going
- // on between them, tsan will alert.
-#if defined(__SANITIZE_THREAD__) || defined(THREAD_SANITIZER)
- void ConstAccess() const { GOOGLE_CHECK_EQ(seq1_, seq2_); }
- void MutableAccess() {
- if (seq1_ & 1) {
- seq2_ = ++seq1_;
- } else {
- seq1_ = ++seq2_;
- }
- }
- unsigned int seq1_ = 0, seq2_ = 0;
-#else
- void ConstAccess() const {}
- void MutableAccess() {}
-#endif
- enum State {
- STATE_MODIFIED_MAP = 0, // map has newly added data that has not been
- // synchronized to repeated field
- STATE_MODIFIED_REPEATED = 1, // repeated field has newly added data that
- // has not been synchronized to map
- CLEAN = 2, // data in map and repeated field are same
- };
-
- Arena* arena_;
- mutable RepeatedPtrField<Message>* repeated_field_;
-
- mutable internal::WrappedMutex
- mutex_; // The thread to synchronize map and repeated field
- // needs to get lock first;
- mutable std::atomic<State> state_;
-
- private:
- friend class ContendedMapCleanTest;
- friend class GeneratedMessageReflection;
- friend class MapFieldAccessor;
- friend class ::PROTOBUF_NAMESPACE_ID::Reflection;
- friend class ::PROTOBUF_NAMESPACE_ID::DynamicMessage;
-
- // Virtual helper methods for MapIterator. MapIterator doesn't have the
- // type helper for key and value. Call these help methods to deal with
- // different types. Real helper methods are implemented in
- // TypeDefinedMapFieldBase.
- friend class ::PROTOBUF_NAMESPACE_ID::MapIterator;
- // Allocate map<...>::iterator for MapIterator.
- virtual void InitializeIterator(MapIterator* map_iter) const = 0;
-
- // DeleteIterator() is called by the destructor of MapIterator only.
- // It deletes map<...>::iterator for MapIterator.
- virtual void DeleteIterator(MapIterator* map_iter) const = 0;
-
- // Copy the map<...>::iterator from other_iterator to
- // this_iterator.
- virtual void CopyIterator(MapIterator* this_iterator,
- const MapIterator& other_iterator) const = 0;
-
- // IncreaseIterator() is called by operator++() of MapIterator only.
- // It implements the ++ operator of MapIterator.
- virtual void IncreaseIterator(MapIterator* map_iter) const = 0;
-
- // Swaps state_ with another MapFieldBase
- void SwapState(MapFieldBase* other);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapFieldBase);
-};
-
-// This class provides common Map Reflection implementations for generated
-// message and dynamic message.
-template <typename Key, typename T>
-class TypeDefinedMapFieldBase : public MapFieldBase {
- public:
- TypeDefinedMapFieldBase() {}
-
- // This constructor is for constant initialized global instances.
- // It uses a linker initialized mutex, so it is not compatible with regular
- // runtime instances.
- // NOLINTNEXTLINE(google-explicit-constructor)
- constexpr TypeDefinedMapFieldBase(ConstantInitialized tag)
- : MapFieldBase(tag) {}
- explicit TypeDefinedMapFieldBase(Arena* arena) : MapFieldBase(arena) {}
- TypeDefinedMapFieldBase(ArenaInitialized, Arena* arena)
- : TypeDefinedMapFieldBase(arena) {}
-
- protected:
- ~TypeDefinedMapFieldBase() {}
- using MapFieldBase::Destruct;
-
- public:
- void MapBegin(MapIterator* map_iter) const override;
- void MapEnd(MapIterator* map_iter) const override;
- bool EqualIterator(const MapIterator& a, const MapIterator& b) const override;
-
- virtual const Map<Key, T>& GetMap() const = 0;
- virtual Map<Key, T>* MutableMap() = 0;
-
- protected:
- typename Map<Key, T>::const_iterator& InternalGetIterator(
- const MapIterator* map_iter) const;
-
- private:
- void InitializeIterator(MapIterator* map_iter) const override;
- void DeleteIterator(MapIterator* map_iter) const override;
- void CopyIterator(MapIterator* this_iteratorm,
- const MapIterator& that_iterator) const override;
- void IncreaseIterator(MapIterator* map_iter) const override;
-
- virtual void SetMapIteratorValue(MapIterator* map_iter) const = 0;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeDefinedMapFieldBase);
-};
-
-// This class provides access to map field using generated api. It is used for
-// internal generated message implementation only. Users should never use this
-// directly.
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-class MapField : public TypeDefinedMapFieldBase<Key, T> {
- // Provide utilities to parse/serialize key/value. Provide utilities to
- // manipulate internal stored type.
- typedef MapTypeHandler<kKeyFieldType, Key> KeyTypeHandler;
- typedef MapTypeHandler<kValueFieldType, T> ValueTypeHandler;
-
- // Define message type for internal repeated field.
- typedef Derived EntryType;
-
- // Define abbreviation for parent MapFieldLite
- typedef MapFieldLite<Derived, Key, T, kKeyFieldType, kValueFieldType>
- MapFieldLiteType;
-
- // Enum needs to be handled differently from other types because it has
- // different exposed type in Map's api and repeated field's api. For
- // details see the comment in the implementation of
- // SyncMapWithRepeatedFieldNoLock.
- static constexpr bool kIsValueEnum = ValueTypeHandler::kIsEnum;
- typedef typename MapIf<kIsValueEnum, T, const T&>::type CastValueType;
-
- public:
- typedef Map<Key, T> MapType;
-
- MapField() : impl_() {}
- virtual ~MapField() {} // Destruct() must already have been called!
- void Destruct() {
- impl_.Destruct();
- TypeDefinedMapFieldBase<Key, T>::Destruct();
- }
-
- // This constructor is for constant initialized global instances.
- // It uses a linker initialized mutex, so it is not compatible with regular
- // runtime instances.
- // NOLINTNEXTLINE(google-explicit-constructor)
- constexpr MapField(ConstantInitialized tag)
- : TypeDefinedMapFieldBase<Key, T>(tag), impl_() {}
- explicit MapField(Arena* arena)
- : TypeDefinedMapFieldBase<Key, T>(arena), impl_(arena) {}
- MapField(ArenaInitialized, Arena* arena) : MapField(arena) {}
-
- // Implement MapFieldBase
- bool ContainsMapKey(const MapKey& map_key) const override;
- bool InsertOrLookupMapValue(const MapKey& map_key, MapValueRef* val) override;
- bool LookupMapValue(const MapKey& map_key,
- MapValueConstRef* val) const override;
- bool LookupMapValue(const MapKey&, MapValueRef*) const = delete;
- bool DeleteMapValue(const MapKey& map_key) override;
-
- const Map<Key, T>& GetMap() const override {
- MapFieldBase::SyncMapWithRepeatedField();
- return impl_.GetMap();
- }
-
- Map<Key, T>* MutableMap() override {
- MapFieldBase::SyncMapWithRepeatedField();
- Map<Key, T>* result = impl_.MutableMap();
- MapFieldBase::SetMapDirty();
- return result;
- }
-
- int size() const override;
- void Clear() override;
- void MergeFrom(const MapFieldBase& other) override;
- void Swap(MapFieldBase* other) override;
- void UnsafeShallowSwap(MapFieldBase* other) override;
- void InternalSwap(MapField* other);
-
- // Used in the implementation of parsing. Caller should take the ownership iff
- // arena_ is nullptr.
- EntryType* NewEntry() const { return impl_.NewEntry(); }
-
- const char* _InternalParse(const char* ptr, ParseContext* ctx) {
- return impl_._InternalParse(ptr, ctx);
- }
- template <typename UnknownType>
- const char* ParseWithEnumValidation(const char* ptr, ParseContext* ctx,
- bool (*is_valid)(int), uint32_t field_num,
- InternalMetadata* metadata) {
- return impl_.template ParseWithEnumValidation<UnknownType>(
- ptr, ctx, is_valid, field_num, metadata);
- }
-
- private:
- MapFieldLiteType impl_;
-
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
-
- // Implements MapFieldBase
- void SyncRepeatedFieldWithMapNoLock() const override;
- void SyncMapWithRepeatedFieldNoLock() const override;
- size_t SpaceUsedExcludingSelfNoLock() const override;
-
- void SetMapIteratorValue(MapIterator* map_iter) const override;
-
- friend class ::PROTOBUF_NAMESPACE_ID::Arena;
- friend class MapFieldStateTest; // For testing, it needs raw access to impl_
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapField);
-};
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType key_wire_type,
- WireFormatLite::FieldType value_wire_type>
-bool AllAreInitialized(
- const MapField<Derived, Key, T, key_wire_type, value_wire_type>& field) {
- const auto& t = field.GetMap();
- for (typename Map<Key, T>::const_iterator it = t.begin(); it != t.end();
- ++it) {
- if (!it->second.IsInitialized()) return false;
- }
- return true;
-}
-
-template <typename T, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-struct MapEntryToMapField<
- MapEntry<T, Key, Value, kKeyFieldType, kValueFieldType>> {
- typedef MapField<T, Key, Value, kKeyFieldType, kValueFieldType> MapFieldType;
-};
-
-class PROTOBUF_EXPORT DynamicMapField
- : public TypeDefinedMapFieldBase<MapKey, MapValueRef> {
- public:
- explicit DynamicMapField(const Message* default_entry);
- DynamicMapField(const Message* default_entry, Arena* arena);
- virtual ~DynamicMapField();
-
- // Implement MapFieldBase
- bool ContainsMapKey(const MapKey& map_key) const override;
- bool InsertOrLookupMapValue(const MapKey& map_key, MapValueRef* val) override;
- bool LookupMapValue(const MapKey& map_key,
- MapValueConstRef* val) const override;
- bool LookupMapValue(const MapKey&, MapValueRef*) const = delete;
- bool DeleteMapValue(const MapKey& map_key) override;
- void MergeFrom(const MapFieldBase& other) override;
- void Swap(MapFieldBase* other) override;
- void UnsafeShallowSwap(MapFieldBase* other) override { Swap(other); }
-
- const Map<MapKey, MapValueRef>& GetMap() const override;
- Map<MapKey, MapValueRef>* MutableMap() override;
-
- int size() const override;
- void Clear() override;
-
- private:
- Map<MapKey, MapValueRef> map_;
- const Message* default_entry_;
-
- void AllocateMapValue(MapValueRef* map_val);
-
- // Implements MapFieldBase
- void SyncRepeatedFieldWithMapNoLock() const override;
- void SyncMapWithRepeatedFieldNoLock() const override;
- size_t SpaceUsedExcludingSelfNoLock() const override;
- void SetMapIteratorValue(MapIterator* map_iter) const override;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(DynamicMapField);
-};
-
-} // namespace internal
-
-// MapValueConstRef points to a map value. Users can NOT modify
-// the map value.
-class PROTOBUF_EXPORT MapValueConstRef {
- public:
- MapValueConstRef() : data_(nullptr), type_() {}
-
- int64_t GetInt64Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT64,
- "MapValueConstRef::GetInt64Value");
- return *reinterpret_cast<int64_t*>(data_);
- }
- uint64_t GetUInt64Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT64,
- "MapValueConstRef::GetUInt64Value");
- return *reinterpret_cast<uint64_t*>(data_);
- }
- int32_t GetInt32Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT32,
- "MapValueConstRef::GetInt32Value");
- return *reinterpret_cast<int32_t*>(data_);
- }
- uint32_t GetUInt32Value() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT32,
- "MapValueConstRef::GetUInt32Value");
- return *reinterpret_cast<uint32_t*>(data_);
- }
- bool GetBoolValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_BOOL, "MapValueConstRef::GetBoolValue");
- return *reinterpret_cast<bool*>(data_);
- }
- int GetEnumValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_ENUM, "MapValueConstRef::GetEnumValue");
- return *reinterpret_cast<int*>(data_);
- }
- const std::string& GetStringValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_STRING,
- "MapValueConstRef::GetStringValue");
- return *reinterpret_cast<std::string*>(data_);
- }
- float GetFloatValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_FLOAT,
- "MapValueConstRef::GetFloatValue");
- return *reinterpret_cast<float*>(data_);
- }
- double GetDoubleValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_DOUBLE,
- "MapValueConstRef::GetDoubleValue");
- return *reinterpret_cast<double*>(data_);
- }
-
- const Message& GetMessageValue() const {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_MESSAGE,
- "MapValueConstRef::GetMessageValue");
- return *reinterpret_cast<Message*>(data_);
- }
-
- protected:
- // data_ point to a map value. MapValueConstRef does not
- // own this value.
- void* data_;
- // type_ is 0 or a valid FieldDescriptor::CppType.
- // Use "CppType()" to indicate zero.
- FieldDescriptor::CppType type_;
-
- FieldDescriptor::CppType type() const {
- if (type_ == FieldDescriptor::CppType() || data_ == nullptr) {
- GOOGLE_LOG(FATAL)
- << "Protocol Buffer map usage error:\n"
- << "MapValueConstRef::type MapValueConstRef is not initialized.";
- }
- return type_;
- }
-
- private:
- template <typename Derived, typename K, typename V,
- internal::WireFormatLite::FieldType key_wire_type,
- internal::WireFormatLite::FieldType value_wire_type>
- friend class internal::MapField;
- template <typename K, typename V>
- friend class internal::TypeDefinedMapFieldBase;
- friend class ::PROTOBUF_NAMESPACE_ID::MapIterator;
- friend class Reflection;
- friend class internal::DynamicMapField;
-
- void SetType(FieldDescriptor::CppType type) { type_ = type; }
- void SetValue(const void* val) { data_ = const_cast<void*>(val); }
- void CopyFrom(const MapValueConstRef& other) {
- type_ = other.type_;
- data_ = other.data_;
- }
-};
-
-// MapValueRef points to a map value. Users are able to modify
-// the map value.
-class PROTOBUF_EXPORT MapValueRef final : public MapValueConstRef {
- public:
- MapValueRef() {}
-
- void SetInt64Value(int64_t value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT64, "MapValueRef::SetInt64Value");
- *reinterpret_cast<int64_t*>(data_) = value;
- }
- void SetUInt64Value(uint64_t value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT64, "MapValueRef::SetUInt64Value");
- *reinterpret_cast<uint64_t*>(data_) = value;
- }
- void SetInt32Value(int32_t value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_INT32, "MapValueRef::SetInt32Value");
- *reinterpret_cast<int32_t*>(data_) = value;
- }
- void SetUInt32Value(uint32_t value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_UINT32, "MapValueRef::SetUInt32Value");
- *reinterpret_cast<uint32_t*>(data_) = value;
- }
- void SetBoolValue(bool value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_BOOL, "MapValueRef::SetBoolValue");
- *reinterpret_cast<bool*>(data_) = value;
- }
- // TODO(jieluo) - Checks that enum is member.
- void SetEnumValue(int value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_ENUM, "MapValueRef::SetEnumValue");
- *reinterpret_cast<int*>(data_) = value;
- }
- void SetStringValue(const std::string& value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_STRING, "MapValueRef::SetStringValue");
- *reinterpret_cast<std::string*>(data_) = value;
- }
- void SetFloatValue(float value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_FLOAT, "MapValueRef::SetFloatValue");
- *reinterpret_cast<float*>(data_) = value;
- }
- void SetDoubleValue(double value) {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_DOUBLE, "MapValueRef::SetDoubleValue");
- *reinterpret_cast<double*>(data_) = value;
- }
-
- Message* MutableMessageValue() {
- TYPE_CHECK(FieldDescriptor::CPPTYPE_MESSAGE,
- "MapValueRef::MutableMessageValue");
- return reinterpret_cast<Message*>(data_);
- }
-
- private:
- friend class internal::DynamicMapField;
-
- // Only used in DynamicMapField
- void DeleteData() {
- switch (type_) {
-#define HANDLE_TYPE(CPPTYPE, TYPE) \
- case FieldDescriptor::CPPTYPE_##CPPTYPE: { \
- delete reinterpret_cast<TYPE*>(data_); \
- break; \
- }
- HANDLE_TYPE(INT32, int32_t);
- HANDLE_TYPE(INT64, int64_t);
- HANDLE_TYPE(UINT32, uint32_t);
- HANDLE_TYPE(UINT64, uint64_t);
- HANDLE_TYPE(DOUBLE, double);
- HANDLE_TYPE(FLOAT, float);
- HANDLE_TYPE(BOOL, bool);
- HANDLE_TYPE(STRING, std::string);
- HANDLE_TYPE(ENUM, int32_t);
- HANDLE_TYPE(MESSAGE, Message);
-#undef HANDLE_TYPE
- }
- }
-};
-
-#undef TYPE_CHECK
-
-class PROTOBUF_EXPORT MapIterator {
- public:
- MapIterator(Message* message, const FieldDescriptor* field) {
- const Reflection* reflection = message->GetReflection();
- map_ = reflection->MutableMapData(message, field);
- key_.SetType(field->message_type()->map_key()->cpp_type());
- value_.SetType(field->message_type()->map_value()->cpp_type());
- map_->InitializeIterator(this);
- }
- MapIterator(const MapIterator& other) {
- map_ = other.map_;
- map_->InitializeIterator(this);
- map_->CopyIterator(this, other);
- }
- ~MapIterator() { map_->DeleteIterator(this); }
- MapIterator& operator=(const MapIterator& other) {
- map_ = other.map_;
- map_->CopyIterator(this, other);
- return *this;
- }
- friend bool operator==(const MapIterator& a, const MapIterator& b) {
- return a.map_->EqualIterator(a, b);
- }
- friend bool operator!=(const MapIterator& a, const MapIterator& b) {
- return !a.map_->EqualIterator(a, b);
- }
- MapIterator& operator++() {
- map_->IncreaseIterator(this);
- return *this;
- }
- MapIterator operator++(int) {
- // iter_ is copied from Map<...>::iterator, no need to
- // copy from its self again. Use the same implementation
- // with operator++()
- map_->IncreaseIterator(this);
- return *this;
- }
- const MapKey& GetKey() { return key_; }
- const MapValueRef& GetValueRef() { return value_; }
- MapValueRef* MutableValueRef() {
- map_->SetMapDirty();
- return &value_;
- }
-
- private:
- template <typename Key, typename T>
- friend class internal::TypeDefinedMapFieldBase;
- friend class internal::DynamicMapField;
- template <typename Derived, typename Key, typename T,
- internal::WireFormatLite::FieldType kKeyFieldType,
- internal::WireFormatLite::FieldType kValueFieldType>
- friend class internal::MapField;
-
- // reinterpret_cast from heap-allocated Map<...>::iterator*. MapIterator owns
- // the iterator. It is allocated by MapField<...>::InitializeIterator() called
- // in constructor and deleted by MapField<...>::DeleteIterator() called in
- // destructor.
- void* iter_;
- // Point to a MapField to call helper methods implemented in MapField.
- // MapIterator does not own this object.
- internal::MapFieldBase* map_;
- MapKey key_;
- MapValueRef value_;
-};
-
-} // namespace protobuf
-} // namespace google
-
-#ifdef _MSC_VER
-#pragma warning(pop) // restore warning C4265
-#endif // _MSC_VER
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MAP_FIELD_H__
diff --git a/include/google/protobuf/map_field_inl.h b/include/google/protobuf/map_field_inl.h
deleted file mode 100644
index 7c4c2323c4..0000000000
--- a/include/google/protobuf/map_field_inl.h
+++ /dev/null
@@ -1,375 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_FIELD_INL_H__
-#define GOOGLE_PROTOBUF_MAP_FIELD_INL_H__
-
-#include <memory>
-
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/map.h>
-#include <google/protobuf/map_field.h>
-#include <google/protobuf/map_type_handler.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-// UnwrapMapKey template
-template <typename T>
-T UnwrapMapKey(const MapKey& map_key);
-template <>
-inline int32_t UnwrapMapKey<int32_t>(const MapKey& map_key) {
- return map_key.GetInt32Value();
-}
-template <>
-inline uint32_t UnwrapMapKey<uint32_t>(const MapKey& map_key) {
- return map_key.GetUInt32Value();
-}
-template <>
-inline int64_t UnwrapMapKey<int64_t>(const MapKey& map_key) {
- return map_key.GetInt64Value();
-}
-template <>
-inline uint64_t UnwrapMapKey<uint64_t>(const MapKey& map_key) {
- return map_key.GetUInt64Value();
-}
-template <>
-inline bool UnwrapMapKey<bool>(const MapKey& map_key) {
- return map_key.GetBoolValue();
-}
-template <>
-inline std::string UnwrapMapKey<std::string>(const MapKey& map_key) {
- return map_key.GetStringValue();
-}
-
-// SetMapKey template
-template <typename T>
-inline void SetMapKey(MapKey* map_key, const T& value);
-template <>
-inline void SetMapKey<int32_t>(MapKey* map_key, const int32_t& value) {
- map_key->SetInt32Value(value);
-}
-template <>
-inline void SetMapKey<uint32_t>(MapKey* map_key, const uint32_t& value) {
- map_key->SetUInt32Value(value);
-}
-template <>
-inline void SetMapKey<int64_t>(MapKey* map_key, const int64_t& value) {
- map_key->SetInt64Value(value);
-}
-template <>
-inline void SetMapKey<uint64_t>(MapKey* map_key, const uint64_t& value) {
- map_key->SetUInt64Value(value);
-}
-template <>
-inline void SetMapKey<bool>(MapKey* map_key, const bool& value) {
- map_key->SetBoolValue(value);
-}
-template <>
-inline void SetMapKey<std::string>(MapKey* map_key, const std::string& value) {
- map_key->SetStringValue(value);
-}
-
-// ------------------------TypeDefinedMapFieldBase---------------
-template <typename Key, typename T>
-typename Map<Key, T>::const_iterator&
-TypeDefinedMapFieldBase<Key, T>::InternalGetIterator(
- const MapIterator* map_iter) const {
- return *reinterpret_cast<typename Map<Key, T>::const_iterator*>(
- map_iter->iter_);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::MapBegin(MapIterator* map_iter) const {
- InternalGetIterator(map_iter) = GetMap().begin();
- SetMapIteratorValue(map_iter);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::MapEnd(MapIterator* map_iter) const {
- InternalGetIterator(map_iter) = GetMap().end();
-}
-
-template <typename Key, typename T>
-bool TypeDefinedMapFieldBase<Key, T>::EqualIterator(
- const MapIterator& a, const MapIterator& b) const {
- return InternalGetIterator(&a) == InternalGetIterator(&b);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::IncreaseIterator(
- MapIterator* map_iter) const {
- ++InternalGetIterator(map_iter);
- SetMapIteratorValue(map_iter);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::InitializeIterator(
- MapIterator* map_iter) const {
- map_iter->iter_ = new typename Map<Key, T>::const_iterator;
- GOOGLE_CHECK(map_iter->iter_ != nullptr);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::DeleteIterator(
- MapIterator* map_iter) const {
- delete reinterpret_cast<typename Map<Key, T>::const_iterator*>(
- map_iter->iter_);
-}
-
-template <typename Key, typename T>
-void TypeDefinedMapFieldBase<Key, T>::CopyIterator(
- MapIterator* this_iter, const MapIterator& that_iter) const {
- InternalGetIterator(this_iter) = InternalGetIterator(&that_iter);
- this_iter->key_.SetType(that_iter.key_.type());
- // MapValueRef::type() fails when containing data is null. However, if
- // this_iter points to MapEnd, data can be null.
- this_iter->value_.SetType(
- static_cast<FieldDescriptor::CppType>(that_iter.value_.type_));
- SetMapIteratorValue(this_iter);
-}
-
-// ----------------------------------------------------------------------
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-int MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::size() const {
- MapFieldBase::SyncMapWithRepeatedField();
- return static_cast<int>(impl_.GetMap().size());
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::Clear() {
- if (this->MapFieldBase::repeated_field_ != nullptr) {
- RepeatedPtrField<EntryType>* repeated_field =
- reinterpret_cast<RepeatedPtrField<EntryType>*>(
- this->MapFieldBase::repeated_field_);
- repeated_field->Clear();
- }
-
- impl_.MutableMap()->clear();
- // Data in map and repeated field are both empty, but we can't set status
- // CLEAN. Because clear is a generated API, we cannot invalidate previous
- // reference to map.
- MapFieldBase::SetMapDirty();
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::SetMapIteratorValue(MapIterator* map_iter)
- const {
- const Map<Key, T>& map = impl_.GetMap();
- typename Map<Key, T>::const_iterator iter =
- TypeDefinedMapFieldBase<Key, T>::InternalGetIterator(map_iter);
- if (iter == map.end()) return;
- SetMapKey(&map_iter->key_, iter->first);
- map_iter->value_.SetValue(&iter->second);
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-bool MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::ContainsMapKey(
- const MapKey& map_key) const {
- const Map<Key, T>& map = impl_.GetMap();
- const Key& key = UnwrapMapKey<Key>(map_key);
- typename Map<Key, T>::const_iterator iter = map.find(key);
- return iter != map.end();
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-bool MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::InsertOrLookupMapValue(const MapKey& map_key,
- MapValueRef* val) {
- // Always use mutable map because users may change the map value by
- // MapValueRef.
- Map<Key, T>* map = MutableMap();
- const Key& key = UnwrapMapKey<Key>(map_key);
- typename Map<Key, T>::iterator iter = map->find(key);
- if (map->end() == iter) {
- val->SetValue(&((*map)[key]));
- return true;
- }
- // Key is already in the map. Make sure (*map)[key] is not called.
- // [] may reorder the map and iterators.
- val->SetValue(&(iter->second));
- return false;
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-bool MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::LookupMapValue(
- const MapKey& map_key, MapValueConstRef* val) const {
- const Map<Key, T>& map = GetMap();
- const Key& key = UnwrapMapKey<Key>(map_key);
- typename Map<Key, T>::const_iterator iter = map.find(key);
- if (map.end() == iter) {
- return false;
- }
- // Key is already in the map. Make sure (*map)[key] is not called.
- // [] may reorder the map and iterators.
- val->SetValue(&(iter->second));
- return true;
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-bool MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::DeleteMapValue(
- const MapKey& map_key) {
- const Key& key = UnwrapMapKey<Key>(map_key);
- return MutableMap()->erase(key);
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::MergeFrom(
- const MapFieldBase& other) {
- MapFieldBase::SyncMapWithRepeatedField();
- const MapField& other_field = static_cast<const MapField&>(other);
- other_field.SyncMapWithRepeatedField();
- impl_.MergeFrom(other_field.impl_);
- MapFieldBase::SetMapDirty();
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::Swap(
- MapFieldBase* other) {
- MapFieldBase::Swap(other);
- MapField* other_field = down_cast<MapField*>(other);
- impl_.Swap(&other_field->impl_);
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::UnsafeShallowSwap(MapFieldBase* other) {
- InternalSwap(down_cast<MapField*>(other));
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType, kValueFieldType>::InternalSwap(
- MapField* other) {
- MapFieldBase::InternalSwap(other);
- impl_.InternalSwap(&other->impl_);
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::SyncRepeatedFieldWithMapNoLock() const {
- if (this->MapFieldBase::repeated_field_ == nullptr) {
- this->MapFieldBase::repeated_field_ =
- Arena::CreateMessage<RepeatedPtrField<Message> >(
- this->MapFieldBase::arena_);
- }
- const Map<Key, T>& map = impl_.GetMap();
- RepeatedPtrField<EntryType>* repeated_field =
- reinterpret_cast<RepeatedPtrField<EntryType>*>(
- this->MapFieldBase::repeated_field_);
-
- repeated_field->Clear();
-
- // The only way we can get at this point is through reflection and the
- // only way we can get the reflection object is by having called GetReflection
- // on the encompassing field. So that type must have existed and hence we
- // know that this MapEntry default_type has also already been constructed.
- // So it's safe to just call internal_default_instance().
- const Message* default_entry = Derived::internal_default_instance();
- for (typename Map<Key, T>::const_iterator it = map.begin(); it != map.end();
- ++it) {
- EntryType* new_entry =
- down_cast<EntryType*>(default_entry->New(this->MapFieldBase::arena_));
- repeated_field->AddAllocated(new_entry);
- (*new_entry->mutable_key()) = it->first;
- (*new_entry->mutable_value()) = it->second;
- }
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-void MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::SyncMapWithRepeatedFieldNoLock() const {
- Map<Key, T>* map = const_cast<MapField*>(this)->impl_.MutableMap();
- RepeatedPtrField<EntryType>* repeated_field =
- reinterpret_cast<RepeatedPtrField<EntryType>*>(
- this->MapFieldBase::repeated_field_);
- GOOGLE_CHECK(this->MapFieldBase::repeated_field_ != nullptr);
- map->clear();
- for (typename RepeatedPtrField<EntryType>::iterator it =
- repeated_field->begin();
- it != repeated_field->end(); ++it) {
- // Cast is needed because Map's api and internal storage is different when
- // value is enum. For enum, we cannot cast an int to enum. Thus, we have to
- // copy value. For other types, they have same exposed api type and internal
- // stored type. We should not introduce value copy for them. We achieve this
- // by casting to value for enum while casting to reference for other types.
- (*map)[it->key()] = static_cast<CastValueType>(it->value());
- }
-}
-
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-size_t MapField<Derived, Key, T, kKeyFieldType,
- kValueFieldType>::SpaceUsedExcludingSelfNoLock() const {
- size_t size = 0;
- if (this->MapFieldBase::repeated_field_ != nullptr) {
- size += this->MapFieldBase::repeated_field_->SpaceUsedExcludingSelfLong();
- }
- size += impl_.GetMap().SpaceUsedExcludingSelfLong();
-
- return size;
-}
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_MAP_FIELD_INL_H__
diff --git a/include/google/protobuf/map_field_lite.h b/include/google/protobuf/map_field_lite.h
deleted file mode 100644
index 53bf7a0811..0000000000
--- a/include/google/protobuf/map_field_lite.h
+++ /dev/null
@@ -1,209 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_FIELD_LITE_H__
-#define GOOGLE_PROTOBUF_MAP_FIELD_LITE_H__
-
-#include <type_traits>
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/map.h>
-#include <google/protobuf/map_entry_lite.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-#ifndef NDEBUG
-void MapFieldLiteNotDestructed(void* map_field_lite);
-#endif
-
-// This class provides access to map field using generated api. It is used for
-// internal generated message implementation only. Users should never use this
-// directly.
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType key_wire_type,
- WireFormatLite::FieldType value_wire_type>
-class MapFieldLite {
- // Define message type for internal repeated field.
- typedef Derived EntryType;
-
- public:
- typedef Map<Key, T> MapType;
-
- constexpr MapFieldLite() : map_() {}
- explicit MapFieldLite(Arena* arena) : map_(arena) {}
- MapFieldLite(ArenaInitialized, Arena* arena) : MapFieldLite(arena) {}
-
-#ifdef NDEBUG
- void Destruct() { map_.~Map(); }
- ~MapFieldLite() {}
-#else
- void Destruct() {
- // We want to destruct the map in such a way that we can verify
- // that we've done that, but also be sure that we've deallocated
- // everything (as opposed to leaving an allocation behind with no
- // data in it, as would happen if a vector was resize'd to zero.
- // Map::Swap with an empty map accomplishes that.
- decltype(map_) swapped_map(map_.arena());
- map_.InternalSwap(swapped_map);
- }
- ~MapFieldLite() {
- if (map_.arena() == nullptr && !map_.empty()) {
- MapFieldLiteNotDestructed(this);
- }
- }
-#endif
- // Accessors
- const Map<Key, T>& GetMap() const { return map_; }
- Map<Key, T>* MutableMap() { return &map_; }
-
- // Convenient methods for generated message implementation.
- int size() const { return static_cast<int>(map_.size()); }
- void Clear() { return map_.clear(); }
- void MergeFrom(const MapFieldLite& other) {
- for (typename Map<Key, T>::const_iterator it = other.map_.begin();
- it != other.map_.end(); ++it) {
- map_[it->first] = it->second;
- }
- }
- void Swap(MapFieldLite* other) { map_.swap(other->map_); }
- void InternalSwap(MapFieldLite* other) { map_.InternalSwap(other->map_); }
-
- // Used in the implementation of parsing. Caller should take the ownership iff
- // arena_ is nullptr.
- EntryType* NewEntry() const {
- return Arena::CreateMessage<EntryType>(map_.arena());
- }
-
- const char* _InternalParse(const char* ptr, ParseContext* ctx) {
- typename Derived::template Parser<MapFieldLite, Map<Key, T>> parser(this);
- return parser._InternalParse(ptr, ctx);
- }
-
- template <typename UnknownType>
- const char* ParseWithEnumValidation(const char* ptr, ParseContext* ctx,
- bool (*is_valid)(int), uint32_t field_num,
- InternalMetadata* metadata) {
- typename Derived::template Parser<MapFieldLite, Map<Key, T>> parser(this);
- return parser.template ParseWithEnumValidation<UnknownType>(
- ptr, ctx, is_valid, field_num, metadata);
- }
-
- private:
- typedef void DestructorSkippable_;
-
- // map_ is inside an anonymous union so we can explicitly control its
- // destruction
- union {
- Map<Key, T> map_;
- };
-
- friend class ::PROTOBUF_NAMESPACE_ID::Arena;
-};
-
-template <typename UnknownType, typename T>
-struct EnumParseWrapper {
- const char* _InternalParse(const char* ptr, ParseContext* ctx) {
- return map_field->template ParseWithEnumValidation<UnknownType>(
- ptr, ctx, is_valid, field_num, metadata);
- }
- T* map_field;
- bool (*is_valid)(int);
- uint32_t field_num;
- InternalMetadata* metadata;
-};
-
-// Helper function because the typenames of maps are horrendous to print. This
-// leverages compiler type deduction, to keep all type data out of the
-// generated code
-template <typename UnknownType, typename T>
-EnumParseWrapper<UnknownType, T> InitEnumParseWrapper(
- T* map_field, bool (*is_valid)(int), uint32_t field_num,
- InternalMetadata* metadata) {
- return EnumParseWrapper<UnknownType, T>{map_field, is_valid, field_num,
- metadata};
-}
-
-// True if IsInitialized() is true for value field in all elements of t. T is
-// expected to be message. It's useful to have this helper here to keep the
-// protobuf compiler from ever having to emit loops in IsInitialized() methods.
-// We want the C++ compiler to inline this or not as it sees fit.
-template <typename Derived, typename Key, typename T,
- WireFormatLite::FieldType key_wire_type,
- WireFormatLite::FieldType value_wire_type>
-bool AllAreInitialized(const MapFieldLite<Derived, Key, T, key_wire_type,
- value_wire_type>& field) {
- const auto& t = field.GetMap();
- for (typename Map<Key, T>::const_iterator it = t.begin(); it != t.end();
- ++it) {
- if (!it->second.IsInitialized()) return false;
- }
- return true;
-}
-
-template <typename MEntry>
-struct MapEntryToMapField : MapEntryToMapField<typename MEntry::SuperType> {};
-
-template <typename T, typename Key, typename Value,
- WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-struct MapEntryToMapField<
- MapEntryLite<T, Key, Value, kKeyFieldType, kValueFieldType>> {
- typedef MapFieldLite<
- MapEntryLite<T, Key, Value, kKeyFieldType, kValueFieldType>, Key, Value,
- kKeyFieldType, kValueFieldType>
- MapFieldType;
-};
-
-#ifndef NDEBUG
-inline PROTOBUF_NOINLINE void MapFieldLiteNotDestructed(void* map_field_lite) {
- bool proper_destruct = false;
- GOOGLE_CHECK(proper_destruct) << map_field_lite;
-}
-#endif
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MAP_FIELD_LITE_H__
diff --git a/include/google/protobuf/map_type_handler.h b/include/google/protobuf/map_type_handler.h
deleted file mode 100644
index c210c63db5..0000000000
--- a/include/google/protobuf/map_type_handler.h
+++ /dev/null
@@ -1,736 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MAP_TYPE_HANDLER_H__
-#define GOOGLE_PROTOBUF_MAP_TYPE_HANDLER_H__
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/wire_format_lite.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Used for compile time type selection. MapIf::type will be TrueType if Flag is
-// true and FalseType otherwise.
-template <bool Flag, typename TrueType, typename FalseType>
-struct MapIf;
-
-template <typename TrueType, typename FalseType>
-struct MapIf<true, TrueType, FalseType> {
- typedef TrueType type;
-};
-
-template <typename TrueType, typename FalseType>
-struct MapIf<false, TrueType, FalseType> {
- typedef FalseType type;
-};
-
-template <typename Type, bool is_arena_constructable>
-class MapArenaMessageCreator {
- public:
- // Use arena to create message if Type is arena constructable. Otherwise,
- // create the message on heap.
- static inline Type* CreateMessage(Arena* arena);
-};
-template <typename Type>
-class MapArenaMessageCreator<Type, true> {
- public:
- static inline Type* CreateMessage(Arena* arena) {
- return Arena::CreateMessage<Type>(arena);
- }
-};
-template <typename Type>
-class MapArenaMessageCreator<Type, false> {
- public:
- static inline Type* CreateMessage(Arena* arena) {
- return Arena::Create<Type>(arena);
- }
-};
-
-// Define constants for given wire field type
-template <WireFormatLite::FieldType field_type, typename Type>
-class MapWireFieldTypeTraits {};
-
-#define TYPE_TRAITS(FieldType, CType, WireFormatType, IsMessage, IsEnum) \
- template <typename Type> \
- class MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, Type> { \
- public: \
- static const bool kIsMessage = IsMessage; \
- static const bool kIsEnum = IsEnum; \
- typedef typename MapIf<kIsMessage, Type*, CType>::type TypeOnMemory; \
- typedef typename MapIf<kIsEnum, int, Type>::type MapEntryAccessorType; \
- static const WireFormatLite::WireType kWireType = \
- WireFormatLite::WIRETYPE_##WireFormatType; \
- };
-
-TYPE_TRAITS(MESSAGE, Type, LENGTH_DELIMITED, true, false)
-TYPE_TRAITS(STRING, ArenaStringPtr, LENGTH_DELIMITED, false, false)
-TYPE_TRAITS(BYTES, ArenaStringPtr, LENGTH_DELIMITED, false, false)
-TYPE_TRAITS(INT64, int64_t, VARINT, false, false)
-TYPE_TRAITS(UINT64, uint64_t, VARINT, false, false)
-TYPE_TRAITS(INT32, int32_t, VARINT, false, false)
-TYPE_TRAITS(UINT32, uint32_t, VARINT, false, false)
-TYPE_TRAITS(SINT64, int64_t, VARINT, false, false)
-TYPE_TRAITS(SINT32, int32_t, VARINT, false, false)
-TYPE_TRAITS(ENUM, int, VARINT, false, true)
-TYPE_TRAITS(DOUBLE, double, FIXED64, false, false)
-TYPE_TRAITS(FLOAT, float, FIXED32, false, false)
-TYPE_TRAITS(FIXED64, uint64_t, FIXED64, false, false)
-TYPE_TRAITS(FIXED32, uint32_t, FIXED32, false, false)
-TYPE_TRAITS(SFIXED64, int64_t, FIXED64, false, false)
-TYPE_TRAITS(SFIXED32, int32_t, FIXED32, false, false)
-TYPE_TRAITS(BOOL, bool, VARINT, false, false)
-
-#undef TYPE_TRAITS
-
-template <WireFormatLite::FieldType field_type, typename Type>
-class MapTypeHandler {};
-
-template <typename Type>
-class MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type> {
- public:
- // Enum type cannot be used for MapTypeHandler::Read. Define a type which will
- // replace Enum with int.
- typedef typename MapWireFieldTypeTraits<WireFormatLite::TYPE_MESSAGE,
- Type>::MapEntryAccessorType
- MapEntryAccessorType;
- // Internal stored type in MapEntryLite for given wire field type.
- typedef typename MapWireFieldTypeTraits<WireFormatLite::TYPE_MESSAGE,
- Type>::TypeOnMemory TypeOnMemory;
- // Corresponding wire type for field type.
- static constexpr WireFormatLite::WireType kWireType =
- MapWireFieldTypeTraits<WireFormatLite::TYPE_MESSAGE, Type>::kWireType;
- // Whether wire type is for message.
- static constexpr bool kIsMessage =
- MapWireFieldTypeTraits<WireFormatLite::TYPE_MESSAGE, Type>::kIsMessage;
- // Whether wire type is for enum.
- static constexpr bool kIsEnum =
- MapWireFieldTypeTraits<WireFormatLite::TYPE_MESSAGE, Type>::kIsEnum;
-
- // Functions used in parsing and serialization. ===================
- static inline size_t ByteSize(const MapEntryAccessorType& value);
- static inline int GetCachedSize(const MapEntryAccessorType& value);
- static inline bool Read(io::CodedInputStream* input,
- MapEntryAccessorType* value);
- static inline const char* Read(const char* ptr, ParseContext* ctx,
- MapEntryAccessorType* value);
-
- static inline uint8_t* Write(int field, const MapEntryAccessorType& value,
- uint8_t* ptr, io::EpsCopyOutputStream* stream);
-
- // Functions to manipulate data on memory. ========================
- static inline const Type& GetExternalReference(const Type* value);
- static inline void DeleteNoArena(const Type* x);
- static inline void Merge(const Type& from, Type** to, Arena* arena);
- static inline void Clear(Type** value, Arena* arena);
- static constexpr TypeOnMemory Constinit();
-
- static inline Type* EnsureMutable(Type** value, Arena* arena);
- // SpaceUsedInMapEntry: Return bytes used by value in MapEntry, excluding
- // those already calculate in sizeof(MapField).
- static inline size_t SpaceUsedInMapEntryLong(const Type* value);
- // Return default instance if value is not initialized when calling const
- // reference accessor.
- static inline const Type& DefaultIfNotInitialized(const Type* value);
- // Check if all required fields have values set.
- static inline bool IsInitialized(Type* value);
-};
-
-#define MAP_HANDLER(FieldType) \
- template <typename Type> \
- class MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type> { \
- public: \
- typedef typename MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType \
- MapEntryAccessorType; \
- typedef typename MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, \
- Type>::TypeOnMemory TypeOnMemory; \
- static const WireFormatLite::WireType kWireType = \
- MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, \
- Type>::kWireType; \
- static const bool kIsMessage = \
- MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, \
- Type>::kIsMessage; \
- static const bool kIsEnum = \
- MapWireFieldTypeTraits<WireFormatLite::TYPE_##FieldType, \
- Type>::kIsEnum; \
- static inline int ByteSize(const MapEntryAccessorType& value); \
- static inline int GetCachedSize(const MapEntryAccessorType& value); \
- static inline bool Read(io::CodedInputStream* input, \
- MapEntryAccessorType* value); \
- static inline const char* Read(const char* begin, ParseContext* ctx, \
- MapEntryAccessorType* value); \
- static inline uint8_t* Write(int field, const MapEntryAccessorType& value, \
- uint8_t* ptr, \
- io::EpsCopyOutputStream* stream); \
- static inline const MapEntryAccessorType& GetExternalReference( \
- const TypeOnMemory& value); \
- static inline void DeleteNoArena(const TypeOnMemory& x); \
- static inline void Merge(const MapEntryAccessorType& from, \
- TypeOnMemory* to, Arena* arena); \
- static inline void Clear(TypeOnMemory* value, Arena* arena); \
- static inline size_t SpaceUsedInMapEntryLong(const TypeOnMemory& value); \
- static inline const MapEntryAccessorType& DefaultIfNotInitialized( \
- const TypeOnMemory& value); \
- static inline bool IsInitialized(const TypeOnMemory& value); \
- static void DeleteNoArena(TypeOnMemory& value); \
- static constexpr TypeOnMemory Constinit(); \
- static inline MapEntryAccessorType* EnsureMutable(TypeOnMemory* value, \
- Arena* arena); \
- };
-MAP_HANDLER(STRING)
-MAP_HANDLER(BYTES)
-MAP_HANDLER(INT64)
-MAP_HANDLER(UINT64)
-MAP_HANDLER(INT32)
-MAP_HANDLER(UINT32)
-MAP_HANDLER(SINT64)
-MAP_HANDLER(SINT32)
-MAP_HANDLER(ENUM)
-MAP_HANDLER(DOUBLE)
-MAP_HANDLER(FLOAT)
-MAP_HANDLER(FIXED64)
-MAP_HANDLER(FIXED32)
-MAP_HANDLER(SFIXED64)
-MAP_HANDLER(SFIXED32)
-MAP_HANDLER(BOOL)
-#undef MAP_HANDLER
-
-template <typename Type>
-inline size_t MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::ByteSize(
- const MapEntryAccessorType& value) {
- return WireFormatLite::MessageSizeNoVirtual(value);
-}
-
-#define GOOGLE_PROTOBUF_BYTE_SIZE(FieldType, DeclaredType) \
- template <typename Type> \
- inline int MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::ByteSize( \
- const MapEntryAccessorType& value) { \
- return static_cast<int>(WireFormatLite::DeclaredType##Size(value)); \
- }
-
-GOOGLE_PROTOBUF_BYTE_SIZE(STRING, String)
-GOOGLE_PROTOBUF_BYTE_SIZE(BYTES, Bytes)
-GOOGLE_PROTOBUF_BYTE_SIZE(INT64, Int64)
-GOOGLE_PROTOBUF_BYTE_SIZE(UINT64, UInt64)
-GOOGLE_PROTOBUF_BYTE_SIZE(INT32, Int32)
-GOOGLE_PROTOBUF_BYTE_SIZE(UINT32, UInt32)
-GOOGLE_PROTOBUF_BYTE_SIZE(SINT64, SInt64)
-GOOGLE_PROTOBUF_BYTE_SIZE(SINT32, SInt32)
-GOOGLE_PROTOBUF_BYTE_SIZE(ENUM, Enum)
-
-#undef GOOGLE_PROTOBUF_BYTE_SIZE
-
-#define FIXED_BYTE_SIZE(FieldType, DeclaredType) \
- template <typename Type> \
- inline int MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::ByteSize( \
- const MapEntryAccessorType& /* value */) { \
- return WireFormatLite::k##DeclaredType##Size; \
- }
-
-FIXED_BYTE_SIZE(DOUBLE, Double)
-FIXED_BYTE_SIZE(FLOAT, Float)
-FIXED_BYTE_SIZE(FIXED64, Fixed64)
-FIXED_BYTE_SIZE(FIXED32, Fixed32)
-FIXED_BYTE_SIZE(SFIXED64, SFixed64)
-FIXED_BYTE_SIZE(SFIXED32, SFixed32)
-FIXED_BYTE_SIZE(BOOL, Bool)
-
-#undef FIXED_BYTE_SIZE
-
-template <typename Type>
-inline int MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::GetCachedSize(
- const MapEntryAccessorType& value) {
- return static_cast<int>(WireFormatLite::LengthDelimitedSize(
- static_cast<size_t>(value.GetCachedSize())));
-}
-
-#define GET_CACHED_SIZE(FieldType, DeclaredType) \
- template <typename Type> \
- inline int \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::GetCachedSize( \
- const MapEntryAccessorType& value) { \
- return static_cast<int>(WireFormatLite::DeclaredType##Size(value)); \
- }
-
-GET_CACHED_SIZE(STRING, String)
-GET_CACHED_SIZE(BYTES, Bytes)
-GET_CACHED_SIZE(INT64, Int64)
-GET_CACHED_SIZE(UINT64, UInt64)
-GET_CACHED_SIZE(INT32, Int32)
-GET_CACHED_SIZE(UINT32, UInt32)
-GET_CACHED_SIZE(SINT64, SInt64)
-GET_CACHED_SIZE(SINT32, SInt32)
-GET_CACHED_SIZE(ENUM, Enum)
-
-#undef GET_CACHED_SIZE
-
-#define GET_FIXED_CACHED_SIZE(FieldType, DeclaredType) \
- template <typename Type> \
- inline int \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::GetCachedSize( \
- const MapEntryAccessorType& /* value */) { \
- return WireFormatLite::k##DeclaredType##Size; \
- }
-
-GET_FIXED_CACHED_SIZE(DOUBLE, Double)
-GET_FIXED_CACHED_SIZE(FLOAT, Float)
-GET_FIXED_CACHED_SIZE(FIXED64, Fixed64)
-GET_FIXED_CACHED_SIZE(FIXED32, Fixed32)
-GET_FIXED_CACHED_SIZE(SFIXED64, SFixed64)
-GET_FIXED_CACHED_SIZE(SFIXED32, SFixed32)
-GET_FIXED_CACHED_SIZE(BOOL, Bool)
-
-#undef GET_FIXED_CACHED_SIZE
-
-template <typename Type>
-inline uint8_t* MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Write(
- int field, const MapEntryAccessorType& value, uint8_t* ptr,
- io::EpsCopyOutputStream* stream) {
- ptr = stream->EnsureSpace(ptr);
- return WireFormatLite::InternalWriteMessage(
- field, value, value.GetCachedSize(), ptr, stream);
-}
-
-#define WRITE_METHOD(FieldType, DeclaredType) \
- template <typename Type> \
- inline uint8_t* \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Write( \
- int field, const MapEntryAccessorType& value, uint8_t* ptr, \
- io::EpsCopyOutputStream* stream) { \
- ptr = stream->EnsureSpace(ptr); \
- return stream->Write##DeclaredType(field, value, ptr); \
- }
-
-WRITE_METHOD(STRING, String)
-WRITE_METHOD(BYTES, Bytes)
-
-#undef WRITE_METHOD
-#define WRITE_METHOD(FieldType, DeclaredType) \
- template <typename Type> \
- inline uint8_t* \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Write( \
- int field, const MapEntryAccessorType& value, uint8_t* ptr, \
- io::EpsCopyOutputStream* stream) { \
- ptr = stream->EnsureSpace(ptr); \
- return WireFormatLite::Write##DeclaredType##ToArray(field, value, ptr); \
- }
-
-WRITE_METHOD(INT64, Int64)
-WRITE_METHOD(UINT64, UInt64)
-WRITE_METHOD(INT32, Int32)
-WRITE_METHOD(UINT32, UInt32)
-WRITE_METHOD(SINT64, SInt64)
-WRITE_METHOD(SINT32, SInt32)
-WRITE_METHOD(ENUM, Enum)
-WRITE_METHOD(DOUBLE, Double)
-WRITE_METHOD(FLOAT, Float)
-WRITE_METHOD(FIXED64, Fixed64)
-WRITE_METHOD(FIXED32, Fixed32)
-WRITE_METHOD(SFIXED64, SFixed64)
-WRITE_METHOD(SFIXED32, SFixed32)
-WRITE_METHOD(BOOL, Bool)
-
-#undef WRITE_METHOD
-
-template <typename Type>
-inline bool MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Read(
- io::CodedInputStream* input, MapEntryAccessorType* value) {
- return WireFormatLite::ReadMessageNoVirtual(input, value);
-}
-
-template <typename Type>
-inline bool MapTypeHandler<WireFormatLite::TYPE_STRING, Type>::Read(
- io::CodedInputStream* input, MapEntryAccessorType* value) {
- return WireFormatLite::ReadString(input, value);
-}
-
-template <typename Type>
-inline bool MapTypeHandler<WireFormatLite::TYPE_BYTES, Type>::Read(
- io::CodedInputStream* input, MapEntryAccessorType* value) {
- return WireFormatLite::ReadBytes(input, value);
-}
-
-template <typename Type>
-const char* MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Read(
- const char* ptr, ParseContext* ctx, MapEntryAccessorType* value) {
- return ctx->ParseMessage(value, ptr);
-}
-
-template <typename Type>
-const char* MapTypeHandler<WireFormatLite::TYPE_STRING, Type>::Read(
- const char* ptr, ParseContext* ctx, MapEntryAccessorType* value) {
- int size = ReadSize(&ptr);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- return ctx->ReadString(ptr, size, value);
-}
-
-template <typename Type>
-const char* MapTypeHandler<WireFormatLite::TYPE_BYTES, Type>::Read(
- const char* ptr, ParseContext* ctx, MapEntryAccessorType* value) {
- int size = ReadSize(&ptr);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- return ctx->ReadString(ptr, size, value);
-}
-
-inline const char* ReadINT64(const char* ptr, int64_t* value) {
- return VarintParse(ptr, reinterpret_cast<uint64_t*>(value));
-}
-inline const char* ReadUINT64(const char* ptr, uint64_t* value) {
- return VarintParse(ptr, value);
-}
-inline const char* ReadINT32(const char* ptr, int32_t* value) {
- return VarintParse(ptr, reinterpret_cast<uint32_t*>(value));
-}
-inline const char* ReadUINT32(const char* ptr, uint32_t* value) {
- return VarintParse(ptr, value);
-}
-inline const char* ReadSINT64(const char* ptr, int64_t* value) {
- *value = ReadVarintZigZag64(&ptr);
- return ptr;
-}
-inline const char* ReadSINT32(const char* ptr, int32_t* value) {
- *value = ReadVarintZigZag32(&ptr);
- return ptr;
-}
-template <typename E>
-inline const char* ReadENUM(const char* ptr, E* value) {
- *value = static_cast<E>(ReadVarint32(&ptr));
- return ptr;
-}
-inline const char* ReadBOOL(const char* ptr, bool* value) {
- *value = static_cast<bool>(ReadVarint32(&ptr));
- return ptr;
-}
-
-template <typename F>
-inline const char* ReadUnaligned(const char* ptr, F* value) {
- *value = UnalignedLoad<F>(ptr);
- return ptr + sizeof(F);
-}
-inline const char* ReadFLOAT(const char* ptr, float* value) {
- return ReadUnaligned(ptr, value);
-}
-inline const char* ReadDOUBLE(const char* ptr, double* value) {
- return ReadUnaligned(ptr, value);
-}
-inline const char* ReadFIXED64(const char* ptr, uint64_t* value) {
- return ReadUnaligned(ptr, value);
-}
-inline const char* ReadFIXED32(const char* ptr, uint32_t* value) {
- return ReadUnaligned(ptr, value);
-}
-inline const char* ReadSFIXED64(const char* ptr, int64_t* value) {
- return ReadUnaligned(ptr, value);
-}
-inline const char* ReadSFIXED32(const char* ptr, int32_t* value) {
- return ReadUnaligned(ptr, value);
-}
-
-#define READ_METHOD(FieldType) \
- template <typename Type> \
- inline bool MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Read( \
- io::CodedInputStream* input, MapEntryAccessorType* value) { \
- return WireFormatLite::ReadPrimitive<TypeOnMemory, \
- WireFormatLite::TYPE_##FieldType>( \
- input, value); \
- } \
- template <typename Type> \
- const char* MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Read( \
- const char* begin, ParseContext* ctx, MapEntryAccessorType* value) { \
- (void)ctx; \
- return Read##FieldType(begin, value); \
- }
-
-READ_METHOD(INT64)
-READ_METHOD(UINT64)
-READ_METHOD(INT32)
-READ_METHOD(UINT32)
-READ_METHOD(SINT64)
-READ_METHOD(SINT32)
-READ_METHOD(ENUM)
-READ_METHOD(DOUBLE)
-READ_METHOD(FLOAT)
-READ_METHOD(FIXED64)
-READ_METHOD(FIXED32)
-READ_METHOD(SFIXED64)
-READ_METHOD(SFIXED32)
-READ_METHOD(BOOL)
-
-#undef READ_METHOD
-
-// Definition for message handler
-
-template <typename Type>
-inline const Type&
-MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::GetExternalReference(
- const Type* value) {
- return *value;
-}
-
-template <typename Type>
-inline size_t MapTypeHandler<WireFormatLite::TYPE_MESSAGE,
- Type>::SpaceUsedInMapEntryLong(const Type* value) {
- return value->SpaceUsedLong();
-}
-
-template <typename Type>
-inline void MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Clear(
- Type** value, Arena* /* arena */) {
- if (*value != nullptr) (*value)->Clear();
-}
-template <typename Type>
-inline void MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Merge(
- const Type& from, Type** to, Arena* /* arena */) {
- (*to)->MergeFrom(from);
-}
-
-template <typename Type>
-void MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::DeleteNoArena(
- const Type* ptr) {
- delete ptr;
-}
-
-template <typename Type>
-constexpr auto MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::Constinit()
- -> TypeOnMemory {
- return nullptr;
-}
-
-template <typename Type>
-inline Type* MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::EnsureMutable(
- Type** value, Arena* arena) {
- if (*value == nullptr) {
- *value = MapArenaMessageCreator<
- Type,
- Arena::is_arena_constructable<Type>::type::value>::CreateMessage(arena);
- }
- return *value;
-}
-
-template <typename Type>
-inline const Type&
-MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::DefaultIfNotInitialized(
- const Type* value) {
- return value != nullptr ? *value : *Type::internal_default_instance();
-}
-
-template <typename Type>
-inline bool MapTypeHandler<WireFormatLite::TYPE_MESSAGE, Type>::IsInitialized(
- Type* value) {
- return value ? value->IsInitialized() : false;
-}
-
-// Definition for string/bytes handler
-
-#define STRING_OR_BYTES_HANDLER_FUNCTIONS(FieldType) \
- template <typename Type> \
- inline const typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType& \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::GetExternalReference(const TypeOnMemory& value) { \
- return value.Get(); \
- } \
- template <typename Type> \
- inline size_t \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::SpaceUsedInMapEntryLong(const TypeOnMemory& value) { \
- return sizeof(value); \
- } \
- template <typename Type> \
- inline void MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Clear( \
- TypeOnMemory* value, Arena* /* arena */) { \
- value->ClearToEmpty(); \
- } \
- template <typename Type> \
- inline void MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Merge( \
- const MapEntryAccessorType& from, TypeOnMemory* to, Arena* arena) { \
- to->Set(from, arena); \
- } \
- template <typename Type> \
- void MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::DeleteNoArena( \
- TypeOnMemory& value) { \
- value.Destroy(); \
- } \
- template <typename Type> \
- constexpr auto \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Constinit() \
- ->TypeOnMemory { \
- return TypeOnMemory(&internal::fixed_address_empty_string, \
- ConstantInitialized{}); \
- } \
- template <typename Type> \
- inline typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType* \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::EnsureMutable( \
- TypeOnMemory* value, Arena* arena) { \
- return value->Mutable(arena); \
- } \
- template <typename Type> \
- inline const typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType& \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::DefaultIfNotInitialized(const TypeOnMemory& value) { \
- return value.Get(); \
- } \
- template <typename Type> \
- inline bool \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::IsInitialized( \
- const TypeOnMemory& /* value */) { \
- return true; \
- }
-STRING_OR_BYTES_HANDLER_FUNCTIONS(STRING)
-STRING_OR_BYTES_HANDLER_FUNCTIONS(BYTES)
-#undef STRING_OR_BYTES_HANDLER_FUNCTIONS
-
-#define PRIMITIVE_HANDLER_FUNCTIONS(FieldType) \
- template <typename Type> \
- inline const typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType& \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::GetExternalReference(const TypeOnMemory& value) { \
- return value; \
- } \
- template <typename Type> \
- inline size_t MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>:: \
- SpaceUsedInMapEntryLong(const TypeOnMemory& /* value */) { \
- return 0; \
- } \
- template <typename Type> \
- inline void MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Clear( \
- TypeOnMemory* value, Arena* /* arena */) { \
- *value = 0; \
- } \
- template <typename Type> \
- inline void MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Merge( \
- const MapEntryAccessorType& from, TypeOnMemory* to, \
- Arena* /* arena */) { \
- *to = from; \
- } \
- template <typename Type> \
- inline void MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::DeleteNoArena(TypeOnMemory& /* x */) {} \
- template <typename Type> \
- constexpr auto \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::Constinit() \
- ->TypeOnMemory { \
- return 0; \
- } \
- template <typename Type> \
- inline typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType* \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::EnsureMutable( \
- TypeOnMemory* value, Arena* /* arena */) { \
- return value; \
- } \
- template <typename Type> \
- inline const typename MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::MapEntryAccessorType& \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, \
- Type>::DefaultIfNotInitialized(const TypeOnMemory& value) { \
- return value; \
- } \
- template <typename Type> \
- inline bool \
- MapTypeHandler<WireFormatLite::TYPE_##FieldType, Type>::IsInitialized( \
- const TypeOnMemory& /* value */) { \
- return true; \
- }
-PRIMITIVE_HANDLER_FUNCTIONS(INT64)
-PRIMITIVE_HANDLER_FUNCTIONS(UINT64)
-PRIMITIVE_HANDLER_FUNCTIONS(INT32)
-PRIMITIVE_HANDLER_FUNCTIONS(UINT32)
-PRIMITIVE_HANDLER_FUNCTIONS(SINT64)
-PRIMITIVE_HANDLER_FUNCTIONS(SINT32)
-PRIMITIVE_HANDLER_FUNCTIONS(ENUM)
-PRIMITIVE_HANDLER_FUNCTIONS(DOUBLE)
-PRIMITIVE_HANDLER_FUNCTIONS(FLOAT)
-PRIMITIVE_HANDLER_FUNCTIONS(FIXED64)
-PRIMITIVE_HANDLER_FUNCTIONS(FIXED32)
-PRIMITIVE_HANDLER_FUNCTIONS(SFIXED64)
-PRIMITIVE_HANDLER_FUNCTIONS(SFIXED32)
-PRIMITIVE_HANDLER_FUNCTIONS(BOOL)
-#undef PRIMITIVE_HANDLER_FUNCTIONS
-
-// Functions for operating on a map entry using type handlers.
-//
-// Does not contain any representation (this class is not intended to be
-// instantiated).
-template <typename Key, typename Value, WireFormatLite::FieldType kKeyFieldType,
- WireFormatLite::FieldType kValueFieldType>
-struct MapEntryFuncs {
- typedef MapTypeHandler<kKeyFieldType, Key> KeyTypeHandler;
- typedef MapTypeHandler<kValueFieldType, Value> ValueTypeHandler;
- enum : int {
- kKeyFieldNumber = 1,
- kValueFieldNumber = 2
- };
-
- static uint8_t* InternalSerialize(int field_number, const Key& key,
- const Value& value, uint8_t* ptr,
- io::EpsCopyOutputStream* stream) {
- ptr = stream->EnsureSpace(ptr);
- ptr = WireFormatLite::WriteTagToArray(
- field_number, WireFormatLite::WIRETYPE_LENGTH_DELIMITED, ptr);
- ptr = io::CodedOutputStream::WriteVarint32ToArray(GetCachedSize(key, value),
- ptr);
-
- ptr = KeyTypeHandler::Write(kKeyFieldNumber, key, ptr, stream);
- return ValueTypeHandler::Write(kValueFieldNumber, value, ptr, stream);
- }
-
- static size_t ByteSizeLong(const Key& key, const Value& value) {
- // Tags for key and value will both be one byte (field numbers 1 and 2).
- size_t inner_length =
- 2 + KeyTypeHandler::ByteSize(key) + ValueTypeHandler::ByteSize(value);
- return inner_length + io::CodedOutputStream::VarintSize32(
- static_cast<uint32_t>(inner_length));
- }
-
- static int GetCachedSize(const Key& key, const Value& value) {
- // Tags for key and value will both be one byte (field numbers 1 and 2).
- return 2 + KeyTypeHandler::GetCachedSize(key) +
- ValueTypeHandler::GetCachedSize(value);
- }
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_MAP_TYPE_HANDLER_H__
diff --git a/include/google/protobuf/message.h b/include/google/protobuf/message.h
deleted file mode 100644
index 39ec154c34..0000000000
--- a/include/google/protobuf/message.h
+++ /dev/null
@@ -1,1497 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Defines Message, the abstract interface implemented by non-lite
-// protocol message objects. Although it's possible to implement this
-// interface manually, most users will use the protocol compiler to
-// generate implementations.
-//
-// Example usage:
-//
-// Say you have a message defined as:
-//
-// message Foo {
-// optional string text = 1;
-// repeated int32 numbers = 2;
-// }
-//
-// Then, if you used the protocol compiler to generate a class from the above
-// definition, you could use it like so:
-//
-// std::string data; // Will store a serialized version of the message.
-//
-// {
-// // Create a message and serialize it.
-// Foo foo;
-// foo.set_text("Hello World!");
-// foo.add_numbers(1);
-// foo.add_numbers(5);
-// foo.add_numbers(42);
-//
-// foo.SerializeToString(&data);
-// }
-//
-// {
-// // Parse the serialized message and check that it contains the
-// // correct data.
-// Foo foo;
-// foo.ParseFromString(data);
-//
-// assert(foo.text() == "Hello World!");
-// assert(foo.numbers_size() == 3);
-// assert(foo.numbers(0) == 1);
-// assert(foo.numbers(1) == 5);
-// assert(foo.numbers(2) == 42);
-// }
-//
-// {
-// // Same as the last block, but do it dynamically via the Message
-// // reflection interface.
-// Message* foo = new Foo;
-// const Descriptor* descriptor = foo->GetDescriptor();
-//
-// // Get the descriptors for the fields we're interested in and verify
-// // their types.
-// const FieldDescriptor* text_field = descriptor->FindFieldByName("text");
-// assert(text_field != nullptr);
-// assert(text_field->type() == FieldDescriptor::TYPE_STRING);
-// assert(text_field->label() == FieldDescriptor::LABEL_OPTIONAL);
-// const FieldDescriptor* numbers_field = descriptor->
-// FindFieldByName("numbers");
-// assert(numbers_field != nullptr);
-// assert(numbers_field->type() == FieldDescriptor::TYPE_INT32);
-// assert(numbers_field->label() == FieldDescriptor::LABEL_REPEATED);
-//
-// // Parse the message.
-// foo->ParseFromString(data);
-//
-// // Use the reflection interface to examine the contents.
-// const Reflection* reflection = foo->GetReflection();
-// assert(reflection->GetString(*foo, text_field) == "Hello World!");
-// assert(reflection->FieldSize(*foo, numbers_field) == 3);
-// assert(reflection->GetRepeatedInt32(*foo, numbers_field, 0) == 1);
-// assert(reflection->GetRepeatedInt32(*foo, numbers_field, 1) == 5);
-// assert(reflection->GetRepeatedInt32(*foo, numbers_field, 2) == 42);
-//
-// delete foo;
-// }
-
-#ifndef GOOGLE_PROTOBUF_MESSAGE_H__
-#define GOOGLE_PROTOBUF_MESSAGE_H__
-
-
-#include <iosfwd>
-#include <string>
-#include <type_traits>
-#include <vector>
-
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/map.h> // TODO(b/211442718): cleanup
-#include <google/protobuf/message_lite.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-// Defined in this file.
-class Message;
-class Reflection;
-class MessageFactory;
-
-// Defined in other files.
-class AssignDescriptorsHelper;
-class DynamicMessageFactory;
-class GeneratedMessageReflectionTestHelper;
-class MapKey;
-class MapValueConstRef;
-class MapValueRef;
-class MapIterator;
-class MapReflectionTester;
-
-namespace internal {
-struct DescriptorTable;
-class MapFieldBase;
-class SwapFieldHelper;
-class CachedSize;
-} // namespace internal
-class UnknownFieldSet; // unknown_field_set.h
-namespace io {
-class ZeroCopyInputStream; // zero_copy_stream.h
-class ZeroCopyOutputStream; // zero_copy_stream.h
-class CodedInputStream; // coded_stream.h
-class CodedOutputStream; // coded_stream.h
-} // namespace io
-namespace python {
-class MapReflectionFriend; // scalar_map_container.h
-class MessageReflectionFriend;
-} // namespace python
-namespace expr {
-class CelMapReflectionFriend; // field_backed_map_impl.cc
-}
-
-namespace internal {
-class MapFieldPrinterHelper; // text_format.cc
-}
-namespace util {
-class MessageDifferencer;
-}
-
-
-namespace internal {
-class ReflectionAccessor; // message.cc
-class ReflectionOps; // reflection_ops.h
-class MapKeySorter; // wire_format.cc
-class WireFormat; // wire_format.h
-class MapFieldReflectionTest; // map_test.cc
-} // namespace internal
-
-template <typename T>
-class RepeatedField; // repeated_field.h
-
-template <typename T>
-class RepeatedPtrField; // repeated_field.h
-
-// A container to hold message metadata.
-struct Metadata {
- const Descriptor* descriptor;
- const Reflection* reflection;
-};
-
-namespace internal {
-template <class To>
-inline To* GetPointerAtOffset(Message* message, uint32_t offset) {
- return reinterpret_cast<To*>(reinterpret_cast<char*>(message) + offset);
-}
-
-template <class To>
-const To* GetConstPointerAtOffset(const Message* message, uint32_t offset) {
- return reinterpret_cast<const To*>(reinterpret_cast<const char*>(message) +
- offset);
-}
-
-template <class To>
-const To& GetConstRefAtOffset(const Message& message, uint32_t offset) {
- return *GetConstPointerAtOffset<To>(&message, offset);
-}
-
-bool CreateUnknownEnumValues(const FieldDescriptor* field);
-
-// Returns true if "message" is a descendant of "root".
-PROTOBUF_EXPORT bool IsDescendant(Message& root, const Message& message);
-} // namespace internal
-
-// Abstract interface for protocol messages.
-//
-// See also MessageLite, which contains most every-day operations. Message
-// adds descriptors and reflection on top of that.
-//
-// The methods of this class that are virtual but not pure-virtual have
-// default implementations based on reflection. Message classes which are
-// optimized for speed will want to override these with faster implementations,
-// but classes optimized for code size may be happy with keeping them. See
-// the optimize_for option in descriptor.proto.
-//
-// Users must not derive from this class. Only the protocol compiler and
-// the internal library are allowed to create subclasses.
-class PROTOBUF_EXPORT Message : public MessageLite {
- public:
- constexpr Message() {}
-
- // Basic Operations ------------------------------------------------
-
- // Construct a new instance of the same type. Ownership is passed to the
- // caller. (This is also defined in MessageLite, but is defined again here
- // for return-type covariance.)
- Message* New() const { return New(nullptr); }
-
- // Construct a new instance on the arena. Ownership is passed to the caller
- // if arena is a nullptr.
- Message* New(Arena* arena) const override = 0;
-
- // Make this message into a copy of the given message. The given message
- // must have the same descriptor, but need not necessarily be the same class.
- // By default this is just implemented as "Clear(); MergeFrom(from);".
- void CopyFrom(const Message& from);
-
- // Merge the fields from the given message into this message. Singular
- // fields will be overwritten, if specified in from, except for embedded
- // messages which will be merged. Repeated fields will be concatenated.
- // The given message must be of the same type as this message (i.e. the
- // exact same class).
- virtual void MergeFrom(const Message& from);
-
- // Verifies that IsInitialized() returns true. GOOGLE_CHECK-fails otherwise, with
- // a nice error message.
- void CheckInitialized() const;
-
- // Slowly build a list of all required fields that are not set.
- // This is much, much slower than IsInitialized() as it is implemented
- // purely via reflection. Generally, you should not call this unless you
- // have already determined that an error exists by calling IsInitialized().
- void FindInitializationErrors(std::vector<std::string>* errors) const;
-
- // Like FindInitializationErrors, but joins all the strings, delimited by
- // commas, and returns them.
- std::string InitializationErrorString() const override;
-
- // Clears all unknown fields from this message and all embedded messages.
- // Normally, if unknown tag numbers are encountered when parsing a message,
- // the tag and value are stored in the message's UnknownFieldSet and
- // then written back out when the message is serialized. This allows servers
- // which simply route messages to other servers to pass through messages
- // that have new field definitions which they don't yet know about. However,
- // this behavior can have security implications. To avoid it, call this
- // method after parsing.
- //
- // See Reflection::GetUnknownFields() for more on unknown fields.
- void DiscardUnknownFields();
-
- // Computes (an estimate of) the total number of bytes currently used for
- // storing the message in memory. The default implementation calls the
- // Reflection object's SpaceUsed() method.
- //
- // SpaceUsed() is noticeably slower than ByteSize(), as it is implemented
- // using reflection (rather than the generated code implementation for
- // ByteSize()). Like ByteSize(), its CPU time is linear in the number of
- // fields defined for the proto.
- virtual size_t SpaceUsedLong() const;
-
- PROTOBUF_DEPRECATED_MSG("Please use SpaceUsedLong() instead")
- int SpaceUsed() const { return internal::ToIntSize(SpaceUsedLong()); }
-
- // Debugging & Testing----------------------------------------------
-
- // Generates a human-readable form of this message for debugging purposes.
- // Note that the format and content of a debug string is not guaranteed, may
- // change without notice, and should not be depended on. Code that does
- // anything except display a string to assist in debugging should use
- // TextFormat instead.
- std::string DebugString() const;
- // Like DebugString(), but with less whitespace.
- std::string ShortDebugString() const;
- // Like DebugString(), but do not escape UTF-8 byte sequences.
- std::string Utf8DebugString() const;
- // Convenience function useful in GDB. Prints DebugString() to stdout.
- void PrintDebugString() const;
-
- // Reflection-based methods ----------------------------------------
- // These methods are pure-virtual in MessageLite, but Message provides
- // reflection-based default implementations.
-
- std::string GetTypeName() const override;
- void Clear() override;
-
- // Returns whether all required fields have been set. Note that required
- // fields no longer exist starting in proto3.
- bool IsInitialized() const override;
-
- void CheckTypeAndMergeFrom(const MessageLite& other) override;
- // Reflective parser
- const char* _InternalParse(const char* ptr,
- internal::ParseContext* ctx) override;
- size_t ByteSizeLong() const override;
- uint8_t* _InternalSerialize(uint8_t* target,
- io::EpsCopyOutputStream* stream) const override;
-
- private:
- // This is called only by the default implementation of ByteSize(), to
- // update the cached size. If you override ByteSize(), you do not need
- // to override this. If you do not override ByteSize(), you MUST override
- // this; the default implementation will crash.
- //
- // The method is private because subclasses should never call it; only
- // override it. Yes, C++ lets you do that. Crazy, huh?
- virtual void SetCachedSize(int size) const;
-
- public:
- // Introspection ---------------------------------------------------
-
-
- // Get a non-owning pointer to a Descriptor for this message's type. This
- // describes what fields the message contains, the types of those fields, etc.
- // This object remains property of the Message.
- const Descriptor* GetDescriptor() const { return GetMetadata().descriptor; }
-
- // Get a non-owning pointer to the Reflection interface for this Message,
- // which can be used to read and modify the fields of the Message dynamically
- // (in other words, without knowing the message type at compile time). This
- // object remains property of the Message.
- const Reflection* GetReflection() const { return GetMetadata().reflection; }
-
- protected:
- // Get a struct containing the metadata for the Message, which is used in turn
- // to implement GetDescriptor() and GetReflection() above.
- virtual Metadata GetMetadata() const = 0;
-
- struct ClassData {
- // Note: The order of arguments (to, then from) is chosen so that the ABI
- // of this function is the same as the CopyFrom method. That is, the
- // hidden "this" parameter comes first.
- void (*copy_to_from)(Message& to, const Message& from_msg);
- void (*merge_to_from)(Message& to, const Message& from_msg);
- };
- // GetClassData() returns a pointer to a ClassData struct which
- // exists in global memory and is unique to each subclass. This uniqueness
- // property is used in order to quickly determine whether two messages are
- // of the same type.
- // TODO(jorg): change to pure virtual
- virtual const ClassData* GetClassData() const { return nullptr; }
-
- // CopyWithSourceCheck calls Clear() and then MergeFrom(), and in debug
- // builds, checks that calling Clear() on the destination message doesn't
- // alter the source. It assumes the messages are known to be of the same
- // type, and thus uses GetClassData().
- static void CopyWithSourceCheck(Message& to, const Message& from);
-
- // Fail if "from" is a descendant of "to" as such copy is not allowed.
- static void FailIfCopyFromDescendant(Message& to, const Message& from);
-
- inline explicit Message(Arena* arena, bool is_message_owned = false)
- : MessageLite(arena, is_message_owned) {}
- size_t ComputeUnknownFieldsSize(size_t total_size,
- internal::CachedSize* cached_size) const;
- size_t MaybeComputeUnknownFieldsSize(size_t total_size,
- internal::CachedSize* cached_size) const;
-
-
- protected:
- static uint64_t GetInvariantPerBuild(uint64_t salt);
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Message);
-};
-
-namespace internal {
-// Forward-declare interfaces used to implement RepeatedFieldRef.
-// These are protobuf internals that users shouldn't care about.
-class RepeatedFieldAccessor;
-} // namespace internal
-
-// Forward-declare RepeatedFieldRef templates. The second type parameter is
-// used for SFINAE tricks. Users should ignore it.
-template <typename T, typename Enable = void>
-class RepeatedFieldRef;
-
-template <typename T, typename Enable = void>
-class MutableRepeatedFieldRef;
-
-// This interface contains methods that can be used to dynamically access
-// and modify the fields of a protocol message. Their semantics are
-// similar to the accessors the protocol compiler generates.
-//
-// To get the Reflection for a given Message, call Message::GetReflection().
-//
-// This interface is separate from Message only for efficiency reasons;
-// the vast majority of implementations of Message will share the same
-// implementation of Reflection (GeneratedMessageReflection,
-// defined in generated_message.h), and all Messages of a particular class
-// should share the same Reflection object (though you should not rely on
-// the latter fact).
-//
-// There are several ways that these methods can be used incorrectly. For
-// example, any of the following conditions will lead to undefined
-// results (probably assertion failures):
-// - The FieldDescriptor is not a field of this message type.
-// - The method called is not appropriate for the field's type. For
-// each field type in FieldDescriptor::TYPE_*, there is only one
-// Get*() method, one Set*() method, and one Add*() method that is
-// valid for that type. It should be obvious which (except maybe
-// for TYPE_BYTES, which are represented using strings in C++).
-// - A Get*() or Set*() method for singular fields is called on a repeated
-// field.
-// - GetRepeated*(), SetRepeated*(), or Add*() is called on a non-repeated
-// field.
-// - The Message object passed to any method is not of the right type for
-// this Reflection object (i.e. message.GetReflection() != reflection).
-//
-// You might wonder why there is not any abstract representation for a field
-// of arbitrary type. E.g., why isn't there just a "GetField()" method that
-// returns "const Field&", where "Field" is some class with accessors like
-// "GetInt32Value()". The problem is that someone would have to deal with
-// allocating these Field objects. For generated message classes, having to
-// allocate space for an additional object to wrap every field would at least
-// double the message's memory footprint, probably worse. Allocating the
-// objects on-demand, on the other hand, would be expensive and prone to
-// memory leaks. So, instead we ended up with this flat interface.
-class PROTOBUF_EXPORT Reflection final {
- public:
- // Get the UnknownFieldSet for the message. This contains fields which
- // were seen when the Message was parsed but were not recognized according
- // to the Message's definition.
- const UnknownFieldSet& GetUnknownFields(const Message& message) const;
- // Get a mutable pointer to the UnknownFieldSet for the message. This
- // contains fields which were seen when the Message was parsed but were not
- // recognized according to the Message's definition.
- UnknownFieldSet* MutableUnknownFields(Message* message) const;
-
- // Estimate the amount of memory used by the message object.
- size_t SpaceUsedLong(const Message& message) const;
-
- PROTOBUF_DEPRECATED_MSG("Please use SpaceUsedLong() instead")
- int SpaceUsed(const Message& message) const {
- return internal::ToIntSize(SpaceUsedLong(message));
- }
-
- // Check if the given non-repeated field is set.
- bool HasField(const Message& message, const FieldDescriptor* field) const;
-
- // Get the number of elements of a repeated field.
- int FieldSize(const Message& message, const FieldDescriptor* field) const;
-
- // Clear the value of a field, so that HasField() returns false or
- // FieldSize() returns zero.
- void ClearField(Message* message, const FieldDescriptor* field) const;
-
- // Check if the oneof is set. Returns true if any field in oneof
- // is set, false otherwise.
- bool HasOneof(const Message& message,
- const OneofDescriptor* oneof_descriptor) const;
-
- void ClearOneof(Message* message,
- const OneofDescriptor* oneof_descriptor) const;
-
- // Returns the field descriptor if the oneof is set. nullptr otherwise.
- const FieldDescriptor* GetOneofFieldDescriptor(
- const Message& message, const OneofDescriptor* oneof_descriptor) const;
-
- // Removes the last element of a repeated field.
- // We don't provide a way to remove any element other than the last
- // because it invites inefficient use, such as O(n^2) filtering loops
- // that should have been O(n). If you want to remove an element other
- // than the last, the best way to do it is to re-arrange the elements
- // (using Swap()) so that the one you want removed is at the end, then
- // call RemoveLast().
- void RemoveLast(Message* message, const FieldDescriptor* field) const;
- // Removes the last element of a repeated message field, and returns the
- // pointer to the caller. Caller takes ownership of the returned pointer.
- PROTOBUF_NODISCARD Message* ReleaseLast(Message* message,
- const FieldDescriptor* field) const;
-
- // Similar to ReleaseLast() without internal safety and ownershp checks. This
- // method should only be used when the objects are on the same arena or paired
- // with a call to `UnsafeArenaAddAllocatedMessage`.
- Message* UnsafeArenaReleaseLast(Message* message,
- const FieldDescriptor* field) const;
-
- // Swap the complete contents of two messages.
- void Swap(Message* message1, Message* message2) const;
-
- // Swap fields listed in fields vector of two messages.
- void SwapFields(Message* message1, Message* message2,
- const std::vector<const FieldDescriptor*>& fields) const;
-
- // Swap two elements of a repeated field.
- void SwapElements(Message* message, const FieldDescriptor* field, int index1,
- int index2) const;
-
- // Swap without internal safety and ownership checks. This method should only
- // be used when the objects are on the same arena.
- void UnsafeArenaSwap(Message* lhs, Message* rhs) const;
-
- // SwapFields without internal safety and ownership checks. This method should
- // only be used when the objects are on the same arena.
- void UnsafeArenaSwapFields(
- Message* lhs, Message* rhs,
- const std::vector<const FieldDescriptor*>& fields) const;
-
- // List all fields of the message which are currently set, except for unknown
- // fields, but including extension known to the parser (i.e. compiled in).
- // Singular fields will only be listed if HasField(field) would return true
- // and repeated fields will only be listed if FieldSize(field) would return
- // non-zero. Fields (both normal fields and extension fields) will be listed
- // ordered by field number.
- // Use Reflection::GetUnknownFields() or message.unknown_fields() to also get
- // access to fields/extensions unknown to the parser.
- void ListFields(const Message& message,
- std::vector<const FieldDescriptor*>* output) const;
-
- // Singular field getters ------------------------------------------
- // These get the value of a non-repeated field. They return the default
- // value for fields that aren't set.
-
- int32_t GetInt32(const Message& message, const FieldDescriptor* field) const;
- int64_t GetInt64(const Message& message, const FieldDescriptor* field) const;
- uint32_t GetUInt32(const Message& message,
- const FieldDescriptor* field) const;
- uint64_t GetUInt64(const Message& message,
- const FieldDescriptor* field) const;
- float GetFloat(const Message& message, const FieldDescriptor* field) const;
- double GetDouble(const Message& message, const FieldDescriptor* field) const;
- bool GetBool(const Message& message, const FieldDescriptor* field) const;
- std::string GetString(const Message& message,
- const FieldDescriptor* field) const;
- const EnumValueDescriptor* GetEnum(const Message& message,
- const FieldDescriptor* field) const;
-
- // GetEnumValue() returns an enum field's value as an integer rather than
- // an EnumValueDescriptor*. If the integer value does not correspond to a
- // known value descriptor, a new value descriptor is created. (Such a value
- // will only be present when the new unknown-enum-value semantics are enabled
- // for a message.)
- int GetEnumValue(const Message& message, const FieldDescriptor* field) const;
-
- // See MutableMessage() for the meaning of the "factory" parameter.
- const Message& GetMessage(const Message& message,
- const FieldDescriptor* field,
- MessageFactory* factory = nullptr) const;
-
- // Get a string value without copying, if possible.
- //
- // GetString() necessarily returns a copy of the string. This can be
- // inefficient when the std::string is already stored in a std::string object
- // in the underlying message. GetStringReference() will return a reference to
- // the underlying std::string in this case. Otherwise, it will copy the
- // string into *scratch and return that.
- //
- // Note: It is perfectly reasonable and useful to write code like:
- // str = reflection->GetStringReference(message, field, &str);
- // This line would ensure that only one copy of the string is made
- // regardless of the field's underlying representation. When initializing
- // a newly-constructed string, though, it's just as fast and more
- // readable to use code like:
- // std::string str = reflection->GetString(message, field);
- const std::string& GetStringReference(const Message& message,
- const FieldDescriptor* field,
- std::string* scratch) const;
-
-
- // Singular field mutators -----------------------------------------
- // These mutate the value of a non-repeated field.
-
- void SetInt32(Message* message, const FieldDescriptor* field,
- int32_t value) const;
- void SetInt64(Message* message, const FieldDescriptor* field,
- int64_t value) const;
- void SetUInt32(Message* message, const FieldDescriptor* field,
- uint32_t value) const;
- void SetUInt64(Message* message, const FieldDescriptor* field,
- uint64_t value) const;
- void SetFloat(Message* message, const FieldDescriptor* field,
- float value) const;
- void SetDouble(Message* message, const FieldDescriptor* field,
- double value) const;
- void SetBool(Message* message, const FieldDescriptor* field,
- bool value) const;
- void SetString(Message* message, const FieldDescriptor* field,
- std::string value) const;
- void SetEnum(Message* message, const FieldDescriptor* field,
- const EnumValueDescriptor* value) const;
- // Set an enum field's value with an integer rather than EnumValueDescriptor.
- // For proto3 this is just setting the enum field to the value specified, for
- // proto2 it's more complicated. If value is a known enum value the field is
- // set as usual. If the value is unknown then it is added to the unknown field
- // set. Note this matches the behavior of parsing unknown enum values.
- // If multiple calls with unknown values happen than they are all added to the
- // unknown field set in order of the calls.
- void SetEnumValue(Message* message, const FieldDescriptor* field,
- int value) const;
-
- // Get a mutable pointer to a field with a message type. If a MessageFactory
- // is provided, it will be used to construct instances of the sub-message;
- // otherwise, the default factory is used. If the field is an extension that
- // does not live in the same pool as the containing message's descriptor (e.g.
- // it lives in an overlay pool), then a MessageFactory must be provided.
- // If you have no idea what that meant, then you probably don't need to worry
- // about it (don't provide a MessageFactory). WARNING: If the
- // FieldDescriptor is for a compiled-in extension, then
- // factory->GetPrototype(field->message_type()) MUST return an instance of
- // the compiled-in class for this type, NOT DynamicMessage.
- Message* MutableMessage(Message* message, const FieldDescriptor* field,
- MessageFactory* factory = nullptr) const;
-
- // Replaces the message specified by 'field' with the already-allocated object
- // sub_message, passing ownership to the message. If the field contained a
- // message, that message is deleted. If sub_message is nullptr, the field is
- // cleared.
- void SetAllocatedMessage(Message* message, Message* sub_message,
- const FieldDescriptor* field) const;
-
- // Similar to `SetAllocatedMessage`, but omits all internal safety and
- // ownership checks. This method should only be used when the objects are on
- // the same arena or paired with a call to `UnsafeArenaReleaseMessage`.
- void UnsafeArenaSetAllocatedMessage(Message* message, Message* sub_message,
- const FieldDescriptor* field) const;
-
- // Releases the message specified by 'field' and returns the pointer,
- // ReleaseMessage() will return the message the message object if it exists.
- // Otherwise, it may or may not return nullptr. In any case, if the return
- // value is non-null, the caller takes ownership of the pointer.
- // If the field existed (HasField() is true), then the returned pointer will
- // be the same as the pointer returned by MutableMessage().
- // This function has the same effect as ClearField().
- PROTOBUF_NODISCARD Message* ReleaseMessage(
- Message* message, const FieldDescriptor* field,
- MessageFactory* factory = nullptr) const;
-
- // Similar to `ReleaseMessage`, but omits all internal safety and ownership
- // checks. This method should only be used when the objects are on the same
- // arena or paired with a call to `UnsafeArenaSetAllocatedMessage`.
- Message* UnsafeArenaReleaseMessage(Message* message,
- const FieldDescriptor* field,
- MessageFactory* factory = nullptr) const;
-
-
- // Repeated field getters ------------------------------------------
- // These get the value of one element of a repeated field.
-
- int32_t GetRepeatedInt32(const Message& message, const FieldDescriptor* field,
- int index) const;
- int64_t GetRepeatedInt64(const Message& message, const FieldDescriptor* field,
- int index) const;
- uint32_t GetRepeatedUInt32(const Message& message,
- const FieldDescriptor* field, int index) const;
- uint64_t GetRepeatedUInt64(const Message& message,
- const FieldDescriptor* field, int index) const;
- float GetRepeatedFloat(const Message& message, const FieldDescriptor* field,
- int index) const;
- double GetRepeatedDouble(const Message& message, const FieldDescriptor* field,
- int index) const;
- bool GetRepeatedBool(const Message& message, const FieldDescriptor* field,
- int index) const;
- std::string GetRepeatedString(const Message& message,
- const FieldDescriptor* field, int index) const;
- const EnumValueDescriptor* GetRepeatedEnum(const Message& message,
- const FieldDescriptor* field,
- int index) const;
- // GetRepeatedEnumValue() returns an enum field's value as an integer rather
- // than an EnumValueDescriptor*. If the integer value does not correspond to a
- // known value descriptor, a new value descriptor is created. (Such a value
- // will only be present when the new unknown-enum-value semantics are enabled
- // for a message.)
- int GetRepeatedEnumValue(const Message& message, const FieldDescriptor* field,
- int index) const;
- const Message& GetRepeatedMessage(const Message& message,
- const FieldDescriptor* field,
- int index) const;
-
- // See GetStringReference(), above.
- const std::string& GetRepeatedStringReference(const Message& message,
- const FieldDescriptor* field,
- int index,
- std::string* scratch) const;
-
-
- // Repeated field mutators -----------------------------------------
- // These mutate the value of one element of a repeated field.
-
- void SetRepeatedInt32(Message* message, const FieldDescriptor* field,
- int index, int32_t value) const;
- void SetRepeatedInt64(Message* message, const FieldDescriptor* field,
- int index, int64_t value) const;
- void SetRepeatedUInt32(Message* message, const FieldDescriptor* field,
- int index, uint32_t value) const;
- void SetRepeatedUInt64(Message* message, const FieldDescriptor* field,
- int index, uint64_t value) const;
- void SetRepeatedFloat(Message* message, const FieldDescriptor* field,
- int index, float value) const;
- void SetRepeatedDouble(Message* message, const FieldDescriptor* field,
- int index, double value) const;
- void SetRepeatedBool(Message* message, const FieldDescriptor* field,
- int index, bool value) const;
- void SetRepeatedString(Message* message, const FieldDescriptor* field,
- int index, std::string value) const;
- void SetRepeatedEnum(Message* message, const FieldDescriptor* field,
- int index, const EnumValueDescriptor* value) const;
- // Set an enum field's value with an integer rather than EnumValueDescriptor.
- // For proto3 this is just setting the enum field to the value specified, for
- // proto2 it's more complicated. If value is a known enum value the field is
- // set as usual. If the value is unknown then it is added to the unknown field
- // set. Note this matches the behavior of parsing unknown enum values.
- // If multiple calls with unknown values happen than they are all added to the
- // unknown field set in order of the calls.
- void SetRepeatedEnumValue(Message* message, const FieldDescriptor* field,
- int index, int value) const;
- // Get a mutable pointer to an element of a repeated field with a message
- // type.
- Message* MutableRepeatedMessage(Message* message,
- const FieldDescriptor* field,
- int index) const;
-
-
- // Repeated field adders -------------------------------------------
- // These add an element to a repeated field.
-
- void AddInt32(Message* message, const FieldDescriptor* field,
- int32_t value) const;
- void AddInt64(Message* message, const FieldDescriptor* field,
- int64_t value) const;
- void AddUInt32(Message* message, const FieldDescriptor* field,
- uint32_t value) const;
- void AddUInt64(Message* message, const FieldDescriptor* field,
- uint64_t value) const;
- void AddFloat(Message* message, const FieldDescriptor* field,
- float value) const;
- void AddDouble(Message* message, const FieldDescriptor* field,
- double value) const;
- void AddBool(Message* message, const FieldDescriptor* field,
- bool value) const;
- void AddString(Message* message, const FieldDescriptor* field,
- std::string value) const;
- void AddEnum(Message* message, const FieldDescriptor* field,
- const EnumValueDescriptor* value) const;
- // Add an integer value to a repeated enum field rather than
- // EnumValueDescriptor. For proto3 this is just setting the enum field to the
- // value specified, for proto2 it's more complicated. If value is a known enum
- // value the field is set as usual. If the value is unknown then it is added
- // to the unknown field set. Note this matches the behavior of parsing unknown
- // enum values. If multiple calls with unknown values happen than they are all
- // added to the unknown field set in order of the calls.
- void AddEnumValue(Message* message, const FieldDescriptor* field,
- int value) const;
- // See MutableMessage() for comments on the "factory" parameter.
- Message* AddMessage(Message* message, const FieldDescriptor* field,
- MessageFactory* factory = nullptr) const;
-
- // Appends an already-allocated object 'new_entry' to the repeated field
- // specified by 'field' passing ownership to the message.
- void AddAllocatedMessage(Message* message, const FieldDescriptor* field,
- Message* new_entry) const;
-
- // Similar to AddAllocatedMessage() without internal safety and ownership
- // checks. This method should only be used when the objects are on the same
- // arena or paired with a call to `UnsafeArenaReleaseLast`.
- void UnsafeArenaAddAllocatedMessage(Message* message,
- const FieldDescriptor* field,
- Message* new_entry) const;
-
-
- // Get a RepeatedFieldRef object that can be used to read the underlying
- // repeated field. The type parameter T must be set according to the
- // field's cpp type. The following table shows the mapping from cpp type
- // to acceptable T.
- //
- // field->cpp_type() T
- // CPPTYPE_INT32 int32_t
- // CPPTYPE_UINT32 uint32_t
- // CPPTYPE_INT64 int64_t
- // CPPTYPE_UINT64 uint64_t
- // CPPTYPE_DOUBLE double
- // CPPTYPE_FLOAT float
- // CPPTYPE_BOOL bool
- // CPPTYPE_ENUM generated enum type or int32_t
- // CPPTYPE_STRING std::string
- // CPPTYPE_MESSAGE generated message type or google::protobuf::Message
- //
- // A RepeatedFieldRef object can be copied and the resulted object will point
- // to the same repeated field in the same message. The object can be used as
- // long as the message is not destroyed.
- //
- // Note that to use this method users need to include the header file
- // "reflection.h" (which defines the RepeatedFieldRef class templates).
- template <typename T>
- RepeatedFieldRef<T> GetRepeatedFieldRef(const Message& message,
- const FieldDescriptor* field) const;
-
- // Like GetRepeatedFieldRef() but return an object that can also be used
- // manipulate the underlying repeated field.
- template <typename T>
- MutableRepeatedFieldRef<T> GetMutableRepeatedFieldRef(
- Message* message, const FieldDescriptor* field) const;
-
- // DEPRECATED. Please use Get(Mutable)RepeatedFieldRef() for repeated field
- // access. The following repeated field accessors will be removed in the
- // future.
- //
- // Repeated field accessors -------------------------------------------------
- // The methods above, e.g. GetRepeatedInt32(msg, fd, index), provide singular
- // access to the data in a RepeatedField. The methods below provide aggregate
- // access by exposing the RepeatedField object itself with the Message.
- // Applying these templates to inappropriate types will lead to an undefined
- // reference at link time (e.g. GetRepeatedField<***double>), or possibly a
- // template matching error at compile time (e.g. GetRepeatedPtrField<File>).
- //
- // Usage example: my_doubs = refl->GetRepeatedField<double>(msg, fd);
-
- // DEPRECATED. Please use GetRepeatedFieldRef().
- //
- // for T = Cord and all protobuf scalar types except enums.
- template <typename T>
- PROTOBUF_DEPRECATED_MSG("Please use GetRepeatedFieldRef() instead")
- const RepeatedField<T>& GetRepeatedField(const Message& msg,
- const FieldDescriptor* d) const {
- return GetRepeatedFieldInternal<T>(msg, d);
- }
-
- // DEPRECATED. Please use GetMutableRepeatedFieldRef().
- //
- // for T = Cord and all protobuf scalar types except enums.
- template <typename T>
- PROTOBUF_DEPRECATED_MSG("Please use GetMutableRepeatedFieldRef() instead")
- RepeatedField<T>* MutableRepeatedField(Message* msg,
- const FieldDescriptor* d) const {
- return MutableRepeatedFieldInternal<T>(msg, d);
- }
-
- // DEPRECATED. Please use GetRepeatedFieldRef().
- //
- // for T = std::string, google::protobuf::internal::StringPieceField
- // google::protobuf::Message & descendants.
- template <typename T>
- PROTOBUF_DEPRECATED_MSG("Please use GetRepeatedFieldRef() instead")
- const RepeatedPtrField<T>& GetRepeatedPtrField(
- const Message& msg, const FieldDescriptor* d) const {
- return GetRepeatedPtrFieldInternal<T>(msg, d);
- }
-
- // DEPRECATED. Please use GetMutableRepeatedFieldRef().
- //
- // for T = std::string, google::protobuf::internal::StringPieceField
- // google::protobuf::Message & descendants.
- template <typename T>
- PROTOBUF_DEPRECATED_MSG("Please use GetMutableRepeatedFieldRef() instead")
- RepeatedPtrField<T>* MutableRepeatedPtrField(Message* msg,
- const FieldDescriptor* d) const {
- return MutableRepeatedPtrFieldInternal<T>(msg, d);
- }
-
- // Extensions ----------------------------------------------------------------
-
- // Try to find an extension of this message type by fully-qualified field
- // name. Returns nullptr if no extension is known for this name or number.
- const FieldDescriptor* FindKnownExtensionByName(
- const std::string& name) const;
-
- // Try to find an extension of this message type by field number.
- // Returns nullptr if no extension is known for this name or number.
- const FieldDescriptor* FindKnownExtensionByNumber(int number) const;
-
- // Feature Flags -------------------------------------------------------------
-
- // Does this message support storing arbitrary integer values in enum fields?
- // If |true|, GetEnumValue/SetEnumValue and associated repeated-field versions
- // take arbitrary integer values, and the legacy GetEnum() getter will
- // dynamically create an EnumValueDescriptor for any integer value without
- // one. If |false|, setting an unknown enum value via the integer-based
- // setters results in undefined behavior (in practice, GOOGLE_DCHECK-fails).
- //
- // Generic code that uses reflection to handle messages with enum fields
- // should check this flag before using the integer-based setter, and either
- // downgrade to a compatible value or use the UnknownFieldSet if not. For
- // example:
- //
- // int new_value = GetValueFromApplicationLogic();
- // if (reflection->SupportsUnknownEnumValues()) {
- // reflection->SetEnumValue(message, field, new_value);
- // } else {
- // if (field_descriptor->enum_type()->
- // FindValueByNumber(new_value) != nullptr) {
- // reflection->SetEnumValue(message, field, new_value);
- // } else if (emit_unknown_enum_values) {
- // reflection->MutableUnknownFields(message)->AddVarint(
- // field->number(), new_value);
- // } else {
- // // convert value to a compatible/default value.
- // new_value = CompatibleDowngrade(new_value);
- // reflection->SetEnumValue(message, field, new_value);
- // }
- // }
- bool SupportsUnknownEnumValues() const;
-
- // Returns the MessageFactory associated with this message. This can be
- // useful for determining if a message is a generated message or not, for
- // example:
- // if (message->GetReflection()->GetMessageFactory() ==
- // google::protobuf::MessageFactory::generated_factory()) {
- // // This is a generated message.
- // }
- // It can also be used to create more messages of this type, though
- // Message::New() is an easier way to accomplish this.
- MessageFactory* GetMessageFactory() const;
-
- private:
- template <typename T>
- const RepeatedField<T>& GetRepeatedFieldInternal(
- const Message& message, const FieldDescriptor* field) const;
- template <typename T>
- RepeatedField<T>* MutableRepeatedFieldInternal(
- Message* message, const FieldDescriptor* field) const;
- template <typename T>
- const RepeatedPtrField<T>& GetRepeatedPtrFieldInternal(
- const Message& message, const FieldDescriptor* field) const;
- template <typename T>
- RepeatedPtrField<T>* MutableRepeatedPtrFieldInternal(
- Message* message, const FieldDescriptor* field) const;
- // Obtain a pointer to a Repeated Field Structure and do some type checking:
- // on field->cpp_type(),
- // on field->field_option().ctype() (if ctype >= 0)
- // of field->message_type() (if message_type != nullptr).
- // We use 2 routine rather than 4 (const vs mutable) x (scalar vs pointer).
- void* MutableRawRepeatedField(Message* message, const FieldDescriptor* field,
- FieldDescriptor::CppType, int ctype,
- const Descriptor* message_type) const;
-
- const void* GetRawRepeatedField(const Message& message,
- const FieldDescriptor* field,
- FieldDescriptor::CppType cpptype, int ctype,
- const Descriptor* message_type) const;
-
- // The following methods are used to implement (Mutable)RepeatedFieldRef.
- // A Ref object will store a raw pointer to the repeated field data (obtained
- // from RepeatedFieldData()) and a pointer to a Accessor (obtained from
- // RepeatedFieldAccessor) which will be used to access the raw data.
-
- // Returns a raw pointer to the repeated field
- //
- // "cpp_type" and "message_type" are deduced from the type parameter T passed
- // to Get(Mutable)RepeatedFieldRef. If T is a generated message type,
- // "message_type" should be set to its descriptor. Otherwise "message_type"
- // should be set to nullptr. Implementations of this method should check
- // whether "cpp_type"/"message_type" is consistent with the actual type of the
- // field. We use 1 routine rather than 2 (const vs mutable) because it is
- // protected and it doesn't change the message.
- void* RepeatedFieldData(Message* message, const FieldDescriptor* field,
- FieldDescriptor::CppType cpp_type,
- const Descriptor* message_type) const;
-
- // The returned pointer should point to a singleton instance which implements
- // the RepeatedFieldAccessor interface.
- const internal::RepeatedFieldAccessor* RepeatedFieldAccessor(
- const FieldDescriptor* field) const;
-
- // Lists all fields of the message which are currently set, except for unknown
- // fields and stripped fields. See ListFields for details.
- void ListFieldsOmitStripped(
- const Message& message,
- std::vector<const FieldDescriptor*>* output) const;
-
- bool IsMessageStripped(const Descriptor* descriptor) const {
- return schema_.IsMessageStripped(descriptor);
- }
-
- friend class TextFormat;
-
- void ListFieldsMayFailOnStripped(
- const Message& message, bool should_fail,
- std::vector<const FieldDescriptor*>* output) const;
-
- // Returns true if the message field is backed by a LazyField.
- //
- // A message field may be backed by a LazyField without the user annotation
- // ([lazy = true]). While the user-annotated LazyField is lazily verified on
- // first touch (i.e. failure on access rather than parsing if the LazyField is
- // not initialized), the inferred LazyField is eagerly verified to avoid lazy
- // parsing error at the cost of lower efficiency. When reflecting a message
- // field, use this API instead of checking field->options().lazy().
- bool IsLazyField(const FieldDescriptor* field) const {
- return IsLazilyVerifiedLazyField(field) ||
- IsEagerlyVerifiedLazyField(field);
- }
-
- // Returns true if the field is lazy extension. It is meant to allow python
- // reparse lazy field until b/157559327 is fixed.
- bool IsLazyExtension(const Message& message,
- const FieldDescriptor* field) const;
-
- bool IsLazilyVerifiedLazyField(const FieldDescriptor* field) const;
- bool IsEagerlyVerifiedLazyField(const FieldDescriptor* field) const;
-
- friend class FastReflectionMessageMutator;
- friend bool internal::IsDescendant(Message& root, const Message& message);
-
- const Descriptor* const descriptor_;
- const internal::ReflectionSchema schema_;
- const DescriptorPool* const descriptor_pool_;
- MessageFactory* const message_factory_;
-
- // Last non weak field index. This is an optimization when most weak fields
- // are at the end of the containing message. If a message proto doesn't
- // contain weak fields, then this field equals descriptor_->field_count().
- int last_non_weak_field_index_;
-
- template <typename T, typename Enable>
- friend class RepeatedFieldRef;
- template <typename T, typename Enable>
- friend class MutableRepeatedFieldRef;
- friend class ::PROTOBUF_NAMESPACE_ID::MessageLayoutInspector;
- friend class ::PROTOBUF_NAMESPACE_ID::AssignDescriptorsHelper;
- friend class DynamicMessageFactory;
- friend class GeneratedMessageReflectionTestHelper;
- friend class python::MapReflectionFriend;
- friend class python::MessageReflectionFriend;
- friend class util::MessageDifferencer;
-#define GOOGLE_PROTOBUF_HAS_CEL_MAP_REFLECTION_FRIEND
- friend class expr::CelMapReflectionFriend;
- friend class internal::MapFieldReflectionTest;
- friend class internal::MapKeySorter;
- friend class internal::WireFormat;
- friend class internal::ReflectionOps;
- friend class internal::SwapFieldHelper;
- // Needed for implementing text format for map.
- friend class internal::MapFieldPrinterHelper;
-
- Reflection(const Descriptor* descriptor,
- const internal::ReflectionSchema& schema,
- const DescriptorPool* pool, MessageFactory* factory);
-
- // Special version for specialized implementations of string. We can't
- // call MutableRawRepeatedField directly here because we don't have access to
- // FieldOptions::* which are defined in descriptor.pb.h. Including that
- // file here is not possible because it would cause a circular include cycle.
- // We use 1 routine rather than 2 (const vs mutable) because it is private
- // and mutable a repeated string field doesn't change the message.
- void* MutableRawRepeatedString(Message* message, const FieldDescriptor* field,
- bool is_string) const;
-
- friend class MapReflectionTester;
- // Returns true if key is in map. Returns false if key is not in map field.
- bool ContainsMapKey(const Message& message, const FieldDescriptor* field,
- const MapKey& key) const;
-
- // If key is in map field: Saves the value pointer to val and returns
- // false. If key in not in map field: Insert the key into map, saves
- // value pointer to val and returns true. Users are able to modify the
- // map value by MapValueRef.
- bool InsertOrLookupMapValue(Message* message, const FieldDescriptor* field,
- const MapKey& key, MapValueRef* val) const;
-
- // If key is in map field: Saves the value pointer to val and returns true.
- // Returns false if key is not in map field. Users are NOT able to modify
- // the value by MapValueConstRef.
- bool LookupMapValue(const Message& message, const FieldDescriptor* field,
- const MapKey& key, MapValueConstRef* val) const;
- bool LookupMapValue(const Message&, const FieldDescriptor*, const MapKey&,
- MapValueRef*) const = delete;
-
- // Delete and returns true if key is in the map field. Returns false
- // otherwise.
- bool DeleteMapValue(Message* message, const FieldDescriptor* field,
- const MapKey& key) const;
-
- // Returns a MapIterator referring to the first element in the map field.
- // If the map field is empty, this function returns the same as
- // reflection::MapEnd. Mutation to the field may invalidate the iterator.
- MapIterator MapBegin(Message* message, const FieldDescriptor* field) const;
-
- // Returns a MapIterator referring to the theoretical element that would
- // follow the last element in the map field. It does not point to any
- // real element. Mutation to the field may invalidate the iterator.
- MapIterator MapEnd(Message* message, const FieldDescriptor* field) const;
-
- // Get the number of <key, value> pair of a map field. The result may be
- // different from FieldSize which can have duplicate keys.
- int MapSize(const Message& message, const FieldDescriptor* field) const;
-
- // Help method for MapIterator.
- friend class MapIterator;
- friend class WireFormatForMapFieldTest;
- internal::MapFieldBase* MutableMapData(Message* message,
- const FieldDescriptor* field) const;
-
- const internal::MapFieldBase* GetMapData(const Message& message,
- const FieldDescriptor* field) const;
-
- template <class T>
- const T& GetRawNonOneof(const Message& message,
- const FieldDescriptor* field) const;
- template <class T>
- T* MutableRawNonOneof(Message* message, const FieldDescriptor* field) const;
-
- template <typename Type>
- const Type& GetRaw(const Message& message,
- const FieldDescriptor* field) const;
- template <typename Type>
- inline Type* MutableRaw(Message* message, const FieldDescriptor* field) const;
- template <typename Type>
- const Type& DefaultRaw(const FieldDescriptor* field) const;
-
- const Message* GetDefaultMessageInstance(const FieldDescriptor* field) const;
-
- inline const uint32_t* GetHasBits(const Message& message) const;
- inline uint32_t* MutableHasBits(Message* message) const;
- inline uint32_t GetOneofCase(const Message& message,
- const OneofDescriptor* oneof_descriptor) const;
- inline uint32_t* MutableOneofCase(
- Message* message, const OneofDescriptor* oneof_descriptor) const;
- inline bool HasExtensionSet(const Message& /* message */) const {
- return schema_.HasExtensionSet();
- }
- const internal::ExtensionSet& GetExtensionSet(const Message& message) const;
- internal::ExtensionSet* MutableExtensionSet(Message* message) const;
-
- const internal::InternalMetadata& GetInternalMetadata(
- const Message& message) const;
-
- internal::InternalMetadata* MutableInternalMetadata(Message* message) const;
-
- inline bool IsInlined(const FieldDescriptor* field) const;
-
- inline bool HasBit(const Message& message,
- const FieldDescriptor* field) const;
- inline void SetBit(Message* message, const FieldDescriptor* field) const;
- inline void ClearBit(Message* message, const FieldDescriptor* field) const;
- inline void SwapBit(Message* message1, Message* message2,
- const FieldDescriptor* field) const;
-
- inline const uint32_t* GetInlinedStringDonatedArray(
- const Message& message) const;
- inline uint32_t* MutableInlinedStringDonatedArray(Message* message) const;
- inline bool IsInlinedStringDonated(const Message& message,
- const FieldDescriptor* field) const;
- inline void SwapInlinedStringDonated(Message* lhs, Message* rhs,
- const FieldDescriptor* field) const;
-
- // Shallow-swap fields listed in fields vector of two messages. It is the
- // caller's responsibility to make sure shallow swap is safe.
- void UnsafeShallowSwapFields(
- Message* message1, Message* message2,
- const std::vector<const FieldDescriptor*>& fields) const;
-
- // This function only swaps the field. Should swap corresponding has_bit
- // before or after using this function.
- void SwapField(Message* message1, Message* message2,
- const FieldDescriptor* field) const;
-
- // Unsafe but shallow version of SwapField.
- void UnsafeShallowSwapField(Message* message1, Message* message2,
- const FieldDescriptor* field) const;
-
- template <bool unsafe_shallow_swap>
- void SwapFieldsImpl(Message* message1, Message* message2,
- const std::vector<const FieldDescriptor*>& fields) const;
-
- template <bool unsafe_shallow_swap>
- void SwapOneofField(Message* lhs, Message* rhs,
- const OneofDescriptor* oneof_descriptor) const;
-
- inline bool HasOneofField(const Message& message,
- const FieldDescriptor* field) const;
- inline void SetOneofCase(Message* message,
- const FieldDescriptor* field) const;
- inline void ClearOneofField(Message* message,
- const FieldDescriptor* field) const;
-
- template <typename Type>
- inline const Type& GetField(const Message& message,
- const FieldDescriptor* field) const;
- template <typename Type>
- inline void SetField(Message* message, const FieldDescriptor* field,
- const Type& value) const;
- template <typename Type>
- inline Type* MutableField(Message* message,
- const FieldDescriptor* field) const;
- template <typename Type>
- inline const Type& GetRepeatedField(const Message& message,
- const FieldDescriptor* field,
- int index) const;
- template <typename Type>
- inline const Type& GetRepeatedPtrField(const Message& message,
- const FieldDescriptor* field,
- int index) const;
- template <typename Type>
- inline void SetRepeatedField(Message* message, const FieldDescriptor* field,
- int index, Type value) const;
- template <typename Type>
- inline Type* MutableRepeatedField(Message* message,
- const FieldDescriptor* field,
- int index) const;
- template <typename Type>
- inline void AddField(Message* message, const FieldDescriptor* field,
- const Type& value) const;
- template <typename Type>
- inline Type* AddField(Message* message, const FieldDescriptor* field) const;
-
- int GetExtensionNumberOrDie(const Descriptor* type) const;
-
- // Internal versions of EnumValue API perform no checking. Called after checks
- // by public methods.
- void SetEnumValueInternal(Message* message, const FieldDescriptor* field,
- int value) const;
- void SetRepeatedEnumValueInternal(Message* message,
- const FieldDescriptor* field, int index,
- int value) const;
- void AddEnumValueInternal(Message* message, const FieldDescriptor* field,
- int value) const;
-
- friend inline // inline so nobody can call this function.
- void
- RegisterAllTypesInternal(const Metadata* file_level_metadata, int size);
- friend inline const char* ParseLenDelim(int field_number,
- const FieldDescriptor* field,
- Message* msg,
- const Reflection* reflection,
- const char* ptr,
- internal::ParseContext* ctx);
- friend inline const char* ParsePackedField(const FieldDescriptor* field,
- Message* msg,
- const Reflection* reflection,
- const char* ptr,
- internal::ParseContext* ctx);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Reflection);
-};
-
-// Abstract interface for a factory for message objects.
-class PROTOBUF_EXPORT MessageFactory {
- public:
- inline MessageFactory() {}
- virtual ~MessageFactory();
-
- // Given a Descriptor, gets or constructs the default (prototype) Message
- // of that type. You can then call that message's New() method to construct
- // a mutable message of that type.
- //
- // Calling this method twice with the same Descriptor returns the same
- // object. The returned object remains property of the factory. Also, any
- // objects created by calling the prototype's New() method share some data
- // with the prototype, so these must be destroyed before the MessageFactory
- // is destroyed.
- //
- // The given descriptor must outlive the returned message, and hence must
- // outlive the MessageFactory.
- //
- // Some implementations do not support all types. GetPrototype() will
- // return nullptr if the descriptor passed in is not supported.
- //
- // This method may or may not be thread-safe depending on the implementation.
- // Each implementation should document its own degree thread-safety.
- virtual const Message* GetPrototype(const Descriptor* type) = 0;
-
- // Gets a MessageFactory which supports all generated, compiled-in messages.
- // In other words, for any compiled-in type FooMessage, the following is true:
- // MessageFactory::generated_factory()->GetPrototype(
- // FooMessage::descriptor()) == FooMessage::default_instance()
- // This factory supports all types which are found in
- // DescriptorPool::generated_pool(). If given a descriptor from any other
- // pool, GetPrototype() will return nullptr. (You can also check if a
- // descriptor is for a generated message by checking if
- // descriptor->file()->pool() == DescriptorPool::generated_pool().)
- //
- // This factory is 100% thread-safe; calling GetPrototype() does not modify
- // any shared data.
- //
- // This factory is a singleton. The caller must not delete the object.
- static MessageFactory* generated_factory();
-
- // For internal use only: Registers a .proto file at static initialization
- // time, to be placed in generated_factory. The first time GetPrototype()
- // is called with a descriptor from this file, |register_messages| will be
- // called, with the file name as the parameter. It must call
- // InternalRegisterGeneratedMessage() (below) to register each message type
- // in the file. This strange mechanism is necessary because descriptors are
- // built lazily, so we can't register types by their descriptor until we
- // know that the descriptor exists. |filename| must be a permanent string.
- static void InternalRegisterGeneratedFile(
- const google::protobuf::internal::DescriptorTable* table);
-
- // For internal use only: Registers a message type. Called only by the
- // functions which are registered with InternalRegisterGeneratedFile(),
- // above.
- static void InternalRegisterGeneratedMessage(const Descriptor* descriptor,
- const Message* prototype);
-
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFactory);
-};
-
-#define DECLARE_GET_REPEATED_FIELD(TYPE) \
- template <> \
- PROTOBUF_EXPORT const RepeatedField<TYPE>& \
- Reflection::GetRepeatedFieldInternal<TYPE>( \
- const Message& message, const FieldDescriptor* field) const; \
- \
- template <> \
- PROTOBUF_EXPORT RepeatedField<TYPE>* \
- Reflection::MutableRepeatedFieldInternal<TYPE>( \
- Message * message, const FieldDescriptor* field) const;
-
-DECLARE_GET_REPEATED_FIELD(int32_t)
-DECLARE_GET_REPEATED_FIELD(int64_t)
-DECLARE_GET_REPEATED_FIELD(uint32_t)
-DECLARE_GET_REPEATED_FIELD(uint64_t)
-DECLARE_GET_REPEATED_FIELD(float)
-DECLARE_GET_REPEATED_FIELD(double)
-DECLARE_GET_REPEATED_FIELD(bool)
-
-#undef DECLARE_GET_REPEATED_FIELD
-
-// Tries to downcast this message to a generated message type. Returns nullptr
-// if this class is not an instance of T. This works even if RTTI is disabled.
-//
-// This also has the effect of creating a strong reference to T that will
-// prevent the linker from stripping it out at link time. This can be important
-// if you are using a DynamicMessageFactory that delegates to the generated
-// factory.
-template <typename T>
-const T* DynamicCastToGenerated(const Message* from) {
- // Compile-time assert that T is a generated type that has a
- // default_instance() accessor, but avoid actually calling it.
- const T& (*get_default_instance)() = &T::default_instance;
- (void)get_default_instance;
-
- // Compile-time assert that T is a subclass of google::protobuf::Message.
- const Message* unused = static_cast<T*>(nullptr);
- (void)unused;
-
-#if PROTOBUF_RTTI
- return dynamic_cast<const T*>(from);
-#else
- bool ok = from != nullptr &&
- T::default_instance().GetReflection() == from->GetReflection();
- return ok ? down_cast<const T*>(from) : nullptr;
-#endif
-}
-
-template <typename T>
-T* DynamicCastToGenerated(Message* from) {
- const Message* message_const = from;
- return const_cast<T*>(DynamicCastToGenerated<T>(message_const));
-}
-
-// Call this function to ensure that this message's reflection is linked into
-// the binary:
-//
-// google::protobuf::LinkMessageReflection<pkg::FooMessage>();
-//
-// This will ensure that the following lookup will succeed:
-//
-// DescriptorPool::generated_pool()->FindMessageTypeByName("pkg.FooMessage");
-//
-// As a side-effect, it will also guarantee that anything else from the same
-// .proto file will also be available for lookup in the generated pool.
-//
-// This function does not actually register the message, so it does not need
-// to be called before the lookup. However it does need to occur in a function
-// that cannot be stripped from the binary (ie. it must be reachable from main).
-//
-// Best practice is to call this function as close as possible to where the
-// reflection is actually needed. This function is very cheap to call, so you
-// should not need to worry about its runtime overhead except in the tightest
-// of loops (on x86-64 it compiles into two "mov" instructions).
-template <typename T>
-void LinkMessageReflection() {
- internal::StrongReference(T::default_instance);
-}
-
-// =============================================================================
-// Implementation details for {Get,Mutable}RawRepeatedPtrField. We provide
-// specializations for <std::string>, <StringPieceField> and <Message> and
-// handle everything else with the default template which will match any type
-// having a method with signature "static const google::protobuf::Descriptor*
-// descriptor()". Such a type presumably is a descendant of google::protobuf::Message.
-
-template <>
-inline const RepeatedPtrField<std::string>&
-Reflection::GetRepeatedPtrFieldInternal<std::string>(
- const Message& message, const FieldDescriptor* field) const {
- return *static_cast<RepeatedPtrField<std::string>*>(
- MutableRawRepeatedString(const_cast<Message*>(&message), field, true));
-}
-
-template <>
-inline RepeatedPtrField<std::string>*
-Reflection::MutableRepeatedPtrFieldInternal<std::string>(
- Message* message, const FieldDescriptor* field) const {
- return static_cast<RepeatedPtrField<std::string>*>(
- MutableRawRepeatedString(message, field, true));
-}
-
-
-// -----
-
-template <>
-inline const RepeatedPtrField<Message>& Reflection::GetRepeatedPtrFieldInternal(
- const Message& message, const FieldDescriptor* field) const {
- return *static_cast<const RepeatedPtrField<Message>*>(GetRawRepeatedField(
- message, field, FieldDescriptor::CPPTYPE_MESSAGE, -1, nullptr));
-}
-
-template <>
-inline RepeatedPtrField<Message>* Reflection::MutableRepeatedPtrFieldInternal(
- Message* message, const FieldDescriptor* field) const {
- return static_cast<RepeatedPtrField<Message>*>(MutableRawRepeatedField(
- message, field, FieldDescriptor::CPPTYPE_MESSAGE, -1, nullptr));
-}
-
-template <typename PB>
-inline const RepeatedPtrField<PB>& Reflection::GetRepeatedPtrFieldInternal(
- const Message& message, const FieldDescriptor* field) const {
- return *static_cast<const RepeatedPtrField<PB>*>(
- GetRawRepeatedField(message, field, FieldDescriptor::CPPTYPE_MESSAGE, -1,
- PB::default_instance().GetDescriptor()));
-}
-
-template <typename PB>
-inline RepeatedPtrField<PB>* Reflection::MutableRepeatedPtrFieldInternal(
- Message* message, const FieldDescriptor* field) const {
- return static_cast<RepeatedPtrField<PB>*>(
- MutableRawRepeatedField(message, field, FieldDescriptor::CPPTYPE_MESSAGE,
- -1, PB::default_instance().GetDescriptor()));
-}
-
-template <typename Type>
-const Type& Reflection::DefaultRaw(const FieldDescriptor* field) const {
- return *reinterpret_cast<const Type*>(schema_.GetFieldDefault(field));
-}
-
-uint32_t Reflection::GetOneofCase(
- const Message& message, const OneofDescriptor* oneof_descriptor) const {
- GOOGLE_DCHECK(!oneof_descriptor->is_synthetic());
- return internal::GetConstRefAtOffset<uint32_t>(
- message, schema_.GetOneofCaseOffset(oneof_descriptor));
-}
-
-bool Reflection::HasOneofField(const Message& message,
- const FieldDescriptor* field) const {
- return (GetOneofCase(message, field->containing_oneof()) ==
- static_cast<uint32_t>(field->number()));
-}
-
-template <typename Type>
-const Type& Reflection::GetRaw(const Message& message,
- const FieldDescriptor* field) const {
- GOOGLE_DCHECK(!schema_.InRealOneof(field) || HasOneofField(message, field))
- << "Field = " << field->full_name();
- return internal::GetConstRefAtOffset<Type>(message,
- schema_.GetFieldOffset(field));
-}
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MESSAGE_H__
diff --git a/include/google/protobuf/message_lite.h b/include/google/protobuf/message_lite.h
deleted file mode 100644
index 950ae1a126..0000000000
--- a/include/google/protobuf/message_lite.h
+++ /dev/null
@@ -1,591 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Authors: wink@google.com (Wink Saville),
-// kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Defines MessageLite, the abstract interface implemented by all (lite
-// and non-lite) protocol message objects.
-
-#ifndef GOOGLE_PROTOBUF_MESSAGE_LITE_H__
-#define GOOGLE_PROTOBUF_MESSAGE_LITE_H__
-
-
-#include <climits>
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/stubs/once.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/explicitly_constructed.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/stubs/hash.h> // TODO(b/211442718): cleanup
-
-// clang-format off
-#include <google/protobuf/port_def.inc>
-// clang-format on
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-template <typename T>
-class RepeatedPtrField;
-
-class FastReflectionMessageMutator;
-class FastReflectionStringSetter;
-class Reflection;
-
-namespace io {
-
-class CodedInputStream;
-class CodedOutputStream;
-class ZeroCopyInputStream;
-class ZeroCopyOutputStream;
-
-} // namespace io
-namespace internal {
-
-class SwapFieldHelper;
-
-// See parse_context.h for explanation
-class ParseContext;
-
-class ExtensionSet;
-class LazyField;
-class RepeatedPtrFieldBase;
-class TcParser;
-class WireFormatLite;
-class WeakFieldMap;
-
-template <typename Type>
-class GenericTypeHandler; // defined in repeated_field.h
-
-// We compute sizes as size_t but cache them as int. This function converts a
-// computed size to a cached size. Since we don't proceed with serialization
-// if the total size was > INT_MAX, it is not important what this function
-// returns for inputs > INT_MAX. However this case should not error or
-// GOOGLE_CHECK-fail, because the full size_t resolution is still returned from
-// ByteSizeLong() and checked against INT_MAX; we can catch the overflow
-// there.
-inline int ToCachedSize(size_t size) { return static_cast<int>(size); }
-
-// We mainly calculate sizes in terms of size_t, but some functions that
-// compute sizes return "int". These int sizes are expected to always be
-// positive. This function is more efficient than casting an int to size_t
-// directly on 64-bit platforms because it avoids making the compiler emit a
-// sign extending instruction, which we don't want and don't want to pay for.
-inline size_t FromIntSize(int size) {
- // Convert to unsigned before widening so sign extension is not necessary.
- return static_cast<unsigned int>(size);
-}
-
-// For cases where a legacy function returns an integer size. We GOOGLE_DCHECK()
-// that the conversion will fit within an integer; if this is false then we
-// are losing information.
-inline int ToIntSize(size_t size) {
- GOOGLE_DCHECK_LE(size, static_cast<size_t>(INT_MAX));
- return static_cast<int>(size);
-}
-
-// Default empty string object. Don't use this directly. Instead, call
-// GetEmptyString() to get the reference. This empty string is aligned with a
-// minimum alignment of 8 bytes to match the requirement of ArenaStringPtr.
-PROTOBUF_EXPORT extern ExplicitlyConstructedArenaString
- fixed_address_empty_string;
-
-
-PROTOBUF_EXPORT constexpr const std::string& GetEmptyStringAlreadyInited() {
- return fixed_address_empty_string.get();
-}
-
-PROTOBUF_EXPORT size_t StringSpaceUsedExcludingSelfLong(const std::string& str);
-
-} // namespace internal
-
-// Interface to light weight protocol messages.
-//
-// This interface is implemented by all protocol message objects. Non-lite
-// messages additionally implement the Message interface, which is a
-// subclass of MessageLite. Use MessageLite instead when you only need
-// the subset of features which it supports -- namely, nothing that uses
-// descriptors or reflection. You can instruct the protocol compiler
-// to generate classes which implement only MessageLite, not the full
-// Message interface, by adding the following line to the .proto file:
-//
-// option optimize_for = LITE_RUNTIME;
-//
-// This is particularly useful on resource-constrained systems where
-// the full protocol buffers runtime library is too big.
-//
-// Note that on non-constrained systems (e.g. servers) when you need
-// to link in lots of protocol definitions, a better way to reduce
-// total code footprint is to use optimize_for = CODE_SIZE. This
-// will make the generated code smaller while still supporting all the
-// same features (at the expense of speed). optimize_for = LITE_RUNTIME
-// is best when you only have a small number of message types linked
-// into your binary, in which case the size of the protocol buffers
-// runtime itself is the biggest problem.
-//
-// Users must not derive from this class. Only the protocol compiler and
-// the internal library are allowed to create subclasses.
-class PROTOBUF_EXPORT MessageLite {
- public:
- constexpr MessageLite() {}
- virtual ~MessageLite() = default;
-
- // Basic Operations ------------------------------------------------
-
- // Get the name of this message type, e.g. "foo.bar.BazProto".
- virtual std::string GetTypeName() const = 0;
-
- // Construct a new instance of the same type. Ownership is passed to the
- // caller.
- MessageLite* New() const { return New(nullptr); }
-
- // Construct a new instance on the arena. Ownership is passed to the caller
- // if arena is a nullptr.
- virtual MessageLite* New(Arena* arena) const = 0;
-
- // Returns user-owned arena; nullptr if it's message owned.
- Arena* GetArena() const { return _internal_metadata_.user_arena(); }
-
- // Clear all fields of the message and set them to their default values.
- // Clear() assumes that any memory allocated to hold parts of the message
- // will likely be needed again, so the memory used may not be freed.
- // To ensure that all memory used by a Message is freed, you must delete it.
- virtual void Clear() = 0;
-
- // Quickly check if all required fields have values set.
- virtual bool IsInitialized() const = 0;
-
- // This is not implemented for Lite messages -- it just returns "(cannot
- // determine missing fields for lite message)". However, it is implemented
- // for full messages. See message.h.
- virtual std::string InitializationErrorString() const;
-
- // If |other| is the exact same class as this, calls MergeFrom(). Otherwise,
- // results are undefined (probably crash).
- virtual void CheckTypeAndMergeFrom(const MessageLite& other) = 0;
-
- // These methods return a human-readable summary of the message. Note that
- // since the MessageLite interface does not support reflection, there is very
- // little information that these methods can provide. They are shadowed by
- // methods of the same name on the Message interface which provide much more
- // information. The methods here are intended primarily to facilitate code
- // reuse for logic that needs to interoperate with both full and lite protos.
- //
- // The format of the returned string is subject to change, so please do not
- // assume it will remain stable over time.
- std::string DebugString() const;
- std::string ShortDebugString() const { return DebugString(); }
- // MessageLite::DebugString is already Utf8 Safe. This is to add compatibility
- // with Message.
- std::string Utf8DebugString() const { return DebugString(); }
-
- // Parsing ---------------------------------------------------------
- // Methods for parsing in protocol buffer format. Most of these are
- // just simple wrappers around MergeFromCodedStream(). Clear() will be
- // called before merging the input.
-
- // Fill the message with a protocol buffer parsed from the given input
- // stream. Returns false on a read error or if the input is in the wrong
- // format. A successful return does not indicate the entire input is
- // consumed, ensure you call ConsumedEntireMessage() to check that if
- // applicable.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromCodedStream(
- io::CodedInputStream* input);
- // Like ParseFromCodedStream(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromCodedStream(
- io::CodedInputStream* input);
- // Read a protocol buffer from the given zero-copy input stream. If
- // successful, the entire input will be consumed.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromZeroCopyStream(
- io::ZeroCopyInputStream* input);
- // Like ParseFromZeroCopyStream(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromZeroCopyStream(
- io::ZeroCopyInputStream* input);
- // Parse a protocol buffer from a file descriptor. If successful, the entire
- // input will be consumed.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromFileDescriptor(
- int file_descriptor);
- // Like ParseFromFileDescriptor(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromFileDescriptor(
- int file_descriptor);
- // Parse a protocol buffer from a C++ istream. If successful, the entire
- // input will be consumed.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromIstream(std::istream* input);
- // Like ParseFromIstream(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromIstream(
- std::istream* input);
- // Read a protocol buffer from the given zero-copy input stream, expecting
- // the message to be exactly "size" bytes long. If successful, exactly
- // this many bytes will have been consumed from the input.
- bool MergePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input,
- int size);
- // Like ParseFromBoundedZeroCopyStream(), but accepts messages that are
- // missing required fields.
- bool MergeFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, int size);
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromBoundedZeroCopyStream(
- io::ZeroCopyInputStream* input, int size);
- // Like ParseFromBoundedZeroCopyStream(), but accepts messages that are
- // missing required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromBoundedZeroCopyStream(
- io::ZeroCopyInputStream* input, int size);
- // Parses a protocol buffer contained in a string. Returns true on success.
- // This function takes a string in the (non-human-readable) binary wire
- // format, matching the encoding output by MessageLite::SerializeToString().
- // If you'd like to convert a human-readable string into a protocol buffer
- // object, see google::protobuf::TextFormat::ParseFromString().
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromString(ConstStringParam data);
- // Like ParseFromString(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromString(
- ConstStringParam data);
- // Parse a protocol buffer contained in an array of bytes.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParseFromArray(const void* data,
- int size);
- // Like ParseFromArray(), but accepts messages that are missing
- // required fields.
- PROTOBUF_ATTRIBUTE_REINITIALIZES bool ParsePartialFromArray(const void* data,
- int size);
-
-
- // Reads a protocol buffer from the stream and merges it into this
- // Message. Singular fields read from the what is
- // already in the Message and repeated fields are appended to those
- // already present.
- //
- // It is the responsibility of the caller to call input->LastTagWas()
- // (for groups) or input->ConsumedEntireMessage() (for non-groups) after
- // this returns to verify that the message's end was delimited correctly.
- //
- // ParseFromCodedStream() is implemented as Clear() followed by
- // MergeFromCodedStream().
- bool MergeFromCodedStream(io::CodedInputStream* input);
-
- // Like MergeFromCodedStream(), but succeeds even if required fields are
- // missing in the input.
- //
- // MergeFromCodedStream() is just implemented as MergePartialFromCodedStream()
- // followed by IsInitialized().
- bool MergePartialFromCodedStream(io::CodedInputStream* input);
-
- // Merge a protocol buffer contained in a string.
- bool MergeFromString(ConstStringParam data);
-
-
- // Serialization ---------------------------------------------------
- // Methods for serializing in protocol buffer format. Most of these
- // are just simple wrappers around ByteSize() and SerializeWithCachedSizes().
-
- // Write a protocol buffer of this message to the given output. Returns
- // false on a write error. If the message is missing required fields,
- // this may GOOGLE_CHECK-fail.
- bool SerializeToCodedStream(io::CodedOutputStream* output) const;
- // Like SerializeToCodedStream(), but allows missing required fields.
- bool SerializePartialToCodedStream(io::CodedOutputStream* output) const;
- // Write the message to the given zero-copy output stream. All required
- // fields must be set.
- bool SerializeToZeroCopyStream(io::ZeroCopyOutputStream* output) const;
- // Like SerializeToZeroCopyStream(), but allows missing required fields.
- bool SerializePartialToZeroCopyStream(io::ZeroCopyOutputStream* output) const;
- // Serialize the message and store it in the given string. All required
- // fields must be set.
- bool SerializeToString(std::string* output) const;
- // Like SerializeToString(), but allows missing required fields.
- bool SerializePartialToString(std::string* output) const;
- // Serialize the message and store it in the given byte array. All required
- // fields must be set.
- bool SerializeToArray(void* data, int size) const;
- // Like SerializeToArray(), but allows missing required fields.
- bool SerializePartialToArray(void* data, int size) const;
-
- // Make a string encoding the message. Is equivalent to calling
- // SerializeToString() on a string and using that. Returns the empty
- // string if SerializeToString() would have returned an error.
- // Note: If you intend to generate many such strings, you may
- // reduce heap fragmentation by instead re-using the same string
- // object with calls to SerializeToString().
- std::string SerializeAsString() const;
- // Like SerializeAsString(), but allows missing required fields.
- std::string SerializePartialAsString() const;
-
- // Serialize the message and write it to the given file descriptor. All
- // required fields must be set.
- bool SerializeToFileDescriptor(int file_descriptor) const;
- // Like SerializeToFileDescriptor(), but allows missing required fields.
- bool SerializePartialToFileDescriptor(int file_descriptor) const;
- // Serialize the message and write it to the given C++ ostream. All
- // required fields must be set.
- bool SerializeToOstream(std::ostream* output) const;
- // Like SerializeToOstream(), but allows missing required fields.
- bool SerializePartialToOstream(std::ostream* output) const;
-
- // Like SerializeToString(), but appends to the data to the string's
- // existing contents. All required fields must be set.
- bool AppendToString(std::string* output) const;
- // Like AppendToString(), but allows missing required fields.
- bool AppendPartialToString(std::string* output) const;
-
-
- // Computes the serialized size of the message. This recursively calls
- // ByteSizeLong() on all embedded messages.
- //
- // ByteSizeLong() is generally linear in the number of fields defined for the
- // proto.
- virtual size_t ByteSizeLong() const = 0;
-
- // Legacy ByteSize() API.
- PROTOBUF_DEPRECATED_MSG("Please use ByteSizeLong() instead")
- int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
-
- // Serializes the message without recomputing the size. The message must not
- // have changed since the last call to ByteSize(), and the value returned by
- // ByteSize must be non-negative. Otherwise the results are undefined.
- void SerializeWithCachedSizes(io::CodedOutputStream* output) const {
- output->SetCur(_InternalSerialize(output->Cur(), output->EpsCopy()));
- }
-
- // Functions below here are not part of the public interface. It isn't
- // enforced, but they should be treated as private, and will be private
- // at some future time. Unfortunately the implementation of the "friend"
- // keyword in GCC is broken at the moment, but we expect it will be fixed.
-
- // Like SerializeWithCachedSizes, but writes directly to *target, returning
- // a pointer to the byte immediately after the last byte written. "target"
- // must point at a byte array of at least ByteSize() bytes. Whether to use
- // deterministic serialization, e.g., maps in sorted order, is determined by
- // CodedOutputStream::IsDefaultSerializationDeterministic().
- uint8_t* SerializeWithCachedSizesToArray(uint8_t* target) const;
-
- // Returns the result of the last call to ByteSize(). An embedded message's
- // size is needed both to serialize it (because embedded messages are
- // length-delimited) and to compute the outer message's size. Caching
- // the size avoids computing it multiple times.
- //
- // ByteSize() does not automatically use the cached size when available
- // because this would require invalidating it every time the message was
- // modified, which would be too hard and expensive. (E.g. if a deeply-nested
- // sub-message is changed, all of its parents' cached sizes would need to be
- // invalidated, which is too much work for an otherwise inlined setter
- // method.)
- virtual int GetCachedSize() const = 0;
-
- virtual const char* _InternalParse(const char* /*ptr*/,
- internal::ParseContext* /*ctx*/) {
- return nullptr;
- }
-
- virtual void OnDemandRegisterArenaDtor(Arena* /*arena*/) {}
-
- protected:
- template <typename T>
- static T* CreateMaybeMessage(Arena* arena) {
- return Arena::CreateMaybeMessage<T>(arena);
- }
-
- inline explicit MessageLite(Arena* arena, bool is_message_owned = false)
- : _internal_metadata_(arena, is_message_owned) {}
-
- // Returns the arena, if any, that directly owns this message and its internal
- // memory (Arena::Own is different in that the arena doesn't directly own the
- // internal memory). This method is used in proto's implementation for
- // swapping, moving and setting allocated, for deciding whether the ownership
- // of this message or its internal memory could be changed.
- Arena* GetOwningArena() const { return _internal_metadata_.owning_arena(); }
-
- // Returns the arena, used for allocating internal objects(e.g., child
- // messages, etc), or owning incoming objects (e.g., set allocated).
- Arena* GetArenaForAllocation() const { return _internal_metadata_.arena(); }
-
- // Returns true if this message is enabled for message-owned arena (MOA)
- // trials. No lite messages are eligible for MOA.
- static bool InMoaTrial() { return false; }
-
- internal::InternalMetadata _internal_metadata_;
-
- public:
- enum ParseFlags {
- kMerge = 0,
- kParse = 1,
- kMergePartial = 2,
- kParsePartial = 3,
- kMergeWithAliasing = 4,
- kParseWithAliasing = 5,
- kMergePartialWithAliasing = 6,
- kParsePartialWithAliasing = 7
- };
-
- template <ParseFlags flags, typename T>
- bool ParseFrom(const T& input);
-
- // Fast path when conditions match (ie. non-deterministic)
- // uint8_t* _InternalSerialize(uint8_t* ptr) const;
- virtual uint8_t* _InternalSerialize(
- uint8_t* ptr, io::EpsCopyOutputStream* stream) const = 0;
-
- // Identical to IsInitialized() except that it logs an error message.
- bool IsInitializedWithErrors() const {
- if (IsInitialized()) return true;
- LogInitializationErrorMessage();
- return false;
- }
-
- private:
- friend class FastReflectionMessageMutator;
- friend class FastReflectionStringSetter;
- friend class Message;
- friend class Reflection;
- friend class internal::ExtensionSet;
- friend class internal::LazyField;
- friend class internal::SwapFieldHelper;
- friend class internal::TcParser;
- friend class internal::WeakFieldMap;
- friend class internal::WireFormatLite;
-
- template <typename Type>
- friend class Arena::InternalHelper;
- template <typename Type>
- friend class internal::GenericTypeHandler;
-
- void LogInitializationErrorMessage() const;
-
- bool MergeFromImpl(io::CodedInputStream* input, ParseFlags parse_flags);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageLite);
-};
-
-namespace internal {
-
-template <bool alias>
-bool MergeFromImpl(StringPiece input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<false>(StringPiece input,
- MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<true>(StringPiece input,
- MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-
-template <bool alias>
-bool MergeFromImpl(io::ZeroCopyInputStream* input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<false>(io::ZeroCopyInputStream* input,
- MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<true>(io::ZeroCopyInputStream* input,
- MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-
-struct BoundedZCIS {
- io::ZeroCopyInputStream* zcis;
- int limit;
-};
-
-template <bool alias>
-bool MergeFromImpl(BoundedZCIS input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<false>(BoundedZCIS input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-extern template bool MergeFromImpl<true>(BoundedZCIS input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags);
-
-template <typename T>
-struct SourceWrapper;
-
-template <bool alias, typename T>
-bool MergeFromImpl(const SourceWrapper<T>& input, MessageLite* msg,
- MessageLite::ParseFlags parse_flags) {
- return input.template MergeInto<alias>(msg, parse_flags);
-}
-
-} // namespace internal
-
-template <MessageLite::ParseFlags flags, typename T>
-bool MessageLite::ParseFrom(const T& input) {
- if (flags & kParse) Clear();
- constexpr bool alias = (flags & kMergeWithAliasing) != 0;
- return internal::MergeFromImpl<alias>(input, this, flags);
-}
-
-// ===================================================================
-// Shutdown support.
-
-
-// Shut down the entire protocol buffers library, deleting all static-duration
-// objects allocated by the library or by generated .pb.cc files.
-//
-// There are two reasons you might want to call this:
-// * You use a draconian definition of "memory leak" in which you expect
-// every single malloc() to have a corresponding free(), even for objects
-// which live until program exit.
-// * You are writing a dynamically-loaded library which needs to clean up
-// after itself when the library is unloaded.
-//
-// It is safe to call this multiple times. However, it is not safe to use
-// any other part of the protocol buffers library after
-// ShutdownProtobufLibrary() has been called. Furthermore this call is not
-// thread safe, user needs to synchronize multiple calls.
-PROTOBUF_EXPORT void ShutdownProtobufLibrary();
-
-namespace internal {
-
-// Register a function to be called when ShutdownProtocolBuffers() is called.
-PROTOBUF_EXPORT void OnShutdown(void (*func)());
-// Run an arbitrary function on an arg
-PROTOBUF_EXPORT void OnShutdownRun(void (*f)(const void*), const void* arg);
-
-template <typename T>
-T* OnShutdownDelete(T* p) {
- OnShutdownRun([](const void* pp) { delete static_cast<const T*>(pp); }, p);
- return p;
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_MESSAGE_LITE_H__
diff --git a/include/google/protobuf/metadata.h b/include/google/protobuf/metadata.h
deleted file mode 100644
index 4e89648ee6..0000000000
--- a/include/google/protobuf/metadata.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_METADATA_H__
-#define GOOGLE_PROTOBUF_METADATA_H__
-
-// TODO(b/151117630): Remove this file and all instances where it gets imported.
-
-#endif // GOOGLE_PROTOBUF_METADATA_H__
diff --git a/include/google/protobuf/metadata_lite.h b/include/google/protobuf/metadata_lite.h
deleted file mode 100644
index 0c31517f08..0000000000
--- a/include/google/protobuf/metadata_lite.h
+++ /dev/null
@@ -1,316 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_METADATA_LITE_H__
-#define GOOGLE_PROTOBUF_METADATA_LITE_H__
-
-#include <string>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// This is the representation for messages that support arena allocation. It
-// uses a tagged pointer to either store the owning Arena pointer, if there are
-// no unknown fields, or a pointer to a block of memory with both the owning
-// Arena pointer and the UnknownFieldSet, if there are unknown fields. Besides,
-// it also uses the tag to distinguish whether the owning Arena pointer is also
-// used by sub-structure allocation. This optimization allows for
-// "zero-overhead" storage of the Arena pointer, relative to the above baseline
-// implementation.
-//
-// The tagged pointer uses the least two significant bits to disambiguate cases.
-// It uses bit 0 == 0 to indicate an arena pointer and bit 0 == 1 to indicate a
-// UFS+Arena-container pointer. Besides it uses bit 1 == 0 to indicate arena
-// allocation and bit 1 == 1 to indicate heap allocation.
-class PROTOBUF_EXPORT InternalMetadata {
- public:
- constexpr InternalMetadata() : ptr_(0) {}
- explicit InternalMetadata(Arena* arena, bool is_message_owned = false) {
- SetArena(arena, is_message_owned);
- }
-
- void SetArena(Arena* arena, bool is_message_owned) {
- ptr_ = is_message_owned
- ? reinterpret_cast<intptr_t>(arena) | kMessageOwnedArenaTagMask
- : reinterpret_cast<intptr_t>(arena);
- GOOGLE_DCHECK(!is_message_owned || arena != nullptr);
- }
-
- // To keep the ABI identical between debug and non-debug builds,
- // the destructor is always defined here even though it may delegate
- // to a non-inline private method.
- // (see https://github.com/protocolbuffers/protobuf/issues/9947)
- ~InternalMetadata() {
-#if defined(NDEBUG) || defined(_MSC_VER)
- if (HasMessageOwnedArenaTag()) {
- delete reinterpret_cast<Arena*>(ptr_ - kMessageOwnedArenaTagMask);
- }
-#else
- CheckedDestruct();
-#endif
- }
-
- template <typename T>
- void Delete() {
- // Note that Delete<> should be called not more than once.
- if (have_unknown_fields()) {
- DeleteOutOfLineHelper<T>();
- }
- }
-
- // DeleteReturnArena will delete the unknown fields only if they weren't
- // allocated on an arena. Then it updates the flags so that if you call
- // have_unknown_fields(), it will return false. Finally, it returns the
- // current value of arena(). It is designed to be used as part of a
- // Message class's destructor call, so that when control eventually gets
- // to ~InternalMetadata(), we don't need to check for have_unknown_fields()
- // again.
- template <typename T>
- Arena* DeleteReturnArena() {
- if (have_unknown_fields()) {
- return DeleteOutOfLineHelper<T>();
- } else {
- return PtrValue<Arena>();
- }
- }
-
- PROTOBUF_NDEBUG_INLINE Arena* owning_arena() const {
- return HasMessageOwnedArenaTag() ? nullptr : arena();
- }
-
- PROTOBUF_NDEBUG_INLINE Arena* user_arena() const {
- Arena* a = arena();
- return a && !a->IsMessageOwned() ? a : nullptr;
- }
-
- PROTOBUF_NDEBUG_INLINE Arena* arena() const {
- if (PROTOBUF_PREDICT_FALSE(have_unknown_fields())) {
- return PtrValue<ContainerBase>()->arena;
- } else {
- return PtrValue<Arena>();
- }
- }
-
- PROTOBUF_NDEBUG_INLINE bool have_unknown_fields() const {
- return HasUnknownFieldsTag();
- }
-
- PROTOBUF_NDEBUG_INLINE void* raw_arena_ptr() const {
- return reinterpret_cast<void*>(ptr_);
- }
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE const T& unknown_fields(
- const T& (*default_instance)()) const {
- if (PROTOBUF_PREDICT_FALSE(have_unknown_fields())) {
- return PtrValue<Container<T>>()->unknown_fields;
- } else {
- return default_instance();
- }
- }
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE T* mutable_unknown_fields() {
- if (PROTOBUF_PREDICT_TRUE(have_unknown_fields())) {
- return &PtrValue<Container<T>>()->unknown_fields;
- } else {
- return mutable_unknown_fields_slow<T>();
- }
- }
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE void Swap(InternalMetadata* other) {
- // Semantics here are that we swap only the unknown fields, not the arena
- // pointer. We cannot simply swap ptr_ with other->ptr_ because we need to
- // maintain our own arena ptr. Also, our ptr_ and other's ptr_ may be in
- // different states (direct arena pointer vs. container with UFS) so we
- // cannot simply swap ptr_ and then restore the arena pointers. We reuse
- // UFS's swap implementation instead.
- if (have_unknown_fields() || other->have_unknown_fields()) {
- DoSwap<T>(other->mutable_unknown_fields<T>());
- }
- }
-
- PROTOBUF_NDEBUG_INLINE void InternalSwap(InternalMetadata* other) {
- std::swap(ptr_, other->ptr_);
- }
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE void MergeFrom(const InternalMetadata& other) {
- if (other.have_unknown_fields()) {
- DoMergeFrom<T>(other.unknown_fields<T>(nullptr));
- }
- }
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE void Clear() {
- if (have_unknown_fields()) {
- DoClear<T>();
- }
- }
-
- private:
- intptr_t ptr_;
-
- // Tagged pointer implementation.
- static constexpr intptr_t kUnknownFieldsTagMask = 1;
- static constexpr intptr_t kMessageOwnedArenaTagMask = 2;
- static constexpr intptr_t kPtrTagMask =
- kUnknownFieldsTagMask | kMessageOwnedArenaTagMask;
- static constexpr intptr_t kPtrValueMask = ~kPtrTagMask;
-
- // Accessors for pointer tag and pointer value.
- PROTOBUF_ALWAYS_INLINE bool HasUnknownFieldsTag() const {
- return ptr_ & kUnknownFieldsTagMask;
- }
- PROTOBUF_ALWAYS_INLINE bool HasMessageOwnedArenaTag() const {
- return ptr_ & kMessageOwnedArenaTagMask;
- }
-
- template <typename U>
- U* PtrValue() const {
- return reinterpret_cast<U*>(ptr_ & kPtrValueMask);
- }
-
- // If ptr_'s tag is kTagContainer, it points to an instance of this struct.
- struct ContainerBase {
- Arena* arena;
- };
-
- template <typename T>
- struct Container : public ContainerBase {
- T unknown_fields;
- };
-
- template <typename T>
- PROTOBUF_NOINLINE Arena* DeleteOutOfLineHelper() {
- if (auto* a = arena()) {
- // Subtle: we want to preserve the message-owned arena flag, while at the
- // same time replacing the pointer to Container<T> with a pointer to the
- // arena.
- intptr_t message_owned_arena_tag = ptr_ & kMessageOwnedArenaTagMask;
- ptr_ = reinterpret_cast<intptr_t>(a) | message_owned_arena_tag;
- return a;
- } else {
- delete PtrValue<Container<T>>();
- ptr_ = 0;
- return nullptr;
- }
- }
-
- template <typename T>
- PROTOBUF_NOINLINE T* mutable_unknown_fields_slow() {
- Arena* my_arena = arena();
- Container<T>* container = Arena::Create<Container<T>>(my_arena);
- intptr_t message_owned_arena_tag = ptr_ & kMessageOwnedArenaTagMask;
- // Two-step assignment works around a bug in clang's static analyzer:
- // https://bugs.llvm.org/show_bug.cgi?id=34198.
- ptr_ = reinterpret_cast<intptr_t>(container);
- ptr_ |= kUnknownFieldsTagMask | message_owned_arena_tag;
- container->arena = my_arena;
- return &(container->unknown_fields);
- }
-
- // Templated functions.
-
- template <typename T>
- PROTOBUF_NOINLINE void DoClear() {
- mutable_unknown_fields<T>()->Clear();
- }
-
- template <typename T>
- PROTOBUF_NOINLINE void DoMergeFrom(const T& other) {
- mutable_unknown_fields<T>()->MergeFrom(other);
- }
-
- template <typename T>
- PROTOBUF_NOINLINE void DoSwap(T* other) {
- mutable_unknown_fields<T>()->Swap(other);
- }
-
- // Private helper with debug checks for ~InternalMetadata()
- void CheckedDestruct();
-};
-
-// String Template specializations.
-
-template <>
-PROTOBUF_EXPORT void InternalMetadata::DoClear<std::string>();
-template <>
-PROTOBUF_EXPORT void InternalMetadata::DoMergeFrom<std::string>(
- const std::string& other);
-template <>
-PROTOBUF_EXPORT void InternalMetadata::DoSwap<std::string>(std::string* other);
-
-// This helper RAII class is needed to efficiently parse unknown fields. We
-// should only call mutable_unknown_fields if there are actual unknown fields.
-// The obvious thing to just use a stack string and swap it at the end of
-// the parse won't work, because the destructor of StringOutputStream needs to
-// be called before we can modify the string (it check-fails). Using
-// LiteUnknownFieldSetter setter(&_internal_metadata_);
-// StringOutputStream stream(setter.buffer());
-// guarantees that the string is only swapped after stream is destroyed.
-class PROTOBUF_EXPORT LiteUnknownFieldSetter {
- public:
- explicit LiteUnknownFieldSetter(InternalMetadata* metadata)
- : metadata_(metadata) {
- if (metadata->have_unknown_fields()) {
- buffer_.swap(*metadata->mutable_unknown_fields<std::string>());
- }
- }
- ~LiteUnknownFieldSetter() {
- if (!buffer_.empty())
- metadata_->mutable_unknown_fields<std::string>()->swap(buffer_);
- }
- std::string* buffer() { return &buffer_; }
-
- private:
- InternalMetadata* metadata_;
- std::string buffer_;
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_METADATA_LITE_H__
diff --git a/include/google/protobuf/parse_context.h b/include/google/protobuf/parse_context.h
deleted file mode 100644
index 7aea50cdc3..0000000000
--- a/include/google/protobuf/parse_context.h
+++ /dev/null
@@ -1,1025 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_PARSE_CONTEXT_H__
-#define GOOGLE_PROTOBUF_PARSE_CONTEXT_H__
-
-#include <cstdint>
-#include <cstring>
-#include <string>
-#include <type_traits>
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/endian.h>
-#include <google/protobuf/implicit_weak_message.h>
-#include <google/protobuf/inlined_string_field.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/repeated_field.h>
-#include <google/protobuf/wire_format_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-
-namespace google {
-namespace protobuf {
-
-class UnknownFieldSet;
-class DescriptorPool;
-class MessageFactory;
-
-namespace internal {
-
-// Template code below needs to know about the existence of these functions.
-PROTOBUF_EXPORT void WriteVarint(uint32_t num, uint64_t val, std::string* s);
-PROTOBUF_EXPORT void WriteLengthDelimited(uint32_t num, StringPiece val,
- std::string* s);
-// Inline because it is just forwarding to s->WriteVarint
-inline void WriteVarint(uint32_t num, uint64_t val, UnknownFieldSet* s);
-inline void WriteLengthDelimited(uint32_t num, StringPiece val,
- UnknownFieldSet* s);
-
-
-// The basic abstraction the parser is designed for is a slight modification
-// of the ZeroCopyInputStream (ZCIS) abstraction. A ZCIS presents a serialized
-// stream as a series of buffers that concatenate to the full stream.
-// Pictorially a ZCIS presents a stream in chunks like so
-// [---------------------------------------------------------------]
-// [---------------------] chunk 1
-// [----------------------------] chunk 2
-// chunk 3 [--------------]
-//
-// Where the '-' represent the bytes which are vertically lined up with the
-// bytes of the stream. The proto parser requires its input to be presented
-// similarly with the extra
-// property that each chunk has kSlopBytes past its end that overlaps with the
-// first kSlopBytes of the next chunk, or if there is no next chunk at least its
-// still valid to read those bytes. Again, pictorially, we now have
-//
-// [---------------------------------------------------------------]
-// [-------------------....] chunk 1
-// [------------------------....] chunk 2
-// chunk 3 [------------------..**]
-// chunk 4 [--****]
-// Here '-' mean the bytes of the stream or chunk and '.' means bytes past the
-// chunk that match up with the start of the next chunk. Above each chunk has
-// 4 '.' after the chunk. In the case these 'overflow' bytes represents bytes
-// past the stream, indicated by '*' above, their values are unspecified. It is
-// still legal to read them (ie. should not segfault). Reading past the
-// end should be detected by the user and indicated as an error.
-//
-// The reason for this, admittedly, unconventional invariant is to ruthlessly
-// optimize the protobuf parser. Having an overlap helps in two important ways.
-// Firstly it alleviates having to performing bounds checks if a piece of code
-// is guaranteed to not read more than kSlopBytes. Secondly, and more
-// importantly, the protobuf wireformat is such that reading a key/value pair is
-// always less than 16 bytes. This removes the need to change to next buffer in
-// the middle of reading primitive values. Hence there is no need to store and
-// load the current position.
-
-class PROTOBUF_EXPORT EpsCopyInputStream {
- public:
- enum { kSlopBytes = 16, kMaxCordBytesToCopy = 512 };
-
- explicit EpsCopyInputStream(bool enable_aliasing)
- : aliasing_(enable_aliasing ? kOnPatch : kNoAliasing) {}
-
- void BackUp(const char* ptr) {
- GOOGLE_DCHECK(ptr <= buffer_end_ + kSlopBytes);
- int count;
- if (next_chunk_ == buffer_) {
- count = static_cast<int>(buffer_end_ + kSlopBytes - ptr);
- } else {
- count = size_ + static_cast<int>(buffer_end_ - ptr);
- }
- if (count > 0) StreamBackUp(count);
- }
-
- // If return value is negative it's an error
- PROTOBUF_NODISCARD int PushLimit(const char* ptr, int limit) {
- GOOGLE_DCHECK(limit >= 0 && limit <= INT_MAX - kSlopBytes);
- // This add is safe due to the invariant above, because
- // ptr - buffer_end_ <= kSlopBytes.
- limit += static_cast<int>(ptr - buffer_end_);
- limit_end_ = buffer_end_ + (std::min)(0, limit);
- auto old_limit = limit_;
- limit_ = limit;
- return old_limit - limit;
- }
-
- PROTOBUF_NODISCARD bool PopLimit(int delta) {
- if (PROTOBUF_PREDICT_FALSE(!EndedAtLimit())) return false;
- limit_ = limit_ + delta;
- // TODO(gerbens) We could remove this line and hoist the code to
- // DoneFallback. Study the perf/bin-size effects.
- limit_end_ = buffer_end_ + (std::min)(0, limit_);
- return true;
- }
-
- PROTOBUF_NODISCARD const char* Skip(const char* ptr, int size) {
- if (size <= buffer_end_ + kSlopBytes - ptr) {
- return ptr + size;
- }
- return SkipFallback(ptr, size);
- }
- PROTOBUF_NODISCARD const char* ReadString(const char* ptr, int size,
- std::string* s) {
- if (size <= buffer_end_ + kSlopBytes - ptr) {
- s->assign(ptr, size);
- return ptr + size;
- }
- return ReadStringFallback(ptr, size, s);
- }
- PROTOBUF_NODISCARD const char* AppendString(const char* ptr, int size,
- std::string* s) {
- if (size <= buffer_end_ + kSlopBytes - ptr) {
- s->append(ptr, size);
- return ptr + size;
- }
- return AppendStringFallback(ptr, size, s);
- }
- // Implemented in arenastring.cc
- PROTOBUF_NODISCARD const char* ReadArenaString(const char* ptr,
- ArenaStringPtr* s,
- Arena* arena);
-
- template <typename Tag, typename T>
- PROTOBUF_NODISCARD const char* ReadRepeatedFixed(const char* ptr,
- Tag expected_tag,
- RepeatedField<T>* out);
-
- template <typename T>
- PROTOBUF_NODISCARD const char* ReadPackedFixed(const char* ptr, int size,
- RepeatedField<T>* out);
- template <typename Add>
- PROTOBUF_NODISCARD const char* ReadPackedVarint(const char* ptr, Add add);
-
- uint32_t LastTag() const { return last_tag_minus_1_ + 1; }
- bool ConsumeEndGroup(uint32_t start_tag) {
- bool res = last_tag_minus_1_ == start_tag;
- last_tag_minus_1_ = 0;
- return res;
- }
- bool EndedAtLimit() const { return last_tag_minus_1_ == 0; }
- bool EndedAtEndOfStream() const { return last_tag_minus_1_ == 1; }
- void SetLastTag(uint32_t tag) { last_tag_minus_1_ = tag - 1; }
- void SetEndOfStream() { last_tag_minus_1_ = 1; }
- bool IsExceedingLimit(const char* ptr) {
- return ptr > limit_end_ &&
- (next_chunk_ == nullptr || ptr - buffer_end_ > limit_);
- }
- bool AliasingEnabled() const { return aliasing_ != kNoAliasing; }
- int BytesUntilLimit(const char* ptr) const {
- return limit_ + static_cast<int>(buffer_end_ - ptr);
- }
- // Returns true if more data is available, if false is returned one has to
- // call Done for further checks.
- bool DataAvailable(const char* ptr) { return ptr < limit_end_; }
-
- protected:
- // Returns true is limit (either an explicit limit or end of stream) is
- // reached. It aligns *ptr across buffer seams.
- // If limit is exceeded it returns true and ptr is set to null.
- bool DoneWithCheck(const char** ptr, int d) {
- GOOGLE_DCHECK(*ptr);
- if (PROTOBUF_PREDICT_TRUE(*ptr < limit_end_)) return false;
- int overrun = static_cast<int>(*ptr - buffer_end_);
- GOOGLE_DCHECK_LE(overrun, kSlopBytes); // Guaranteed by parse loop.
- if (overrun ==
- limit_) { // No need to flip buffers if we ended on a limit.
- // If we actually overrun the buffer and next_chunk_ is null. It means
- // the stream ended and we passed the stream end.
- if (overrun > 0 && next_chunk_ == nullptr) *ptr = nullptr;
- return true;
- }
- auto res = DoneFallback(overrun, d);
- *ptr = res.first;
- return res.second;
- }
-
- const char* InitFrom(StringPiece flat) {
- overall_limit_ = 0;
- if (flat.size() > kSlopBytes) {
- limit_ = kSlopBytes;
- limit_end_ = buffer_end_ = flat.data() + flat.size() - kSlopBytes;
- next_chunk_ = buffer_;
- if (aliasing_ == kOnPatch) aliasing_ = kNoDelta;
- return flat.data();
- } else {
- std::memcpy(buffer_, flat.data(), flat.size());
- limit_ = 0;
- limit_end_ = buffer_end_ = buffer_ + flat.size();
- next_chunk_ = nullptr;
- if (aliasing_ == kOnPatch) {
- aliasing_ = reinterpret_cast<std::uintptr_t>(flat.data()) -
- reinterpret_cast<std::uintptr_t>(buffer_);
- }
- return buffer_;
- }
- }
-
- const char* InitFrom(io::ZeroCopyInputStream* zcis);
-
- const char* InitFrom(io::ZeroCopyInputStream* zcis, int limit) {
- if (limit == -1) return InitFrom(zcis);
- overall_limit_ = limit;
- auto res = InitFrom(zcis);
- limit_ = limit - static_cast<int>(buffer_end_ - res);
- limit_end_ = buffer_end_ + (std::min)(0, limit_);
- return res;
- }
-
- private:
- const char* limit_end_; // buffer_end_ + min(limit_, 0)
- const char* buffer_end_;
- const char* next_chunk_;
- int size_;
- int limit_; // relative to buffer_end_;
- io::ZeroCopyInputStream* zcis_ = nullptr;
- char buffer_[2 * kSlopBytes] = {};
- enum { kNoAliasing = 0, kOnPatch = 1, kNoDelta = 2 };
- std::uintptr_t aliasing_ = kNoAliasing;
- // This variable is used to communicate how the parse ended, in order to
- // completely verify the parsed data. A wire-format parse can end because of
- // one of the following conditions:
- // 1) A parse can end on a pushed limit.
- // 2) A parse can end on End Of Stream (EOS).
- // 3) A parse can end on 0 tag (only valid for toplevel message).
- // 4) A parse can end on an end-group tag.
- // This variable should always be set to 0, which indicates case 1. If the
- // parse terminated due to EOS (case 2), it's set to 1. In case the parse
- // ended due to a terminating tag (case 3 and 4) it's set to (tag - 1).
- // This var doesn't really belong in EpsCopyInputStream and should be part of
- // the ParseContext, but case 2 is most easily and optimally implemented in
- // DoneFallback.
- uint32_t last_tag_minus_1_ = 0;
- int overall_limit_ = INT_MAX; // Overall limit independent of pushed limits.
- // Pretty random large number that seems like a safe allocation on most
- // systems. TODO(gerbens) do we need to set this as build flag?
- enum { kSafeStringSize = 50000000 };
-
- // Advances to next buffer chunk returns a pointer to the same logical place
- // in the stream as set by overrun. Overrun indicates the position in the slop
- // region the parse was left (0 <= overrun <= kSlopBytes). Returns true if at
- // limit, at which point the returned pointer maybe null if there was an
- // error. The invariant of this function is that it's guaranteed that
- // kSlopBytes bytes can be accessed from the returned ptr. This function might
- // advance more buffers than one in the underlying ZeroCopyInputStream.
- std::pair<const char*, bool> DoneFallback(int overrun, int depth);
- // Advances to the next buffer, at most one call to Next() on the underlying
- // ZeroCopyInputStream is made. This function DOES NOT match the returned
- // pointer to where in the slop region the parse ends, hence no overrun
- // parameter. This is useful for string operations where you always copy
- // to the end of the buffer (including the slop region).
- const char* Next();
- // overrun is the location in the slop region the stream currently is
- // (0 <= overrun <= kSlopBytes). To prevent flipping to the next buffer of
- // the ZeroCopyInputStream in the case the parse will end in the last
- // kSlopBytes of the current buffer. depth is the current depth of nested
- // groups (or negative if the use case does not need careful tracking).
- inline const char* NextBuffer(int overrun, int depth);
- const char* SkipFallback(const char* ptr, int size);
- const char* AppendStringFallback(const char* ptr, int size, std::string* str);
- const char* ReadStringFallback(const char* ptr, int size, std::string* str);
- bool StreamNext(const void** data) {
- bool res = zcis_->Next(data, &size_);
- if (res) overall_limit_ -= size_;
- return res;
- }
- void StreamBackUp(int count) {
- zcis_->BackUp(count);
- overall_limit_ += count;
- }
-
- template <typename A>
- const char* AppendSize(const char* ptr, int size, const A& append) {
- int chunk_size = buffer_end_ + kSlopBytes - ptr;
- do {
- GOOGLE_DCHECK(size > chunk_size);
- if (next_chunk_ == nullptr) return nullptr;
- append(ptr, chunk_size);
- ptr += chunk_size;
- size -= chunk_size;
- // TODO(gerbens) Next calls NextBuffer which generates buffers with
- // overlap and thus incurs cost of copying the slop regions. This is not
- // necessary for reading strings. We should just call Next buffers.
- if (limit_ <= kSlopBytes) return nullptr;
- ptr = Next();
- if (ptr == nullptr) return nullptr; // passed the limit
- ptr += kSlopBytes;
- chunk_size = buffer_end_ + kSlopBytes - ptr;
- } while (size > chunk_size);
- append(ptr, size);
- return ptr + size;
- }
-
- // AppendUntilEnd appends data until a limit (either a PushLimit or end of
- // stream. Normal payloads are from length delimited fields which have an
- // explicit size. Reading until limit only comes when the string takes
- // the place of a protobuf, ie RawMessage/StringRawMessage, lazy fields and
- // implicit weak messages. We keep these methods private and friend them.
- template <typename A>
- const char* AppendUntilEnd(const char* ptr, const A& append) {
- if (ptr - buffer_end_ > limit_) return nullptr;
- while (limit_ > kSlopBytes) {
- size_t chunk_size = buffer_end_ + kSlopBytes - ptr;
- append(ptr, chunk_size);
- ptr = Next();
- if (ptr == nullptr) return limit_end_;
- ptr += kSlopBytes;
- }
- auto end = buffer_end_ + limit_;
- GOOGLE_DCHECK(end >= ptr);
- append(ptr, end - ptr);
- return end;
- }
-
- PROTOBUF_NODISCARD const char* AppendString(const char* ptr,
- std::string* str) {
- return AppendUntilEnd(
- ptr, [str](const char* p, ptrdiff_t s) { str->append(p, s); });
- }
- friend class ImplicitWeakMessage;
-};
-
-using LazyEagerVerifyFnType = const char* (*)(const char* ptr,
- ParseContext* ctx);
-using LazyEagerVerifyFnRef = std::remove_pointer<LazyEagerVerifyFnType>::type&;
-
-// ParseContext holds all data that is global to the entire parse. Most
-// importantly it contains the input stream, but also recursion depth and also
-// stores the end group tag, in case a parser ended on a endgroup, to verify
-// matching start/end group tags.
-class PROTOBUF_EXPORT ParseContext : public EpsCopyInputStream {
- public:
- struct Data {
- const DescriptorPool* pool = nullptr;
- MessageFactory* factory = nullptr;
- Arena* arena = nullptr;
- };
-
- template <typename... T>
- ParseContext(int depth, bool aliasing, const char** start, T&&... args)
- : EpsCopyInputStream(aliasing), depth_(depth) {
- *start = InitFrom(std::forward<T>(args)...);
- }
-
- void TrackCorrectEnding() { group_depth_ = 0; }
-
- bool Done(const char** ptr) { return DoneWithCheck(ptr, group_depth_); }
-
- int depth() const { return depth_; }
-
- Data& data() { return data_; }
- const Data& data() const { return data_; }
-
- const char* ParseMessage(MessageLite* msg, const char* ptr);
-
- // Spawns a child parsing context that inherits key properties. New context
- // inherits the following:
- // --depth_, data_, check_required_fields_, lazy_parse_mode_
- // The spawned context always disables aliasing (different input).
- template <typename... T>
- ParseContext Spawn(const char** start, T&&... args) {
- ParseContext spawned(depth_, false, start, std::forward<T>(args)...);
- // Transfer key context states.
- spawned.data_ = data_;
- return spawned;
- }
-
- // This overload supports those few cases where ParseMessage is called
- // on a class that is not actually a proto message.
- // TODO(jorg): Eliminate this use case.
- template <typename T,
- typename std::enable_if<!std::is_base_of<MessageLite, T>::value,
- bool>::type = true>
- PROTOBUF_NODISCARD const char* ParseMessage(T* msg, const char* ptr);
-
- template <typename T>
- PROTOBUF_NODISCARD PROTOBUF_NDEBUG_INLINE const char* ParseGroup(
- T* msg, const char* ptr, uint32_t tag) {
- if (--depth_ < 0) return nullptr;
- group_depth_++;
- ptr = msg->_InternalParse(ptr, this);
- group_depth_--;
- depth_++;
- if (PROTOBUF_PREDICT_FALSE(!ConsumeEndGroup(tag))) return nullptr;
- return ptr;
- }
-
- private:
- // Out-of-line routine to save space in ParseContext::ParseMessage<T>
- // int old;
- // ptr = ReadSizeAndPushLimitAndDepth(ptr, &old)
- // is equivalent to:
- // int size = ReadSize(&ptr);
- // if (!ptr) return nullptr;
- // int old = PushLimit(ptr, size);
- // if (--depth_ < 0) return nullptr;
- PROTOBUF_NODISCARD const char* ReadSizeAndPushLimitAndDepth(const char* ptr,
- int* old_limit);
-
- // The context keeps an internal stack to keep track of the recursive
- // part of the parse state.
- // Current depth of the active parser, depth counts down.
- // This is used to limit recursion depth (to prevent overflow on malicious
- // data), but is also used to index in stack_ to store the current state.
- int depth_;
- // Unfortunately necessary for the fringe case of ending on 0 or end-group tag
- // in the last kSlopBytes of a ZeroCopyInputStream chunk.
- int group_depth_ = INT_MIN;
- Data data_;
-};
-
-template <uint32_t tag>
-bool ExpectTag(const char* ptr) {
- if (tag < 128) {
- return *ptr == static_cast<char>(tag);
- } else {
- static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
- char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
- return std::memcmp(ptr, buf, 2) == 0;
- }
-}
-
-template <int>
-struct EndianHelper;
-
-template <>
-struct EndianHelper<1> {
- static uint8_t Load(const void* p) { return *static_cast<const uint8_t*>(p); }
-};
-
-template <>
-struct EndianHelper<2> {
- static uint16_t Load(const void* p) {
- uint16_t tmp;
- std::memcpy(&tmp, p, 2);
- return little_endian::ToHost(tmp);
- }
-};
-
-template <>
-struct EndianHelper<4> {
- static uint32_t Load(const void* p) {
- uint32_t tmp;
- std::memcpy(&tmp, p, 4);
- return little_endian::ToHost(tmp);
- }
-};
-
-template <>
-struct EndianHelper<8> {
- static uint64_t Load(const void* p) {
- uint64_t tmp;
- std::memcpy(&tmp, p, 8);
- return little_endian::ToHost(tmp);
- }
-};
-
-template <typename T>
-T UnalignedLoad(const char* p) {
- auto tmp = EndianHelper<sizeof(T)>::Load(p);
- T res;
- memcpy(&res, &tmp, sizeof(T));
- return res;
-}
-
-PROTOBUF_EXPORT
-std::pair<const char*, uint32_t> VarintParseSlow32(const char* p, uint32_t res);
-PROTOBUF_EXPORT
-std::pair<const char*, uint64_t> VarintParseSlow64(const char* p, uint32_t res);
-
-inline const char* VarintParseSlow(const char* p, uint32_t res, uint32_t* out) {
- auto tmp = VarintParseSlow32(p, res);
- *out = tmp.second;
- return tmp.first;
-}
-
-inline const char* VarintParseSlow(const char* p, uint32_t res, uint64_t* out) {
- auto tmp = VarintParseSlow64(p, res);
- *out = tmp.second;
- return tmp.first;
-}
-
-template <typename T>
-PROTOBUF_NODISCARD const char* VarintParse(const char* p, T* out) {
- auto ptr = reinterpret_cast<const uint8_t*>(p);
- uint32_t res = ptr[0];
- if (!(res & 0x80)) {
- *out = res;
- return p + 1;
- }
- uint32_t byte = ptr[1];
- res += (byte - 1) << 7;
- if (!(byte & 0x80)) {
- *out = res;
- return p + 2;
- }
- return VarintParseSlow(p, res, out);
-}
-
-// Used for tags, could read up to 5 bytes which must be available.
-// Caller must ensure its safe to call.
-
-PROTOBUF_EXPORT
-std::pair<const char*, uint32_t> ReadTagFallback(const char* p, uint32_t res);
-
-// Same as ParseVarint but only accept 5 bytes at most.
-inline const char* ReadTag(const char* p, uint32_t* out,
- uint32_t /*max_tag*/ = 0) {
- uint32_t res = static_cast<uint8_t>(p[0]);
- if (res < 128) {
- *out = res;
- return p + 1;
- }
- uint32_t second = static_cast<uint8_t>(p[1]);
- res += (second - 1) << 7;
- if (second < 128) {
- *out = res;
- return p + 2;
- }
- auto tmp = ReadTagFallback(p, res);
- *out = tmp.second;
- return tmp.first;
-}
-
-// As above, but optimized to consume very few registers while still being fast,
-// ReadTagInlined is useful for callers that don't mind the extra code but would
-// like to avoid an extern function call causing spills into the stack.
-//
-// Two support routines for ReadTagInlined come first...
-template <class T>
-PROTOBUF_NODISCARD PROTOBUF_ALWAYS_INLINE constexpr T RotateLeft(
- T x, int s) noexcept {
- return static_cast<T>(x << (s & (std::numeric_limits<T>::digits - 1))) |
- static_cast<T>(x >> ((-s) & (std::numeric_limits<T>::digits - 1)));
-}
-
-PROTOBUF_NODISCARD inline PROTOBUF_ALWAYS_INLINE uint64_t
-RotRight7AndReplaceLowByte(uint64_t res, const char& byte) {
-#if defined(__x86_64__) && defined(__GNUC__)
- // This will only use one register for `res`.
- // `byte` comes as a reference to allow the compiler to generate code like:
- //
- // rorq $7, %rcx
- // movb 1(%rax), %cl
- //
- // which avoids loading the incoming bytes into a separate register first.
- asm("ror $7,%0\n\t"
- "movb %1,%b0"
- : "+r"(res)
- : "m"(byte));
-#else
- res = RotateLeft(res, -7);
- res = res & ~0xFF;
- res |= 0xFF & byte;
-#endif
- return res;
-};
-
-inline PROTOBUF_ALWAYS_INLINE
-const char* ReadTagInlined(const char* ptr, uint32_t* out) {
- uint64_t res = 0xFF & ptr[0];
- if (PROTOBUF_PREDICT_FALSE(res >= 128)) {
- res = RotRight7AndReplaceLowByte(res, ptr[1]);
- if (PROTOBUF_PREDICT_FALSE(res & 0x80)) {
- res = RotRight7AndReplaceLowByte(res, ptr[2]);
- if (PROTOBUF_PREDICT_FALSE(res & 0x80)) {
- res = RotRight7AndReplaceLowByte(res, ptr[3]);
- if (PROTOBUF_PREDICT_FALSE(res & 0x80)) {
- // Note: this wouldn't work if res were 32-bit,
- // because then replacing the low byte would overwrite
- // the bottom 4 bits of the result.
- res = RotRight7AndReplaceLowByte(res, ptr[4]);
- if (PROTOBUF_PREDICT_FALSE(res & 0x80)) {
- // The proto format does not permit longer than 5-byte encodings for
- // tags.
- *out = 0;
- return nullptr;
- }
- *out = static_cast<uint32_t>(RotateLeft(res, 28));
-#if defined(__GNUC__)
- // Note: this asm statement prevents the compiler from
- // trying to share the "return ptr + constant" among all
- // branches.
- asm("" : "+r"(ptr));
-#endif
- return ptr + 5;
- }
- *out = static_cast<uint32_t>(RotateLeft(res, 21));
- return ptr + 4;
- }
- *out = static_cast<uint32_t>(RotateLeft(res, 14));
- return ptr + 3;
- }
- *out = static_cast<uint32_t>(RotateLeft(res, 7));
- return ptr + 2;
- }
- *out = static_cast<uint32_t>(res);
- return ptr + 1;
-}
-
-// Decode 2 consecutive bytes of a varint and returns the value, shifted left
-// by 1. It simultaneous updates *ptr to *ptr + 1 or *ptr + 2 depending if the
-// first byte's continuation bit is set.
-// If bit 15 of return value is set (equivalent to the continuation bits of both
-// bytes being set) the varint continues, otherwise the parse is done. On x86
-// movsx eax, dil
-// and edi, eax
-// add eax, edi
-// adc [rsi], 1
-inline uint32_t DecodeTwoBytes(const char** ptr) {
- uint32_t value = UnalignedLoad<uint16_t>(*ptr);
- // Sign extend the low byte continuation bit
- uint32_t x = static_cast<int8_t>(value);
- value &= x; // Mask out the high byte iff no continuation
- // This add is an amazing operation, it cancels the low byte continuation bit
- // from y transferring it to the carry. Simultaneously it also shifts the 7
- // LSB left by one tightly against high byte varint bits. Hence value now
- // contains the unpacked value shifted left by 1.
- value += x;
- // Use the carry to update the ptr appropriately.
- *ptr += value < x ? 2 : 1;
- return value;
-}
-
-// More efficient varint parsing for big varints
-inline const char* ParseBigVarint(const char* p, uint64_t* out) {
- auto pnew = p;
- auto tmp = DecodeTwoBytes(&pnew);
- uint64_t res = tmp >> 1;
- if (PROTOBUF_PREDICT_TRUE(static_cast<std::int16_t>(tmp) >= 0)) {
- *out = res;
- return pnew;
- }
- for (std::uint32_t i = 1; i < 5; i++) {
- pnew = p + 2 * i;
- tmp = DecodeTwoBytes(&pnew);
- res += (static_cast<std::uint64_t>(tmp) - 2) << (14 * i - 1);
- if (PROTOBUF_PREDICT_TRUE(static_cast<std::int16_t>(tmp) >= 0)) {
- *out = res;
- return pnew;
- }
- }
- return nullptr;
-}
-
-PROTOBUF_EXPORT
-std::pair<const char*, int32_t> ReadSizeFallback(const char* p, uint32_t first);
-// Used for tags, could read up to 5 bytes which must be available. Additionally
-// it makes sure the unsigned value fits a int32_t, otherwise returns nullptr.
-// Caller must ensure its safe to call.
-inline uint32_t ReadSize(const char** pp) {
- auto p = *pp;
- uint32_t res = static_cast<uint8_t>(p[0]);
- if (res < 128) {
- *pp = p + 1;
- return res;
- }
- auto x = ReadSizeFallback(p, res);
- *pp = x.first;
- return x.second;
-}
-
-// Some convenience functions to simplify the generated parse loop code.
-// Returning the value and updating the buffer pointer allows for nicer
-// function composition. We rely on the compiler to inline this.
-// Also in debug compiles having local scoped variables tend to generated
-// stack frames that scale as O(num fields).
-inline uint64_t ReadVarint64(const char** p) {
- uint64_t tmp;
- *p = VarintParse(*p, &tmp);
- return tmp;
-}
-
-inline uint32_t ReadVarint32(const char** p) {
- uint32_t tmp;
- *p = VarintParse(*p, &tmp);
- return tmp;
-}
-
-inline int64_t ReadVarintZigZag64(const char** p) {
- uint64_t tmp;
- *p = VarintParse(*p, &tmp);
- return WireFormatLite::ZigZagDecode64(tmp);
-}
-
-inline int32_t ReadVarintZigZag32(const char** p) {
- uint64_t tmp;
- *p = VarintParse(*p, &tmp);
- return WireFormatLite::ZigZagDecode32(static_cast<uint32_t>(tmp));
-}
-
-template <typename T, typename std::enable_if<
- !std::is_base_of<MessageLite, T>::value, bool>::type>
-PROTOBUF_NODISCARD const char* ParseContext::ParseMessage(T* msg,
- const char* ptr) {
- int old;
- ptr = ReadSizeAndPushLimitAndDepth(ptr, &old);
- ptr = ptr ? msg->_InternalParse(ptr, this) : nullptr;
- depth_++;
- if (!PopLimit(old)) return nullptr;
- return ptr;
-}
-
-template <typename Tag, typename T>
-const char* EpsCopyInputStream::ReadRepeatedFixed(const char* ptr,
- Tag expected_tag,
- RepeatedField<T>* out) {
- do {
- out->Add(UnalignedLoad<T>(ptr));
- ptr += sizeof(T);
- if (PROTOBUF_PREDICT_FALSE(ptr >= limit_end_)) return ptr;
- } while (UnalignedLoad<Tag>(ptr) == expected_tag && (ptr += sizeof(Tag)));
- return ptr;
-}
-
-// Add any of the following lines to debug which parse function is failing.
-
-#define GOOGLE_PROTOBUF_ASSERT_RETURN(predicate, ret) \
- if (!(predicate)) { \
- /* ::raise(SIGINT); */ \
- /* GOOGLE_LOG(ERROR) << "Parse failure"; */ \
- return ret; \
- }
-
-#define GOOGLE_PROTOBUF_PARSER_ASSERT(predicate) \
- GOOGLE_PROTOBUF_ASSERT_RETURN(predicate, nullptr)
-
-template <typename T>
-const char* EpsCopyInputStream::ReadPackedFixed(const char* ptr, int size,
- RepeatedField<T>* out) {
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- int nbytes = buffer_end_ + kSlopBytes - ptr;
- while (size > nbytes) {
- int num = nbytes / sizeof(T);
- int old_entries = out->size();
- out->Reserve(old_entries + num);
- int block_size = num * sizeof(T);
- auto dst = out->AddNAlreadyReserved(num);
-#ifdef PROTOBUF_LITTLE_ENDIAN
- std::memcpy(dst, ptr, block_size);
-#else
- for (int i = 0; i < num; i++)
- dst[i] = UnalignedLoad<T>(ptr + i * sizeof(T));
-#endif
- size -= block_size;
- if (limit_ <= kSlopBytes) return nullptr;
- ptr = Next();
- if (ptr == nullptr) return nullptr;
- ptr += kSlopBytes - (nbytes - block_size);
- nbytes = buffer_end_ + kSlopBytes - ptr;
- }
- int num = size / sizeof(T);
- int old_entries = out->size();
- out->Reserve(old_entries + num);
- int block_size = num * sizeof(T);
- auto dst = out->AddNAlreadyReserved(num);
-#ifdef PROTOBUF_LITTLE_ENDIAN
- std::memcpy(dst, ptr, block_size);
-#else
- for (int i = 0; i < num; i++) dst[i] = UnalignedLoad<T>(ptr + i * sizeof(T));
-#endif
- ptr += block_size;
- if (size != block_size) return nullptr;
- return ptr;
-}
-
-template <typename Add>
-const char* ReadPackedVarintArray(const char* ptr, const char* end, Add add) {
- while (ptr < end) {
- uint64_t varint;
- ptr = VarintParse(ptr, &varint);
- if (ptr == nullptr) return nullptr;
- add(varint);
- }
- return ptr;
-}
-
-template <typename Add>
-const char* EpsCopyInputStream::ReadPackedVarint(const char* ptr, Add add) {
- int size = ReadSize(&ptr);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- int chunk_size = buffer_end_ - ptr;
- while (size > chunk_size) {
- ptr = ReadPackedVarintArray(ptr, buffer_end_, add);
- if (ptr == nullptr) return nullptr;
- int overrun = ptr - buffer_end_;
- GOOGLE_DCHECK(overrun >= 0 && overrun <= kSlopBytes);
- if (size - chunk_size <= kSlopBytes) {
- // The current buffer contains all the information needed, we don't need
- // to flip buffers. However we must parse from a buffer with enough space
- // so we are not prone to a buffer overflow.
- char buf[kSlopBytes + 10] = {};
- std::memcpy(buf, buffer_end_, kSlopBytes);
- GOOGLE_CHECK_LE(size - chunk_size, kSlopBytes);
- auto end = buf + (size - chunk_size);
- auto res = ReadPackedVarintArray(buf + overrun, end, add);
- if (res == nullptr || res != end) return nullptr;
- return buffer_end_ + (res - buf);
- }
- size -= overrun + chunk_size;
- GOOGLE_DCHECK_GT(size, 0);
- // We must flip buffers
- if (limit_ <= kSlopBytes) return nullptr;
- ptr = Next();
- if (ptr == nullptr) return nullptr;
- ptr += overrun;
- chunk_size = buffer_end_ - ptr;
- }
- auto end = ptr + size;
- ptr = ReadPackedVarintArray(ptr, end, add);
- return end == ptr ? ptr : nullptr;
-}
-
-// Helper for verification of utf8
-PROTOBUF_EXPORT
-bool VerifyUTF8(StringPiece s, const char* field_name);
-
-inline bool VerifyUTF8(const std::string* s, const char* field_name) {
- return VerifyUTF8(*s, field_name);
-}
-
-// All the string parsers with or without UTF checking and for all CTypes.
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* InlineGreedyStringParser(
- std::string* s, const char* ptr, ParseContext* ctx);
-
-
-template <typename T>
-PROTOBUF_NODISCARD const char* FieldParser(uint64_t tag, T& field_parser,
- const char* ptr, ParseContext* ctx) {
- uint32_t number = tag >> 3;
- GOOGLE_PROTOBUF_PARSER_ASSERT(number != 0);
- using WireType = internal::WireFormatLite::WireType;
- switch (tag & 7) {
- case WireType::WIRETYPE_VARINT: {
- uint64_t value;
- ptr = VarintParse(ptr, &value);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- field_parser.AddVarint(number, value);
- break;
- }
- case WireType::WIRETYPE_FIXED64: {
- uint64_t value = UnalignedLoad<uint64_t>(ptr);
- ptr += 8;
- field_parser.AddFixed64(number, value);
- break;
- }
- case WireType::WIRETYPE_LENGTH_DELIMITED: {
- ptr = field_parser.ParseLengthDelimited(number, ptr, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- break;
- }
- case WireType::WIRETYPE_START_GROUP: {
- ptr = field_parser.ParseGroup(number, ptr, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
- break;
- }
- case WireType::WIRETYPE_END_GROUP: {
- GOOGLE_LOG(FATAL) << "Can't happen";
- break;
- }
- case WireType::WIRETYPE_FIXED32: {
- uint32_t value = UnalignedLoad<uint32_t>(ptr);
- ptr += 4;
- field_parser.AddFixed32(number, value);
- break;
- }
- default:
- return nullptr;
- }
- return ptr;
-}
-
-template <typename T>
-PROTOBUF_NODISCARD const char* WireFormatParser(T& field_parser,
- const char* ptr,
- ParseContext* ctx) {
- while (!ctx->Done(&ptr)) {
- uint32_t tag;
- ptr = ReadTag(ptr, &tag);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
- if (tag == 0 || (tag & 7) == 4) {
- ctx->SetLastTag(tag);
- return ptr;
- }
- ptr = FieldParser(tag, field_parser, ptr, ctx);
- GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
- }
- return ptr;
-}
-
-// The packed parsers parse repeated numeric primitives directly into the
-// corresponding field
-
-// These are packed varints
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedInt32Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedUInt32Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedInt64Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedUInt64Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedSInt32Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedSInt64Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedEnumParser(
- void* object, const char* ptr, ParseContext* ctx);
-
-template <typename T>
-PROTOBUF_NODISCARD const char* PackedEnumParser(void* object, const char* ptr,
- ParseContext* ctx,
- bool (*is_valid)(int),
- InternalMetadata* metadata,
- int field_num) {
- return ctx->ReadPackedVarint(
- ptr, [object, is_valid, metadata, field_num](uint64_t val) {
- if (is_valid(val)) {
- static_cast<RepeatedField<int>*>(object)->Add(val);
- } else {
- WriteVarint(field_num, val, metadata->mutable_unknown_fields<T>());
- }
- });
-}
-
-template <typename T>
-PROTOBUF_NODISCARD const char* PackedEnumParserArg(
- void* object, const char* ptr, ParseContext* ctx,
- bool (*is_valid)(const void*, int), const void* data,
- InternalMetadata* metadata, int field_num) {
- return ctx->ReadPackedVarint(
- ptr, [object, is_valid, data, metadata, field_num](uint64_t val) {
- if (is_valid(data, val)) {
- static_cast<RepeatedField<int>*>(object)->Add(val);
- } else {
- WriteVarint(field_num, val, metadata->mutable_unknown_fields<T>());
- }
- });
-}
-
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedBoolParser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedFixed32Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedSFixed32Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedFixed64Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedSFixed64Parser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedFloatParser(
- void* object, const char* ptr, ParseContext* ctx);
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* PackedDoubleParser(
- void* object, const char* ptr, ParseContext* ctx);
-
-// This is the only recursive parser.
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* UnknownGroupLiteParse(
- std::string* unknown, const char* ptr, ParseContext* ctx);
-// This is a helper to for the UnknownGroupLiteParse but is actually also
-// useful in the generated code. It uses overload on std::string* vs
-// UnknownFieldSet* to make the generated code isomorphic between full and lite.
-PROTOBUF_NODISCARD PROTOBUF_EXPORT const char* UnknownFieldParse(
- uint32_t tag, std::string* unknown, const char* ptr, ParseContext* ctx);
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_PARSE_CONTEXT_H__
diff --git a/include/google/protobuf/port.h b/include/google/protobuf/port.h
deleted file mode 100644
index a5c060b6f6..0000000000
--- a/include/google/protobuf/port.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// A common header that is included across all protobuf headers. We do our best
-// to avoid #defining any macros here; instead we generally put macros in
-// port_def.inc and port_undef.inc so they are not visible from outside of
-// protobuf.
-
-#ifndef GOOGLE_PROTOBUF_PORT_H__
-#define GOOGLE_PROTOBUF_PORT_H__
-
-#include <cstddef>
-#include <new>
-
-
-namespace google {
-namespace protobuf {
-namespace internal {
-inline void SizedDelete(void* p, size_t size) {
-#if defined(__cpp_sized_deallocation)
- ::operator delete(p, size);
-#else
- ::operator delete(p);
-#endif
-}
-inline void SizedArrayDelete(void* p, size_t size) {
-#if defined(__cpp_sized_deallocation)
- ::operator delete[](p, size);
-#else
- ::operator delete[](p);
-#endif
-}
-
-// Tag type used to invoke the constinit constructor overload of classes
-// such as ArenaStringPtr and MapFieldBase. Such constructors are internal
-// implementation details of the library.
-struct ConstantInitialized {
- explicit ConstantInitialized() = default;
-};
-
-// Tag type used to invoke the arena constructor overload of classes such
-// as ExtensionSet and MapFieldLite in aggregate initialization. These
-// classes typically don't have move/copy constructors, which rules out
-// explicit initialization in pre-C++17.
-struct ArenaInitialized {
- explicit ArenaInitialized() = default;
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_PORT_H__
diff --git a/include/google/protobuf/port_def.inc b/include/google/protobuf/port_def.inc
deleted file mode 100644
index b7af7807f0..0000000000
--- a/include/google/protobuf/port_def.inc
+++ /dev/null
@@ -1,928 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file defines common macros that are used in protobuf.
-//
-// To hide these definitions from the outside world (and to prevent collisions
-// if more than one version of protobuf is #included in the same project) you
-// must follow this pattern when #including port_def.inc in a header file:
-//
-// #include "other_header.h"
-// #include "message.h"
-// // etc.
-//
-// #include "port_def.inc" // MUST be last header included
-//
-// // Definitions for this header.
-//
-// #include "port_undef.inc"
-//
-// This is a textual header with no include guard, because we want to
-// detect/prohibit anytime it is #included twice without a corresponding
-// #undef.
-
-// The definitions in this file are intended to be portable across Clang,
-// GCC, and MSVC. Function-like macros are usable without an #ifdef guard.
-// Syntax macros (for example, attributes) are always defined, although
-// they may be empty.
-//
-// Some definitions rely on the NDEBUG macro and/or (in MSVC) _DEBUG:
-// - https://en.cppreference.com/w/c/error/assert
-// - https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros#microsoft-specific-predefined-macros
-//
-// References for predefined macros:
-// - Standard: https://en.cppreference.com/w/cpp/preprocessor/replace
-// - Clang: https://clang.llvm.org/docs/LanguageExtensions.html
-// (see also GCC predefined macros)
-// - GCC: https://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html
-// - MSVC: https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
-// - Interactive (Clang/GCC only): https://www.compiler-explorer.com/z/hc6jKd3sj
-//
-// References for attributes (and extension attributes):
-// - Standard: https://en.cppreference.com/w/cpp/language/attributes
-// - Clang: https://clang.llvm.org/docs/AttributeReference.html
-// - GCC: https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html
-// (see Clang attribute docs as well)
-//
-// References for standard C++ language conformance (and minimum versions):
-// - Clang: https://clang.llvm.org/cxx_status.html
-// - GCC: https://gcc.gnu.org/projects/cxx-status.html
-// - MSVC: https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance
-//
-// Historical release notes (which can help to determine minimum versions):
-// - Clang: https://releases.llvm.org/
-// - GCC: https://gcc.gnu.org/releases.html
-// - MSVC: https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-history
-// https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes-history
-
-// Portable fallbacks for C++20 feature test macros:
-// https://en.cppreference.com/w/cpp/feature_test
-#ifndef __has_cpp_attribute
-#define __has_cpp_attribute(x) 0
-#define PROTOBUF_has_cpp_attribute_DEFINED_
-#endif
-
-// Portable fallback for Clang's __has_feature macro:
-// https://clang.llvm.org/docs/LanguageExtensions.html#has-feature-and-has-extension
-#ifndef __has_feature
-#define __has_feature(x) 0
-#define PROTOBUF_has_feature_DEFINED_
-#endif
-
-// Portable fallback for Clang's __has_warning macro:
-#ifndef __has_warning
-#define __has_warning(x) 0
-#define PROTOBUF_has_warning_DEFINED_
-#endif
-
-// Portable fallbacks for the __has_attribute macro (GCC and Clang):
-// https://clang.llvm.org/docs/LanguageExtensions.html#has-attribute
-// https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fattribute.html
-#ifndef __has_attribute
-#define __has_attribute(x) 0
-#define PROTOBUF_has_attribute_DEFINED_
-#endif
-
-// Portable fallback for __has_builtin (GCC and Clang):
-// https://clang.llvm.org/docs/LanguageExtensions.html#has-builtin
-// https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fbuiltin.html
-#ifndef __has_builtin
-#define __has_builtin(x) 0
-#define PROTOBUF_has_builtin_DEFINED_
-#endif
-
-// Portable PROTOBUF_BUILTIN_BSWAPxx definitions
-// Code must check for availability, e.g.: `defined(PROTOBUF_BUILTIN_BSWAP32)`
-#ifdef PROTOBUF_BUILTIN_BSWAP16
-#error PROTOBUF_BUILTIN_BSWAP16 was previously defined
-#endif
-#ifdef PROTOBUF_BUILTIN_BSWAP32
-#error PROTOBUF_BUILTIN_BSWAP32 was previously defined
-#endif
-#ifdef PROTOBUF_BUILTIN_BSWAP64
-#error PROTOBUF_BUILTIN_BSWAP64 was previously defined
-#endif
-#if defined(__GNUC__) || __has_builtin(__builtin_bswap16)
-#define PROTOBUF_BUILTIN_BSWAP16(x) __builtin_bswap16(x)
-#endif
-#if defined(__GNUC__) || __has_builtin(__builtin_bswap32)
-#define PROTOBUF_BUILTIN_BSWAP32(x) __builtin_bswap32(x)
-#endif
-#if defined(__GNUC__) || __has_builtin(__builtin_bswap64)
-#define PROTOBUF_BUILTIN_BSWAP64(x) __builtin_bswap64(x)
-#endif
-
-// Portable check for GCC minimum version:
-// https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) \
- && defined(__GNUC_PATCHLEVEL__)
-# define PROTOBUF_GNUC_MIN(x, y) \
- (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y))
-#else
-# define PROTOBUF_GNUC_MIN(x, y) 0
-#endif
-
-// Portable check for MSVC minimum version:
-// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
-#if defined(_MSC_VER)
-#define PROTOBUF_MSC_VER_MIN(x) (_MSC_VER >= x)
-#else
-#define PROTOBUF_MSC_VER_MIN(x) 0
-#endif
-
-// Portable check for minimum C++ language version:
-// https://en.cppreference.com/w/cpp/preprocessor/replace
-// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
-#if !defined(_MSVC_LANG)
-#define PROTOBUF_CPLUSPLUS_MIN(x) (__cplusplus >= x)
-#else
-#define PROTOBUF_CPLUSPLUS_MIN(x) (_MSVC_LANG >= x)
-#endif
-
-// Future versions of protobuf will include breaking changes to some APIs.
-// This macro can be set to enable these API changes ahead of time, so that
-// user code can be updated before upgrading versions of protobuf.
-// PROTOBUF_FUTURE_FINAL is used on classes that are historically not marked as
-// final, but that may be marked final in future (breaking) releases.
-// #define PROTOBUF_FUTURE_BREAKING_CHANGES 1
-// #define PROTOBUF_FUTURE_FINAL final
-#define PROTOBUF_FUTURE_FINAL
-
-#ifdef PROTOBUF_VERSION
-#error PROTOBUF_VERSION was previously defined
-#endif
-#define PROTOBUF_VERSION 3021004
-
-#ifdef PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC
-#error PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC was previously defined
-#endif
-#define PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC 3021000
-
-#ifdef PROTOBUF_MIN_PROTOC_VERSION
-#error PROTOBUF_MIN_PROTOC_VERSION was previously defined
-#endif
-#define PROTOBUF_MIN_PROTOC_VERSION 3021000
-
-#ifdef PROTOBUF_VERSION_SUFFIX
-#error PROTOBUF_VERSION_SUFFIX was previously defined
-#endif
-#define PROTOBUF_VERSION_SUFFIX ""
-
-#if defined(PROTOBUF_NAMESPACE) || defined(PROTOBUF_NAMESPACE_ID)
-#error PROTOBUF_NAMESPACE or PROTOBUF_NAMESPACE_ID was previously defined
-#endif
-#define PROTOBUF_NAMESPACE "google::protobuf"
-#define PROTOBUF_NAMESPACE_ID google::protobuf
-#define PROTOBUF_NAMESPACE_OPEN \
- namespace google { \
- namespace protobuf {
-#define PROTOBUF_NAMESPACE_CLOSE \
- } /* namespace protobuf */ \
- } /* namespace google */
-
-#ifdef PROTOBUF_ALWAYS_INLINE
-#error PROTOBUF_ALWAYS_INLINE was previously defined
-#endif
-// For functions we want to force inline.
-#if defined(PROTOBUF_NO_INLINE)
-# define PROTOBUF_ALWAYS_INLINE
-#elif PROTOBUF_GNUC_MIN(3, 1)
-# define PROTOBUF_ALWAYS_INLINE __attribute__((always_inline))
-#elif defined(_MSC_VER)
-# define PROTOBUF_ALWAYS_INLINE __forceinline
-#else
-# define PROTOBUF_ALWAYS_INLINE
-#endif
-
-#ifdef PROTOBUF_NDEBUG_INLINE
-#error PROTOBUF_NDEBUG_INLINE was previously defined
-#endif
-// Avoid excessive inlining in non-optimized builds. Without other optimizations
-// the inlining is not going to provide benefits anyway and the huge resulting
-// functions, especially in the proto-generated serialization functions, produce
-// stack frames so large that many tests run into stack overflows (b/32192897).
-#if defined(NDEBUG) || (defined(_MSC_VER) && !defined(_DEBUG))
-# define PROTOBUF_NDEBUG_INLINE PROTOBUF_ALWAYS_INLINE
-#else
-# define PROTOBUF_NDEBUG_INLINE
-#endif
-
-// Note that PROTOBUF_NOINLINE is an attribute applied to functions, to prevent
-// them from being inlined by the compiler. This is different from
-// PROTOBUF_NO_INLINE, which is a user-supplied macro that disables forced
-// inlining by PROTOBUF_(ALWAYS|NDEBUG)_INLINE.
-#ifdef PROTOBUF_NOINLINE
-#error PROTOBUF_NOINLINE was previously defined
-#endif
-#if PROTOBUF_GNUC_MIN(3, 1)
-# define PROTOBUF_NOINLINE __attribute__((noinline))
-#elif defined(_MSC_VER)
-// Seems to have been around since at least Visual Studio 2005
-# define PROTOBUF_NOINLINE __declspec(noinline)
-#endif
-
-#ifdef PROTOBUF_MUSTTAIL
-#error PROTOBUF_MUSTTAIL was previously defined
-#endif
-#ifdef PROTOBUF_TAILCALL
-#error PROTOBUF_TAILCALL was previously defined
-#endif
-#if __has_cpp_attribute(clang::musttail) && !defined(__arm__) && \
- !defined(_ARCH_PPC) && !defined(__wasm__) && \
- !(defined(_MSC_VER) && defined(_M_IX86)) && \
- !(defined(__NDK_MAJOR__) && __NDK_MAJOR <= 24)
-# ifndef PROTO2_OPENSOURCE
-// Compilation fails on ARM32: b/195943306
-// Compilation fails on powerpc64le: b/187985113
-// Compilation fails on X86 Windows:
-// https://github.com/llvm/llvm-project/issues/53271
-# endif
-#define PROTOBUF_MUSTTAIL [[clang::musttail]]
-#define PROTOBUF_TAILCALL true
-#else
-#define PROTOBUF_MUSTTAIL
-#define PROTOBUF_TAILCALL false
-#endif
-
-#ifdef PROTOBUF_EXCLUSIVE_LOCKS_REQUIRED
-#error PROTOBUF_EXCLUSIVE_LOCKS_REQUIRED was previously defined
-#endif
-#if __has_attribute(exclusive_locks_required)
-#define PROTOBUF_EXCLUSIVE_LOCKS_REQUIRED(...) \
- __attribute__((exclusive_locks_required(__VA_ARGS__)))
-#else
-#define PROTOBUF_EXCLUSIVE_LOCKS_REQUIRED(...)
-#endif
-
-#ifdef PROTOBUF_NO_THREAD_SAFETY_ANALYSIS
-#error PROTOBUF_NO_THREAD_SAFETY_ANALYSIS was previously defined
-#endif
-#if __has_attribute(no_thread_safety_analysis)
-#define PROTOBUF_NO_THREAD_SAFETY_ANALYSIS \
- __attribute__((no_thread_safety_analysis))
-#else
-#define PROTOBUF_NO_THREAD_SAFETY_ANALYSIS
-#endif
-
-#ifdef PROTOBUF_GUARDED_BY
-#error PROTOBUF_GUARDED_BY was previously defined
-#endif
-#if __has_attribute(guarded_by)
-#define PROTOBUF_GUARDED_BY(x) __attribute__((guarded_by(x)))
-#else
-#define PROTOBUF_GUARDED_BY(x)
-#endif
-
-#ifdef PROTOBUF_LOCKS_EXCLUDED
-#error PROTOBUF_LOCKS_EXCLUDED was previously defined
-#endif
-#if __has_attribute(locks_excluded)
-#define PROTOBUF_LOCKS_EXCLUDED(...) \
- __attribute__((locks_excluded(__VA_ARGS__)))
-#else
-#define PROTOBUF_LOCKS_EXCLUDED(...)
-#endif
-
-#ifdef PROTOBUF_COLD
-#error PROTOBUF_COLD was previously defined
-#endif
-#if __has_attribute(cold) || PROTOBUF_GNUC_MIN(4, 3)
-# define PROTOBUF_COLD __attribute__((cold))
-#else
-# define PROTOBUF_COLD
-#endif
-
-#ifdef PROTOBUF_SECTION_VARIABLE
-#error PROTOBUF_SECTION_VARIABLE was previously defined
-#endif
-#if (__has_attribute(section) || defined(__GNUC__)) && defined(__ELF__)
-// Place a variable in the given ELF section.
-# define PROTOBUF_SECTION_VARIABLE(x) __attribute__((section(#x)))
-#else
-# define PROTOBUF_SECTION_VARIABLE(x)
-#endif
-
-#if defined(PROTOBUF_DEPRECATED)
-#error PROTOBUF_DEPRECATED was previously defined
-#endif
-#if defined(PROTOBUF_DEPRECATED_MSG)
-#error PROTOBUF_DEPRECATED_MSG was previously defined
-#endif
-#if __has_attribute(deprecated) || PROTOBUF_GNUC_MIN(3, 0)
-# define PROTOBUF_DEPRECATED __attribute__((deprecated))
-# define PROTOBUF_DEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
-#elif defined(_MSC_VER)
-# define PROTOBUF_DEPRECATED __declspec(deprecated)
-# define PROTOBUF_DEPRECATED_MSG(msg) __declspec(deprecated(msg))
-#else
-# define PROTOBUF_DEPRECATED
-# define PROTOBUF_DEPRECATED_MSG(msg)
-#endif
-
-#if defined(PROTOBUF_DEPRECATED_ENUM)
-#error PROTOBUF_DEPRECATED_ENUM was previously defined
-#endif
-#if defined(__clang__) || PROTOBUF_GNUC_MIN(6, 0)
-// https://gcc.gnu.org/gcc-6/changes.html
-# define PROTOBUF_DEPRECATED_ENUM __attribute__((deprecated))
-#else
-# define PROTOBUF_DEPRECATED_ENUM
-#endif
-
-#ifdef PROTOBUF_FUNC_ALIGN
-#error PROTOBUF_FUNC_ALIGN was previously defined
-#endif
-#if __has_attribute(aligned) || PROTOBUF_GNUC_MIN(4, 3)
-#define PROTOBUF_FUNC_ALIGN(bytes) __attribute__((aligned(bytes)))
-#else
-#define PROTOBUF_FUNC_ALIGN(bytes)
-#endif
-
-#ifdef PROTOBUF_RETURNS_NONNULL
-#error PROTOBUF_RETURNS_NONNULL was previously defined
-#endif
-#if __has_attribute(returns_nonnull) || PROTOBUF_GNUC_MIN(4, 9)
-#define PROTOBUF_RETURNS_NONNULL __attribute__((returns_nonnull))
-#else
-#define PROTOBUF_RETURNS_NONNULL
-#endif
-
-#ifdef PROTOBUF_ATTRIBUTE_REINITIALIZES
-#error PROTOBUF_ATTRIBUTE_REINITIALIZES was previously defined
-#endif
-#if __has_cpp_attribute(clang::reinitializes)
-#define PROTOBUF_ATTRIBUTE_REINITIALIZES [[clang::reinitializes]]
-#else
-#define PROTOBUF_ATTRIBUTE_REINITIALIZES
-#endif
-
-// The minimum library version which works with the current version of the
-// headers.
-#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 3021000
-
-#ifdef PROTOBUF_RTTI
-#error PROTOBUF_RTTI was previously defined
-#endif
-#if defined(GOOGLE_PROTOBUF_NO_RTTI) && GOOGLE_PROTOBUF_NO_RTTI
-// A user-provided definition GOOGLE_PROTOBUF_NO_RTTI=1 disables RTTI.
-#define PROTOBUF_RTTI 0
-#elif defined(__cpp_rtti)
-// https://en.cppreference.com/w/cpp/feature_test
-#define PROTOBUF_RTTI 1
-#elif __has_feature(cxx_rtti)
-// https://clang.llvm.org/docs/LanguageExtensions.html#c-rtti
-#define PROTOBUF_RTTI 1
-#elif defined(__GXX_RTTI)
-// https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
-#define PROTOBUF_RTTI 1
-#elif defined(_CPPRTTI)
-// https://docs.microsoft.com/en-us/cpp/build/reference/gr-enable-run-time-type-information
-#define PROTOBUF_RTTI 1
-#else
-#define PROTOBUF_RTTI 0
-#endif
-
-// Returns the offset of the given field within the given aggregate type.
-// This is equivalent to the ANSI C offsetof() macro. However, according
-// to the C++ standard, offsetof() only works on POD types, and GCC
-// enforces this requirement with a warning. In practice, this rule is
-// unnecessarily strict; there is probably no compiler or platform on
-// which the offsets of the direct fields of a class are non-constant.
-// Fields inherited from superclasses *can* have non-constant offsets,
-// but that's not what this macro will be used for.
-#ifdef PROTOBUF_FIELD_OFFSET
-#error PROTOBUF_FIELD_OFFSET was previously defined
-#endif
-#if defined(__clang__)
-// For Clang we use __builtin_offsetof() and suppress the warning,
-// to avoid Control Flow Integrity and UBSan vptr sanitizers from
-// crashing while trying to validate the invalid reinterpret_casts.
-#define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) \
- _Pragma("clang diagnostic push") \
- _Pragma("clang diagnostic ignored \"-Winvalid-offsetof\"") \
- __builtin_offsetof(TYPE, FIELD) \
- _Pragma("clang diagnostic pop")
-#elif PROTOBUF_GNUC_MIN(4, 8)
-#define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) __builtin_offsetof(TYPE, FIELD)
-#else // defined(__clang__)
-// Note that we calculate relative to the pointer value 16 here since if we
-// just use zero, GCC complains about dereferencing a NULL pointer. We
-// choose 16 rather than some other number just in case the compiler would
-// be confused by an unaligned pointer.
-#define PROTOBUF_FIELD_OFFSET(TYPE, FIELD) \
- static_cast< ::uint32_t>(reinterpret_cast<const char*>( \
- &reinterpret_cast<const TYPE*>(16)->FIELD) - \
- reinterpret_cast<const char*>(16))
-#endif
-
-#ifdef PROTOBUF_EXPORT
-#error PROTOBUF_EXPORT was previously defined
-#endif
-
-#if defined(PROTOBUF_USE_DLLS) && defined(_MSC_VER)
-# if defined(LIBPROTOBUF_EXPORTS)
-# define PROTOBUF_EXPORT __declspec(dllexport)
-# define PROTOBUF_EXPORT_TEMPLATE_DECLARE
-# define PROTOBUF_EXPORT_TEMPLATE_DEFINE __declspec(dllexport)
-# else
-# define PROTOBUF_EXPORT __declspec(dllimport)
-# define PROTOBUF_EXPORT_TEMPLATE_DECLARE
-# define PROTOBUF_EXPORT_TEMPLATE_DEFINE __declspec(dllimport)
-# endif // defined(LIBPROTOBUF_EXPORTS)
-#elif defined(PROTOBUF_USE_DLLS) && defined(LIBPROTOBUF_EXPORTS)
-# define PROTOBUF_EXPORT __attribute__((visibility("default")))
-# define PROTOBUF_EXPORT_TEMPLATE_DECLARE __attribute__((visibility("default")))
-# define PROTOBUF_EXPORT_TEMPLATE_DEFINE
-#else
-# define PROTOBUF_EXPORT
-# define PROTOBUF_EXPORT_TEMPLATE_DECLARE
-# define PROTOBUF_EXPORT_TEMPLATE_DEFINE
-#endif
-
-#ifdef PROTOC_EXPORT
-#error PROTOC_EXPORT was previously defined
-#endif
-
-#if defined(PROTOBUF_USE_DLLS) && defined(_MSC_VER)
-# if defined(LIBPROTOC_EXPORTS)
-# define PROTOC_EXPORT __declspec(dllexport)
-# else
-# define PROTOC_EXPORT __declspec(dllimport)
-# endif // defined(LIBPROTOC_EXPORTS)
-#elif defined(PROTOBUF_USE_DLLS) && defined(LIBPROTOC_EXPORTS)
-# define PROTOC_EXPORT __attribute__((visibility("default")))
-#else
-# define PROTOC_EXPORT
-#endif
-
-#if defined(PROTOBUF_PREDICT_TRUE) || defined(PROTOBUF_PREDICT_FALSE)
-#error PROTOBUF_PREDICT_(TRUE|FALSE) was previously defined
-#endif
-#if PROTOBUF_GNUC_MIN(3, 0)
-# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
-# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
-#else
-# define PROTOBUF_PREDICT_TRUE(x) (x)
-# define PROTOBUF_PREDICT_FALSE(x) (x)
-#endif
-
-#ifdef PROTOBUF_NODISCARD
-#error PROTOBUF_NODISCARD was previously defined
-#endif
-#if __has_cpp_attribute(nodiscard) && PROTOBUF_CPLUSPLUS_MIN(201703L)
-#define PROTOBUF_NODISCARD [[nodiscard]]
-#elif __has_attribute(warn_unused_result) || PROTOBUF_GNUC_MIN(4, 8)
-#define PROTOBUF_NODISCARD __attribute__((warn_unused_result))
-#else
-#define PROTOBUF_NODISCARD
-#endif
-
-// Enable all stable experiments if this flag is set. This allows us to group
-// all of these experiments under a single build flag, which can be enabled in
-// the protobuf.stable-experiments TAP project.
-#ifdef PROTOBUF_ENABLE_STABLE_EXPERIMENTS
-#define PROTOBUF_FORCE_MESSAGE_OWNED_ARENA
-#endif // !PROTOBUF_ENABLE_STABLE_EXPERIMENTS
-
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
-#error PROTOBUF_FORCE_COPY_IN_RELEASE was previously defined
-#endif
-
-#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
-#error PROTOBUF_FORCE_COPY_IN_SWAP was previously defined
-#endif
-
-#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
-#error PROTOBUF_FORCE_COPY_IN_MOVE was previously defined
-#endif
-
-#ifdef PROTOBUF_FORCE_RESET_IN_CLEAR
-#error PROTOBUF_FORCE_RESET_IN_CLEAR was previously defined
-#endif
-
-// Force copy the default string to a string field so that non-optimized builds
-// have harder-to-rely-on address stability.
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-#error PROTOBUF_FORCE_COPY_DEFAULT_STRING was previously defined
-#endif
-
-#ifdef PROTOBUF_FALLTHROUGH_INTENDED
-#error PROTOBUF_FALLTHROUGH_INTENDED was previously defined
-#endif
-#if __has_cpp_attribute(fallthrough)
-#define PROTOBUF_FALLTHROUGH_INTENDED [[fallthrough]]
-#elif __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
-#define PROTOBUF_FALLTHROUGH_INTENDED [[clang::fallthrough]]
-#elif PROTOBUF_GNUC_MIN(7, 0)
-#define PROTOBUF_FALLTHROUGH_INTENDED [[gnu::fallthrough]]
-#else
-#define PROTOBUF_FALLTHROUGH_INTENDED
-#endif
-
-// PROTOBUF_ASSUME(pred) tells the compiler that it can assume pred is true. To
-// be safe, we also validate the assumption with a GOOGLE_DCHECK in unoptimized
-// builds. The macro does not do anything useful if the compiler does not
-// support __builtin_assume.
-#ifdef PROTOBUF_ASSUME
-#error PROTOBUF_ASSUME was previously defined
-#endif
-#if __has_builtin(__builtin_assume)
-#define PROTOBUF_ASSUME(pred) \
- GOOGLE_DCHECK(pred); \
- __builtin_assume(pred)
-#else
-#define PROTOBUF_ASSUME(pred) GOOGLE_DCHECK(pred)
-#endif
-
-// Specify memory alignment for structs, classes, etc.
-// Use like:
-// class PROTOBUF_ALIGNAS(16) MyClass { ... }
-// PROTOBUF_ALIGNAS(16) int array[4];
-//
-// In most places you can use the C++11 keyword "alignas", which is preferred.
-//
-// But compilers have trouble mixing __attribute__((...)) syntax with
-// alignas(...) syntax.
-//
-// Doesn't work in clang or gcc:
-// struct alignas(16) __attribute__((packed)) S { char c; };
-// Works in clang but not gcc:
-// struct __attribute__((packed)) alignas(16) S2 { char c; };
-// Works in clang and gcc:
-// struct alignas(16) S3 { char c; } __attribute__((packed));
-//
-// There are also some attributes that must be specified *before* a class
-// definition: visibility (used for exporting functions/classes) is one of
-// these attributes. This means that it is not possible to use alignas() with a
-// class that is marked as exported.
-#ifdef PROTOBUF_ALIGNAS
-#error PROTOBUF_ALIGNAS was previously defined
-#endif
-#if defined(_MSC_VER)
-#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment))
-#elif PROTOBUF_GNUC_MIN(3, 0)
-#define PROTOBUF_ALIGNAS(byte_alignment) \
- __attribute__((aligned(byte_alignment)))
-#else
-#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment)
-#endif
-
-#ifdef PROTOBUF_FINAL
-#error PROTOBUF_FINAL was previously defined
-#endif
-#define PROTOBUF_FINAL final
-
-#ifdef PROTOBUF_THREAD_LOCAL
-#error PROTOBUF_THREAD_LOCAL was previously defined
-#endif
-#if defined(_MSC_VER)
-#define PROTOBUF_THREAD_LOCAL __declspec(thread)
-#else
-#define PROTOBUF_THREAD_LOCAL __thread
-#endif
-
-// TODO(b/228173843): cleanup PROTOBUF_LITTLE_ENDIAN in various 3p forks.
-#if (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
- __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-#define PROTOBUF_LITTLE_ENDIAN 1
-#ifdef PROTOBUF_BIG_ENDIAN
-#error Conflicting PROTOBUF_BIG_ENDIAN was previously defined
-#endif
-#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
- __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-#define PROTOBUF_BIG_ENDIAN 1
-#elif defined(_WIN32) || defined(__x86_64__) || defined(__aarch64__)
-#define PROTOBUF_LITTLE_ENDIAN 1
-#else
-#error "endian detection failed for current compiler"
-#endif
-
-// For enabling message owned arena, one major blocker is semantic change from
-// moving to copying when there is ownership transfer (e.g., move ctor, swap,
-// set allocated, release). This change not only causes performance regression
-// but also breaks users code (e.g., dangling reference). For top-level
-// messages, since it owns the arena, we can mitigate the issue by transferring
-// ownership of arena. However, we cannot do that for nested messages. In order
-// to tell how many usages of nested messages affected by message owned arena,
-// we need to simulate the arena ownership.
-// This experiment is purely for the purpose of gathering data. All code guarded
-// by this flag is supposed to be removed after this experiment.
-#define PROTOBUF_MESSAGE_OWNED_ARENA_EXPERIMENT
-#ifdef PROTOBUF_CONSTINIT
-#error PROTOBUF_CONSTINIT was previously defined
-#endif
-#if defined(__cpp_constinit) && !defined(_MSC_VER)
-#define PROTOBUF_CONSTINIT constinit
-#define PROTOBUF_CONSTEXPR constexpr
-// Some older Clang versions incorrectly raise an error about
-// constant-initializing weak default instance pointers. Versions 12.0 and
-// higher seem to work, except that XCode 12.5.1 shows the error even though it
-// uses Clang 12.0.5.
-// Clang-cl on Windows raises error also.
-#elif !defined(_MSC_VER) && __has_cpp_attribute(clang::require_constant_initialization) && \
- ((defined(__APPLE__) && __clang_major__ >= 13) || \
- (!defined(__APPLE__) && __clang_major__ >= 12))
-#define PROTOBUF_CONSTINIT [[clang::require_constant_initialization]]
-#define PROTOBUF_CONSTEXPR constexpr
-#elif PROTOBUF_GNUC_MIN(12, 2)
-#define PROTOBUF_CONSTINIT __constinit
-#define PROTOBUF_CONSTEXPR constexpr
-// MSVC 17 currently seems to raise an error about constant-initialized pointers.
-#elif defined(_MSC_VER) && _MSC_VER >= 1930
-#define PROTOBUF_CONSTINIT
-#define PROTOBUF_CONSTEXPR constexpr
-#else
-#define PROTOBUF_CONSTINIT
-#define PROTOBUF_CONSTEXPR
-#endif
-
-// Some globals with an empty non-trivial destructor are annotated with
-// no_destroy for performance reasons. It reduces the cost of these globals in
-// non-opt mode and under sanitizers.
-#ifdef PROTOBUF_ATTRIBUTE_NO_DESTROY
-#error PROTOBUF_ATTRIBUTE_NO_DESTROY was previously defined
-#endif
-#if __has_cpp_attribute(clang::no_destroy)
-#define PROTOBUF_ATTRIBUTE_NO_DESTROY [[clang::no_destroy]]
-#else
-#define PROTOBUF_ATTRIBUTE_NO_DESTROY
-#endif
-
-// Force clang to always emit complete debug info for a type.
-// Clang uses constructor homing to determine when to emit debug info for a
-// type. If the constructor of a type is never used, which can happen in some
-// cases where member variables are constructed in place for optimization
-// purposes (see b/208803175 for an example), the type will have incomplete
-// debug info unless this attribute is used.
-#ifdef PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG
-#error PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG was previously defined
-#endif
-#if __has_cpp_attribute(clang::standalone_debug)
-#define PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG [[clang::standalone_debug]]
-#else
-#define PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG
-#endif
-
-// Protobuf extensions and reflection require registration of the protos linked
-// in the binary. Not until everything is registered does the runtime have a
-// complete view on all protos. When code is using reflection or extensions
-// in between registration calls this can lead to surprising behavior. By
-// having the registration run first we mitigate this scenario.
-// Highest priority is 101. We use 102 for registration, to allow code that
-// really wants to higher priority to still beat us. Some initialization happens
-// at higher priority, though, since it is needed before registration.
-#ifdef PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
-#error PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 was previously defined
-#endif
-#ifdef PROTOBUF_ATTRIBUTE_INIT_PRIORITY2
-#error PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 was previously defined
-#endif
-#if PROTOBUF_GNUC_MIN(3, 0) && (!defined(__APPLE__) || defined(__clang__)) && \
- !((defined(sun) || defined(__sun)) && \
- (defined(__SVR4) || defined(__svr4__)))
-#define PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 __attribute__((init_priority((101))))
-#define PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 __attribute__((init_priority((102))))
-#else
-#define PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
-#define PROTOBUF_ATTRIBUTE_INIT_PRIORITY2
-#endif
-
-#ifdef PROTOBUF_PRAGMA_INIT_SEG
-#error PROTOBUF_PRAGMA_INIT_SEG was previously defined
-#endif
-#ifdef _MSC_VER
-#define PROTOBUF_PRAGMA_INIT_SEG __pragma(init_seg(lib))
-#else
-#define PROTOBUF_PRAGMA_INIT_SEG
-#endif
-
-#ifdef PROTOBUF_ATTRIBUTE_WEAK
-#error PROTOBUF_ATTRIBUTE_WEAK was previously defined
-#endif
-#if __has_attribute(weak) && \
- !defined(__APPLE__) && \
- (!defined(_WIN32) || __clang_major__ < 9) && \
- !defined(__MINGW32__)
-#define PROTOBUF_ATTRIBUTE_WEAK __attribute__((weak))
-#define PROTOBUF_HAVE_ATTRIBUTE_WEAK 1
-#else
-#define PROTOBUF_ATTRIBUTE_WEAK
-#define PROTOBUF_HAVE_ATTRIBUTE_WEAK 0
-#endif
-
-// Macros to detect sanitizers.
-#ifdef PROTOBUF_ASAN
-#error PROTOBUF_ASAN was previously defined
-#endif
-#ifdef PROTOBUF_MSAN
-#error PROTOBUF_MSAN was previously defined
-#endif
-#ifdef PROTOBUF_TSAN
-#error PROTOBUF_TSAN was previously defined
-#endif
-#if defined(__clang__)
-# if __has_feature(address_sanitizer)
-# define PROTOBUF_ASAN 1
-# endif
-# if __has_feature(thread_sanitizer)
-# define PROTOBUF_TSAN 1
-# endif
-# if __has_feature(memory_sanitizer)
-# define PROTOBUF_MSAN 1
-# endif
-#elif PROTOBUF_GNUC_MIN(3, 0)
-// Double-guard is needed for -Wundef:
-# ifdef __SANITIZE_ADDRESS__
-# if __SANITIZE_ADDRESS__
-# define PROTOBUF_ASAN 1
-# endif
-# endif
-# ifdef __SANITIZE_THREAD__
-# if __SANITIZE_THREAD__
-# define PROTOBUF_TSAN 1
-# endif
-# endif
-#endif
-
-// Tail call table-driven parsing can be enabled by defining
-// PROTOBUF_EXPERIMENTAL_USE_TAIL_CALL_TABLE_PARSER at compilation time. Note
-// that this macro is for small-scale testing only, and is not supported.
-#ifdef PROTOBUF_TAIL_CALL_TABLE_PARSER_ENABLED
-#error PROTOBUF_TAIL_CALL_TABLE_PARSER_ENABLED was previously declared
-#endif
-#if defined(PROTOBUF_EXPERIMENTAL_USE_TAIL_CALL_TABLE_PARSER)
-#define PROTOBUF_TAIL_CALL_TABLE_PARSER_ENABLED 1
-#endif
-
-#define PROTOBUF_TC_PARAM_DECL \
- ::google::protobuf::MessageLite *msg, const char *ptr, \
- ::google::protobuf::internal::ParseContext *ctx, \
- const ::google::protobuf::internal::TcParseTableBase *table, \
- uint64_t hasbits, ::google::protobuf::internal::TcFieldData data
-
-#ifdef PROTOBUF_UNUSED
-#error PROTOBUF_UNUSED was previously defined
-#endif
-#if __has_cpp_attribute(maybe_unused) || \
- (PROTOBUF_MSC_VER_MIN(1911) && PROTOBUF_CPLUSPLUS_MIN(201703L))
-#define PROTOBUF_UNUSED [[maybe_unused]]
-#elif __has_attribute(unused) || PROTOBUF_GNUC_MIN(3, 0)
-#define PROTOBUF_UNUSED __attribute__((__unused__))
-#else
-#define PROTOBUF_UNUSED
-#endif
-
-// ThreadSafeArenaz is turned off completely in opensource builds.
-
-// Windows declares several inconvenient macro names. We #undef them and then
-// restore them in port_undef.inc.
-#ifdef _MSC_VER
-#pragma push_macro("CREATE_NEW")
-#undef CREATE_NEW
-#pragma push_macro("DELETE")
-#undef DELETE
-#pragma push_macro("DOUBLE_CLICK")
-#undef DOUBLE_CLICK
-#pragma push_macro("ERROR")
-#undef ERROR
-#pragma push_macro("ERROR_BUSY")
-#undef ERROR_BUSY
-#pragma push_macro("ERROR_INSTALL_FAILED")
-#undef ERROR_INSTALL_FAILED
-#pragma push_macro("ERROR_NOT_FOUND")
-#undef ERROR_NOT_FOUND
-#pragma push_macro("GetClassName")
-#undef GetClassName
-#pragma push_macro("GetMessage")
-#undef GetMessage
-#pragma push_macro("GetObject")
-#undef GetObject
-#pragma push_macro("IGNORE")
-#undef IGNORE
-#pragma push_macro("IN")
-#undef IN
-#pragma push_macro("INPUT_KEYBOARD")
-#undef INPUT_KEYBOARD
-#pragma push_macro("NO_ERROR")
-#undef NO_ERROR
-#pragma push_macro("OUT")
-#undef OUT
-#pragma push_macro("OPTIONAL")
-#undef OPTIONAL
-#pragma push_macro("min")
-#undef min
-#pragma push_macro("max")
-#undef max
-#pragma push_macro("NEAR")
-#undef NEAR
-#pragma push_macro("NO_DATA")
-#undef NO_DATA
-#pragma push_macro("REASON_UNKNOWN")
-#undef REASON_UNKNOWN
-#pragma push_macro("SERVICE_DISABLED")
-#undef SERVICE_DISABLED
-#pragma push_macro("SEVERITY_ERROR")
-#undef SEVERITY_ERROR
-#pragma push_macro("STATUS_PENDING")
-#undef STATUS_PENDING
-#pragma push_macro("STRICT")
-#undef STRICT
-#pragma push_macro("timezone")
-#undef timezone
-#endif // _MSC_VER
-
-#ifdef __APPLE__
-// Inconvenient macro names from usr/include/math.h in some macOS SDKs.
-#pragma push_macro("DOMAIN")
-#undef DOMAIN
-// Inconvenient macro names from /usr/include/mach/boolean.h in some macOS SDKs.
-#pragma push_macro("TRUE")
-#undef TRUE
-#pragma push_macro("FALSE")
-#undef FALSE
-// Inconvenient macro names from usr/include/sys/syslimits.h in some macOS SDKs.
-#pragma push_macro("UID_MAX")
-#undef UID_MAX
-#endif // __APPLE__
-
-#if defined(__clang__) || PROTOBUF_GNUC_MIN(3, 0) || defined(_MSC_VER)
-// Don't let Objective-C Macros interfere with proto identifiers with the same
-// name.
-#pragma push_macro("DEBUG")
-#undef DEBUG
-#endif // defined(__clang__) || PROTOBUF_GNUC_MIN(3, 0) || defined(_MSC_VER)
-
-#if PROTOBUF_GNUC_MIN(3, 0)
-// GCC does not allow disabling diagnostics within an expression:
-// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60875, so we disable this one
-// globally even though it's only used for PROTOBUF_FIELD_OFFSET.
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Winvalid-offsetof"
-#endif
-
-// Silence some MSVC warnings in all our code.
-#ifdef _MSC_VER
-#pragma warning(push)
-// For non-trivial unions
-#pragma warning(disable : 4582)
-#pragma warning(disable : 4583)
-// For init_seg(lib)
-#pragma warning(disable : 4073)
-// To silence the fact that we will pop this push from another file
-#pragma warning(disable : 5031)
-// Conditional expression is constant
-#pragma warning(disable: 4127)
-// decimal digit terminates octal escape sequence
-#pragma warning(disable: 4125)
-#endif
-
-// We don't want code outside port_def doing complex testing, so
-// remove our portable condition test macros to nudge folks away from
-// using it themselves.
-#ifdef PROTOBUF_has_cpp_attribute_DEFINED_
-# undef __has_cpp_attribute
-# undef PROTOBUF_has_cpp_attribute_DEFINED_
-#endif
-#ifdef PROTOBUF_has_feature_DEFINED_
-# undef __has_feature
-# undef PROTOBUF_has_feature_DEFINED_
-#endif
-#ifdef PROTOBUF_has_warning_DEFINED_
-# undef __has_warning
-# undef PROTOBUF_has_warning_DEFINED_
-#endif
-#ifdef PROTOBUF_has_attribute_DEFINED_
-# undef __has_attribute
-# undef PROTOBUF_has_attribute_DEFINED_
-#endif
-#ifdef PROTOBUF_has_builtin_DEFINED_
-# undef __has_builtin
-# undef PROTOBUF_has_builtin_DEFINED_
-#endif
diff --git a/include/google/protobuf/port_undef.inc b/include/google/protobuf/port_undef.inc
deleted file mode 100644
index e880fa5c59..0000000000
--- a/include/google/protobuf/port_undef.inc
+++ /dev/null
@@ -1,160 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// #undefs all macros defined in port_def.inc. See comments in port_def.inc
-// for more info.
-
-#ifndef PROTOBUF_NAMESPACE
-#error "port_undef.inc must be included after port_def.inc"
-#endif
-
-#undef PROTOBUF_BUILTIN_BSWAP16
-#undef PROTOBUF_BUILTIN_BSWAP32
-#undef PROTOBUF_BUILTIN_BSWAP64
-#undef PROTOBUF_GNUC_MIN
-#undef PROTOBUF_MSC_VER_MIN
-#undef PROTOBUF_CPLUSPLUS_MIN
-#undef PROTOBUF_NAMESPACE
-#undef PROTOBUF_NAMESPACE_ID
-#undef PROTOBUF_ALWAYS_INLINE
-#undef PROTOBUF_NDEBUG_INLINE
-#undef PROTOBUF_MUSTTAIL
-#undef PROTOBUF_TAILCALL
-#undef PROTOBUF_COLD
-#undef PROTOBUF_NOINLINE
-#undef PROTOBUF_SECTION_VARIABLE
-#undef PROTOBUF_DEPRECATED
-#undef PROTOBUF_DEPRECATED_ENUM
-#undef PROTOBUF_DEPRECATED_MSG
-#undef PROTOBUF_FUNC_ALIGN
-#undef PROTOBUF_RETURNS_NONNULL
-#undef PROTOBUF_ATTRIBUTE_REINITIALIZES
-#undef PROTOBUF_RTTI
-#undef PROTOBUF_VERSION
-#undef PROTOBUF_VERSION_SUFFIX
-#undef PROTOBUF_FIELD_OFFSET
-#undef PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC
-#undef PROTOBUF_MIN_PROTOC_VERSION
-#undef PROTOBUF_PREDICT_TRUE
-#undef PROTOBUF_PREDICT_FALSE
-#undef PROTOBUF_FALLTHROUGH_INTENDED
-#undef PROTOBUF_EXPORT
-#undef PROTOC_EXPORT
-#undef PROTOBUF_NODISCARD
-#undef PROTOBUF_FORCE_COPY_IN_RELEASE
-#undef PROTOBUF_FORCE_COPY_IN_SWAP
-#undef PROTOBUF_FORCE_COPY_IN_MOVE
-#undef PROTOBUF_FORCE_RESET_IN_CLEAR
-#undef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-#undef PROTOBUF_NAMESPACE_OPEN
-#undef PROTOBUF_NAMESPACE_CLOSE
-#undef PROTOBUF_UNUSED
-#undef PROTOBUF_ASSUME
-#undef PROTOBUF_EXPORT_TEMPLATE_DECLARE
-#undef PROTOBUF_EXPORT_TEMPLATE_DEFINE
-#undef PROTOBUF_ALIGNAS
-#undef PROTOBUF_FINAL
-#undef PROTOBUF_FUTURE_FINAL
-#undef PROTOBUF_THREAD_LOCAL
-#undef PROTOBUF_LITTLE_ENDIAN
-#undef PROTOBUF_BIG_ENDIAN
-#undef PROTOBUF_MESSAGE_OWNED_ARENA_EXPERIMENT
-#undef PROTOBUF_CONSTINIT
-#undef PROTOBUF_CONSTEXPR
-#undef PROTOBUF_ATTRIBUTE_WEAK
-#undef PROTOBUF_HAVE_ATTRIBUTE_WEAK
-#undef PROTOBUF_ATTRIBUTE_NO_DESTROY
-#undef PROTOBUF_ATTRIBUTE_STANDALONE_DEBUG
-#undef PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
-#undef PROTOBUF_ATTRIBUTE_INIT_PRIORITY2
-#undef PROTOBUF_PRAGMA_INIT_SEG
-#undef PROTOBUF_ASAN
-#undef PROTOBUF_MSAN
-#undef PROTOBUF_TSAN
-#undef PROTOBUF_TAIL_CALL_TABLE_PARSER_ENABLED
-#undef PROTOBUF_TC_PARAM_DECL
-#undef PROTOBUF_EXCLUSIVE_LOCKS_REQUIRED
-#undef PROTOBUF_LOCKS_EXCLUDED
-#undef PROTOBUF_NO_THREAD_SAFETY_ANALYSIS
-#undef PROTOBUF_GUARDED_BY
-
-#ifdef PROTOBUF_FUTURE_BREAKING_CHANGES
-#undef PROTOBUF_FUTURE_BREAKING_CHANGES
-#endif
-
-// Restore macro that may have been #undef'd in port_def.inc.
-#ifdef _MSC_VER
-#pragma pop_macro("CREATE_NEW")
-#pragma pop_macro("DELETE")
-#pragma pop_macro("DOUBLE_CLICK")
-#pragma pop_macro("ERROR")
-#pragma pop_macro("ERROR_BUSY")
-#pragma pop_macro("ERROR_INSTALL_FAILED")
-#pragma pop_macro("ERROR_NOT_FOUND")
-#pragma pop_macro("GetClassName")
-#pragma pop_macro("GetMessage")
-#pragma pop_macro("GetObject")
-#pragma pop_macro("IGNORE")
-#pragma pop_macro("IN")
-#pragma pop_macro("INPUT_KEYBOARD")
-#pragma pop_macro("OUT")
-#pragma pop_macro("OPTIONAL")
-#pragma pop_macro("min")
-#pragma pop_macro("max")
-#pragma pop_macro("NEAR")
-#pragma pop_macro("NO_DATA")
-#pragma pop_macro("NO_ERROR")
-#pragma pop_macro("REASON_UNKNOWN")
-#pragma pop_macro("SERVICE_DISABLED")
-#pragma pop_macro("SEVERITY_ERROR")
-#pragma pop_macro("STRICT")
-#pragma pop_macro("STATUS_PENDING")
-#pragma pop_macro("timezone")
-#endif
-
-#ifdef __APPLE__
-#pragma pop_macro("DOMAIN")
-#pragma pop_macro("TRUE")
-#pragma pop_macro("FALSE")
-#pragma pop_macro("UID_MAX")
-#endif // __APPLE__
-
-#if defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
-#pragma pop_macro("DEBUG")
-#endif // defined(__clang__) || defined(__GNUC__) || defined(_MSC_VER)
-
-#if defined(__GNUC__)
-#pragma GCC diagnostic pop
-#endif
-
-// Pop the warning(push) from port_def.inc
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
diff --git a/include/google/protobuf/reflection.h b/include/google/protobuf/reflection.h
deleted file mode 100644
index 7b75a43f22..0000000000
--- a/include/google/protobuf/reflection.h
+++ /dev/null
@@ -1,570 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This header defines the RepeatedFieldRef class template used to access
-// repeated fields with protobuf reflection API.
-#ifndef GOOGLE_PROTOBUF_REFLECTION_H__
-#define GOOGLE_PROTOBUF_REFLECTION_H__
-
-
-#include <memory>
-
-#include <google/protobuf/message.h>
-#include <google/protobuf/generated_enum_util.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-template <typename T, typename Enable = void>
-struct RefTypeTraits;
-} // namespace internal
-
-template <typename T>
-RepeatedFieldRef<T> Reflection::GetRepeatedFieldRef(
- const Message& message, const FieldDescriptor* field) const {
- return RepeatedFieldRef<T>(message, field);
-}
-
-template <typename T>
-MutableRepeatedFieldRef<T> Reflection::GetMutableRepeatedFieldRef(
- Message* message, const FieldDescriptor* field) const {
- return MutableRepeatedFieldRef<T>(message, field);
-}
-
-// RepeatedFieldRef definition for non-message types.
-template <typename T>
-class RepeatedFieldRef<
- T, typename std::enable_if<!std::is_base_of<Message, T>::value>::type> {
- typedef typename internal::RefTypeTraits<T>::iterator IteratorType;
- typedef typename internal::RefTypeTraits<T>::AccessorType AccessorType;
-
- public:
- bool empty() const { return accessor_->IsEmpty(data_); }
- int size() const { return accessor_->Size(data_); }
- T Get(int index) const { return accessor_->template Get<T>(data_, index); }
-
- typedef IteratorType iterator;
- typedef IteratorType const_iterator;
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef int size_type;
- typedef ptrdiff_t difference_type;
-
- iterator begin() const { return iterator(data_, accessor_, true); }
- iterator end() const { return iterator(data_, accessor_, false); }
-
- private:
- friend class Reflection;
- RepeatedFieldRef(const Message& message, const FieldDescriptor* field) {
- const Reflection* reflection = message.GetReflection();
- data_ = reflection->RepeatedFieldData(const_cast<Message*>(&message), field,
- internal::RefTypeTraits<T>::cpp_type,
- nullptr);
- accessor_ = reflection->RepeatedFieldAccessor(field);
- }
-
- const void* data_;
- const AccessorType* accessor_;
-};
-
-// MutableRepeatedFieldRef definition for non-message types.
-template <typename T>
-class MutableRepeatedFieldRef<
- T, typename std::enable_if<!std::is_base_of<Message, T>::value>::type> {
- typedef typename internal::RefTypeTraits<T>::AccessorType AccessorType;
-
- public:
- bool empty() const { return accessor_->IsEmpty(data_); }
- int size() const { return accessor_->Size(data_); }
- T Get(int index) const { return accessor_->template Get<T>(data_, index); }
-
- void Set(int index, const T& value) const {
- accessor_->template Set<T>(data_, index, value);
- }
- void Add(const T& value) const { accessor_->template Add<T>(data_, value); }
- void RemoveLast() const { accessor_->RemoveLast(data_); }
- void SwapElements(int index1, int index2) const {
- accessor_->SwapElements(data_, index1, index2);
- }
- void Clear() const { accessor_->Clear(data_); }
-
- void Swap(const MutableRepeatedFieldRef& other) const {
- accessor_->Swap(data_, other.accessor_, other.data_);
- }
-
- template <typename Container>
- void MergeFrom(const Container& container) const {
- typedef typename Container::const_iterator Iterator;
- for (Iterator it = container.begin(); it != container.end(); ++it) {
- Add(*it);
- }
- }
- template <typename Container>
- void CopyFrom(const Container& container) const {
- Clear();
- MergeFrom(container);
- }
-
- private:
- friend class Reflection;
- MutableRepeatedFieldRef(Message* message, const FieldDescriptor* field) {
- const Reflection* reflection = message->GetReflection();
- data_ = reflection->RepeatedFieldData(
- message, field, internal::RefTypeTraits<T>::cpp_type, nullptr);
- accessor_ = reflection->RepeatedFieldAccessor(field);
- }
-
- void* data_;
- const AccessorType* accessor_;
-};
-
-// RepeatedFieldRef definition for message types.
-template <typename T>
-class RepeatedFieldRef<
- T, typename std::enable_if<std::is_base_of<Message, T>::value>::type> {
- typedef typename internal::RefTypeTraits<T>::iterator IteratorType;
- typedef typename internal::RefTypeTraits<T>::AccessorType AccessorType;
-
- public:
- bool empty() const { return accessor_->IsEmpty(data_); }
- int size() const { return accessor_->Size(data_); }
- // This method returns a reference to the underlying message object if it
- // exists. If a message object doesn't exist (e.g., data stored in serialized
- // form), scratch_space will be filled with the data and a reference to it
- // will be returned.
- //
- // Example:
- // RepeatedFieldRef<Message> h = ...
- // unique_ptr<Message> scratch_space(h.NewMessage());
- // const Message& item = h.Get(index, scratch_space.get());
- const T& Get(int index, T* scratch_space) const {
- return *static_cast<const T*>(accessor_->Get(data_, index, scratch_space));
- }
- // Create a new message of the same type as the messages stored in this
- // repeated field. Caller takes ownership of the returned object.
- T* NewMessage() const { return static_cast<T*>(default_instance_->New()); }
-
- typedef IteratorType iterator;
- typedef IteratorType const_iterator;
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef int size_type;
- typedef ptrdiff_t difference_type;
-
- iterator begin() const {
- return iterator(data_, accessor_, true, NewMessage());
- }
- iterator end() const {
- // The end iterator must not be dereferenced, no need for scratch space.
- return iterator(data_, accessor_, false, nullptr);
- }
-
- private:
- friend class Reflection;
- RepeatedFieldRef(const Message& message, const FieldDescriptor* field) {
- const Reflection* reflection = message.GetReflection();
- data_ = reflection->RepeatedFieldData(
- const_cast<Message*>(&message), field,
- internal::RefTypeTraits<T>::cpp_type,
- internal::RefTypeTraits<T>::GetMessageFieldDescriptor());
- accessor_ = reflection->RepeatedFieldAccessor(field);
- default_instance_ =
- reflection->GetMessageFactory()->GetPrototype(field->message_type());
- }
-
- const void* data_;
- const AccessorType* accessor_;
- const Message* default_instance_;
-};
-
-// MutableRepeatedFieldRef definition for message types.
-template <typename T>
-class MutableRepeatedFieldRef<
- T, typename std::enable_if<std::is_base_of<Message, T>::value>::type> {
- typedef typename internal::RefTypeTraits<T>::AccessorType AccessorType;
-
- public:
- bool empty() const { return accessor_->IsEmpty(data_); }
- int size() const { return accessor_->Size(data_); }
- // See comments for RepeatedFieldRef<Message>::Get()
- const T& Get(int index, T* scratch_space) const {
- return *static_cast<const T*>(accessor_->Get(data_, index, scratch_space));
- }
- // Create a new message of the same type as the messages stored in this
- // repeated field. Caller takes ownership of the returned object.
- T* NewMessage() const { return static_cast<T*>(default_instance_->New()); }
-
- void Set(int index, const T& value) const {
- accessor_->Set(data_, index, &value);
- }
- void Add(const T& value) const { accessor_->Add(data_, &value); }
- void RemoveLast() const { accessor_->RemoveLast(data_); }
- void SwapElements(int index1, int index2) const {
- accessor_->SwapElements(data_, index1, index2);
- }
- void Clear() const { accessor_->Clear(data_); }
-
- void Swap(const MutableRepeatedFieldRef& other) const {
- accessor_->Swap(data_, other.accessor_, other.data_);
- }
-
- template <typename Container>
- void MergeFrom(const Container& container) const {
- typedef typename Container::const_iterator Iterator;
- for (Iterator it = container.begin(); it != container.end(); ++it) {
- Add(*it);
- }
- }
- template <typename Container>
- void CopyFrom(const Container& container) const {
- Clear();
- MergeFrom(container);
- }
-
- private:
- friend class Reflection;
- MutableRepeatedFieldRef(Message* message, const FieldDescriptor* field) {
- const Reflection* reflection = message->GetReflection();
- data_ = reflection->RepeatedFieldData(
- message, field, internal::RefTypeTraits<T>::cpp_type,
- internal::RefTypeTraits<T>::GetMessageFieldDescriptor());
- accessor_ = reflection->RepeatedFieldAccessor(field);
- default_instance_ =
- reflection->GetMessageFactory()->GetPrototype(field->message_type());
- }
-
- void* data_;
- const AccessorType* accessor_;
- const Message* default_instance_;
-};
-
-namespace internal {
-// Interfaces used to implement reflection RepeatedFieldRef API.
-// Reflection::GetRepeatedAccessor() should return a pointer to an singleton
-// object that implements the below interface.
-//
-// This interface passes/returns values using void pointers. The actual type
-// of the value depends on the field's cpp_type. Following is a mapping from
-// cpp_type to the type that should be used in this interface:
-//
-// field->cpp_type() T Actual type of void*
-// CPPTYPE_INT32 int32_t int32_t
-// CPPTYPE_UINT32 uint32_t uint32_t
-// CPPTYPE_INT64 int64_t int64_t
-// CPPTYPE_UINT64 uint64_t uint64_t
-// CPPTYPE_DOUBLE double double
-// CPPTYPE_FLOAT float float
-// CPPTYPE_BOOL bool bool
-// CPPTYPE_ENUM generated enum type int32_t
-// CPPTYPE_STRING string std::string
-// CPPTYPE_MESSAGE generated message type google::protobuf::Message
-// or google::protobuf::Message
-//
-// Note that for enums we use int32_t in the interface.
-//
-// You can map from T to the actual type using RefTypeTraits:
-// typedef RefTypeTraits<T>::AccessorValueType ActualType;
-class PROTOBUF_EXPORT RepeatedFieldAccessor {
- public:
- // Typedefs for clarity.
- typedef void Field;
- typedef void Value;
- typedef void Iterator;
-
- virtual bool IsEmpty(const Field* data) const = 0;
- virtual int Size(const Field* data) const = 0;
- // Depends on the underlying representation of the repeated field, this
- // method can return a pointer to the underlying object if such an object
- // exists, or fill the data into scratch_space and return scratch_space.
- // Callers of this method must ensure scratch_space is a valid pointer
- // to a mutable object of the correct type.
- virtual const Value* Get(const Field* data, int index,
- Value* scratch_space) const = 0;
-
- virtual void Clear(Field* data) const = 0;
- virtual void Set(Field* data, int index, const Value* value) const = 0;
- virtual void Add(Field* data, const Value* value) const = 0;
- virtual void RemoveLast(Field* data) const = 0;
- virtual void SwapElements(Field* data, int index1, int index2) const = 0;
- virtual void Swap(Field* data, const RepeatedFieldAccessor* other_mutator,
- Field* other_data) const = 0;
-
- // Create an iterator that points at the beginning of the repeated field.
- virtual Iterator* BeginIterator(const Field* data) const = 0;
- // Create an iterator that points at the end of the repeated field.
- virtual Iterator* EndIterator(const Field* data) const = 0;
- // Make a copy of an iterator and return the new copy.
- virtual Iterator* CopyIterator(const Field* data,
- const Iterator* iterator) const = 0;
- // Move an iterator to point to the next element.
- virtual Iterator* AdvanceIterator(const Field* data,
- Iterator* iterator) const = 0;
- // Compare whether two iterators point to the same element.
- virtual bool EqualsIterator(const Field* data, const Iterator* a,
- const Iterator* b) const = 0;
- // Delete an iterator created by BeginIterator(), EndIterator() and
- // CopyIterator().
- virtual void DeleteIterator(const Field* data, Iterator* iterator) const = 0;
- // Like Get() but for iterators.
- virtual const Value* GetIteratorValue(const Field* data,
- const Iterator* iterator,
- Value* scratch_space) const = 0;
-
- // Templated methods that make using this interface easier for non-message
- // types.
- template <typename T>
- T Get(const Field* data, int index) const {
- typedef typename RefTypeTraits<T>::AccessorValueType ActualType;
- ActualType scratch_space;
- return static_cast<T>(*reinterpret_cast<const ActualType*>(
- Get(data, index, static_cast<Value*>(&scratch_space))));
- }
-
- template <typename T, typename ValueType>
- void Set(Field* data, int index, const ValueType& value) const {
- typedef typename RefTypeTraits<T>::AccessorValueType ActualType;
- // In this RepeatedFieldAccessor interface we pass/return data using
- // raw pointers. Type of the data these raw pointers point to should
- // be ActualType. Here we have a ValueType object and want a ActualType
- // pointer. We can't cast a ValueType pointer to an ActualType pointer
- // directly because their type might be different (for enums ValueType
- // may be a generated enum type while ActualType is int32_t). To be safe
- // we make a copy to get a temporary ActualType object and use it.
- ActualType tmp = static_cast<ActualType>(value);
- Set(data, index, static_cast<const Value*>(&tmp));
- }
-
- template <typename T, typename ValueType>
- void Add(Field* data, const ValueType& value) const {
- typedef typename RefTypeTraits<T>::AccessorValueType ActualType;
- // In this RepeatedFieldAccessor interface we pass/return data using
- // raw pointers. Type of the data these raw pointers point to should
- // be ActualType. Here we have a ValueType object and want a ActualType
- // pointer. We can't cast a ValueType pointer to an ActualType pointer
- // directly because their type might be different (for enums ValueType
- // may be a generated enum type while ActualType is int32_t). To be safe
- // we make a copy to get a temporary ActualType object and use it.
- ActualType tmp = static_cast<ActualType>(value);
- Add(data, static_cast<const Value*>(&tmp));
- }
-
- protected:
- // We want the destructor to be completely trivial as to allow it to be
- // a function local static. Hence we make it non-virtual and protected,
- // this class only live as part of a global singleton and should not be
- // deleted.
- ~RepeatedFieldAccessor() = default;
-};
-
-// Implement (Mutable)RepeatedFieldRef::iterator
-template <typename T>
-class RepeatedFieldRefIterator {
- typedef typename RefTypeTraits<T>::AccessorValueType AccessorValueType;
- typedef typename RefTypeTraits<T>::IteratorValueType IteratorValueType;
- typedef typename RefTypeTraits<T>::IteratorPointerType IteratorPointerType;
-
- public:
- using iterator_category = std::forward_iterator_tag;
- using value_type = T;
- using pointer = T*;
- using reference = T&;
- using difference_type = std::ptrdiff_t;
-
- // Constructor for non-message fields.
- RepeatedFieldRefIterator(const void* data,
- const RepeatedFieldAccessor* accessor, bool begin)
- : data_(data),
- accessor_(accessor),
- iterator_(begin ? accessor->BeginIterator(data)
- : accessor->EndIterator(data)),
- // The end iterator must not be dereferenced, no need for scratch space.
- scratch_space_(begin ? new AccessorValueType : nullptr) {}
- // Constructor for message fields.
- RepeatedFieldRefIterator(const void* data,
- const RepeatedFieldAccessor* accessor, bool begin,
- AccessorValueType* scratch_space)
- : data_(data),
- accessor_(accessor),
- iterator_(begin ? accessor->BeginIterator(data)
- : accessor->EndIterator(data)),
- scratch_space_(scratch_space) {}
- ~RepeatedFieldRefIterator() { accessor_->DeleteIterator(data_, iterator_); }
- RepeatedFieldRefIterator operator++(int) {
- RepeatedFieldRefIterator tmp(*this);
- iterator_ = accessor_->AdvanceIterator(data_, iterator_);
- return tmp;
- }
- RepeatedFieldRefIterator& operator++() {
- iterator_ = accessor_->AdvanceIterator(data_, iterator_);
- return *this;
- }
- IteratorValueType operator*() const {
- return static_cast<IteratorValueType>(
- *static_cast<const AccessorValueType*>(accessor_->GetIteratorValue(
- data_, iterator_, scratch_space_.get())));
- }
- IteratorPointerType operator->() const {
- return static_cast<IteratorPointerType>(
- accessor_->GetIteratorValue(data_, iterator_, scratch_space_.get()));
- }
- bool operator!=(const RepeatedFieldRefIterator& other) const {
- assert(data_ == other.data_);
- assert(accessor_ == other.accessor_);
- return !accessor_->EqualsIterator(data_, iterator_, other.iterator_);
- }
- bool operator==(const RepeatedFieldRefIterator& other) const {
- return !this->operator!=(other);
- }
-
- RepeatedFieldRefIterator(const RepeatedFieldRefIterator& other)
- : data_(other.data_),
- accessor_(other.accessor_),
- iterator_(accessor_->CopyIterator(data_, other.iterator_)) {}
- RepeatedFieldRefIterator& operator=(const RepeatedFieldRefIterator& other) {
- if (this != &other) {
- accessor_->DeleteIterator(data_, iterator_);
- data_ = other.data_;
- accessor_ = other.accessor_;
- iterator_ = accessor_->CopyIterator(data_, other.iterator_);
- }
- return *this;
- }
-
- protected:
- const void* data_;
- const RepeatedFieldAccessor* accessor_;
- void* iterator_;
- std::unique_ptr<AccessorValueType> scratch_space_;
-};
-
-// TypeTraits that maps the type parameter T of RepeatedFieldRef or
-// MutableRepeatedFieldRef to corresponding iterator type,
-// RepeatedFieldAccessor type, etc.
-template <typename T>
-struct PrimitiveTraits {
- static constexpr bool is_primitive = false;
-};
-#define DEFINE_PRIMITIVE(TYPE, type) \
- template <> \
- struct PrimitiveTraits<type> { \
- static const bool is_primitive = true; \
- static const FieldDescriptor::CppType cpp_type = \
- FieldDescriptor::CPPTYPE_##TYPE; \
- };
-DEFINE_PRIMITIVE(INT32, int32_t)
-DEFINE_PRIMITIVE(UINT32, uint32_t)
-DEFINE_PRIMITIVE(INT64, int64_t)
-DEFINE_PRIMITIVE(UINT64, uint64_t)
-DEFINE_PRIMITIVE(FLOAT, float)
-DEFINE_PRIMITIVE(DOUBLE, double)
-DEFINE_PRIMITIVE(BOOL, bool)
-#undef DEFINE_PRIMITIVE
-
-template <typename T>
-struct RefTypeTraits<
- T, typename std::enable_if<PrimitiveTraits<T>::is_primitive>::type> {
- typedef RepeatedFieldRefIterator<T> iterator;
- typedef RepeatedFieldAccessor AccessorType;
- typedef T AccessorValueType;
- typedef T IteratorValueType;
- typedef T* IteratorPointerType;
- static constexpr FieldDescriptor::CppType cpp_type =
- PrimitiveTraits<T>::cpp_type;
- static const Descriptor* GetMessageFieldDescriptor() { return nullptr; }
-};
-
-template <typename T>
-struct RefTypeTraits<
- T, typename std::enable_if<is_proto_enum<T>::value>::type> {
- typedef RepeatedFieldRefIterator<T> iterator;
- typedef RepeatedFieldAccessor AccessorType;
- // We use int32_t for repeated enums in RepeatedFieldAccessor.
- typedef int32_t AccessorValueType;
- typedef T IteratorValueType;
- typedef int32_t* IteratorPointerType;
- static constexpr FieldDescriptor::CppType cpp_type =
- FieldDescriptor::CPPTYPE_ENUM;
- static const Descriptor* GetMessageFieldDescriptor() { return nullptr; }
-};
-
-template <typename T>
-struct RefTypeTraits<
- T, typename std::enable_if<std::is_same<std::string, T>::value>::type> {
- typedef RepeatedFieldRefIterator<T> iterator;
- typedef RepeatedFieldAccessor AccessorType;
- typedef std::string AccessorValueType;
- typedef const std::string IteratorValueType;
- typedef const std::string* IteratorPointerType;
- static constexpr FieldDescriptor::CppType cpp_type =
- FieldDescriptor::CPPTYPE_STRING;
- static const Descriptor* GetMessageFieldDescriptor() { return nullptr; }
-};
-
-template <typename T>
-struct MessageDescriptorGetter {
- static const Descriptor* get() {
- return T::default_instance().GetDescriptor();
- }
-};
-template <>
-struct MessageDescriptorGetter<Message> {
- static const Descriptor* get() { return nullptr; }
-};
-
-template <typename T>
-struct RefTypeTraits<
- T, typename std::enable_if<std::is_base_of<Message, T>::value>::type> {
- typedef RepeatedFieldRefIterator<T> iterator;
- typedef RepeatedFieldAccessor AccessorType;
- typedef Message AccessorValueType;
- typedef const T& IteratorValueType;
- typedef const T* IteratorPointerType;
- static constexpr FieldDescriptor::CppType cpp_type =
- FieldDescriptor::CPPTYPE_MESSAGE;
- static const Descriptor* GetMessageFieldDescriptor() {
- return MessageDescriptorGetter<T>::get();
- }
-};
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_REFLECTION_H__
diff --git a/include/google/protobuf/reflection_ops.h b/include/google/protobuf/reflection_ops.h
deleted file mode 100644
index 0a45702f9b..0000000000
--- a/include/google/protobuf/reflection_ops.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-
-#ifndef GOOGLE_PROTOBUF_REFLECTION_OPS_H__
-#define GOOGLE_PROTOBUF_REFLECTION_OPS_H__
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/message.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Basic operations that can be performed using reflection.
-// These can be used as a cheap way to implement the corresponding
-// methods of the Message interface, though they are likely to be
-// slower than implementations tailored for the specific message type.
-//
-// This class should stay limited to operations needed to implement
-// the Message interface.
-//
-// This class is really a namespace that contains only static methods.
-class PROTOBUF_EXPORT ReflectionOps {
- public:
- static void Copy(const Message& from, Message* to);
- static void Merge(const Message& from, Message* to);
- static void Clear(Message* message);
- static bool IsInitialized(const Message& message);
- static bool IsInitialized(const Message& message, bool check_fields,
- bool check_descendants);
- static void DiscardUnknownFields(Message* message);
-
- // Finds all unset required fields in the message and adds their full
- // paths (e.g. "foo.bar[5].baz") to *names. "prefix" will be attached to
- // the front of each name.
- static void FindInitializationErrors(const Message& message,
- const std::string& prefix,
- std::vector<std::string>* errors);
-
- private:
- // All methods are static. No need to construct.
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ReflectionOps);
-};
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_REFLECTION_OPS_H__
diff --git a/include/google/protobuf/repeated_field.h b/include/google/protobuf/repeated_field.h
deleted file mode 100644
index 3fb734e5cb..0000000000
--- a/include/google/protobuf/repeated_field.h
+++ /dev/null
@@ -1,1219 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// RepeatedField and RepeatedPtrField are used by generated protocol message
-// classes to manipulate repeated fields. These classes are very similar to
-// STL's vector, but include a number of optimizations found to be useful
-// specifically in the case of Protocol Buffers. RepeatedPtrField is
-// particularly different from STL vector as it manages ownership of the
-// pointers that it contains.
-//
-// This header covers RepeatedField.
-
-#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__
-#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__
-
-
-#include <algorithm>
-#include <iterator>
-#include <limits>
-#include <string>
-#include <type_traits>
-#include <utility>
-
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/repeated_ptr_field.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-class Message;
-
-namespace internal {
-
-template <typename T, int kRepHeaderSize>
-constexpr int RepeatedFieldLowerClampLimit() {
- // The header is padded to be at least `sizeof(T)` when it would be smaller
- // otherwise.
- static_assert(sizeof(T) <= kRepHeaderSize, "");
- // We want to pad the minimum size to be a power of two bytes, including the
- // header.
- // The first allocation is kRepHeaderSize bytes worth of elements for a total
- // of 2*kRepHeaderSize bytes.
- // For an 8-byte header, we allocate 8 bool, 2 ints, or 1 int64.
- return kRepHeaderSize / sizeof(T);
-}
-
-// kRepeatedFieldUpperClampLimit is the lowest signed integer value that
-// overflows when multiplied by 2 (which is undefined behavior). Sizes above
-// this will clamp to the maximum int value instead of following exponential
-// growth when growing a repeated field.
-constexpr int kRepeatedFieldUpperClampLimit =
- (std::numeric_limits<int>::max() / 2) + 1;
-
-template <typename Iter>
-inline int CalculateReserve(Iter begin, Iter end, std::forward_iterator_tag) {
- return static_cast<int>(std::distance(begin, end));
-}
-
-template <typename Iter>
-inline int CalculateReserve(Iter /*begin*/, Iter /*end*/,
- std::input_iterator_tag /*unused*/) {
- return -1;
-}
-
-template <typename Iter>
-inline int CalculateReserve(Iter begin, Iter end) {
- typedef typename std::iterator_traits<Iter>::iterator_category Category;
- return CalculateReserve(begin, end, Category());
-}
-
-// Swaps two blocks of memory of size sizeof(T).
-template <typename T>
-inline void SwapBlock(char* p, char* q) {
- T tmp;
- memcpy(&tmp, p, sizeof(T));
- memcpy(p, q, sizeof(T));
- memcpy(q, &tmp, sizeof(T));
-}
-
-// Swaps two blocks of memory of size kSize:
-// template <int kSize> void memswap(char* p, char* q);
-template <int kSize>
-inline typename std::enable_if<(kSize == 0), void>::type memswap(char*, char*) {
-}
-
-#define PROTO_MEMSWAP_DEF_SIZE(reg_type, max_size) \
- template <int kSize> \
- typename std::enable_if<(kSize >= sizeof(reg_type) && kSize < (max_size)), \
- void>::type \
- memswap(char* p, char* q) { \
- SwapBlock<reg_type>(p, q); \
- memswap<kSize - sizeof(reg_type)>(p + sizeof(reg_type), \
- q + sizeof(reg_type)); \
- }
-
-PROTO_MEMSWAP_DEF_SIZE(uint8_t, 2)
-PROTO_MEMSWAP_DEF_SIZE(uint16_t, 4)
-PROTO_MEMSWAP_DEF_SIZE(uint32_t, 8)
-
-#ifdef __SIZEOF_INT128__
-PROTO_MEMSWAP_DEF_SIZE(uint64_t, 16)
-PROTO_MEMSWAP_DEF_SIZE(__uint128_t, (1u << 31))
-#else
-PROTO_MEMSWAP_DEF_SIZE(uint64_t, (1u << 31))
-#endif
-
-#undef PROTO_MEMSWAP_DEF_SIZE
-
-template <typename Element>
-class RepeatedIterator;
-
-} // namespace internal
-
-// RepeatedField is used to represent repeated fields of a primitive type (in
-// other words, everything except strings and nested Messages). Most users will
-// not ever use a RepeatedField directly; they will use the get-by-index,
-// set-by-index, and add accessors that are generated for all repeated fields.
-template <typename Element>
-class RepeatedField final {
- static_assert(
- alignof(Arena) >= alignof(Element),
- "We only support types that have an alignment smaller than Arena");
-
- public:
- constexpr RepeatedField();
- explicit RepeatedField(Arena* arena);
-
- RepeatedField(const RepeatedField& other);
-
- template <typename Iter,
- typename = typename std::enable_if<std::is_constructible<
- Element, decltype(*std::declval<Iter>())>::value>::type>
- RepeatedField(Iter begin, Iter end);
-
- ~RepeatedField();
-
- RepeatedField& operator=(const RepeatedField& other);
-
- RepeatedField(RepeatedField&& other) noexcept;
- RepeatedField& operator=(RepeatedField&& other) noexcept;
-
- bool empty() const;
- int size() const;
-
- const Element& Get(int index) const;
- Element* Mutable(int index);
-
- const Element& operator[](int index) const { return Get(index); }
- Element& operator[](int index) { return *Mutable(index); }
-
- const Element& at(int index) const;
- Element& at(int index);
-
- void Set(int index, const Element& value);
- void Add(const Element& value);
- // Appends a new element and returns a pointer to it.
- // The new element is uninitialized if |Element| is a POD type.
- Element* Add();
- // Appends elements in the range [begin, end) after reserving
- // the appropriate number of elements.
- template <typename Iter>
- void Add(Iter begin, Iter end);
-
- // Removes the last element in the array.
- void RemoveLast();
-
- // Extracts elements with indices in "[start .. start+num-1]".
- // Copies them into "elements[0 .. num-1]" if "elements" is not nullptr.
- // Caution: also moves elements with indices [start+num ..].
- // Calling this routine inside a loop can cause quadratic behavior.
- void ExtractSubrange(int start, int num, Element* elements);
-
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear();
- void MergeFrom(const RepeatedField& other);
- PROTOBUF_ATTRIBUTE_REINITIALIZES void CopyFrom(const RepeatedField& other);
-
- // Replaces the contents with RepeatedField(begin, end).
- template <typename Iter>
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Assign(Iter begin, Iter end);
-
- // Reserves space to expand the field to at least the given size. If the
- // array is grown, it will always be at least doubled in size.
- void Reserve(int new_size);
-
- // Resizes the RepeatedField to a new, smaller size. This is O(1).
- void Truncate(int new_size);
-
- void AddAlreadyReserved(const Element& value);
- // Appends a new element and return a pointer to it.
- // The new element is uninitialized if |Element| is a POD type.
- // Should be called only if Capacity() > Size().
- Element* AddAlreadyReserved();
- Element* AddNAlreadyReserved(int elements);
- int Capacity() const;
-
- // Like STL resize. Uses value to fill appended elements.
- // Like Truncate() if new_size <= size(), otherwise this is
- // O(new_size - size()).
- void Resize(int new_size, const Element& value);
-
- // Gets the underlying array. This pointer is possibly invalidated by
- // any add or remove operation.
- Element* mutable_data();
- const Element* data() const;
-
- // Swaps entire contents with "other". If they are separate arenas then,
- // copies data between each other.
- void Swap(RepeatedField* other);
-
- // Swaps entire contents with "other". Should be called only if the caller can
- // guarantee that both repeated fields are on the same arena or are on the
- // heap. Swapping between different arenas is disallowed and caught by a
- // GOOGLE_DCHECK (see API docs for details).
- void UnsafeArenaSwap(RepeatedField* other);
-
- // Swaps two elements.
- void SwapElements(int index1, int index2);
-
- // STL-like iterator support
- typedef internal::RepeatedIterator<Element> iterator;
- typedef internal::RepeatedIterator<const Element> const_iterator;
- typedef Element value_type;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef int size_type;
- typedef ptrdiff_t difference_type;
-
- iterator begin();
- const_iterator begin() const;
- const_iterator cbegin() const;
- iterator end();
- const_iterator end() const;
- const_iterator cend() const;
-
- // Reverse iterator support
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- // Returns the number of bytes used by the repeated field, excluding
- // sizeof(*this)
- size_t SpaceUsedExcludingSelfLong() const;
-
- int SpaceUsedExcludingSelf() const {
- return internal::ToIntSize(SpaceUsedExcludingSelfLong());
- }
-
- // Removes the element referenced by position.
- //
- // Returns an iterator to the element immediately following the removed
- // element.
- //
- // Invalidates all iterators at or after the removed element, including end().
- iterator erase(const_iterator position);
-
- // Removes the elements in the range [first, last).
- //
- // Returns an iterator to the element immediately following the removed range.
- //
- // Invalidates all iterators at or after the removed range, including end().
- iterator erase(const_iterator first, const_iterator last);
-
- // Gets the Arena on which this RepeatedField stores its elements.
- inline Arena* GetArena() const {
- return GetOwningArena();
- }
-
- // For internal use only.
- //
- // This is public due to it being called by generated code.
- inline void InternalSwap(RepeatedField* other);
-
- private:
- template <typename T> friend class Arena::InternalHelper;
-
- // Gets the Arena on which this RepeatedField stores its elements.
- inline Arena* GetOwningArena() const {
- return (total_size_ == 0) ? static_cast<Arena*>(arena_or_elements_)
- : rep()->arena;
- }
-
- static constexpr int kInitialSize = 0;
- // A note on the representation here (see also comment below for
- // RepeatedPtrFieldBase's struct Rep):
- //
- // We maintain the same sizeof(RepeatedField) as before we added arena support
- // so that we do not degrade performance by bloating memory usage. Directly
- // adding an arena_ element to RepeatedField is quite costly. By using
- // indirection in this way, we keep the same size when the RepeatedField is
- // empty (common case), and add only an 8-byte header to the elements array
- // when non-empty. We make sure to place the size fields directly in the
- // RepeatedField class to avoid costly cache misses due to the indirection.
- int current_size_;
- int total_size_;
- // Pad the Rep after arena allow for power-of-two byte sizes when
- // sizeof(Element) > sizeof(Arena*). eg for 16-byte objects.
- static PROTOBUF_CONSTEXPR const size_t kRepHeaderSize =
- sizeof(Arena*) < sizeof(Element) ? sizeof(Element) : sizeof(Arena*);
- struct Rep {
- Arena* arena;
- Element* elements() {
- return reinterpret_cast<Element*>(reinterpret_cast<char*>(this) +
- kRepHeaderSize);
- }
- };
-
- // If total_size_ == 0 this points to an Arena otherwise it points to the
- // elements member of a Rep struct. Using this invariant allows the storage of
- // the arena pointer without an extra allocation in the constructor.
- void* arena_or_elements_;
-
- // Returns a pointer to elements array.
- // pre-condition: the array must have been allocated.
- Element* elements() const {
- GOOGLE_DCHECK_GT(total_size_, 0);
- // Because of above pre-condition this cast is safe.
- return unsafe_elements();
- }
-
- // Returns a pointer to elements array if it exists; otherwise either null or
- // an invalid pointer is returned. This only happens for empty repeated
- // fields, where you can't dereference this pointer anyway (it's empty).
- Element* unsafe_elements() const {
- return static_cast<Element*>(arena_or_elements_);
- }
-
- // Returns a pointer to the Rep struct.
- // pre-condition: the Rep must have been allocated, ie elements() is safe.
- Rep* rep() const {
- return reinterpret_cast<Rep*>(reinterpret_cast<char*>(elements()) -
- kRepHeaderSize);
- }
-
- friend class Arena;
- typedef void InternalArenaConstructable_;
-
- // Moves the contents of |from| into |to|, possibly clobbering |from| in the
- // process. For primitive types this is just a memcpy(), but it could be
- // specialized for non-primitive types to, say, swap each element instead.
- void MoveArray(Element* to, Element* from, int size);
-
- // Copies the elements of |from| into |to|.
- void CopyArray(Element* to, const Element* from, int size);
-
- // Internal helper to delete all elements and deallocate the storage.
- void InternalDeallocate(Rep* rep, int size, bool in_destructor) {
- if (rep != nullptr) {
- Element* e = &rep->elements()[0];
- if (!std::is_trivial<Element>::value) {
- Element* limit = &rep->elements()[size];
- for (; e < limit; e++) {
- e->~Element();
- }
- }
- const size_t bytes = size * sizeof(*e) + kRepHeaderSize;
- if (rep->arena == nullptr) {
- internal::SizedDelete(rep, bytes);
- } else if (!in_destructor) {
- // If we are in the destructor, we might be being destroyed as part of
- // the arena teardown. We can't try and return blocks to the arena then.
- rep->arena->ReturnArrayMemory(rep, bytes);
- }
- }
- }
-
- // This class is a performance wrapper around RepeatedField::Add(const T&)
- // function. In general unless a RepeatedField is a local stack variable LLVM
- // has a hard time optimizing Add. The machine code tends to be
- // loop:
- // mov %size, dword ptr [%repeated_field] // load
- // cmp %size, dword ptr [%repeated_field + 4]
- // jae fallback
- // mov %buffer, qword ptr [%repeated_field + 8]
- // mov dword [%buffer + %size * 4], %value
- // inc %size // increment
- // mov dword ptr [%repeated_field], %size // store
- // jmp loop
- //
- // This puts a load/store in each iteration of the important loop variable
- // size. It's a pretty bad compile that happens even in simple cases, but
- // largely the presence of the fallback path disturbs the compilers mem-to-reg
- // analysis.
- //
- // This class takes ownership of a repeated field for the duration of its
- // lifetime. The repeated field should not be accessed during this time, ie.
- // only access through this class is allowed. This class should always be a
- // function local stack variable. Intended use
- //
- // void AddSequence(const int* begin, const int* end, RepeatedField<int>* out)
- // {
- // RepeatedFieldAdder<int> adder(out); // Take ownership of out
- // for (auto it = begin; it != end; ++it) {
- // adder.Add(*it);
- // }
- // }
- //
- // Typically, due to the fact that adder is a local stack variable, the
- // compiler will be successful in mem-to-reg transformation and the machine
- // code will be loop: cmp %size, %capacity jae fallback mov dword ptr [%buffer
- // + %size * 4], %val inc %size jmp loop
- //
- // The first version executes at 7 cycles per iteration while the second
- // version executes at only 1 or 2 cycles.
- template <int = 0, bool = std::is_trivial<Element>::value>
- class FastAdderImpl {
- public:
- explicit FastAdderImpl(RepeatedField* rf) : repeated_field_(rf) {
- index_ = repeated_field_->current_size_;
- capacity_ = repeated_field_->total_size_;
- buffer_ = repeated_field_->unsafe_elements();
- }
- ~FastAdderImpl() { repeated_field_->current_size_ = index_; }
-
- void Add(Element val) {
- if (index_ == capacity_) {
- repeated_field_->current_size_ = index_;
- repeated_field_->Reserve(index_ + 1);
- capacity_ = repeated_field_->total_size_;
- buffer_ = repeated_field_->unsafe_elements();
- }
- buffer_[index_++] = val;
- }
-
- private:
- RepeatedField* repeated_field_;
- int index_;
- int capacity_;
- Element* buffer_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FastAdderImpl);
- };
-
- // FastAdder is a wrapper for adding fields. The specialization above handles
- // POD types more efficiently than RepeatedField.
- template <int I>
- class FastAdderImpl<I, false> {
- public:
- explicit FastAdderImpl(RepeatedField* rf) : repeated_field_(rf) {}
- void Add(const Element& val) { repeated_field_->Add(val); }
-
- private:
- RepeatedField* repeated_field_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FastAdderImpl);
- };
-
- using FastAdder = FastAdderImpl<>;
-
- friend class TestRepeatedFieldHelper;
- friend class ::google::protobuf::internal::ParseContext;
-};
-
-namespace internal {
-
-// This is a helper template to copy an array of elements efficiently when they
-// have a trivial copy constructor, and correctly otherwise. This really
-// shouldn't be necessary, but our compiler doesn't optimize std::copy very
-// effectively.
-template <typename Element,
- bool HasTrivialCopy = std::is_trivial<Element>::value>
-struct ElementCopier {
- void operator()(Element* to, const Element* from, int array_size);
-};
-
-} // namespace internal
-
-// implementation ====================================================
-
-template <typename Element>
-constexpr RepeatedField<Element>::RepeatedField()
- : current_size_(0), total_size_(0), arena_or_elements_(nullptr) {}
-
-template <typename Element>
-inline RepeatedField<Element>::RepeatedField(Arena* arena)
- : current_size_(0), total_size_(0), arena_or_elements_(arena) {}
-
-template <typename Element>
-inline RepeatedField<Element>::RepeatedField(const RepeatedField& other)
- : current_size_(0), total_size_(0), arena_or_elements_(nullptr) {
- if (other.current_size_ != 0) {
- Reserve(other.size());
- AddNAlreadyReserved(other.size());
- CopyArray(Mutable(0), &other.Get(0), other.size());
- }
-}
-
-template <typename Element>
-template <typename Iter, typename>
-RepeatedField<Element>::RepeatedField(Iter begin, Iter end)
- : current_size_(0), total_size_(0), arena_or_elements_(nullptr) {
- Add(begin, end);
-}
-
-template <typename Element>
-RepeatedField<Element>::~RepeatedField() {
-#ifndef NDEBUG
- // Try to trigger segfault / asan failure in non-opt builds if arena_
- // lifetime has ended before the destructor.
- auto arena = GetOwningArena();
- if (arena) (void)arena->SpaceAllocated();
-#endif
- if (total_size_ > 0) {
- InternalDeallocate(rep(), total_size_, true);
- }
-}
-
-template <typename Element>
-inline RepeatedField<Element>& RepeatedField<Element>::operator=(
- const RepeatedField& other) {
- if (this != &other) CopyFrom(other);
- return *this;
-}
-
-template <typename Element>
-inline RepeatedField<Element>::RepeatedField(RepeatedField&& other) noexcept
- : RepeatedField() {
-#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- CopyFrom(other);
-#else // PROTOBUF_FORCE_COPY_IN_MOVE
- // We don't just call Swap(&other) here because it would perform 3 copies if
- // other is on an arena. This field can't be on an arena because arena
- // construction always uses the Arena* accepting constructor.
- if (other.GetOwningArena()) {
- CopyFrom(other);
- } else {
- InternalSwap(&other);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_MOVE
-}
-
-template <typename Element>
-inline RepeatedField<Element>& RepeatedField<Element>::operator=(
- RepeatedField&& other) noexcept {
- // We don't just call Swap(&other) here because it would perform 3 copies if
- // the two fields are on different arenas.
- if (this != &other) {
- if (GetOwningArena() != other.GetOwningArena()
-#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- || GetOwningArena() == nullptr
-#endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- CopyFrom(other);
- } else {
- InternalSwap(&other);
- }
- }
- return *this;
-}
-
-template <typename Element>
-inline bool RepeatedField<Element>::empty() const {
- return current_size_ == 0;
-}
-
-template <typename Element>
-inline int RepeatedField<Element>::size() const {
- return current_size_;
-}
-
-template <typename Element>
-inline int RepeatedField<Element>::Capacity() const {
- return total_size_;
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::AddAlreadyReserved(const Element& value) {
- GOOGLE_DCHECK_LT(current_size_, total_size_);
- elements()[current_size_++] = value;
-}
-
-template <typename Element>
-inline Element* RepeatedField<Element>::AddAlreadyReserved() {
- GOOGLE_DCHECK_LT(current_size_, total_size_);
- return &elements()[current_size_++];
-}
-
-template <typename Element>
-inline Element* RepeatedField<Element>::AddNAlreadyReserved(int elements) {
- GOOGLE_DCHECK_GE(total_size_ - current_size_, elements)
- << total_size_ << ", " << current_size_;
- // Warning: sometimes people call this when elements == 0 and
- // total_size_ == 0. In this case the return pointer points to a zero size
- // array (n == 0). Hence we can just use unsafe_elements(), because the user
- // cannot dereference the pointer anyway.
- Element* ret = unsafe_elements() + current_size_;
- current_size_ += elements;
- return ret;
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::Resize(int new_size, const Element& value) {
- GOOGLE_DCHECK_GE(new_size, 0);
- if (new_size > current_size_) {
- Reserve(new_size);
- std::fill(&elements()[current_size_], &elements()[new_size], value);
- }
- current_size_ = new_size;
-}
-
-template <typename Element>
-inline const Element& RepeatedField<Element>::Get(int index) const {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- return elements()[index];
-}
-
-template <typename Element>
-inline const Element& RepeatedField<Element>::at(int index) const {
- GOOGLE_CHECK_GE(index, 0);
- GOOGLE_CHECK_LT(index, current_size_);
- return elements()[index];
-}
-
-template <typename Element>
-inline Element& RepeatedField<Element>::at(int index) {
- GOOGLE_CHECK_GE(index, 0);
- GOOGLE_CHECK_LT(index, current_size_);
- return elements()[index];
-}
-
-template <typename Element>
-inline Element* RepeatedField<Element>::Mutable(int index) {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- return &elements()[index];
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::Set(int index, const Element& value) {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- elements()[index] = value;
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::Add(const Element& value) {
- uint32_t size = current_size_;
- if (static_cast<int>(size) == total_size_) {
- // value could reference an element of the array. Reserving new space will
- // invalidate the reference. So we must make a copy first.
- auto tmp = value;
- Reserve(total_size_ + 1);
- elements()[size] = std::move(tmp);
- } else {
- elements()[size] = value;
- }
- current_size_ = size + 1;
-}
-
-template <typename Element>
-inline Element* RepeatedField<Element>::Add() {
- uint32_t size = current_size_;
- if (static_cast<int>(size) == total_size_) Reserve(total_size_ + 1);
- auto ptr = &elements()[size];
- current_size_ = size + 1;
- return ptr;
-}
-
-template <typename Element>
-template <typename Iter>
-inline void RepeatedField<Element>::Add(Iter begin, Iter end) {
- int reserve = internal::CalculateReserve(begin, end);
- if (reserve != -1) {
- if (reserve == 0) {
- return;
- }
-
- Reserve(reserve + size());
- // TODO(ckennelly): The compiler loses track of the buffer freshly
- // allocated by Reserve() by the time we call elements, so it cannot
- // guarantee that elements does not alias [begin(), end()).
- //
- // If restrict is available, annotating the pointer obtained from elements()
- // causes this to lower to memcpy instead of memmove.
- std::copy(begin, end, elements() + size());
- current_size_ = reserve + size();
- } else {
- FastAdder fast_adder(this);
- for (; begin != end; ++begin) fast_adder.Add(*begin);
- }
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::RemoveLast() {
- GOOGLE_DCHECK_GT(current_size_, 0);
- current_size_--;
-}
-
-template <typename Element>
-void RepeatedField<Element>::ExtractSubrange(int start, int num,
- Element* elements) {
- GOOGLE_DCHECK_GE(start, 0);
- GOOGLE_DCHECK_GE(num, 0);
- GOOGLE_DCHECK_LE(start + num, this->current_size_);
-
- // Save the values of the removed elements if requested.
- if (elements != nullptr) {
- for (int i = 0; i < num; ++i) elements[i] = this->Get(i + start);
- }
-
- // Slide remaining elements down to fill the gap.
- if (num > 0) {
- for (int i = start + num; i < this->current_size_; ++i)
- this->Set(i - num, this->Get(i));
- this->Truncate(this->current_size_ - num);
- }
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::Clear() {
- current_size_ = 0;
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::MergeFrom(const RepeatedField& other) {
- GOOGLE_DCHECK_NE(&other, this);
- if (other.current_size_ != 0) {
- int existing_size = size();
- Reserve(existing_size + other.size());
- AddNAlreadyReserved(other.size());
- CopyArray(Mutable(existing_size), &other.Get(0), other.size());
- }
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::CopyFrom(const RepeatedField& other) {
- if (&other == this) return;
- Clear();
- MergeFrom(other);
-}
-
-template <typename Element>
-template <typename Iter>
-inline void RepeatedField<Element>::Assign(Iter begin, Iter end) {
- Clear();
- Add(begin, end);
-}
-
-template <typename Element>
-inline typename RepeatedField<Element>::iterator RepeatedField<Element>::erase(
- const_iterator position) {
- return erase(position, position + 1);
-}
-
-template <typename Element>
-inline typename RepeatedField<Element>::iterator RepeatedField<Element>::erase(
- const_iterator first, const_iterator last) {
- size_type first_offset = first - cbegin();
- if (first != last) {
- Truncate(std::copy(last, cend(), begin() + first_offset) - cbegin());
- }
- return begin() + first_offset;
-}
-
-template <typename Element>
-inline Element* RepeatedField<Element>::mutable_data() {
- return unsafe_elements();
-}
-
-template <typename Element>
-inline const Element* RepeatedField<Element>::data() const {
- return unsafe_elements();
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::InternalSwap(RepeatedField* other) {
- GOOGLE_DCHECK(this != other);
-
- // Swap all fields at once.
- static_assert(std::is_standard_layout<RepeatedField<Element>>::value,
- "offsetof() requires standard layout before c++17");
- internal::memswap<offsetof(RepeatedField, arena_or_elements_) +
- sizeof(this->arena_or_elements_) -
- offsetof(RepeatedField, current_size_)>(
- reinterpret_cast<char*>(this) + offsetof(RepeatedField, current_size_),
- reinterpret_cast<char*>(other) + offsetof(RepeatedField, current_size_));
-}
-
-template <typename Element>
-void RepeatedField<Element>::Swap(RepeatedField* other) {
- if (this == other) return;
-#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
-#else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
-#endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- RepeatedField<Element> temp(other->GetOwningArena());
- temp.MergeFrom(*this);
- CopyFrom(*other);
- other->UnsafeArenaSwap(&temp);
- }
-}
-
-template <typename Element>
-void RepeatedField<Element>::UnsafeArenaSwap(RepeatedField* other) {
- if (this == other) return;
- GOOGLE_DCHECK_EQ(GetOwningArena(), other->GetOwningArena());
- InternalSwap(other);
-}
-
-template <typename Element>
-void RepeatedField<Element>::SwapElements(int index1, int index2) {
- using std::swap; // enable ADL with fallback
- swap(elements()[index1], elements()[index2]);
-}
-
-template <typename Element>
-inline typename RepeatedField<Element>::iterator
-RepeatedField<Element>::begin() {
- return iterator(unsafe_elements());
-}
-template <typename Element>
-inline typename RepeatedField<Element>::const_iterator
-RepeatedField<Element>::begin() const {
- return const_iterator(unsafe_elements());
-}
-template <typename Element>
-inline typename RepeatedField<Element>::const_iterator
-RepeatedField<Element>::cbegin() const {
- return const_iterator(unsafe_elements());
-}
-template <typename Element>
-inline typename RepeatedField<Element>::iterator RepeatedField<Element>::end() {
- return iterator(unsafe_elements() + current_size_);
-}
-template <typename Element>
-inline typename RepeatedField<Element>::const_iterator
-RepeatedField<Element>::end() const {
- return const_iterator(unsafe_elements() + current_size_);
-}
-template <typename Element>
-inline typename RepeatedField<Element>::const_iterator
-RepeatedField<Element>::cend() const {
- return const_iterator(unsafe_elements() + current_size_);
-}
-
-template <typename Element>
-inline size_t RepeatedField<Element>::SpaceUsedExcludingSelfLong() const {
- return total_size_ > 0 ? (total_size_ * sizeof(Element) + kRepHeaderSize) : 0;
-}
-
-namespace internal {
-// Returns the new size for a reserved field based on its 'total_size' and the
-// requested 'new_size'. The result is clamped to the closed interval:
-// [internal::kMinRepeatedFieldAllocationSize,
-// std::numeric_limits<int>::max()]
-// Requires:
-// new_size > total_size &&
-// (total_size == 0 ||
-// total_size >= kRepeatedFieldLowerClampLimit)
-template <typename T, int kRepHeaderSize>
-inline int CalculateReserveSize(int total_size, int new_size) {
- constexpr int lower_limit = RepeatedFieldLowerClampLimit<T, kRepHeaderSize>();
- if (new_size < lower_limit) {
- // Clamp to smallest allowed size.
- return lower_limit;
- }
- constexpr int kMaxSizeBeforeClamp =
- (std::numeric_limits<int>::max() - kRepHeaderSize) / 2;
- if (PROTOBUF_PREDICT_FALSE(total_size > kMaxSizeBeforeClamp)) {
- return std::numeric_limits<int>::max();
- }
- // We want to double the number of bytes, not the number of elements, to try
- // to stay within power-of-two allocations.
- // The allocation has kRepHeaderSize + sizeof(T) * capacity.
- int doubled_size = 2 * total_size + kRepHeaderSize / sizeof(T);
- return std::max(doubled_size, new_size);
-}
-} // namespace internal
-
-// Avoid inlining of Reserve(): new, copy, and delete[] lead to a significant
-// amount of code bloat.
-template <typename Element>
-void RepeatedField<Element>::Reserve(int new_size) {
- if (total_size_ >= new_size) return;
- Rep* old_rep = total_size_ > 0 ? rep() : nullptr;
- Rep* new_rep;
- Arena* arena = GetOwningArena();
-
- new_size = internal::CalculateReserveSize<Element, kRepHeaderSize>(
- total_size_, new_size);
-
- GOOGLE_DCHECK_LE(
- static_cast<size_t>(new_size),
- (std::numeric_limits<size_t>::max() - kRepHeaderSize) / sizeof(Element))
- << "Requested size is too large to fit into size_t.";
- size_t bytes =
- kRepHeaderSize + sizeof(Element) * static_cast<size_t>(new_size);
- if (arena == nullptr) {
- new_rep = static_cast<Rep*>(::operator new(bytes));
- } else {
- new_rep = reinterpret_cast<Rep*>(Arena::CreateArray<char>(arena, bytes));
- }
- new_rep->arena = arena;
- int old_total_size = total_size_;
- // Already known: new_size >= internal::kMinRepeatedFieldAllocationSize
- // Maintain invariant:
- // total_size_ == 0 ||
- // total_size_ >= internal::kMinRepeatedFieldAllocationSize
- total_size_ = new_size;
- arena_or_elements_ = new_rep->elements();
- // Invoke placement-new on newly allocated elements. We shouldn't have to do
- // this, since Element is supposed to be POD, but a previous version of this
- // code allocated storage with "new Element[size]" and some code uses
- // RepeatedField with non-POD types, relying on constructor invocation. If
- // Element has a trivial constructor (e.g., int32_t), gcc (tested with -O2)
- // completely removes this loop because the loop body is empty, so this has no
- // effect unless its side-effects are required for correctness.
- // Note that we do this before MoveArray() below because Element's copy
- // assignment implementation will want an initialized instance first.
- Element* e = &elements()[0];
- Element* limit = e + total_size_;
- for (; e < limit; e++) {
- new (e) Element;
- }
- if (current_size_ > 0) {
- MoveArray(&elements()[0], old_rep->elements(), current_size_);
- }
-
- // Likewise, we need to invoke destructors on the old array.
- InternalDeallocate(old_rep, old_total_size, false);
-
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::Truncate(int new_size) {
- GOOGLE_DCHECK_LE(new_size, current_size_);
- if (current_size_ > 0) {
- current_size_ = new_size;
- }
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::MoveArray(Element* to, Element* from,
- int array_size) {
- CopyArray(to, from, array_size);
-}
-
-template <typename Element>
-inline void RepeatedField<Element>::CopyArray(Element* to, const Element* from,
- int array_size) {
- internal::ElementCopier<Element>()(to, from, array_size);
-}
-
-namespace internal {
-
-template <typename Element, bool HasTrivialCopy>
-void ElementCopier<Element, HasTrivialCopy>::operator()(Element* to,
- const Element* from,
- int array_size) {
- std::copy(from, from + array_size, to);
-}
-
-template <typename Element>
-struct ElementCopier<Element, true> {
- void operator()(Element* to, const Element* from, int array_size) {
- memcpy(to, from, static_cast<size_t>(array_size) * sizeof(Element));
- }
-};
-
-} // namespace internal
-
-
-// -------------------------------------------------------------------
-
-// Iterators and helper functions that follow the spirit of the STL
-// std::back_insert_iterator and std::back_inserter but are tailor-made
-// for RepeatedField and RepeatedPtrField. Typical usage would be:
-//
-// std::copy(some_sequence.begin(), some_sequence.end(),
-// RepeatedFieldBackInserter(proto.mutable_sequence()));
-//
-// Ported by johannes from util/gtl/proto-array-iterators.h
-
-namespace internal {
-
-// STL-like iterator implementation for RepeatedField. You should not
-// refer to this class directly; use RepeatedField<T>::iterator instead.
-//
-// Note: All of the iterator operators *must* be inlined to avoid performance
-// regressions. This is caused by the extern template declarations below (which
-// are required because of the RepeatedField extern template declarations). If
-// any of these functions aren't explicitly inlined (e.g. defined in the class),
-// the compiler isn't allowed to inline them.
-template <typename Element>
-class RepeatedIterator {
- public:
- using iterator_category = std::random_access_iterator_tag;
- // Note: remove_const is necessary for std::partial_sum, which uses value_type
- // to determine the summation variable type.
- using value_type = typename std::remove_const<Element>::type;
- using difference_type = std::ptrdiff_t;
- using pointer = Element*;
- using reference = Element&;
-
- constexpr RepeatedIterator() noexcept : it_(nullptr) {}
-
- // Allows "upcasting" from RepeatedIterator<T**> to
- // RepeatedIterator<const T*const*>.
- template <typename OtherElement,
- typename std::enable_if<std::is_convertible<
- OtherElement*, pointer>::value>::type* = nullptr>
- constexpr RepeatedIterator(
- const RepeatedIterator<OtherElement>& other) noexcept
- : it_(other.it_) {}
-
- // dereferenceable
- constexpr reference operator*() const noexcept { return *it_; }
- constexpr pointer operator->() const noexcept { return it_; }
-
- private:
- // Helper alias to hide the internal type.
- using iterator = RepeatedIterator<Element>;
-
- public:
- // {inc,dec}rementable
- iterator& operator++() noexcept {
- ++it_;
- return *this;
- }
- iterator operator++(int) noexcept { return iterator(it_++); }
- iterator& operator--() noexcept {
- --it_;
- return *this;
- }
- iterator operator--(int) noexcept { return iterator(it_--); }
-
- // equality_comparable
- friend constexpr bool operator==(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ == y.it_;
- }
- friend constexpr bool operator!=(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ != y.it_;
- }
-
- // less_than_comparable
- friend constexpr bool operator<(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ < y.it_;
- }
- friend constexpr bool operator<=(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ <= y.it_;
- }
- friend constexpr bool operator>(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ > y.it_;
- }
- friend constexpr bool operator>=(const iterator& x,
- const iterator& y) noexcept {
- return x.it_ >= y.it_;
- }
-
- // addable, subtractable
- iterator& operator+=(difference_type d) noexcept {
- it_ += d;
- return *this;
- }
- constexpr iterator operator+(difference_type d) const noexcept {
- return iterator(it_ + d);
- }
- friend constexpr iterator operator+(const difference_type d,
- iterator it) noexcept {
- return it + d;
- }
-
- iterator& operator-=(difference_type d) noexcept {
- it_ -= d;
- return *this;
- }
- iterator constexpr operator-(difference_type d) const noexcept {
- return iterator(it_ - d);
- }
-
- // indexable
- constexpr reference operator[](difference_type d) const noexcept {
- return it_[d];
- }
-
- // random access iterator
- friend constexpr difference_type operator-(iterator it1,
- iterator it2) noexcept {
- return it1.it_ - it2.it_;
- }
-
- private:
- template <typename OtherElement>
- friend class RepeatedIterator;
-
- // Allow construction from RepeatedField.
- friend class RepeatedField<value_type>;
- explicit RepeatedIterator(Element* it) noexcept : it_(it) {}
-
- // The internal iterator.
- Element* it_;
-};
-
-// A back inserter for RepeatedField objects.
-template <typename T>
-class RepeatedFieldBackInsertIterator {
- public:
- using iterator_category = std::output_iterator_tag;
- using value_type = T;
- using pointer = void;
- using reference = void;
- using difference_type = std::ptrdiff_t;
-
- explicit RepeatedFieldBackInsertIterator(
- RepeatedField<T>* const mutable_field)
- : field_(mutable_field) {}
- RepeatedFieldBackInsertIterator<T>& operator=(const T& value) {
- field_->Add(value);
- return *this;
- }
- RepeatedFieldBackInsertIterator<T>& operator*() { return *this; }
- RepeatedFieldBackInsertIterator<T>& operator++() { return *this; }
- RepeatedFieldBackInsertIterator<T>& operator++(int /* unused */) {
- return *this;
- }
-
- private:
- RepeatedField<T>* field_;
-};
-
-} // namespace internal
-
-// Provides a back insert iterator for RepeatedField instances,
-// similar to std::back_inserter().
-template <typename T>
-internal::RepeatedFieldBackInsertIterator<T> RepeatedFieldBackInserter(
- RepeatedField<T>* const mutable_field) {
- return internal::RepeatedFieldBackInsertIterator<T>(mutable_field);
-}
-
-// Extern declarations of common instantiations to reduce library bloat.
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<bool>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<int32_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<uint32_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<int64_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<uint64_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<float>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedField<double>;
-
-namespace internal {
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<bool>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
- RepeatedIterator<int32_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
- RepeatedIterator<uint32_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
- RepeatedIterator<int64_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
- RepeatedIterator<uint64_t>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<float>;
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE RepeatedIterator<double>;
-} // namespace internal
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_REPEATED_FIELD_H__
diff --git a/include/google/protobuf/repeated_ptr_field.h b/include/google/protobuf/repeated_ptr_field.h
deleted file mode 100644
index 401230bf51..0000000000
--- a/include/google/protobuf/repeated_ptr_field.h
+++ /dev/null
@@ -1,1970 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// RepeatedField and RepeatedPtrField are used by generated protocol message
-// classes to manipulate repeated fields. These classes are very similar to
-// STL's vector, but include a number of optimizations found to be useful
-// specifically in the case of Protocol Buffers. RepeatedPtrField is
-// particularly different from STL vector as it manages ownership of the
-// pointers that it contains.
-//
-// This header covers RepeatedPtrField.
-
-// IWYU pragma: private, include "net/proto2/public/repeated_field.h"
-
-#ifndef GOOGLE_PROTOBUF_REPEATED_PTR_FIELD_H__
-#define GOOGLE_PROTOBUF_REPEATED_PTR_FIELD_H__
-
-#include <utility>
-
-#ifdef _MSC_VER
-// This is required for min/max on VS2013 only.
-#include <algorithm>
-#endif
-
-#include <iterator>
-#include <limits>
-#include <string>
-#include <type_traits>
-
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/message_lite.h>
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-class Message;
-class Reflection;
-
-template <typename T>
-struct WeakRepeatedPtrField;
-
-namespace internal {
-
-class MergePartialFromCodedStreamHelper;
-class SwapFieldHelper;
-
-
-} // namespace internal
-
-namespace internal {
-template <typename It>
-class RepeatedPtrIterator;
-template <typename It, typename VoidPtr>
-class RepeatedPtrOverPtrsIterator;
-} // namespace internal
-
-namespace internal {
-
-// type-traits helper for RepeatedPtrFieldBase: we only want to invoke
-// arena-related "copy if on different arena" behavior if the necessary methods
-// exist on the contained type. In particular, we rely on MergeFrom() existing
-// as a general proxy for the fact that a copy will work, and we also provide a
-// specific override for std::string*.
-template <typename T>
-struct TypeImplementsMergeBehaviorProbeForMergeFrom {
- typedef char HasMerge;
- typedef long HasNoMerge;
-
- // We accept either of:
- // - void MergeFrom(const T& other)
- // - bool MergeFrom(const T& other)
- //
- // We mangle these names a bit to avoid compatibility issues in 'unclean'
- // include environments that may have, e.g., "#define test ..." (yes, this
- // exists).
- template <typename U, typename RetType, RetType (U::*)(const U& arg)>
- struct CheckType;
- template <typename U>
- static HasMerge Check(CheckType<U, void, &U::MergeFrom>*);
- template <typename U>
- static HasMerge Check(CheckType<U, bool, &U::MergeFrom>*);
- template <typename U>
- static HasNoMerge Check(...);
-
- // Resolves to either std::true_type or std::false_type.
- typedef std::integral_constant<bool,
- (sizeof(Check<T>(0)) == sizeof(HasMerge))>
- type;
-};
-
-template <typename T, typename = void>
-struct TypeImplementsMergeBehavior
- : TypeImplementsMergeBehaviorProbeForMergeFrom<T> {};
-
-
-template <>
-struct TypeImplementsMergeBehavior<std::string> {
- typedef std::true_type type;
-};
-
-template <typename T>
-struct IsMovable
- : std::integral_constant<bool, std::is_move_constructible<T>::value &&
- std::is_move_assignable<T>::value> {};
-
-// This is the common base class for RepeatedPtrFields. It deals only in void*
-// pointers. Users should not use this interface directly.
-//
-// The methods of this interface correspond to the methods of RepeatedPtrField,
-// but may have a template argument called TypeHandler. Its signature is:
-// class TypeHandler {
-// public:
-// typedef MyType Type;
-// static Type* New();
-// static Type* NewFromPrototype(const Type* prototype,
-// Arena* arena);
-// static void Delete(Type*);
-// static void Clear(Type*);
-// static void Merge(const Type& from, Type* to);
-//
-// // Only needs to be implemented if SpaceUsedExcludingSelf() is called.
-// static int SpaceUsedLong(const Type&);
-// };
-class PROTOBUF_EXPORT RepeatedPtrFieldBase {
- protected:
- constexpr RepeatedPtrFieldBase()
- : arena_(nullptr), current_size_(0), total_size_(0), rep_(nullptr) {}
- explicit RepeatedPtrFieldBase(Arena* arena)
- : arena_(arena), current_size_(0), total_size_(0), rep_(nullptr) {}
-
- RepeatedPtrFieldBase(const RepeatedPtrFieldBase&) = delete;
- RepeatedPtrFieldBase& operator=(const RepeatedPtrFieldBase&) = delete;
-
- ~RepeatedPtrFieldBase() {
-#ifndef NDEBUG
- // Try to trigger segfault / asan failure in non-opt builds. If arena_
- // lifetime has ended before the destructor.
- if (arena_) (void)arena_->SpaceAllocated();
-#endif
- }
-
- bool empty() const { return current_size_ == 0; }
- int size() const { return current_size_; }
- int Capacity() const { return total_size_; }
-
- template <typename TypeHandler>
- const typename TypeHandler::Type& at(int index) const {
- GOOGLE_CHECK_GE(index, 0);
- GOOGLE_CHECK_LT(index, current_size_);
- return *cast<TypeHandler>(rep_->elements[index]);
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type& at(int index) {
- GOOGLE_CHECK_GE(index, 0);
- GOOGLE_CHECK_LT(index, current_size_);
- return *cast<TypeHandler>(rep_->elements[index]);
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type* Mutable(int index) {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- return cast<TypeHandler>(rep_->elements[index]);
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type* Add(
- const typename TypeHandler::Type* prototype = nullptr) {
- if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
- return cast<TypeHandler>(rep_->elements[current_size_++]);
- }
- typename TypeHandler::Type* result =
- TypeHandler::NewFromPrototype(prototype, arena_);
- return reinterpret_cast<typename TypeHandler::Type*>(
- AddOutOfLineHelper(result));
- }
-
- template <
- typename TypeHandler,
- typename std::enable_if<TypeHandler::Movable::value>::type* = nullptr>
- inline void Add(typename TypeHandler::Type&& value) {
- if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
- *cast<TypeHandler>(rep_->elements[current_size_++]) = std::move(value);
- return;
- }
- if (!rep_ || rep_->allocated_size == total_size_) {
- Reserve(total_size_ + 1);
- }
- ++rep_->allocated_size;
- typename TypeHandler::Type* result =
- TypeHandler::New(arena_, std::move(value));
- rep_->elements[current_size_++] = result;
- }
-
- template <typename TypeHandler>
- void Delete(int index) {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- TypeHandler::Delete(cast<TypeHandler>(rep_->elements[index]), arena_);
- }
-
- // Must be called from destructor.
- template <typename TypeHandler>
- void Destroy() {
- if (rep_ != nullptr && arena_ == nullptr) {
- int n = rep_->allocated_size;
- void* const* elements = rep_->elements;
- for (int i = 0; i < n; i++) {
- TypeHandler::Delete(cast<TypeHandler>(elements[i]), nullptr);
- }
- const size_t size = total_size_ * sizeof(elements[0]) + kRepHeaderSize;
- internal::SizedDelete(rep_, size);
- }
- rep_ = nullptr;
- }
-
- bool NeedsDestroy() const { return rep_ != nullptr && arena_ == nullptr; }
- void DestroyProtos(); // implemented in the cc file
-
- public:
- // The next few methods are public so that they can be called from generated
- // code when implicit weak fields are used, but they should never be called by
- // application code.
-
- template <typename TypeHandler>
- const typename TypeHandler::Type& Get(int index) const {
- GOOGLE_DCHECK_GE(index, 0);
- GOOGLE_DCHECK_LT(index, current_size_);
- return *cast<TypeHandler>(rep_->elements[index]);
- }
-
- // Creates and adds an element using the given prototype, without introducing
- // a link-time dependency on the concrete message type. This method is used to
- // implement implicit weak fields. The prototype may be nullptr, in which case
- // an ImplicitWeakMessage will be used as a placeholder.
- MessageLite* AddWeak(const MessageLite* prototype);
-
- template <typename TypeHandler>
- void Clear() {
- const int n = current_size_;
- GOOGLE_DCHECK_GE(n, 0);
- if (n > 0) {
- void* const* elements = rep_->elements;
- int i = 0;
- do {
- TypeHandler::Clear(cast<TypeHandler>(elements[i++]));
- } while (i < n);
- current_size_ = 0;
- }
- }
-
- template <typename TypeHandler>
- void MergeFrom(const RepeatedPtrFieldBase& other) {
- // To avoid unnecessary code duplication and reduce binary size, we use a
- // layered approach to implementing MergeFrom(). The toplevel method is
- // templated, so we get a small thunk per concrete message type in the
- // binary. This calls a shared implementation with most of the logic,
- // passing a function pointer to another type-specific piece of code that
- // calls the object-allocate and merge handlers.
- GOOGLE_DCHECK_NE(&other, this);
- if (other.current_size_ == 0) return;
- MergeFromInternal(other,
- &RepeatedPtrFieldBase::MergeFromInnerLoop<TypeHandler>);
- }
-
- inline void InternalSwap(RepeatedPtrFieldBase* rhs) {
- GOOGLE_DCHECK(this != rhs);
-
- // Swap all fields at once.
- auto temp = std::make_tuple(rhs->arena_, rhs->current_size_,
- rhs->total_size_, rhs->rep_);
- std::tie(rhs->arena_, rhs->current_size_, rhs->total_size_, rhs->rep_) =
- std::make_tuple(arena_, current_size_, total_size_, rep_);
- std::tie(arena_, current_size_, total_size_, rep_) = temp;
- }
-
- protected:
- template <typename TypeHandler>
- void RemoveLast() {
- GOOGLE_DCHECK_GT(current_size_, 0);
- TypeHandler::Clear(cast<TypeHandler>(rep_->elements[--current_size_]));
- }
-
- template <typename TypeHandler>
- void CopyFrom(const RepeatedPtrFieldBase& other) {
- if (&other == this) return;
- RepeatedPtrFieldBase::Clear<TypeHandler>();
- RepeatedPtrFieldBase::MergeFrom<TypeHandler>(other);
- }
-
- void CloseGap(int start, int num); // implemented in the cc file
-
- void Reserve(int new_size); // implemented in the cc file
-
- template <typename TypeHandler>
- static inline typename TypeHandler::Type* copy(
- typename TypeHandler::Type* value) {
- auto* new_value = TypeHandler::NewFromPrototype(value, nullptr);
- TypeHandler::Merge(*value, new_value);
- return new_value;
- }
-
- // Used for constructing iterators.
- void* const* raw_data() const { return rep_ ? rep_->elements : nullptr; }
- void** raw_mutable_data() const {
- return rep_ ? const_cast<void**>(rep_->elements) : nullptr;
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type** mutable_data() {
- // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this
- // method entirely.
- return reinterpret_cast<typename TypeHandler::Type**>(raw_mutable_data());
- }
-
- template <typename TypeHandler>
- const typename TypeHandler::Type* const* data() const {
- // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this
- // method entirely.
- return reinterpret_cast<const typename TypeHandler::Type* const*>(
- raw_data());
- }
-
- template <typename TypeHandler>
- PROTOBUF_NDEBUG_INLINE void Swap(RepeatedPtrFieldBase* other) {
-#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena())
-#else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena())
-#endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- {
- InternalSwap(other);
- } else {
- SwapFallback<TypeHandler>(other);
- }
- }
-
- void SwapElements(int index1, int index2) {
- using std::swap; // enable ADL with fallback
- swap(rep_->elements[index1], rep_->elements[index2]);
- }
-
- template <typename TypeHandler>
- size_t SpaceUsedExcludingSelfLong() const {
- size_t allocated_bytes = static_cast<size_t>(total_size_) * sizeof(void*);
- if (rep_ != nullptr) {
- for (int i = 0; i < rep_->allocated_size; ++i) {
- allocated_bytes +=
- TypeHandler::SpaceUsedLong(*cast<TypeHandler>(rep_->elements[i]));
- }
- allocated_bytes += kRepHeaderSize;
- }
- return allocated_bytes;
- }
-
- // Advanced memory management --------------------------------------
-
- // Like Add(), but if there are no cleared objects to use, returns nullptr.
- template <typename TypeHandler>
- typename TypeHandler::Type* AddFromCleared() {
- if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
- return cast<TypeHandler>(rep_->elements[current_size_++]);
- } else {
- return nullptr;
- }
- }
-
- template <typename TypeHandler>
- void AddAllocated(typename TypeHandler::Type* value) {
- typename TypeImplementsMergeBehavior<typename TypeHandler::Type>::type t;
- AddAllocatedInternal<TypeHandler>(value, t);
- }
-
- template <typename TypeHandler>
- void UnsafeArenaAddAllocated(typename TypeHandler::Type* value) {
- // Make room for the new pointer.
- if (!rep_ || current_size_ == total_size_) {
- // The array is completely full with no cleared objects, so grow it.
- Reserve(total_size_ + 1);
- ++rep_->allocated_size;
- } else if (rep_->allocated_size == total_size_) {
- // There is no more space in the pointer array because it contains some
- // cleared objects awaiting reuse. We don't want to grow the array in
- // this case because otherwise a loop calling AddAllocated() followed by
- // Clear() would leak memory.
- TypeHandler::Delete(cast<TypeHandler>(rep_->elements[current_size_]),
- arena_);
- } else if (current_size_ < rep_->allocated_size) {
- // We have some cleared objects. We don't care about their order, so we
- // can just move the first one to the end to make space.
- rep_->elements[rep_->allocated_size] = rep_->elements[current_size_];
- ++rep_->allocated_size;
- } else {
- // There are no cleared objects.
- ++rep_->allocated_size;
- }
-
- rep_->elements[current_size_++] = value;
- }
-
- template <typename TypeHandler>
- PROTOBUF_NODISCARD typename TypeHandler::Type* ReleaseLast() {
- typename TypeImplementsMergeBehavior<typename TypeHandler::Type>::type t;
- return ReleaseLastInternal<TypeHandler>(t);
- }
-
- // Releases and returns the last element, but does not do out-of-arena copy.
- // Instead, just returns the raw pointer to the contained element in the
- // arena.
- template <typename TypeHandler>
- typename TypeHandler::Type* UnsafeArenaReleaseLast() {
- GOOGLE_DCHECK_GT(current_size_, 0);
- typename TypeHandler::Type* result =
- cast<TypeHandler>(rep_->elements[--current_size_]);
- --rep_->allocated_size;
- if (current_size_ < rep_->allocated_size) {
- // There are cleared elements on the end; replace the removed element
- // with the last allocated element.
- rep_->elements[current_size_] = rep_->elements[rep_->allocated_size];
- }
- return result;
- }
-
- int ClearedCount() const {
- return rep_ ? (rep_->allocated_size - current_size_) : 0;
- }
-
- template <typename TypeHandler>
- void AddCleared(typename TypeHandler::Type* value) {
- GOOGLE_DCHECK(GetOwningArena() == nullptr) << "AddCleared() can only be used on a "
- "RepeatedPtrField not on an arena.";
- GOOGLE_DCHECK(TypeHandler::GetOwningArena(value) == nullptr)
- << "AddCleared() can only accept values not on an arena.";
- if (!rep_ || rep_->allocated_size == total_size_) {
- Reserve(total_size_ + 1);
- }
- rep_->elements[rep_->allocated_size++] = value;
- }
-
- template <typename TypeHandler>
- PROTOBUF_NODISCARD typename TypeHandler::Type* ReleaseCleared() {
- GOOGLE_DCHECK(GetOwningArena() == nullptr)
- << "ReleaseCleared() can only be used on a RepeatedPtrField not on "
- << "an arena.";
- GOOGLE_DCHECK(GetOwningArena() == nullptr);
- GOOGLE_DCHECK(rep_ != nullptr);
- GOOGLE_DCHECK_GT(rep_->allocated_size, current_size_);
- return cast<TypeHandler>(rep_->elements[--rep_->allocated_size]);
- }
-
- template <typename TypeHandler>
- void AddAllocatedInternal(typename TypeHandler::Type* value, std::true_type) {
- // AddAllocated version that implements arena-safe copying behavior.
- Arena* element_arena =
- reinterpret_cast<Arena*>(TypeHandler::GetOwningArena(value));
- Arena* arena = GetOwningArena();
- if (arena == element_arena && rep_ && rep_->allocated_size < total_size_) {
- // Fast path: underlying arena representation (tagged pointer) is equal to
- // our arena pointer, and we can add to array without resizing it (at
- // least one slot that is not allocated).
- void** elems = rep_->elements;
- if (current_size_ < rep_->allocated_size) {
- // Make space at [current] by moving first allocated element to end of
- // allocated list.
- elems[rep_->allocated_size] = elems[current_size_];
- }
- elems[current_size_] = value;
- current_size_ = current_size_ + 1;
- rep_->allocated_size = rep_->allocated_size + 1;
- } else {
- AddAllocatedSlowWithCopy<TypeHandler>(value, element_arena, arena);
- }
- }
-
- template <typename TypeHandler>
- void AddAllocatedInternal(
- // AddAllocated version that does not implement arena-safe copying
- // behavior.
- typename TypeHandler::Type* value, std::false_type) {
- if (rep_ && rep_->allocated_size < total_size_) {
- // Fast path: underlying arena representation (tagged pointer) is equal to
- // our arena pointer, and we can add to array without resizing it (at
- // least one slot that is not allocated).
- void** elems = rep_->elements;
- if (current_size_ < rep_->allocated_size) {
- // Make space at [current] by moving first allocated element to end of
- // allocated list.
- elems[rep_->allocated_size] = elems[current_size_];
- }
- elems[current_size_] = value;
- current_size_ = current_size_ + 1;
- ++rep_->allocated_size;
- } else {
- UnsafeArenaAddAllocated<TypeHandler>(value);
- }
- }
-
- // Slowpath handles all cases, copying if necessary.
- template <typename TypeHandler>
- PROTOBUF_NOINLINE void AddAllocatedSlowWithCopy(
- // Pass value_arena and my_arena to avoid duplicate virtual call (value)
- // or load (mine).
- typename TypeHandler::Type* value, Arena* value_arena, Arena* my_arena) {
- // Ensure that either the value is in the same arena, or if not, we do the
- // appropriate thing: Own() it (if it's on heap and we're in an arena) or
- // copy it to our arena/heap (otherwise).
- if (my_arena != nullptr && value_arena == nullptr) {
- my_arena->Own(value);
- } else if (my_arena != value_arena) {
- typename TypeHandler::Type* new_value =
- TypeHandler::NewFromPrototype(value, my_arena);
- TypeHandler::Merge(*value, new_value);
- TypeHandler::Delete(value, value_arena);
- value = new_value;
- }
-
- UnsafeArenaAddAllocated<TypeHandler>(value);
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type* ReleaseLastInternal(std::true_type) {
- // ReleaseLast() for types that implement merge/copy behavior.
- // First, release an element.
- typename TypeHandler::Type* result = UnsafeArenaReleaseLast<TypeHandler>();
- // Now perform a copy if we're on an arena.
- Arena* arena = GetOwningArena();
-
- typename TypeHandler::Type* new_result;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- new_result = copy<TypeHandler>(result);
- if (arena == nullptr) delete result;
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- new_result = (arena == nullptr) ? result : copy<TypeHandler>(result);
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return new_result;
- }
-
- template <typename TypeHandler>
- typename TypeHandler::Type* ReleaseLastInternal(std::false_type) {
- // ReleaseLast() for types that *do not* implement merge/copy behavior --
- // this is the same as UnsafeArenaReleaseLast(). Note that we GOOGLE_DCHECK-fail if
- // we're on an arena, since the user really should implement the copy
- // operation in this case.
- GOOGLE_DCHECK(GetOwningArena() == nullptr)
- << "ReleaseLast() called on a RepeatedPtrField that is on an arena, "
- << "with a type that does not implement MergeFrom. This is unsafe; "
- << "please implement MergeFrom for your type.";
- return UnsafeArenaReleaseLast<TypeHandler>();
- }
-
- template <typename TypeHandler>
- PROTOBUF_NOINLINE void SwapFallback(RepeatedPtrFieldBase* other) {
-#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- GOOGLE_DCHECK(GetOwningArena() == nullptr ||
- other->GetOwningArena() != GetOwningArena());
-#else // PROTOBUF_FORCE_COPY_IN_SWAP
- GOOGLE_DCHECK(other->GetOwningArena() != GetOwningArena());
-#endif // !PROTOBUF_FORCE_COPY_IN_SWAP
-
- // Copy semantics in this case. We try to improve efficiency by placing the
- // temporary on |other|'s arena so that messages are copied twice rather
- // than three times.
- RepeatedPtrFieldBase temp(other->GetOwningArena());
- temp.MergeFrom<TypeHandler>(*this);
- this->Clear<TypeHandler>();
- this->MergeFrom<TypeHandler>(*other);
- other->InternalSwap(&temp);
- temp.Destroy<TypeHandler>(); // Frees rep_ if `other` had no arena.
- }
-
- inline Arena* GetArena() const { return arena_; }
-
- protected:
- inline Arena* GetOwningArena() const { return arena_; }
-
- private:
- template <typename T> friend class Arena::InternalHelper;
-
- static constexpr int kInitialSize = 0;
- // A few notes on internal representation:
- //
- // We use an indirected approach, with struct Rep, to keep
- // sizeof(RepeatedPtrFieldBase) equivalent to what it was before arena support
- // was added; namely, 3 8-byte machine words on x86-64. An instance of Rep is
- // allocated only when the repeated field is non-empty, and it is a
- // dynamically-sized struct (the header is directly followed by elements[]).
- // We place arena_ and current_size_ directly in the object to avoid cache
- // misses due to the indirection, because these fields are checked frequently.
- // Placing all fields directly in the RepeatedPtrFieldBase instance would cost
- // significant performance for memory-sensitive workloads.
- Arena* arena_;
- int current_size_;
- int total_size_;
- struct Rep {
- int allocated_size;
- // Here we declare a huge array as a way of approximating C's "flexible
- // array member" feature without relying on undefined behavior.
- void* elements[(std::numeric_limits<int>::max() - 2 * sizeof(int)) /
- sizeof(void*)];
- };
- static constexpr size_t kRepHeaderSize = offsetof(Rep, elements);
- Rep* rep_;
-
- template <typename TypeHandler>
- static inline typename TypeHandler::Type* cast(void* element) {
- return reinterpret_cast<typename TypeHandler::Type*>(element);
- }
- template <typename TypeHandler>
- static inline const typename TypeHandler::Type* cast(const void* element) {
- return reinterpret_cast<const typename TypeHandler::Type*>(element);
- }
-
- // Non-templated inner function to avoid code duplication. Takes a function
- // pointer to the type-specific (templated) inner allocate/merge loop.
- void MergeFromInternal(const RepeatedPtrFieldBase& other,
- void (RepeatedPtrFieldBase::*inner_loop)(void**,
- void**, int,
- int)) {
- // Note: wrapper has already guaranteed that other.rep_ != nullptr here.
- int other_size = other.current_size_;
- void** other_elements = other.rep_->elements;
- void** new_elements = InternalExtend(other_size);
- int allocated_elems = rep_->allocated_size - current_size_;
- (this->*inner_loop)(new_elements, other_elements, other_size,
- allocated_elems);
- current_size_ += other_size;
- if (rep_->allocated_size < current_size_) {
- rep_->allocated_size = current_size_;
- }
- }
-
- // Merges other_elems to our_elems.
- template <typename TypeHandler>
- PROTOBUF_NOINLINE void MergeFromInnerLoop(void** our_elems,
- void** other_elems, int length,
- int already_allocated) {
- if (already_allocated < length) {
- Arena* arena = GetOwningArena();
- typename TypeHandler::Type* elem_prototype =
- reinterpret_cast<typename TypeHandler::Type*>(other_elems[0]);
- for (int i = already_allocated; i < length; i++) {
- // Allocate a new empty element that we'll merge into below
- typename TypeHandler::Type* new_elem =
- TypeHandler::NewFromPrototype(elem_prototype, arena);
- our_elems[i] = new_elem;
- }
- }
- // Main loop that does the actual merging
- for (int i = 0; i < length; i++) {
- // Already allocated: use existing element.
- typename TypeHandler::Type* other_elem =
- reinterpret_cast<typename TypeHandler::Type*>(other_elems[i]);
- typename TypeHandler::Type* new_elem =
- reinterpret_cast<typename TypeHandler::Type*>(our_elems[i]);
- TypeHandler::Merge(*other_elem, new_elem);
- }
- }
-
- // Internal helper: extends array space if necessary to contain
- // |extend_amount| more elements, and returns a pointer to the element
- // immediately following the old list of elements. This interface factors out
- // common behavior from Reserve() and MergeFrom() to reduce code size.
- // |extend_amount| must be > 0.
- void** InternalExtend(int extend_amount);
-
- // Internal helper for Add: adds "obj" as the next element in the
- // array, including potentially resizing the array with Reserve if
- // needed
- void* AddOutOfLineHelper(void* obj);
-
- // The reflection implementation needs to call protected methods directly,
- // reinterpreting pointers as being to Message instead of a specific Message
- // subclass.
- friend class ::PROTOBUF_NAMESPACE_ID::Reflection;
- friend class ::PROTOBUF_NAMESPACE_ID::internal::SwapFieldHelper;
-
- // ExtensionSet stores repeated message extensions as
- // RepeatedPtrField<MessageLite>, but non-lite ExtensionSets need to implement
- // SpaceUsedLong(), and thus need to call SpaceUsedExcludingSelfLong()
- // reinterpreting MessageLite as Message. ExtensionSet also needs to make use
- // of AddFromCleared(), which is not part of the public interface.
- friend class ExtensionSet;
-
- // The MapFieldBase implementation needs to call protected methods directly,
- // reinterpreting pointers as being to Message instead of a specific Message
- // subclass.
- friend class MapFieldBase;
- friend class MapFieldBaseStub;
-
- // The table-driven MergePartialFromCodedStream implementation needs to
- // operate on RepeatedPtrField<MessageLite>.
- friend class MergePartialFromCodedStreamHelper;
- friend class AccessorHelper;
- template <typename T>
- friend struct google::protobuf::WeakRepeatedPtrField;
- friend class internal::TcParser; // TODO(jorg): Remove this friend.
-};
-
-template <typename GenericType>
-class GenericTypeHandler {
- public:
- typedef GenericType Type;
- using Movable = IsMovable<GenericType>;
-
- static inline GenericType* New(Arena* arena) {
- return Arena::CreateMaybeMessage<Type>(arena);
- }
- static inline GenericType* New(Arena* arena, GenericType&& value) {
- return Arena::Create<GenericType>(arena, std::move(value));
- }
- static inline GenericType* NewFromPrototype(const GenericType* /*prototype*/,
- Arena* arena = nullptr) {
- return New(arena);
- }
- static inline void Delete(GenericType* value, Arena* arena) {
- if (arena == nullptr) {
- delete value;
- }
- }
- static inline Arena* GetOwningArena(GenericType* value) {
- return Arena::GetOwningArena<Type>(value);
- }
-
- static inline void Clear(GenericType* value) { value->Clear(); }
- static void Merge(const GenericType& from, GenericType* to);
- static inline size_t SpaceUsedLong(const GenericType& value) {
- return value.SpaceUsedLong();
- }
-};
-
-// NewFromPrototypeHelper() is not defined inline here, as we will need to do a
-// virtual function dispatch anyways to go from Message* to call New/Merge. (The
-// additional helper is needed as a workaround for MSVC.)
-MessageLite* NewFromPrototypeHelper(const MessageLite* prototype, Arena* arena);
-
-template <>
-inline MessageLite* GenericTypeHandler<MessageLite>::NewFromPrototype(
- const MessageLite* prototype, Arena* arena) {
- return NewFromPrototypeHelper(prototype, arena);
-}
-template <>
-inline Arena* GenericTypeHandler<MessageLite>::GetOwningArena(
- MessageLite* value) {
- return value->GetOwningArena();
-}
-
-template <typename GenericType>
-PROTOBUF_NOINLINE inline void GenericTypeHandler<GenericType>::Merge(
- const GenericType& from, GenericType* to) {
- to->MergeFrom(from);
-}
-template <>
-void GenericTypeHandler<MessageLite>::Merge(const MessageLite& from,
- MessageLite* to);
-
-template <>
-inline void GenericTypeHandler<std::string>::Clear(std::string* value) {
- value->clear();
-}
-template <>
-void GenericTypeHandler<std::string>::Merge(const std::string& from,
- std::string* to);
-
-// Message specialization bodies defined in message.cc. This split is necessary
-// to allow proto2-lite (which includes this header) to be independent of
-// Message.
-template <>
-PROTOBUF_EXPORT Message* GenericTypeHandler<Message>::NewFromPrototype(
- const Message* prototype, Arena* arena);
-template <>
-PROTOBUF_EXPORT Arena* GenericTypeHandler<Message>::GetOwningArena(
- Message* value);
-
-class StringTypeHandler {
- public:
- typedef std::string Type;
- using Movable = IsMovable<Type>;
-
- static inline std::string* New(Arena* arena) {
- return Arena::Create<std::string>(arena);
- }
- static inline std::string* New(Arena* arena, std::string&& value) {
- return Arena::Create<std::string>(arena, std::move(value));
- }
- static inline std::string* NewFromPrototype(const std::string*,
- Arena* arena) {
- return New(arena);
- }
- static inline Arena* GetOwningArena(std::string*) { return nullptr; }
- static inline void Delete(std::string* value, Arena* arena) {
- if (arena == nullptr) {
- delete value;
- }
- }
- static inline void Clear(std::string* value) { value->clear(); }
- static inline void Merge(const std::string& from, std::string* to) {
- *to = from;
- }
- static size_t SpaceUsedLong(const std::string& value) {
- return sizeof(value) + StringSpaceUsedExcludingSelfLong(value);
- }
-};
-
-} // namespace internal
-
-// RepeatedPtrField is like RepeatedField, but used for repeated strings or
-// Messages.
-template <typename Element>
-class RepeatedPtrField final : private internal::RepeatedPtrFieldBase {
-
- public:
- constexpr RepeatedPtrField();
- explicit RepeatedPtrField(Arena* arena);
-
- RepeatedPtrField(const RepeatedPtrField& other);
-
- template <typename Iter,
- typename = typename std::enable_if<std::is_constructible<
- Element, decltype(*std::declval<Iter>())>::value>::type>
- RepeatedPtrField(Iter begin, Iter end);
-
- ~RepeatedPtrField();
-
- RepeatedPtrField& operator=(const RepeatedPtrField& other);
-
- RepeatedPtrField(RepeatedPtrField&& other) noexcept;
- RepeatedPtrField& operator=(RepeatedPtrField&& other) noexcept;
-
- bool empty() const;
- int size() const;
-
- const Element& Get(int index) const;
- Element* Mutable(int index);
-
- // Unlike std::vector, adding an element to a RepeatedPtrField doesn't always
- // make a new element; it might re-use an element left over from when the
- // field was Clear()'d or reize()'d smaller. For this reason, Add() is the
- // fastest API for adding a new element.
- Element* Add();
-
- // `Add(std::move(value));` is equivalent to `*Add() = std::move(value);`
- // It will either move-construct to the end of this field, or swap value
- // with the new-or-recycled element at the end of this field. Note that
- // this operation is very slow if this RepeatedPtrField is not on the
- // same Arena, if any, as `value`.
- void Add(Element&& value);
-
- // Copying to the end of this RepeatedPtrField is slowest of all; it can't
- // reliably copy-construct to the last element of this RepeatedPtrField, for
- // example (unlike std::vector).
- // We currently block this API. The right way to add to the end is to call
- // Add() and modify the element it points to.
- // If you must add an existing value, call `*Add() = value;`
- void Add(const Element& value) = delete;
-
- // Append elements in the range [begin, end) after reserving
- // the appropriate number of elements.
- template <typename Iter>
- void Add(Iter begin, Iter end);
-
- const Element& operator[](int index) const { return Get(index); }
- Element& operator[](int index) { return *Mutable(index); }
-
- const Element& at(int index) const;
- Element& at(int index);
-
- // Removes the last element in the array.
- // Ownership of the element is retained by the array.
- void RemoveLast();
-
- // Deletes elements with indices in the range [start .. start+num-1].
- // Caution: moves all elements with indices [start+num .. ].
- // Calling this routine inside a loop can cause quadratic behavior.
- void DeleteSubrange(int start, int num);
-
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear();
- void MergeFrom(const RepeatedPtrField& other);
- PROTOBUF_ATTRIBUTE_REINITIALIZES void CopyFrom(const RepeatedPtrField& other);
-
- // Replaces the contents with RepeatedPtrField(begin, end).
- template <typename Iter>
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Assign(Iter begin, Iter end);
-
- // Reserves space to expand the field to at least the given size. This only
- // resizes the pointer array; it doesn't allocate any objects. If the
- // array is grown, it will always be at least doubled in size.
- void Reserve(int new_size);
-
- int Capacity() const;
-
- // Gets the underlying array. This pointer is possibly invalidated by
- // any add or remove operation.
- //
- // This API is deprecated. Instead of directly working with element array,
- // use APIs in repeated_field_util.h; e.g. sorting, etc.
- PROTOBUF_DEPRECATED_MSG("Use APIs in repeated_field_util.h")
- Element** mutable_data();
- const Element* const* data() const;
-
- // Swaps entire contents with "other". If they are on separate arenas, then
- // copies data.
- void Swap(RepeatedPtrField* other);
-
- // Swaps entire contents with "other". Caller should guarantee that either
- // both fields are on the same arena or both are on the heap. Swapping between
- // different arenas with this function is disallowed and is caught via
- // GOOGLE_DCHECK.
- void UnsafeArenaSwap(RepeatedPtrField* other);
-
- // Swaps two elements.
- void SwapElements(int index1, int index2);
-
- // STL-like iterator support
- typedef internal::RepeatedPtrIterator<Element> iterator;
- typedef internal::RepeatedPtrIterator<const Element> const_iterator;
- typedef Element value_type;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef int size_type;
- typedef ptrdiff_t difference_type;
-
- iterator begin();
- const_iterator begin() const;
- const_iterator cbegin() const;
- iterator end();
- const_iterator end() const;
- const_iterator cend() const;
-
- // Reverse iterator support
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- // Custom STL-like iterator that iterates over and returns the underlying
- // pointers to Element rather than Element itself.
- typedef internal::RepeatedPtrOverPtrsIterator<Element*, void*>
- pointer_iterator;
- typedef internal::RepeatedPtrOverPtrsIterator<const Element* const,
- const void* const>
- const_pointer_iterator;
- pointer_iterator pointer_begin();
- const_pointer_iterator pointer_begin() const;
- pointer_iterator pointer_end();
- const_pointer_iterator pointer_end() const;
-
- // Returns (an estimate of) the number of bytes used by the repeated field,
- // excluding sizeof(*this).
- size_t SpaceUsedExcludingSelfLong() const;
-
- int SpaceUsedExcludingSelf() const {
- return internal::ToIntSize(SpaceUsedExcludingSelfLong());
- }
-
- // Advanced memory management --------------------------------------
- // When hardcore memory management becomes necessary -- as it sometimes
- // does here at Google -- the following methods may be useful.
-
- // Adds an already-allocated object, passing ownership to the
- // RepeatedPtrField.
- //
- // Note that some special behavior occurs with respect to arenas:
- //
- // (i) if this field holds submessages, the new submessage will be copied if
- // the original is in an arena and this RepeatedPtrField is either in a
- // different arena, or on the heap.
- // (ii) if this field holds strings, the passed-in string *must* be
- // heap-allocated, not arena-allocated. There is no way to dynamically check
- // this at runtime, so User Beware.
- void AddAllocated(Element* value);
-
- // Removes and returns the last element, passing ownership to the caller.
- // Requires: size() > 0
- //
- // If this RepeatedPtrField is on an arena, an object copy is required to pass
- // ownership back to the user (for compatible semantics). Use
- // UnsafeArenaReleaseLast() if this behavior is undesired.
- PROTOBUF_NODISCARD Element* ReleaseLast();
-
- // Adds an already-allocated object, skipping arena-ownership checks. The user
- // must guarantee that the given object is in the same arena as this
- // RepeatedPtrField.
- // It is also useful in legacy code that uses temporary ownership to avoid
- // copies. Example:
- // RepeatedPtrField<T> temp_field;
- // temp_field.UnsafeArenaAddAllocated(new T);
- // ... // Do something with temp_field
- // temp_field.UnsafeArenaExtractSubrange(0, temp_field.size(), nullptr);
- // If you put temp_field on the arena this fails, because the ownership
- // transfers to the arena at the "AddAllocated" call and is not released
- // anymore, causing a double delete. UnsafeArenaAddAllocated prevents this.
- void UnsafeArenaAddAllocated(Element* value);
-
- // Removes and returns the last element. Unlike ReleaseLast, the returned
- // pointer is always to the original object. This may be in an arena, in
- // which case it would have the arena's lifetime.
- // Requires: current_size_ > 0
- Element* UnsafeArenaReleaseLast();
-
- // Extracts elements with indices in the range "[start .. start+num-1]".
- // The caller assumes ownership of the extracted elements and is responsible
- // for deleting them when they are no longer needed.
- // If "elements" is non-nullptr, then pointers to the extracted elements
- // are stored in "elements[0 .. num-1]" for the convenience of the caller.
- // If "elements" is nullptr, then the caller must use some other mechanism
- // to perform any further operations (like deletion) on these elements.
- // Caution: implementation also moves elements with indices [start+num ..].
- // Calling this routine inside a loop can cause quadratic behavior.
- //
- // Memory copying behavior is identical to ReleaseLast(), described above: if
- // this RepeatedPtrField is on an arena, an object copy is performed for each
- // returned element, so that all returned element pointers are to
- // heap-allocated copies. If this copy is not desired, the user should call
- // UnsafeArenaExtractSubrange().
- void ExtractSubrange(int start, int num, Element** elements);
-
- // Identical to ExtractSubrange() described above, except that no object
- // copies are ever performed. Instead, the raw object pointers are returned.
- // Thus, if on an arena, the returned objects must not be freed, because they
- // will not be heap-allocated objects.
- void UnsafeArenaExtractSubrange(int start, int num, Element** elements);
-
- // When elements are removed by calls to RemoveLast() or Clear(), they
- // are not actually freed. Instead, they are cleared and kept so that
- // they can be reused later. This can save lots of CPU time when
- // repeatedly reusing a protocol message for similar purposes.
- //
- // Hardcore programs may choose to manipulate these cleared objects
- // to better optimize memory management using the following routines.
-
- // Gets the number of cleared objects that are currently being kept
- // around for reuse.
- int ClearedCount() const;
-#ifndef PROTOBUF_FUTURE_BREAKING_CHANGES
- // Adds an element to the pool of cleared objects, passing ownership to
- // the RepeatedPtrField. The element must be cleared prior to calling
- // this method.
- //
- // This method cannot be called when either the repeated field or |value| is
- // on an arena; both cases will trigger a GOOGLE_DCHECK-failure.
- void AddCleared(Element* value);
- // Removes and returns a single element from the cleared pool, passing
- // ownership to the caller. The element is guaranteed to be cleared.
- // Requires: ClearedCount() > 0
- //
- // This method cannot be called when the repeated field is on an arena; doing
- // so will trigger a GOOGLE_DCHECK-failure.
- PROTOBUF_NODISCARD Element* ReleaseCleared();
-#endif // !PROTOBUF_FUTURE_BREAKING_CHANGES
-
- // Removes the element referenced by position.
- //
- // Returns an iterator to the element immediately following the removed
- // element.
- //
- // Invalidates all iterators at or after the removed element, including end().
- iterator erase(const_iterator position);
-
- // Removes the elements in the range [first, last).
- //
- // Returns an iterator to the element immediately following the removed range.
- //
- // Invalidates all iterators at or after the removed range, including end().
- iterator erase(const_iterator first, const_iterator last);
-
- // Gets the arena on which this RepeatedPtrField stores its elements.
- inline Arena* GetArena() const;
-
- // For internal use only.
- //
- // This is public due to it being called by generated code.
- void InternalSwap(RepeatedPtrField* other) {
- internal::RepeatedPtrFieldBase::InternalSwap(other);
- }
-
- private:
- // Note: RepeatedPtrField SHOULD NOT be subclassed by users.
- class TypeHandler;
-
- // Internal version of GetArena().
- inline Arena* GetOwningArena() const;
-
- // Implementations for ExtractSubrange(). The copying behavior must be
- // included only if the type supports the necessary operations (e.g.,
- // MergeFrom()), so we must resolve this at compile time. ExtractSubrange()
- // uses SFINAE to choose one of the below implementations.
- void ExtractSubrangeInternal(int start, int num, Element** elements,
- std::true_type);
- void ExtractSubrangeInternal(int start, int num, Element** elements,
- std::false_type);
-
- friend class Arena;
-
- template <typename T>
- friend struct WeakRepeatedPtrField;
-
- typedef void InternalArenaConstructable_;
-
-};
-
-// -------------------------------------------------------------------
-
-template <typename Element>
-class RepeatedPtrField<Element>::TypeHandler
- : public internal::GenericTypeHandler<Element> {};
-
-template <>
-class RepeatedPtrField<std::string>::TypeHandler
- : public internal::StringTypeHandler {};
-
-template <typename Element>
-constexpr RepeatedPtrField<Element>::RepeatedPtrField()
- : RepeatedPtrFieldBase() {}
-
-template <typename Element>
-inline RepeatedPtrField<Element>::RepeatedPtrField(Arena* arena)
- : RepeatedPtrFieldBase(arena) {}
-
-template <typename Element>
-inline RepeatedPtrField<Element>::RepeatedPtrField(
- const RepeatedPtrField& other)
- : RepeatedPtrFieldBase() {
- MergeFrom(other);
-}
-
-template <typename Element>
-template <typename Iter, typename>
-inline RepeatedPtrField<Element>::RepeatedPtrField(Iter begin, Iter end) {
- Add(begin, end);
-}
-
-template <typename Element>
-RepeatedPtrField<Element>::~RepeatedPtrField() {
-#ifdef __cpp_if_constexpr
- if constexpr (std::is_base_of<MessageLite, Element>::value) {
-#else
- if (std::is_base_of<MessageLite, Element>::value) {
-#endif
- if (NeedsDestroy()) DestroyProtos();
- } else {
- Destroy<TypeHandler>();
- }
-}
-
-template <typename Element>
-inline RepeatedPtrField<Element>& RepeatedPtrField<Element>::operator=(
- const RepeatedPtrField& other) {
- if (this != &other) CopyFrom(other);
- return *this;
-}
-
-template <typename Element>
-inline RepeatedPtrField<Element>::RepeatedPtrField(
- RepeatedPtrField&& other) noexcept
- : RepeatedPtrField() {
-#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- CopyFrom(other);
-#else // PROTOBUF_FORCE_COPY_IN_MOVE
- // We don't just call Swap(&other) here because it would perform 3 copies if
- // other is on an arena. This field can't be on an arena because arena
- // construction always uses the Arena* accepting constructor.
- if (other.GetOwningArena()) {
- CopyFrom(other);
- } else {
- InternalSwap(&other);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_MOVE
-}
-
-template <typename Element>
-inline RepeatedPtrField<Element>& RepeatedPtrField<Element>::operator=(
- RepeatedPtrField&& other) noexcept {
- // We don't just call Swap(&other) here because it would perform 3 copies if
- // the two fields are on different arenas.
- if (this != &other) {
- if (GetOwningArena() != other.GetOwningArena()
-#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- || GetOwningArena() == nullptr
-#endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- CopyFrom(other);
- } else {
- InternalSwap(&other);
- }
- }
- return *this;
-}
-
-template <typename Element>
-inline bool RepeatedPtrField<Element>::empty() const {
- return RepeatedPtrFieldBase::empty();
-}
-
-template <typename Element>
-inline int RepeatedPtrField<Element>::size() const {
- return RepeatedPtrFieldBase::size();
-}
-
-template <typename Element>
-inline const Element& RepeatedPtrField<Element>::Get(int index) const {
- return RepeatedPtrFieldBase::Get<TypeHandler>(index);
-}
-
-template <typename Element>
-inline const Element& RepeatedPtrField<Element>::at(int index) const {
- return RepeatedPtrFieldBase::at<TypeHandler>(index);
-}
-
-template <typename Element>
-inline Element& RepeatedPtrField<Element>::at(int index) {
- return RepeatedPtrFieldBase::at<TypeHandler>(index);
-}
-
-
-template <typename Element>
-inline Element* RepeatedPtrField<Element>::Mutable(int index) {
- return RepeatedPtrFieldBase::Mutable<TypeHandler>(index);
-}
-
-template <typename Element>
-inline Element* RepeatedPtrField<Element>::Add() {
- return RepeatedPtrFieldBase::Add<TypeHandler>();
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::Add(Element&& value) {
- RepeatedPtrFieldBase::Add<TypeHandler>(std::move(value));
-}
-
-template <typename Element>
-template <typename Iter>
-inline void RepeatedPtrField<Element>::Add(Iter begin, Iter end) {
- if (std::is_base_of<
- std::forward_iterator_tag,
- typename std::iterator_traits<Iter>::iterator_category>::value) {
- int reserve = std::distance(begin, end);
- Reserve(size() + reserve);
- }
- for (; begin != end; ++begin) {
- *Add() = *begin;
- }
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::RemoveLast() {
- RepeatedPtrFieldBase::RemoveLast<TypeHandler>();
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::DeleteSubrange(int start, int num) {
- GOOGLE_DCHECK_GE(start, 0);
- GOOGLE_DCHECK_GE(num, 0);
- GOOGLE_DCHECK_LE(start + num, size());
- for (int i = 0; i < num; ++i) {
- RepeatedPtrFieldBase::Delete<TypeHandler>(start + i);
- }
- UnsafeArenaExtractSubrange(start, num, nullptr);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::ExtractSubrange(int start, int num,
- Element** elements) {
- typename internal::TypeImplementsMergeBehavior<
- typename TypeHandler::Type>::type t;
- ExtractSubrangeInternal(start, num, elements, t);
-}
-
-// ExtractSubrange() implementation for types that implement merge/copy
-// behavior.
-template <typename Element>
-inline void RepeatedPtrField<Element>::ExtractSubrangeInternal(
- int start, int num, Element** elements, std::true_type) {
- GOOGLE_DCHECK_GE(start, 0);
- GOOGLE_DCHECK_GE(num, 0);
- GOOGLE_DCHECK_LE(start + num, size());
-
- if (num == 0) return;
-
- GOOGLE_DCHECK_NE(elements, nullptr)
- << "Releasing elements without transferring ownership is an unsafe "
- "operation. Use UnsafeArenaExtractSubrange.";
- if (elements == nullptr) {
- CloseGap(start, num);
- return;
- }
-
- Arena* arena = GetOwningArena();
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- // Always copy.
- for (int i = 0; i < num; ++i) {
- elements[i] = copy<TypeHandler>(
- RepeatedPtrFieldBase::Mutable<TypeHandler>(i + start));
- }
- if (arena == nullptr) {
- for (int i = 0; i < num; ++i) {
- delete RepeatedPtrFieldBase::Mutable<TypeHandler>(i + start);
- }
- }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- // If we're on an arena, we perform a copy for each element so that the
- // returned elements are heap-allocated. Otherwise, just forward it.
- if (arena != nullptr) {
- for (int i = 0; i < num; ++i) {
- elements[i] = copy<TypeHandler>(
- RepeatedPtrFieldBase::Mutable<TypeHandler>(i + start));
- }
- } else {
- for (int i = 0; i < num; ++i) {
- elements[i] = RepeatedPtrFieldBase::Mutable<TypeHandler>(i + start);
- }
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- CloseGap(start, num);
-}
-
-// ExtractSubrange() implementation for types that do not implement merge/copy
-// behavior.
-template <typename Element>
-inline void RepeatedPtrField<Element>::ExtractSubrangeInternal(
- int start, int num, Element** elements, std::false_type) {
- // This case is identical to UnsafeArenaExtractSubrange(). However, since
- // ExtractSubrange() must return heap-allocated objects by contract, and we
- // cannot fulfill this contract if we are an on arena, we must GOOGLE_DCHECK() that
- // we are not on an arena.
- GOOGLE_DCHECK(GetOwningArena() == nullptr)
- << "ExtractSubrange() when arena is non-nullptr is only supported when "
- << "the Element type supplies a MergeFrom() operation to make copies.";
- UnsafeArenaExtractSubrange(start, num, elements);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::UnsafeArenaExtractSubrange(
- int start, int num, Element** elements) {
- GOOGLE_DCHECK_GE(start, 0);
- GOOGLE_DCHECK_GE(num, 0);
- GOOGLE_DCHECK_LE(start + num, size());
-
- if (num > 0) {
- // Save the values of the removed elements if requested.
- if (elements != nullptr) {
- for (int i = 0; i < num; ++i) {
- elements[i] = RepeatedPtrFieldBase::Mutable<TypeHandler>(i + start);
- }
- }
- CloseGap(start, num);
- }
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::Clear() {
- RepeatedPtrFieldBase::Clear<TypeHandler>();
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::MergeFrom(
- const RepeatedPtrField& other) {
- RepeatedPtrFieldBase::MergeFrom<TypeHandler>(other);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::CopyFrom(const RepeatedPtrField& other) {
- RepeatedPtrFieldBase::CopyFrom<TypeHandler>(other);
-}
-
-template <typename Element>
-template <typename Iter>
-inline void RepeatedPtrField<Element>::Assign(Iter begin, Iter end) {
- Clear();
- Add(begin, end);
-}
-
-template <typename Element>
-inline typename RepeatedPtrField<Element>::iterator
-RepeatedPtrField<Element>::erase(const_iterator position) {
- return erase(position, position + 1);
-}
-
-template <typename Element>
-inline typename RepeatedPtrField<Element>::iterator
-RepeatedPtrField<Element>::erase(const_iterator first, const_iterator last) {
- size_type pos_offset = std::distance(cbegin(), first);
- size_type last_offset = std::distance(cbegin(), last);
- DeleteSubrange(pos_offset, last_offset - pos_offset);
- return begin() + pos_offset;
-}
-
-template <typename Element>
-inline Element** RepeatedPtrField<Element>::mutable_data() {
- return RepeatedPtrFieldBase::mutable_data<TypeHandler>();
-}
-
-template <typename Element>
-inline const Element* const* RepeatedPtrField<Element>::data() const {
- return RepeatedPtrFieldBase::data<TypeHandler>();
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::Swap(RepeatedPtrField* other) {
- if (this == other) return;
- RepeatedPtrFieldBase::Swap<TypeHandler>(other);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::UnsafeArenaSwap(
- RepeatedPtrField* other) {
- if (this == other) return;
- GOOGLE_DCHECK_EQ(GetOwningArena(), other->GetOwningArena());
- RepeatedPtrFieldBase::InternalSwap(other);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::SwapElements(int index1, int index2) {
- RepeatedPtrFieldBase::SwapElements(index1, index2);
-}
-
-template <typename Element>
-inline Arena* RepeatedPtrField<Element>::GetArena() const {
- return RepeatedPtrFieldBase::GetArena();
-}
-
-template <typename Element>
-inline Arena* RepeatedPtrField<Element>::GetOwningArena() const {
- return RepeatedPtrFieldBase::GetOwningArena();
-}
-
-template <typename Element>
-inline size_t RepeatedPtrField<Element>::SpaceUsedExcludingSelfLong() const {
- return RepeatedPtrFieldBase::SpaceUsedExcludingSelfLong<TypeHandler>();
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::AddAllocated(Element* value) {
- RepeatedPtrFieldBase::AddAllocated<TypeHandler>(value);
-}
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::UnsafeArenaAddAllocated(Element* value) {
- RepeatedPtrFieldBase::UnsafeArenaAddAllocated<TypeHandler>(value);
-}
-
-template <typename Element>
-inline Element* RepeatedPtrField<Element>::ReleaseLast() {
- return RepeatedPtrFieldBase::ReleaseLast<TypeHandler>();
-}
-
-template <typename Element>
-inline Element* RepeatedPtrField<Element>::UnsafeArenaReleaseLast() {
- return RepeatedPtrFieldBase::UnsafeArenaReleaseLast<TypeHandler>();
-}
-
-template <typename Element>
-inline int RepeatedPtrField<Element>::ClearedCount() const {
- return RepeatedPtrFieldBase::ClearedCount();
-}
-
-#ifndef PROTOBUF_FUTURE_BREAKING_CHANGES
-template <typename Element>
-inline void RepeatedPtrField<Element>::AddCleared(Element* value) {
- return RepeatedPtrFieldBase::AddCleared<TypeHandler>(value);
-}
-
-template <typename Element>
-inline Element* RepeatedPtrField<Element>::ReleaseCleared() {
- return RepeatedPtrFieldBase::ReleaseCleared<TypeHandler>();
-}
-#endif // !PROTOBUF_FUTURE_BREAKING_CHANGES
-
-template <typename Element>
-inline void RepeatedPtrField<Element>::Reserve(int new_size) {
- return RepeatedPtrFieldBase::Reserve(new_size);
-}
-
-template <typename Element>
-inline int RepeatedPtrField<Element>::Capacity() const {
- return RepeatedPtrFieldBase::Capacity();
-}
-
-// -------------------------------------------------------------------
-
-namespace internal {
-
-// STL-like iterator implementation for RepeatedPtrField. You should not
-// refer to this class directly; use RepeatedPtrField<T>::iterator instead.
-//
-// The iterator for RepeatedPtrField<T>, RepeatedPtrIterator<T>, is
-// very similar to iterator_ptr<T**> in util/gtl/iterator_adaptors.h,
-// but adds random-access operators and is modified to wrap a void** base
-// iterator (since RepeatedPtrField stores its array as a void* array and
-// casting void** to T** would violate C++ aliasing rules).
-//
-// This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin
-// (jyasskin@google.com).
-template <typename Element>
-class RepeatedPtrIterator {
- public:
- using iterator = RepeatedPtrIterator<Element>;
- using iterator_category = std::random_access_iterator_tag;
- using value_type = typename std::remove_const<Element>::type;
- using difference_type = std::ptrdiff_t;
- using pointer = Element*;
- using reference = Element&;
-
- RepeatedPtrIterator() : it_(nullptr) {}
- explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
-
- // Allows "upcasting" from RepeatedPtrIterator<T**> to
- // RepeatedPtrIterator<const T*const*>.
- template <typename OtherElement,
- typename std::enable_if<std::is_convertible<
- OtherElement*, pointer>::value>::type* = nullptr>
- RepeatedPtrIterator(const RepeatedPtrIterator<OtherElement>& other)
- : it_(other.it_) {}
-
- // dereferenceable
- reference operator*() const { return *reinterpret_cast<Element*>(*it_); }
- pointer operator->() const { return &(operator*()); }
-
- // {inc,dec}rementable
- iterator& operator++() {
- ++it_;
- return *this;
- }
- iterator operator++(int) { return iterator(it_++); }
- iterator& operator--() {
- --it_;
- return *this;
- }
- iterator operator--(int) { return iterator(it_--); }
-
- // equality_comparable
- friend bool operator==(const iterator& x, const iterator& y) {
- return x.it_ == y.it_;
- }
- friend bool operator!=(const iterator& x, const iterator& y) {
- return x.it_ != y.it_;
- }
-
- // less_than_comparable
- friend bool operator<(const iterator& x, const iterator& y) {
- return x.it_ < y.it_;
- }
- friend bool operator<=(const iterator& x, const iterator& y) {
- return x.it_ <= y.it_;
- }
- friend bool operator>(const iterator& x, const iterator& y) {
- return x.it_ > y.it_;
- }
- friend bool operator>=(const iterator& x, const iterator& y) {
- return x.it_ >= y.it_;
- }
-
- // addable, subtractable
- iterator& operator+=(difference_type d) {
- it_ += d;
- return *this;
- }
- friend iterator operator+(iterator it, const difference_type d) {
- it += d;
- return it;
- }
- friend iterator operator+(const difference_type d, iterator it) {
- it += d;
- return it;
- }
- iterator& operator-=(difference_type d) {
- it_ -= d;
- return *this;
- }
- friend iterator operator-(iterator it, difference_type d) {
- it -= d;
- return it;
- }
-
- // indexable
- reference operator[](difference_type d) const { return *(*this + d); }
-
- // random access iterator
- friend difference_type operator-(iterator it1, iterator it2) {
- return it1.it_ - it2.it_;
- }
-
- private:
- template <typename OtherElement>
- friend class RepeatedPtrIterator;
-
- // The internal iterator.
- void* const* it_;
-};
-
-// Provides an iterator that operates on pointers to the underlying objects
-// rather than the objects themselves as RepeatedPtrIterator does.
-// Consider using this when working with stl algorithms that change
-// the array.
-// The VoidPtr template parameter holds the type-agnostic pointer value
-// referenced by the iterator. It should either be "void *" for a mutable
-// iterator, or "const void* const" for a constant iterator.
-template <typename Element, typename VoidPtr>
-class RepeatedPtrOverPtrsIterator {
- public:
- using iterator = RepeatedPtrOverPtrsIterator<Element, VoidPtr>;
- using iterator_category = std::random_access_iterator_tag;
- using value_type = typename std::remove_const<Element>::type;
- using difference_type = std::ptrdiff_t;
- using pointer = Element*;
- using reference = Element&;
-
- RepeatedPtrOverPtrsIterator() : it_(nullptr) {}
- explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {}
-
- // Allows "upcasting" from RepeatedPtrOverPtrsIterator<T**> to
- // RepeatedPtrOverPtrsIterator<const T*const*>.
- template <
- typename OtherElement, typename OtherVoidPtr,
- typename std::enable_if<
- std::is_convertible<OtherElement*, pointer>::value &&
- std::is_convertible<OtherVoidPtr*, VoidPtr>::value>::type* = nullptr>
- RepeatedPtrOverPtrsIterator(
- const RepeatedPtrOverPtrsIterator<OtherElement, OtherVoidPtr>& other)
- : it_(other.it_) {}
-
- // dereferenceable
- reference operator*() const { return *reinterpret_cast<Element*>(it_); }
- pointer operator->() const { return &(operator*()); }
-
- // {inc,dec}rementable
- iterator& operator++() {
- ++it_;
- return *this;
- }
- iterator operator++(int) { return iterator(it_++); }
- iterator& operator--() {
- --it_;
- return *this;
- }
- iterator operator--(int) { return iterator(it_--); }
-
- // equality_comparable
- friend bool operator==(const iterator& x, const iterator& y) {
- return x.it_ == y.it_;
- }
- friend bool operator!=(const iterator& x, const iterator& y) {
- return x.it_ != y.it_;
- }
-
- // less_than_comparable
- friend bool operator<(const iterator& x, const iterator& y) {
- return x.it_ < y.it_;
- }
- friend bool operator<=(const iterator& x, const iterator& y) {
- return x.it_ <= y.it_;
- }
- friend bool operator>(const iterator& x, const iterator& y) {
- return x.it_ > y.it_;
- }
- friend bool operator>=(const iterator& x, const iterator& y) {
- return x.it_ >= y.it_;
- }
-
- // addable, subtractable
- iterator& operator+=(difference_type d) {
- it_ += d;
- return *this;
- }
- friend iterator operator+(iterator it, difference_type d) {
- it += d;
- return it;
- }
- friend iterator operator+(difference_type d, iterator it) {
- it += d;
- return it;
- }
- iterator& operator-=(difference_type d) {
- it_ -= d;
- return *this;
- }
- friend iterator operator-(iterator it, difference_type d) {
- it -= d;
- return it;
- }
-
- // indexable
- reference operator[](difference_type d) const { return *(*this + d); }
-
- // random access iterator
- friend difference_type operator-(iterator it1, iterator it2) {
- return it1.it_ - it2.it_;
- }
-
- private:
- template <typename OtherElement, typename OtherVoidPtr>
- friend class RepeatedPtrOverPtrsIterator;
-
- // The internal iterator.
- VoidPtr* it_;
-};
-
-} // namespace internal
-
-template <typename Element>
-inline typename RepeatedPtrField<Element>::iterator
-RepeatedPtrField<Element>::begin() {
- return iterator(raw_data());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_iterator
-RepeatedPtrField<Element>::begin() const {
- return iterator(raw_data());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_iterator
-RepeatedPtrField<Element>::cbegin() const {
- return begin();
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::iterator
-RepeatedPtrField<Element>::end() {
- return iterator(raw_data() + size());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_iterator
-RepeatedPtrField<Element>::end() const {
- return iterator(raw_data() + size());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_iterator
-RepeatedPtrField<Element>::cend() const {
- return end();
-}
-
-template <typename Element>
-inline typename RepeatedPtrField<Element>::pointer_iterator
-RepeatedPtrField<Element>::pointer_begin() {
- return pointer_iterator(raw_mutable_data());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_pointer_iterator
-RepeatedPtrField<Element>::pointer_begin() const {
- return const_pointer_iterator(const_cast<const void* const*>(raw_data()));
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::pointer_iterator
-RepeatedPtrField<Element>::pointer_end() {
- return pointer_iterator(raw_mutable_data() + size());
-}
-template <typename Element>
-inline typename RepeatedPtrField<Element>::const_pointer_iterator
-RepeatedPtrField<Element>::pointer_end() const {
- return const_pointer_iterator(
- const_cast<const void* const*>(raw_data() + size()));
-}
-
-// Iterators and helper functions that follow the spirit of the STL
-// std::back_insert_iterator and std::back_inserter but are tailor-made
-// for RepeatedField and RepeatedPtrField. Typical usage would be:
-//
-// std::copy(some_sequence.begin(), some_sequence.end(),
-// RepeatedFieldBackInserter(proto.mutable_sequence()));
-//
-// Ported by johannes from util/gtl/proto-array-iterators.h
-
-namespace internal {
-
-// A back inserter for RepeatedPtrField objects.
-template <typename T>
-class RepeatedPtrFieldBackInsertIterator {
- public:
- using iterator_category = std::output_iterator_tag;
- using value_type = T;
- using pointer = void;
- using reference = void;
- using difference_type = std::ptrdiff_t;
-
- RepeatedPtrFieldBackInsertIterator(RepeatedPtrField<T>* const mutable_field)
- : field_(mutable_field) {}
- RepeatedPtrFieldBackInsertIterator<T>& operator=(const T& value) {
- *field_->Add() = value;
- return *this;
- }
- RepeatedPtrFieldBackInsertIterator<T>& operator=(
- const T* const ptr_to_value) {
- *field_->Add() = *ptr_to_value;
- return *this;
- }
- RepeatedPtrFieldBackInsertIterator<T>& operator=(T&& value) {
- *field_->Add() = std::move(value);
- return *this;
- }
- RepeatedPtrFieldBackInsertIterator<T>& operator*() { return *this; }
- RepeatedPtrFieldBackInsertIterator<T>& operator++() { return *this; }
- RepeatedPtrFieldBackInsertIterator<T>& operator++(int /* unused */) {
- return *this;
- }
-
- private:
- RepeatedPtrField<T>* field_;
-};
-
-// A back inserter for RepeatedPtrFields that inserts by transferring ownership
-// of a pointer.
-template <typename T>
-class AllocatedRepeatedPtrFieldBackInsertIterator {
- public:
- using iterator_category = std::output_iterator_tag;
- using value_type = T;
- using pointer = void;
- using reference = void;
- using difference_type = std::ptrdiff_t;
-
- explicit AllocatedRepeatedPtrFieldBackInsertIterator(
- RepeatedPtrField<T>* const mutable_field)
- : field_(mutable_field) {}
- AllocatedRepeatedPtrFieldBackInsertIterator<T>& operator=(
- T* const ptr_to_value) {
- field_->AddAllocated(ptr_to_value);
- return *this;
- }
- AllocatedRepeatedPtrFieldBackInsertIterator<T>& operator*() { return *this; }
- AllocatedRepeatedPtrFieldBackInsertIterator<T>& operator++() { return *this; }
- AllocatedRepeatedPtrFieldBackInsertIterator<T>& operator++(int /* unused */) {
- return *this;
- }
-
- private:
- RepeatedPtrField<T>* field_;
-};
-
-// Almost identical to AllocatedRepeatedPtrFieldBackInsertIterator. This one
-// uses the UnsafeArenaAddAllocated instead.
-template <typename T>
-class UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator {
- public:
- using iterator_category = std::output_iterator_tag;
- using value_type = T;
- using pointer = void;
- using reference = void;
- using difference_type = std::ptrdiff_t;
-
- explicit UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator(
- RepeatedPtrField<T>* const mutable_field)
- : field_(mutable_field) {}
- UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>& operator=(
- T const* const ptr_to_value) {
- field_->UnsafeArenaAddAllocated(const_cast<T*>(ptr_to_value));
- return *this;
- }
- UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>& operator*() {
- return *this;
- }
- UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>& operator++() {
- return *this;
- }
- UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>& operator++(
- int /* unused */) {
- return *this;
- }
-
- private:
- RepeatedPtrField<T>* field_;
-};
-
-} // namespace internal
-
-// Provides a back insert iterator for RepeatedPtrField instances,
-// similar to std::back_inserter().
-template <typename T>
-internal::RepeatedPtrFieldBackInsertIterator<T> RepeatedPtrFieldBackInserter(
- RepeatedPtrField<T>* const mutable_field) {
- return internal::RepeatedPtrFieldBackInsertIterator<T>(mutable_field);
-}
-
-// Special back insert iterator for RepeatedPtrField instances, just in
-// case someone wants to write generic template code that can access both
-// RepeatedFields and RepeatedPtrFields using a common name.
-template <typename T>
-internal::RepeatedPtrFieldBackInsertIterator<T> RepeatedFieldBackInserter(
- RepeatedPtrField<T>* const mutable_field) {
- return internal::RepeatedPtrFieldBackInsertIterator<T>(mutable_field);
-}
-
-// Provides a back insert iterator for RepeatedPtrField instances
-// similar to std::back_inserter() which transfers the ownership while
-// copying elements.
-template <typename T>
-internal::AllocatedRepeatedPtrFieldBackInsertIterator<T>
-AllocatedRepeatedPtrFieldBackInserter(
- RepeatedPtrField<T>* const mutable_field) {
- return internal::AllocatedRepeatedPtrFieldBackInsertIterator<T>(
- mutable_field);
-}
-
-// Similar to AllocatedRepeatedPtrFieldBackInserter, using
-// UnsafeArenaAddAllocated instead of AddAllocated.
-// This is slightly faster if that matters. It is also useful in legacy code
-// that uses temporary ownership to avoid copies. Example:
-// RepeatedPtrField<T> temp_field;
-// temp_field.UnsafeArenaAddAllocated(new T);
-// ... // Do something with temp_field
-// temp_field.UnsafeArenaExtractSubrange(0, temp_field.size(), nullptr);
-// Putting temp_field on the arena fails because the ownership transfers to the
-// arena at the "AddAllocated" call and is not released anymore causing a
-// double delete. This function uses UnsafeArenaAddAllocated to prevent this.
-template <typename T>
-internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>
-UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
- RepeatedPtrField<T>* const mutable_field) {
- return internal::UnsafeArenaAllocatedRepeatedPtrFieldBackInsertIterator<T>(
- mutable_field);
-}
-
-extern template class PROTOBUF_EXPORT_TEMPLATE_DECLARE
- RepeatedPtrField<std::string>;
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_REPEATED_PTR_FIELD_H__
diff --git a/include/google/protobuf/service.h b/include/google/protobuf/service.h
deleted file mode 100644
index d288eb554a..0000000000
--- a/include/google/protobuf/service.h
+++ /dev/null
@@ -1,295 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// DEPRECATED: This module declares the abstract interfaces underlying proto2
-// RPC services. These are intended to be independent of any particular RPC
-// implementation, so that proto2 services can be used on top of a variety
-// of implementations. Starting with version 2.3.0, RPC implementations should
-// not try to build on these, but should instead provide code generator plugins
-// which generate code specific to the particular RPC implementation. This way
-// the generated code can be more appropriate for the implementation in use
-// and can avoid unnecessary layers of indirection.
-//
-//
-// When you use the protocol compiler to compile a service definition, it
-// generates two classes: An abstract interface for the service (with
-// methods matching the service definition) and a "stub" implementation.
-// A stub is just a type-safe wrapper around an RpcChannel which emulates a
-// local implementation of the service.
-//
-// For example, the service definition:
-// service MyService {
-// rpc Foo(MyRequest) returns(MyResponse);
-// }
-// will generate abstract interface "MyService" and class "MyService::Stub".
-// You could implement a MyService as follows:
-// class MyServiceImpl : public MyService {
-// public:
-// MyServiceImpl() {}
-// ~MyServiceImpl() {}
-//
-// // implements MyService ---------------------------------------
-//
-// void Foo(google::protobuf::RpcController* controller,
-// const MyRequest* request,
-// MyResponse* response,
-// Closure* done) {
-// // ... read request and fill in response ...
-// done->Run();
-// }
-// };
-// You would then register an instance of MyServiceImpl with your RPC server
-// implementation. (How to do that depends on the implementation.)
-//
-// To call a remote MyServiceImpl, first you need an RpcChannel connected to it.
-// How to construct a channel depends, again, on your RPC implementation.
-// Here we use a hypothetical "MyRpcChannel" as an example:
-// MyRpcChannel channel("rpc:hostname:1234/myservice");
-// MyRpcController controller;
-// MyServiceImpl::Stub stub(&channel);
-// FooRequest request;
-// FooResponse response;
-//
-// // ... fill in request ...
-//
-// stub.Foo(&controller, request, &response, NewCallback(HandleResponse));
-//
-// On Thread-Safety:
-//
-// Different RPC implementations may make different guarantees about what
-// threads they may run callbacks on, and what threads the application is
-// allowed to use to call the RPC system. Portable software should be ready
-// for callbacks to be called on any thread, but should not try to call the
-// RPC system from any thread except for the ones on which it received the
-// callbacks. Realistically, though, simple software will probably want to
-// use a single-threaded RPC system while high-end software will want to
-// use multiple threads. RPC implementations should provide multiple
-// choices.
-
-#ifndef GOOGLE_PROTOBUF_SERVICE_H__
-#define GOOGLE_PROTOBUF_SERVICE_H__
-
-
-#include <string>
-#include <google/protobuf/stubs/callback.h>
-#include <google/protobuf/stubs/common.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-// Defined in this file.
-class Service;
-class RpcController;
-class RpcChannel;
-
-// Defined in other files.
-class Descriptor; // descriptor.h
-class ServiceDescriptor; // descriptor.h
-class MethodDescriptor; // descriptor.h
-class Message; // message.h
-
-// Abstract base interface for protocol-buffer-based RPC services. Services
-// themselves are abstract interfaces (implemented either by servers or as
-// stubs), but they subclass this base interface. The methods of this
-// interface can be used to call the methods of the Service without knowing
-// its exact type at compile time (analogous to Reflection).
-class PROTOBUF_EXPORT Service {
- public:
- inline Service() {}
- virtual ~Service();
-
- // When constructing a stub, you may pass STUB_OWNS_CHANNEL as the second
- // parameter to the constructor to tell it to delete its RpcChannel when
- // destroyed.
- enum ChannelOwnership { STUB_OWNS_CHANNEL, STUB_DOESNT_OWN_CHANNEL };
-
- // Get the ServiceDescriptor describing this service and its methods.
- virtual const ServiceDescriptor* GetDescriptor() = 0;
-
- // Call a method of the service specified by MethodDescriptor. This is
- // normally implemented as a simple switch() that calls the standard
- // definitions of the service's methods.
- //
- // Preconditions:
- // * method->service() == GetDescriptor()
- // * request and response are of the exact same classes as the objects
- // returned by GetRequestPrototype(method) and
- // GetResponsePrototype(method).
- // * After the call has started, the request must not be modified and the
- // response must not be accessed at all until "done" is called.
- // * "controller" is of the correct type for the RPC implementation being
- // used by this Service. For stubs, the "correct type" depends on the
- // RpcChannel which the stub is using. Server-side Service
- // implementations are expected to accept whatever type of RpcController
- // the server-side RPC implementation uses.
- //
- // Postconditions:
- // * "done" will be called when the method is complete. This may be
- // before CallMethod() returns or it may be at some point in the future.
- // * If the RPC succeeded, "response" contains the response returned by
- // the server.
- // * If the RPC failed, "response"'s contents are undefined. The
- // RpcController can be queried to determine if an error occurred and
- // possibly to get more information about the error.
- virtual void CallMethod(const MethodDescriptor* method,
- RpcController* controller, const Message* request,
- Message* response, Closure* done) = 0;
-
- // CallMethod() requires that the request and response passed in are of a
- // particular subclass of Message. GetRequestPrototype() and
- // GetResponsePrototype() get the default instances of these required types.
- // You can then call Message::New() on these instances to construct mutable
- // objects which you can then pass to CallMethod().
- //
- // Example:
- // const MethodDescriptor* method =
- // service->GetDescriptor()->FindMethodByName("Foo");
- // Message* request = stub->GetRequestPrototype (method)->New();
- // Message* response = stub->GetResponsePrototype(method)->New();
- // request->ParseFromString(input);
- // service->CallMethod(method, *request, response, callback);
- virtual const Message& GetRequestPrototype(
- const MethodDescriptor* method) const = 0;
- virtual const Message& GetResponsePrototype(
- const MethodDescriptor* method) const = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Service);
-};
-
-// An RpcController mediates a single method call. The primary purpose of
-// the controller is to provide a way to manipulate settings specific to the
-// RPC implementation and to find out about RPC-level errors.
-//
-// The methods provided by the RpcController interface are intended to be a
-// "least common denominator" set of features which we expect all
-// implementations to support. Specific implementations may provide more
-// advanced features (e.g. deadline propagation).
-class PROTOBUF_EXPORT RpcController {
- public:
- inline RpcController() {}
- virtual ~RpcController();
-
- // Client-side methods ---------------------------------------------
- // These calls may be made from the client side only. Their results
- // are undefined on the server side (may crash).
-
- // Resets the RpcController to its initial state so that it may be reused in
- // a new call. Must not be called while an RPC is in progress.
- virtual void Reset() = 0;
-
- // After a call has finished, returns true if the call failed. The possible
- // reasons for failure depend on the RPC implementation. Failed() must not
- // be called before a call has finished. If Failed() returns true, the
- // contents of the response message are undefined.
- virtual bool Failed() const = 0;
-
- // If Failed() is true, returns a human-readable description of the error.
- virtual std::string ErrorText() const = 0;
-
- // Advises the RPC system that the caller desires that the RPC call be
- // canceled. The RPC system may cancel it immediately, may wait awhile and
- // then cancel it, or may not even cancel the call at all. If the call is
- // canceled, the "done" callback will still be called and the RpcController
- // will indicate that the call failed at that time.
- virtual void StartCancel() = 0;
-
- // Server-side methods ---------------------------------------------
- // These calls may be made from the server side only. Their results
- // are undefined on the client side (may crash).
-
- // Causes Failed() to return true on the client side. "reason" will be
- // incorporated into the message returned by ErrorText(). If you find
- // you need to return machine-readable information about failures, you
- // should incorporate it into your response protocol buffer and should
- // NOT call SetFailed().
- virtual void SetFailed(const std::string& reason) = 0;
-
- // If true, indicates that the client canceled the RPC, so the server may
- // as well give up on replying to it. The server should still call the
- // final "done" callback.
- virtual bool IsCanceled() const = 0;
-
- // Asks that the given callback be called when the RPC is canceled. The
- // callback will always be called exactly once. If the RPC completes without
- // being canceled, the callback will be called after completion. If the RPC
- // has already been canceled when NotifyOnCancel() is called, the callback
- // will be called immediately.
- //
- // NotifyOnCancel() must be called no more than once per request.
- virtual void NotifyOnCancel(Closure* callback) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RpcController);
-};
-
-// Abstract interface for an RPC channel. An RpcChannel represents a
-// communication line to a Service which can be used to call that Service's
-// methods. The Service may be running on another machine. Normally, you
-// should not call an RpcChannel directly, but instead construct a stub Service
-// wrapping it. Example:
-// RpcChannel* channel = new MyRpcChannel("remotehost.example.com:1234");
-// MyService* service = new MyService::Stub(channel);
-// service->MyMethod(request, &response, callback);
-class PROTOBUF_EXPORT RpcChannel {
- public:
- inline RpcChannel() {}
- virtual ~RpcChannel();
-
- // Call the given method of the remote service. The signature of this
- // procedure looks the same as Service::CallMethod(), but the requirements
- // are less strict in one important way: the request and response objects
- // need not be of any specific class as long as their descriptors are
- // method->input_type() and method->output_type().
- virtual void CallMethod(const MethodDescriptor* method,
- RpcController* controller, const Message* request,
- Message* response, Closure* done) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RpcChannel);
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_SERVICE_H__
diff --git a/include/google/protobuf/source_context.pb.h b/include/google/protobuf/source_context.pb.h
deleted file mode 100644
index 899cfb0122..0000000000
--- a/include/google/protobuf/source_context.pb.h
+++ /dev/null
@@ -1,282 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/source_context.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fsource_5fcontext_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fsource_5fcontext_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fsource_5fcontext_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fsource_5fcontext_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class SourceContext;
-struct SourceContextDefaultTypeInternal;
-PROTOBUF_EXPORT extern SourceContextDefaultTypeInternal _SourceContext_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::SourceContext* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceContext>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT SourceContext final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.SourceContext) */ {
- public:
- inline SourceContext() : SourceContext(nullptr) {}
- ~SourceContext() override;
- explicit PROTOBUF_CONSTEXPR SourceContext(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- SourceContext(const SourceContext& from);
- SourceContext(SourceContext&& from) noexcept
- : SourceContext() {
- *this = ::std::move(from);
- }
-
- inline SourceContext& operator=(const SourceContext& from) {
- CopyFrom(from);
- return *this;
- }
- inline SourceContext& operator=(SourceContext&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const SourceContext& default_instance() {
- return *internal_default_instance();
- }
- static inline const SourceContext* internal_default_instance() {
- return reinterpret_cast<const SourceContext*>(
- &_SourceContext_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(SourceContext& a, SourceContext& b) {
- a.Swap(&b);
- }
- inline void Swap(SourceContext* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(SourceContext* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- SourceContext* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<SourceContext>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const SourceContext& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const SourceContext& from) {
- SourceContext::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(SourceContext* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.SourceContext";
- }
- protected:
- explicit SourceContext(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFileNameFieldNumber = 1,
- };
- // string file_name = 1;
- void clear_file_name();
- const std::string& file_name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_file_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_file_name();
- PROTOBUF_NODISCARD std::string* release_file_name();
- void set_allocated_file_name(std::string* file_name);
- private:
- const std::string& _internal_file_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const std::string& value);
- std::string* _internal_mutable_file_name();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.SourceContext)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr file_name_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fsource_5fcontext_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// SourceContext
-
-// string file_name = 1;
-inline void SourceContext::clear_file_name() {
- _impl_.file_name_.ClearToEmpty();
-}
-inline const std::string& SourceContext::file_name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.SourceContext.file_name)
- return _internal_file_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void SourceContext::set_file_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.file_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.SourceContext.file_name)
-}
-inline std::string* SourceContext::mutable_file_name() {
- std::string* _s = _internal_mutable_file_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.SourceContext.file_name)
- return _s;
-}
-inline const std::string& SourceContext::_internal_file_name() const {
- return _impl_.file_name_.Get();
-}
-inline void SourceContext::_internal_set_file_name(const std::string& value) {
-
- _impl_.file_name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* SourceContext::_internal_mutable_file_name() {
-
- return _impl_.file_name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* SourceContext::release_file_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.SourceContext.file_name)
- return _impl_.file_name_.Release();
-}
-inline void SourceContext::set_allocated_file_name(std::string* file_name) {
- if (file_name != nullptr) {
-
- } else {
-
- }
- _impl_.file_name_.SetAllocated(file_name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.file_name_.IsDefault()) {
- _impl_.file_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.SourceContext.file_name)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fsource_5fcontext_2eproto
diff --git a/include/google/protobuf/source_context.proto b/include/google/protobuf/source_context.proto
deleted file mode 100644
index 06bfc43a78..0000000000
--- a/include/google/protobuf/source_context.proto
+++ /dev/null
@@ -1,48 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "SourceContextProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option go_package = "google.golang.org/protobuf/types/known/sourcecontextpb";
-
-// `SourceContext` represents information about the source of a
-// protobuf element, like the file in which it is defined.
-message SourceContext {
- // The path-qualified name of the .proto file that contained the associated
- // protobuf element. For example: `"google/protobuf/source_context.proto"`.
- string file_name = 1;
-}
diff --git a/include/google/protobuf/struct.pb.h b/include/google/protobuf/struct.pb.h
deleted file mode 100644
index 3f7db0f90f..0000000000
--- a/include/google/protobuf/struct.pb.h
+++ /dev/null
@@ -1,1177 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/struct.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fstruct_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fstruct_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/map.h> // IWYU pragma: export
-#include <google/protobuf/map_entry.h>
-#include <google/protobuf/map_field_inl.h>
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fstruct_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fstruct_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fstruct_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class ListValue;
-struct ListValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern ListValueDefaultTypeInternal _ListValue_default_instance_;
-class Struct;
-struct StructDefaultTypeInternal;
-PROTOBUF_EXPORT extern StructDefaultTypeInternal _Struct_default_instance_;
-class Struct_FieldsEntry_DoNotUse;
-struct Struct_FieldsEntry_DoNotUseDefaultTypeInternal;
-PROTOBUF_EXPORT extern Struct_FieldsEntry_DoNotUseDefaultTypeInternal _Struct_FieldsEntry_DoNotUse_default_instance_;
-class Value;
-struct ValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern ValueDefaultTypeInternal _Value_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::ListValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::ListValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Struct* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Struct>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Struct_FieldsEntry_DoNotUse>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Value* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Value>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-enum NullValue : int {
- NULL_VALUE = 0,
- NullValue_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
- NullValue_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
-};
-PROTOBUF_EXPORT bool NullValue_IsValid(int value);
-constexpr NullValue NullValue_MIN = NULL_VALUE;
-constexpr NullValue NullValue_MAX = NULL_VALUE;
-constexpr int NullValue_ARRAYSIZE = NullValue_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NullValue_descriptor();
-template<typename T>
-inline const std::string& NullValue_Name(T enum_t_value) {
- static_assert(::std::is_same<T, NullValue>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function NullValue_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- NullValue_descriptor(), enum_t_value);
-}
-inline bool NullValue_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, NullValue* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<NullValue>(
- NullValue_descriptor(), name, value);
-}
-// ===================================================================
-
-class Struct_FieldsEntry_DoNotUse : public ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<Struct_FieldsEntry_DoNotUse,
- std::string, ::PROTOBUF_NAMESPACE_ID::Value,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> {
-public:
- typedef ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<Struct_FieldsEntry_DoNotUse,
- std::string, ::PROTOBUF_NAMESPACE_ID::Value,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> SuperType;
- Struct_FieldsEntry_DoNotUse();
- explicit PROTOBUF_CONSTEXPR Struct_FieldsEntry_DoNotUse(
- ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
- explicit Struct_FieldsEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
- void MergeFrom(const Struct_FieldsEntry_DoNotUse& other);
- static const Struct_FieldsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const Struct_FieldsEntry_DoNotUse*>(&_Struct_FieldsEntry_DoNotUse_default_instance_); }
- static bool ValidateKey(std::string* s) {
- return ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::PARSE, "google.protobuf.Struct.FieldsEntry.key");
- }
- static bool ValidateValue(void*) { return true; }
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
- friend struct ::TableStruct_google_2fprotobuf_2fstruct_2eproto;
-};
-
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Struct final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Struct) */ {
- public:
- inline Struct() : Struct(nullptr) {}
- ~Struct() override;
- explicit PROTOBUF_CONSTEXPR Struct(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Struct(const Struct& from);
- Struct(Struct&& from) noexcept
- : Struct() {
- *this = ::std::move(from);
- }
-
- inline Struct& operator=(const Struct& from) {
- CopyFrom(from);
- return *this;
- }
- inline Struct& operator=(Struct&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Struct& default_instance() {
- return *internal_default_instance();
- }
- static inline const Struct* internal_default_instance() {
- return reinterpret_cast<const Struct*>(
- &_Struct_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(Struct& a, Struct& b) {
- a.Swap(&b);
- }
- inline void Swap(Struct* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Struct* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Struct* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Struct>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Struct& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Struct& from) {
- Struct::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Struct* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Struct";
- }
- protected:
- explicit Struct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- private:
- static void ArenaDtor(void* object);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFieldsFieldNumber = 1,
- };
- // map<string, .google.protobuf.Value> fields = 1;
- int fields_size() const;
- private:
- int _internal_fields_size() const;
- public:
- void clear_fields();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >&
- _internal_fields() const;
- ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >*
- _internal_mutable_fields();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >&
- fields() const;
- ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >*
- mutable_fields();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Struct)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::MapField<
- Struct_FieldsEntry_DoNotUse,
- std::string, ::PROTOBUF_NAMESPACE_ID::Value,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
- ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> fields_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fstruct_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Value final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Value) */ {
- public:
- inline Value() : Value(nullptr) {}
- ~Value() override;
- explicit PROTOBUF_CONSTEXPR Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Value(const Value& from);
- Value(Value&& from) noexcept
- : Value() {
- *this = ::std::move(from);
- }
-
- inline Value& operator=(const Value& from) {
- CopyFrom(from);
- return *this;
- }
- inline Value& operator=(Value&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Value& default_instance() {
- return *internal_default_instance();
- }
- enum KindCase {
- kNullValue = 1,
- kNumberValue = 2,
- kStringValue = 3,
- kBoolValue = 4,
- kStructValue = 5,
- kListValue = 6,
- KIND_NOT_SET = 0,
- };
-
- static inline const Value* internal_default_instance() {
- return reinterpret_cast<const Value*>(
- &_Value_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(Value& a, Value& b) {
- a.Swap(&b);
- }
- inline void Swap(Value* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Value* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Value>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Value& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Value& from) {
- Value::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Value* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Value";
- }
- protected:
- explicit Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNullValueFieldNumber = 1,
- kNumberValueFieldNumber = 2,
- kStringValueFieldNumber = 3,
- kBoolValueFieldNumber = 4,
- kStructValueFieldNumber = 5,
- kListValueFieldNumber = 6,
- };
- // .google.protobuf.NullValue null_value = 1;
- bool has_null_value() const;
- private:
- bool _internal_has_null_value() const;
- public:
- void clear_null_value();
- ::PROTOBUF_NAMESPACE_ID::NullValue null_value() const;
- void set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value);
- private:
- ::PROTOBUF_NAMESPACE_ID::NullValue _internal_null_value() const;
- void _internal_set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value);
- public:
-
- // double number_value = 2;
- bool has_number_value() const;
- private:
- bool _internal_has_number_value() const;
- public:
- void clear_number_value();
- double number_value() const;
- void set_number_value(double value);
- private:
- double _internal_number_value() const;
- void _internal_set_number_value(double value);
- public:
-
- // string string_value = 3;
- bool has_string_value() const;
- private:
- bool _internal_has_string_value() const;
- public:
- void clear_string_value();
- const std::string& string_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_string_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_string_value();
- PROTOBUF_NODISCARD std::string* release_string_value();
- void set_allocated_string_value(std::string* string_value);
- private:
- const std::string& _internal_string_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_string_value(const std::string& value);
- std::string* _internal_mutable_string_value();
- public:
-
- // bool bool_value = 4;
- bool has_bool_value() const;
- private:
- bool _internal_has_bool_value() const;
- public:
- void clear_bool_value();
- bool bool_value() const;
- void set_bool_value(bool value);
- private:
- bool _internal_bool_value() const;
- void _internal_set_bool_value(bool value);
- public:
-
- // .google.protobuf.Struct struct_value = 5;
- bool has_struct_value() const;
- private:
- bool _internal_has_struct_value() const;
- public:
- void clear_struct_value();
- const ::PROTOBUF_NAMESPACE_ID::Struct& struct_value() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::Struct* release_struct_value();
- ::PROTOBUF_NAMESPACE_ID::Struct* mutable_struct_value();
- void set_allocated_struct_value(::PROTOBUF_NAMESPACE_ID::Struct* struct_value);
- private:
- const ::PROTOBUF_NAMESPACE_ID::Struct& _internal_struct_value() const;
- ::PROTOBUF_NAMESPACE_ID::Struct* _internal_mutable_struct_value();
- public:
- void unsafe_arena_set_allocated_struct_value(
- ::PROTOBUF_NAMESPACE_ID::Struct* struct_value);
- ::PROTOBUF_NAMESPACE_ID::Struct* unsafe_arena_release_struct_value();
-
- // .google.protobuf.ListValue list_value = 6;
- bool has_list_value() const;
- private:
- bool _internal_has_list_value() const;
- public:
- void clear_list_value();
- const ::PROTOBUF_NAMESPACE_ID::ListValue& list_value() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::ListValue* release_list_value();
- ::PROTOBUF_NAMESPACE_ID::ListValue* mutable_list_value();
- void set_allocated_list_value(::PROTOBUF_NAMESPACE_ID::ListValue* list_value);
- private:
- const ::PROTOBUF_NAMESPACE_ID::ListValue& _internal_list_value() const;
- ::PROTOBUF_NAMESPACE_ID::ListValue* _internal_mutable_list_value();
- public:
- void unsafe_arena_set_allocated_list_value(
- ::PROTOBUF_NAMESPACE_ID::ListValue* list_value);
- ::PROTOBUF_NAMESPACE_ID::ListValue* unsafe_arena_release_list_value();
-
- void clear_kind();
- KindCase kind_case() const;
- // @@protoc_insertion_point(class_scope:google.protobuf.Value)
- private:
- class _Internal;
- void set_has_null_value();
- void set_has_number_value();
- void set_has_string_value();
- void set_has_bool_value();
- void set_has_struct_value();
- void set_has_list_value();
-
- inline bool has_kind() const;
- inline void clear_has_kind();
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- union KindUnion {
- constexpr KindUnion() : _constinit_{} {}
- ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
- int null_value_;
- double number_value_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr string_value_;
- bool bool_value_;
- ::PROTOBUF_NAMESPACE_ID::Struct* struct_value_;
- ::PROTOBUF_NAMESPACE_ID::ListValue* list_value_;
- } kind_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- uint32_t _oneof_case_[1];
-
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fstruct_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT ListValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.ListValue) */ {
- public:
- inline ListValue() : ListValue(nullptr) {}
- ~ListValue() override;
- explicit PROTOBUF_CONSTEXPR ListValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- ListValue(const ListValue& from);
- ListValue(ListValue&& from) noexcept
- : ListValue() {
- *this = ::std::move(from);
- }
-
- inline ListValue& operator=(const ListValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline ListValue& operator=(ListValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const ListValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const ListValue* internal_default_instance() {
- return reinterpret_cast<const ListValue*>(
- &_ListValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 3;
-
- friend void swap(ListValue& a, ListValue& b) {
- a.Swap(&b);
- }
- inline void Swap(ListValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(ListValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- ListValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<ListValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const ListValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const ListValue& from) {
- ListValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(ListValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.ListValue";
- }
- protected:
- explicit ListValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValuesFieldNumber = 1,
- };
- // repeated .google.protobuf.Value values = 1;
- int values_size() const;
- private:
- int _internal_values_size() const;
- public:
- void clear_values();
- ::PROTOBUF_NAMESPACE_ID::Value* mutable_values(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Value >*
- mutable_values();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Value& _internal_values(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Value* _internal_add_values();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Value& values(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Value* add_values();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Value >&
- values() const;
-
- // @@protoc_insertion_point(class_scope:google.protobuf.ListValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Value > values_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fstruct_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// Struct
-
-// map<string, .google.protobuf.Value> fields = 1;
-inline int Struct::_internal_fields_size() const {
- return _impl_.fields_.size();
-}
-inline int Struct::fields_size() const {
- return _internal_fields_size();
-}
-inline void Struct::clear_fields() {
- _impl_.fields_.Clear();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >&
-Struct::_internal_fields() const {
- return _impl_.fields_.GetMap();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >&
-Struct::fields() const {
- // @@protoc_insertion_point(field_map:google.protobuf.Struct.fields)
- return _internal_fields();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >*
-Struct::_internal_mutable_fields() {
- return _impl_.fields_.MutableMap();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::PROTOBUF_NAMESPACE_ID::Value >*
-Struct::mutable_fields() {
- // @@protoc_insertion_point(field_mutable_map:google.protobuf.Struct.fields)
- return _internal_mutable_fields();
-}
-
-// -------------------------------------------------------------------
-
-// Value
-
-// .google.protobuf.NullValue null_value = 1;
-inline bool Value::_internal_has_null_value() const {
- return kind_case() == kNullValue;
-}
-inline bool Value::has_null_value() const {
- return _internal_has_null_value();
-}
-inline void Value::set_has_null_value() {
- _impl_._oneof_case_[0] = kNullValue;
-}
-inline void Value::clear_null_value() {
- if (_internal_has_null_value()) {
- _impl_.kind_.null_value_ = 0;
- clear_has_kind();
- }
-}
-inline ::PROTOBUF_NAMESPACE_ID::NullValue Value::_internal_null_value() const {
- if (_internal_has_null_value()) {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::NullValue >(_impl_.kind_.null_value_);
- }
- return static_cast< ::PROTOBUF_NAMESPACE_ID::NullValue >(0);
-}
-inline ::PROTOBUF_NAMESPACE_ID::NullValue Value::null_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.null_value)
- return _internal_null_value();
-}
-inline void Value::_internal_set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value) {
- if (!_internal_has_null_value()) {
- clear_kind();
- set_has_null_value();
- }
- _impl_.kind_.null_value_ = value;
-}
-inline void Value::set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value) {
- _internal_set_null_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Value.null_value)
-}
-
-// double number_value = 2;
-inline bool Value::_internal_has_number_value() const {
- return kind_case() == kNumberValue;
-}
-inline bool Value::has_number_value() const {
- return _internal_has_number_value();
-}
-inline void Value::set_has_number_value() {
- _impl_._oneof_case_[0] = kNumberValue;
-}
-inline void Value::clear_number_value() {
- if (_internal_has_number_value()) {
- _impl_.kind_.number_value_ = 0;
- clear_has_kind();
- }
-}
-inline double Value::_internal_number_value() const {
- if (_internal_has_number_value()) {
- return _impl_.kind_.number_value_;
- }
- return 0;
-}
-inline void Value::_internal_set_number_value(double value) {
- if (!_internal_has_number_value()) {
- clear_kind();
- set_has_number_value();
- }
- _impl_.kind_.number_value_ = value;
-}
-inline double Value::number_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.number_value)
- return _internal_number_value();
-}
-inline void Value::set_number_value(double value) {
- _internal_set_number_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Value.number_value)
-}
-
-// string string_value = 3;
-inline bool Value::_internal_has_string_value() const {
- return kind_case() == kStringValue;
-}
-inline bool Value::has_string_value() const {
- return _internal_has_string_value();
-}
-inline void Value::set_has_string_value() {
- _impl_._oneof_case_[0] = kStringValue;
-}
-inline void Value::clear_string_value() {
- if (_internal_has_string_value()) {
- _impl_.kind_.string_value_.Destroy();
- clear_has_kind();
- }
-}
-inline const std::string& Value::string_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.string_value)
- return _internal_string_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline void Value::set_string_value(ArgT0&& arg0, ArgT... args) {
- if (!_internal_has_string_value()) {
- clear_kind();
- set_has_string_value();
- _impl_.kind_.string_value_.InitDefault();
- }
- _impl_.kind_.string_value_.Set( static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Value.string_value)
-}
-inline std::string* Value::mutable_string_value() {
- std::string* _s = _internal_mutable_string_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Value.string_value)
- return _s;
-}
-inline const std::string& Value::_internal_string_value() const {
- if (_internal_has_string_value()) {
- return _impl_.kind_.string_value_.Get();
- }
- return ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited();
-}
-inline void Value::_internal_set_string_value(const std::string& value) {
- if (!_internal_has_string_value()) {
- clear_kind();
- set_has_string_value();
- _impl_.kind_.string_value_.InitDefault();
- }
- _impl_.kind_.string_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Value::_internal_mutable_string_value() {
- if (!_internal_has_string_value()) {
- clear_kind();
- set_has_string_value();
- _impl_.kind_.string_value_.InitDefault();
- }
- return _impl_.kind_.string_value_.Mutable( GetArenaForAllocation());
-}
-inline std::string* Value::release_string_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Value.string_value)
- if (_internal_has_string_value()) {
- clear_has_kind();
- return _impl_.kind_.string_value_.Release();
- } else {
- return nullptr;
- }
-}
-inline void Value::set_allocated_string_value(std::string* string_value) {
- if (has_kind()) {
- clear_kind();
- }
- if (string_value != nullptr) {
- set_has_string_value();
- _impl_.kind_.string_value_.InitAllocated(string_value, GetArenaForAllocation());
- }
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Value.string_value)
-}
-
-// bool bool_value = 4;
-inline bool Value::_internal_has_bool_value() const {
- return kind_case() == kBoolValue;
-}
-inline bool Value::has_bool_value() const {
- return _internal_has_bool_value();
-}
-inline void Value::set_has_bool_value() {
- _impl_._oneof_case_[0] = kBoolValue;
-}
-inline void Value::clear_bool_value() {
- if (_internal_has_bool_value()) {
- _impl_.kind_.bool_value_ = false;
- clear_has_kind();
- }
-}
-inline bool Value::_internal_bool_value() const {
- if (_internal_has_bool_value()) {
- return _impl_.kind_.bool_value_;
- }
- return false;
-}
-inline void Value::_internal_set_bool_value(bool value) {
- if (!_internal_has_bool_value()) {
- clear_kind();
- set_has_bool_value();
- }
- _impl_.kind_.bool_value_ = value;
-}
-inline bool Value::bool_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.bool_value)
- return _internal_bool_value();
-}
-inline void Value::set_bool_value(bool value) {
- _internal_set_bool_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Value.bool_value)
-}
-
-// .google.protobuf.Struct struct_value = 5;
-inline bool Value::_internal_has_struct_value() const {
- return kind_case() == kStructValue;
-}
-inline bool Value::has_struct_value() const {
- return _internal_has_struct_value();
-}
-inline void Value::set_has_struct_value() {
- _impl_._oneof_case_[0] = kStructValue;
-}
-inline void Value::clear_struct_value() {
- if (_internal_has_struct_value()) {
- if (GetArenaForAllocation() == nullptr) {
- delete _impl_.kind_.struct_value_;
- }
- clear_has_kind();
- }
-}
-inline ::PROTOBUF_NAMESPACE_ID::Struct* Value::release_struct_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Value.struct_value)
- if (_internal_has_struct_value()) {
- clear_has_kind();
- ::PROTOBUF_NAMESPACE_ID::Struct* temp = _impl_.kind_.struct_value_;
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
- _impl_.kind_.struct_value_ = nullptr;
- return temp;
- } else {
- return nullptr;
- }
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Struct& Value::_internal_struct_value() const {
- return _internal_has_struct_value()
- ? *_impl_.kind_.struct_value_
- : reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::Struct&>(::PROTOBUF_NAMESPACE_ID::_Struct_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Struct& Value::struct_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.struct_value)
- return _internal_struct_value();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Struct* Value::unsafe_arena_release_struct_value() {
- // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.Value.struct_value)
- if (_internal_has_struct_value()) {
- clear_has_kind();
- ::PROTOBUF_NAMESPACE_ID::Struct* temp = _impl_.kind_.struct_value_;
- _impl_.kind_.struct_value_ = nullptr;
- return temp;
- } else {
- return nullptr;
- }
-}
-inline void Value::unsafe_arena_set_allocated_struct_value(::PROTOBUF_NAMESPACE_ID::Struct* struct_value) {
- clear_kind();
- if (struct_value) {
- set_has_struct_value();
- _impl_.kind_.struct_value_ = struct_value;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Value.struct_value)
-}
-inline ::PROTOBUF_NAMESPACE_ID::Struct* Value::_internal_mutable_struct_value() {
- if (!_internal_has_struct_value()) {
- clear_kind();
- set_has_struct_value();
- _impl_.kind_.struct_value_ = CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::Struct >(GetArenaForAllocation());
- }
- return _impl_.kind_.struct_value_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Struct* Value::mutable_struct_value() {
- ::PROTOBUF_NAMESPACE_ID::Struct* _msg = _internal_mutable_struct_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Value.struct_value)
- return _msg;
-}
-
-// .google.protobuf.ListValue list_value = 6;
-inline bool Value::_internal_has_list_value() const {
- return kind_case() == kListValue;
-}
-inline bool Value::has_list_value() const {
- return _internal_has_list_value();
-}
-inline void Value::set_has_list_value() {
- _impl_._oneof_case_[0] = kListValue;
-}
-inline void Value::clear_list_value() {
- if (_internal_has_list_value()) {
- if (GetArenaForAllocation() == nullptr) {
- delete _impl_.kind_.list_value_;
- }
- clear_has_kind();
- }
-}
-inline ::PROTOBUF_NAMESPACE_ID::ListValue* Value::release_list_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Value.list_value)
- if (_internal_has_list_value()) {
- clear_has_kind();
- ::PROTOBUF_NAMESPACE_ID::ListValue* temp = _impl_.kind_.list_value_;
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
- _impl_.kind_.list_value_ = nullptr;
- return temp;
- } else {
- return nullptr;
- }
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ListValue& Value::_internal_list_value() const {
- return _internal_has_list_value()
- ? *_impl_.kind_.list_value_
- : reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::ListValue&>(::PROTOBUF_NAMESPACE_ID::_ListValue_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::ListValue& Value::list_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Value.list_value)
- return _internal_list_value();
-}
-inline ::PROTOBUF_NAMESPACE_ID::ListValue* Value::unsafe_arena_release_list_value() {
- // @@protoc_insertion_point(field_unsafe_arena_release:google.protobuf.Value.list_value)
- if (_internal_has_list_value()) {
- clear_has_kind();
- ::PROTOBUF_NAMESPACE_ID::ListValue* temp = _impl_.kind_.list_value_;
- _impl_.kind_.list_value_ = nullptr;
- return temp;
- } else {
- return nullptr;
- }
-}
-inline void Value::unsafe_arena_set_allocated_list_value(::PROTOBUF_NAMESPACE_ID::ListValue* list_value) {
- clear_kind();
- if (list_value) {
- set_has_list_value();
- _impl_.kind_.list_value_ = list_value;
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Value.list_value)
-}
-inline ::PROTOBUF_NAMESPACE_ID::ListValue* Value::_internal_mutable_list_value() {
- if (!_internal_has_list_value()) {
- clear_kind();
- set_has_list_value();
- _impl_.kind_.list_value_ = CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::ListValue >(GetArenaForAllocation());
- }
- return _impl_.kind_.list_value_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::ListValue* Value::mutable_list_value() {
- ::PROTOBUF_NAMESPACE_ID::ListValue* _msg = _internal_mutable_list_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Value.list_value)
- return _msg;
-}
-
-inline bool Value::has_kind() const {
- return kind_case() != KIND_NOT_SET;
-}
-inline void Value::clear_has_kind() {
- _impl_._oneof_case_[0] = KIND_NOT_SET;
-}
-inline Value::KindCase Value::kind_case() const {
- return Value::KindCase(_impl_._oneof_case_[0]);
-}
-// -------------------------------------------------------------------
-
-// ListValue
-
-// repeated .google.protobuf.Value values = 1;
-inline int ListValue::_internal_values_size() const {
- return _impl_.values_.size();
-}
-inline int ListValue::values_size() const {
- return _internal_values_size();
-}
-inline void ListValue::clear_values() {
- _impl_.values_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Value* ListValue::mutable_values(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.ListValue.values)
- return _impl_.values_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Value >*
-ListValue::mutable_values() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.ListValue.values)
- return &_impl_.values_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Value& ListValue::_internal_values(int index) const {
- return _impl_.values_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Value& ListValue::values(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.ListValue.values)
- return _internal_values(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Value* ListValue::_internal_add_values() {
- return _impl_.values_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Value* ListValue::add_values() {
- ::PROTOBUF_NAMESPACE_ID::Value* _add = _internal_add_values();
- // @@protoc_insertion_point(field_add:google.protobuf.ListValue.values)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Value >&
-ListValue::values() const {
- // @@protoc_insertion_point(field_list:google.protobuf.ListValue.values)
- return _impl_.values_;
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-PROTOBUF_NAMESPACE_OPEN
-
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::NullValue> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::NullValue>() {
- return ::PROTOBUF_NAMESPACE_ID::NullValue_descriptor();
-}
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fstruct_2eproto
diff --git a/include/google/protobuf/struct.proto b/include/google/protobuf/struct.proto
deleted file mode 100644
index 0ac843ca08..0000000000
--- a/include/google/protobuf/struct.proto
+++ /dev/null
@@ -1,95 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/protobuf/types/known/structpb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "StructProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-message Struct {
- // Unordered map of dynamically typed values.
- map<string, Value> fields = 1;
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of these
-// variants. Absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-message Value {
- // The kind of value.
- oneof kind {
- // Represents a null value.
- NullValue null_value = 1;
- // Represents a double value.
- double number_value = 2;
- // Represents a string value.
- string string_value = 3;
- // Represents a boolean value.
- bool bool_value = 4;
- // Represents a structured value.
- Struct struct_value = 5;
- // Represents a repeated `Value`.
- ListValue list_value = 6;
- }
-}
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-// The JSON representation for `NullValue` is JSON `null`.
-enum NullValue {
- // Null value.
- NULL_VALUE = 0;
-}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-message ListValue {
- // Repeated field of dynamically typed values.
- repeated Value values = 1;
-}
diff --git a/include/google/protobuf/stubs/bytestream.h b/include/google/protobuf/stubs/bytestream.h
deleted file mode 100644
index c7a48dea54..0000000000
--- a/include/google/protobuf/stubs/bytestream.h
+++ /dev/null
@@ -1,351 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file declares the ByteSink and ByteSource abstract interfaces. These
-// interfaces represent objects that consume (ByteSink) or produce (ByteSource)
-// a sequence of bytes. Using these abstract interfaces in your APIs can help
-// make your code work with a variety of input and output types.
-//
-// This file also declares the following commonly used implementations of these
-// interfaces.
-//
-// ByteSink:
-// UncheckedArrayByteSink Writes to an array, without bounds checking
-// CheckedArrayByteSink Writes to an array, with bounds checking
-// GrowingArrayByteSink Allocates and writes to a growable buffer
-// StringByteSink Writes to an STL string
-// NullByteSink Consumes a never-ending stream of bytes
-//
-// ByteSource:
-// ArrayByteSource Reads from an array or string/StringPiece
-// LimitedByteSource Limits the number of bytes read from an
-
-#ifndef GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_
-#define GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_
-
-#include <stddef.h>
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/stringpiece.h>
-
-#include <google/protobuf/port_def.inc>
-
-class CordByteSink;
-
-namespace google {
-namespace protobuf {
-namespace strings {
-
-// An abstract interface for an object that consumes a sequence of bytes. This
-// interface offers a way to append data as well as a Flush() function.
-//
-// Example:
-//
-// string my_data;
-// ...
-// ByteSink* sink = ...
-// sink->Append(my_data.data(), my_data.size());
-// sink->Flush();
-//
-class PROTOBUF_EXPORT ByteSink {
- public:
- ByteSink() {}
- virtual ~ByteSink() {}
-
- // Appends the "n" bytes starting at "bytes".
- virtual void Append(const char* bytes, size_t n) = 0;
-
- // Flushes internal buffers. The default implementation does nothing. ByteSink
- // subclasses may use internal buffers that require calling Flush() at the end
- // of the stream.
- virtual void Flush();
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ByteSink);
-};
-
-// An abstract interface for an object that produces a fixed-size sequence of
-// bytes.
-//
-// Example:
-//
-// ByteSource* source = ...
-// while (source->Available() > 0) {
-// StringPiece data = source->Peek();
-// ... do something with "data" ...
-// source->Skip(data.length());
-// }
-//
-class PROTOBUF_EXPORT ByteSource {
- public:
- ByteSource() {}
- virtual ~ByteSource() {}
-
- // Returns the number of bytes left to read from the source. Available()
- // should decrease by N each time Skip(N) is called. Available() may not
- // increase. Available() returning 0 indicates that the ByteSource is
- // exhausted.
- //
- // Note: Size() may have been a more appropriate name as it's more
- // indicative of the fixed-size nature of a ByteSource.
- virtual size_t Available() const = 0;
-
- // Returns a StringPiece of the next contiguous region of the source. Does not
- // reposition the source. The returned region is empty iff Available() == 0.
- //
- // The returned region is valid until the next call to Skip() or until this
- // object is destroyed, whichever occurs first.
- //
- // The length of the returned StringPiece will be <= Available().
- virtual StringPiece Peek() = 0;
-
- // Skips the next n bytes. Invalidates any StringPiece returned by a previous
- // call to Peek().
- //
- // REQUIRES: Available() >= n
- virtual void Skip(size_t n) = 0;
-
- // Writes the next n bytes in this ByteSource to the given ByteSink, and
- // advances this ByteSource past the copied bytes. The default implementation
- // of this method just copies the bytes normally, but subclasses might
- // override CopyTo to optimize certain cases.
- //
- // REQUIRES: Available() >= n
- virtual void CopyTo(ByteSink* sink, size_t n);
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ByteSource);
-};
-
-//
-// Some commonly used implementations of ByteSink
-//
-
-// Implementation of ByteSink that writes to an unsized byte array. No
-// bounds-checking is performed--it is the caller's responsibility to ensure
-// that the destination array is large enough.
-//
-// Example:
-//
-// char buf[10];
-// UncheckedArrayByteSink sink(buf);
-// sink.Append("hi", 2); // OK
-// sink.Append(data, 100); // WOOPS! Overflows buf[10].
-//
-class PROTOBUF_EXPORT UncheckedArrayByteSink : public ByteSink {
- public:
- explicit UncheckedArrayByteSink(char* dest) : dest_(dest) {}
- virtual void Append(const char* data, size_t n) override;
-
- // Returns the current output pointer so that a caller can see how many bytes
- // were produced.
- //
- // Note: this method is not part of the ByteSink interface.
- char* CurrentDestination() const { return dest_; }
-
- private:
- char* dest_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(UncheckedArrayByteSink);
-};
-
-// Implementation of ByteSink that writes to a sized byte array. This sink will
-// not write more than "capacity" bytes to outbuf. Once "capacity" bytes are
-// appended, subsequent bytes will be ignored and Overflowed() will return true.
-// Overflowed() does not cause a runtime error (i.e., it does not CHECK fail).
-//
-// Example:
-//
-// char buf[10];
-// CheckedArrayByteSink sink(buf, 10);
-// sink.Append("hi", 2); // OK
-// sink.Append(data, 100); // Will only write 8 more bytes
-//
-class PROTOBUF_EXPORT CheckedArrayByteSink : public ByteSink {
- public:
- CheckedArrayByteSink(char* outbuf, size_t capacity);
- virtual void Append(const char* bytes, size_t n) override;
-
- // Returns the number of bytes actually written to the sink.
- size_t NumberOfBytesWritten() const { return size_; }
-
- // Returns true if any bytes were discarded, i.e., if there was an
- // attempt to write more than 'capacity' bytes.
- bool Overflowed() const { return overflowed_; }
-
- private:
- char* outbuf_;
- const size_t capacity_;
- size_t size_;
- bool overflowed_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CheckedArrayByteSink);
-};
-
-// Implementation of ByteSink that allocates an internal buffer (a char array)
-// and expands it as needed to accommodate appended data (similar to a string),
-// and allows the caller to take ownership of the internal buffer via the
-// GetBuffer() method. The buffer returned from GetBuffer() must be deleted by
-// the caller with delete[]. GetBuffer() also sets the internal buffer to be
-// empty, and subsequent appends to the sink will create a new buffer. The
-// destructor will free the internal buffer if GetBuffer() was not called.
-//
-// Example:
-//
-// GrowingArrayByteSink sink(10);
-// sink.Append("hi", 2);
-// sink.Append(data, n);
-// const char* buf = sink.GetBuffer(); // Ownership transferred
-// delete[] buf;
-//
-class PROTOBUF_EXPORT GrowingArrayByteSink : public strings::ByteSink {
- public:
- explicit GrowingArrayByteSink(size_t estimated_size);
- virtual ~GrowingArrayByteSink();
- virtual void Append(const char* bytes, size_t n) override;
-
- // Returns the allocated buffer, and sets nbytes to its size. The caller takes
- // ownership of the buffer and must delete it with delete[].
- char* GetBuffer(size_t* nbytes);
-
- private:
- void Expand(size_t amount);
- void ShrinkToFit();
-
- size_t capacity_;
- char* buf_;
- size_t size_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(GrowingArrayByteSink);
-};
-
-// Implementation of ByteSink that appends to the given string.
-// Existing contents of "dest" are not modified; new data is appended.
-//
-// Example:
-//
-// string dest = "Hello ";
-// StringByteSink sink(&dest);
-// sink.Append("World", 5);
-// assert(dest == "Hello World");
-//
-class PROTOBUF_EXPORT StringByteSink : public ByteSink {
- public:
- explicit StringByteSink(std::string* dest) : dest_(dest) {}
- virtual void Append(const char* data, size_t n) override;
-
- private:
- std::string* dest_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringByteSink);
-};
-
-// Implementation of ByteSink that discards all data.
-//
-// Example:
-//
-// NullByteSink sink;
-// sink.Append(data, data.size()); // All data ignored.
-//
-class PROTOBUF_EXPORT NullByteSink : public ByteSink {
- public:
- NullByteSink() {}
- void Append(const char* /*data*/, size_t /*n*/) override {}
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(NullByteSink);
-};
-
-//
-// Some commonly used implementations of ByteSource
-//
-
-// Implementation of ByteSource that reads from a StringPiece.
-//
-// Example:
-//
-// string data = "Hello";
-// ArrayByteSource source(data);
-// assert(source.Available() == 5);
-// assert(source.Peek() == "Hello");
-//
-class PROTOBUF_EXPORT ArrayByteSource : public ByteSource {
- public:
- explicit ArrayByteSource(StringPiece s) : input_(s) {}
-
- virtual size_t Available() const override;
- virtual StringPiece Peek() override;
- virtual void Skip(size_t n) override;
-
- private:
- StringPiece input_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayByteSource);
-};
-
-// Implementation of ByteSource that wraps another ByteSource, limiting the
-// number of bytes returned.
-//
-// The caller maintains ownership of the underlying source, and may not use the
-// underlying source while using the LimitByteSource object. The underlying
-// source's pointer is advanced by n bytes every time this LimitByteSource
-// object is advanced by n.
-//
-// Example:
-//
-// string data = "Hello World";
-// ArrayByteSource abs(data);
-// assert(abs.Available() == data.size());
-//
-// LimitByteSource limit(abs, 5);
-// assert(limit.Available() == 5);
-// assert(limit.Peek() == "Hello");
-//
-class PROTOBUF_EXPORT LimitByteSource : public ByteSource {
- public:
- // Returns at most "limit" bytes from "source".
- LimitByteSource(ByteSource* source, size_t limit);
-
- virtual size_t Available() const override;
- virtual StringPiece Peek() override;
- virtual void Skip(size_t n) override;
-
- // We override CopyTo so that we can forward to the underlying source, in
- // case it has an efficient implementation of CopyTo.
- virtual void CopyTo(ByteSink* sink, size_t n) override;
-
- private:
- ByteSource* source_;
- size_t limit_;
-};
-
-} // namespace strings
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_BYTESTREAM_H_
diff --git a/include/google/protobuf/stubs/callback.h b/include/google/protobuf/stubs/callback.h
deleted file mode 100644
index 43d546d199..0000000000
--- a/include/google/protobuf/stubs/callback.h
+++ /dev/null
@@ -1,583 +0,0 @@
-#ifndef GOOGLE_PROTOBUF_STUBS_CALLBACK_H_
-#define GOOGLE_PROTOBUF_STUBS_CALLBACK_H_
-
-#include <type_traits>
-
-#include <google/protobuf/stubs/macros.h>
-
-#include <google/protobuf/port_def.inc>
-
-// ===================================================================
-// emulates google3/base/callback.h
-
-namespace google {
-namespace protobuf {
-
-// Abstract interface for a callback. When calling an RPC, you must provide
-// a Closure to call when the procedure completes. See the Service interface
-// in service.h.
-//
-// To automatically construct a Closure which calls a particular function or
-// method with a particular set of parameters, use the NewCallback() function.
-// Example:
-// void FooDone(const FooResponse* response) {
-// ...
-// }
-//
-// void CallFoo() {
-// ...
-// // When done, call FooDone() and pass it a pointer to the response.
-// Closure* callback = NewCallback(&FooDone, response);
-// // Make the call.
-// service->Foo(controller, request, response, callback);
-// }
-//
-// Example that calls a method:
-// class Handler {
-// public:
-// ...
-//
-// void FooDone(const FooResponse* response) {
-// ...
-// }
-//
-// void CallFoo() {
-// ...
-// // When done, call FooDone() and pass it a pointer to the response.
-// Closure* callback = NewCallback(this, &Handler::FooDone, response);
-// // Make the call.
-// service->Foo(controller, request, response, callback);
-// }
-// };
-//
-// Currently NewCallback() supports binding zero, one, or two arguments.
-//
-// Callbacks created with NewCallback() automatically delete themselves when
-// executed. They should be used when a callback is to be called exactly
-// once (usually the case with RPC callbacks). If a callback may be called
-// a different number of times (including zero), create it with
-// NewPermanentCallback() instead. You are then responsible for deleting the
-// callback (using the "delete" keyword as normal).
-//
-// Note that NewCallback() is a bit touchy regarding argument types. Generally,
-// the values you provide for the parameter bindings must exactly match the
-// types accepted by the callback function. For example:
-// void Foo(std::string s);
-// NewCallback(&Foo, "foo"); // WON'T WORK: const char* != string
-// NewCallback(&Foo, std::string("foo")); // WORKS
-// Also note that the arguments cannot be references:
-// void Foo(const std::string& s);
-// std::string my_str;
-// NewCallback(&Foo, my_str); // WON'T WORK: Can't use references.
-// However, correctly-typed pointers will work just fine.
-class PROTOBUF_EXPORT Closure {
- public:
- Closure() {}
- virtual ~Closure();
-
- virtual void Run() = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Closure);
-};
-
-template<typename R>
-class ResultCallback {
- public:
- ResultCallback() {}
- virtual ~ResultCallback() {}
-
- virtual R Run() = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ResultCallback);
-};
-
-template <typename R, typename A1>
-class PROTOBUF_EXPORT ResultCallback1 {
- public:
- ResultCallback1() {}
- virtual ~ResultCallback1() {}
-
- virtual R Run(A1) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ResultCallback1);
-};
-
-template <typename R, typename A1, typename A2>
-class PROTOBUF_EXPORT ResultCallback2 {
- public:
- ResultCallback2() {}
- virtual ~ResultCallback2() {}
-
- virtual R Run(A1,A2) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ResultCallback2);
-};
-
-namespace internal {
-
-class PROTOBUF_EXPORT FunctionClosure0 : public Closure {
- public:
- typedef void (*FunctionType)();
-
- FunctionClosure0(FunctionType function, bool self_deleting)
- : function_(function), self_deleting_(self_deleting) {}
- ~FunctionClosure0();
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- function_();
- if (needs_delete) delete this;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
-};
-
-template <typename Class>
-class MethodClosure0 : public Closure {
- public:
- typedef void (Class::*MethodType)();
-
- MethodClosure0(Class* object, MethodType method, bool self_deleting)
- : object_(object), method_(method), self_deleting_(self_deleting) {}
- ~MethodClosure0() {}
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- (object_->*method_)();
- if (needs_delete) delete this;
- }
-
- private:
- Class* object_;
- MethodType method_;
- bool self_deleting_;
-};
-
-template <typename Arg1>
-class FunctionClosure1 : public Closure {
- public:
- typedef void (*FunctionType)(Arg1 arg1);
-
- FunctionClosure1(FunctionType function, bool self_deleting,
- Arg1 arg1)
- : function_(function), self_deleting_(self_deleting),
- arg1_(arg1) {}
- ~FunctionClosure1() {}
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- function_(arg1_);
- if (needs_delete) delete this;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
- Arg1 arg1_;
-};
-
-template <typename Class, typename Arg1>
-class MethodClosure1 : public Closure {
- public:
- typedef void (Class::*MethodType)(Arg1 arg1);
-
- MethodClosure1(Class* object, MethodType method, bool self_deleting,
- Arg1 arg1)
- : object_(object), method_(method), self_deleting_(self_deleting),
- arg1_(arg1) {}
- ~MethodClosure1() {}
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- (object_->*method_)(arg1_);
- if (needs_delete) delete this;
- }
-
- private:
- Class* object_;
- MethodType method_;
- bool self_deleting_;
- Arg1 arg1_;
-};
-
-template <typename Arg1, typename Arg2>
-class FunctionClosure2 : public Closure {
- public:
- typedef void (*FunctionType)(Arg1 arg1, Arg2 arg2);
-
- FunctionClosure2(FunctionType function, bool self_deleting,
- Arg1 arg1, Arg2 arg2)
- : function_(function), self_deleting_(self_deleting),
- arg1_(arg1), arg2_(arg2) {}
- ~FunctionClosure2() {}
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- function_(arg1_, arg2_);
- if (needs_delete) delete this;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
- Arg1 arg1_;
- Arg2 arg2_;
-};
-
-template <typename Class, typename Arg1, typename Arg2>
-class MethodClosure2 : public Closure {
- public:
- typedef void (Class::*MethodType)(Arg1 arg1, Arg2 arg2);
-
- MethodClosure2(Class* object, MethodType method, bool self_deleting,
- Arg1 arg1, Arg2 arg2)
- : object_(object), method_(method), self_deleting_(self_deleting),
- arg1_(arg1), arg2_(arg2) {}
- ~MethodClosure2() {}
-
- void Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- (object_->*method_)(arg1_, arg2_);
- if (needs_delete) delete this;
- }
-
- private:
- Class* object_;
- MethodType method_;
- bool self_deleting_;
- Arg1 arg1_;
- Arg2 arg2_;
-};
-
-template<typename R>
-class FunctionResultCallback_0_0 : public ResultCallback<R> {
- public:
- typedef R (*FunctionType)();
-
- FunctionResultCallback_0_0(FunctionType function, bool self_deleting)
- : function_(function), self_deleting_(self_deleting) {}
- ~FunctionResultCallback_0_0() {}
-
- R Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- R result = function_();
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
-};
-
-template<typename R, typename P1>
-class FunctionResultCallback_1_0 : public ResultCallback<R> {
- public:
- typedef R (*FunctionType)(P1);
-
- FunctionResultCallback_1_0(FunctionType function, bool self_deleting,
- P1 p1)
- : function_(function), self_deleting_(self_deleting), p1_(p1) {}
- ~FunctionResultCallback_1_0() {}
-
- R Run() override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- R result = function_(p1_);
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
- P1 p1_;
-};
-
-template<typename R, typename Arg1>
-class FunctionResultCallback_0_1 : public ResultCallback1<R, Arg1> {
- public:
- typedef R (*FunctionType)(Arg1 arg1);
-
- FunctionResultCallback_0_1(FunctionType function, bool self_deleting)
- : function_(function), self_deleting_(self_deleting) {}
- ~FunctionResultCallback_0_1() {}
-
- R Run(Arg1 a1) override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- R result = function_(a1);
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
-};
-
-template<typename R, typename P1, typename A1>
-class FunctionResultCallback_1_1 : public ResultCallback1<R, A1> {
- public:
- typedef R (*FunctionType)(P1, A1);
-
- FunctionResultCallback_1_1(FunctionType function, bool self_deleting,
- P1 p1)
- : function_(function), self_deleting_(self_deleting), p1_(p1) {}
- ~FunctionResultCallback_1_1() {}
-
- R Run(A1 a1) override {
- bool needs_delete = self_deleting_; // read in case callback deletes
- R result = function_(p1_, a1);
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- FunctionType function_;
- bool self_deleting_;
- P1 p1_;
-};
-
-template <typename T>
-struct InternalConstRef {
- typedef typename std::remove_reference<T>::type base_type;
- typedef const base_type& type;
-};
-
-template<typename R, typename T>
-class MethodResultCallback_0_0 : public ResultCallback<R> {
- public:
- typedef R (T::*MethodType)();
- MethodResultCallback_0_0(T* object, MethodType method, bool self_deleting)
- : object_(object),
- method_(method),
- self_deleting_(self_deleting) {}
- ~MethodResultCallback_0_0() {}
-
- R Run() {
- bool needs_delete = self_deleting_;
- R result = (object_->*method_)();
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- T* object_;
- MethodType method_;
- bool self_deleting_;
-};
-
-template <typename R, typename T, typename P1, typename P2, typename P3,
- typename P4, typename P5, typename P6, typename A1, typename A2>
-class MethodResultCallback_6_2 : public ResultCallback2<R, A1, A2> {
- public:
- typedef R (T::*MethodType)(P1, P2, P3, P4, P5, P6, A1, A2);
- MethodResultCallback_6_2(T* object, MethodType method, bool self_deleting,
- P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
- : object_(object),
- method_(method),
- self_deleting_(self_deleting),
- p1_(p1),
- p2_(p2),
- p3_(p3),
- p4_(p4),
- p5_(p5),
- p6_(p6) {}
- ~MethodResultCallback_6_2() {}
-
- R Run(A1 a1, A2 a2) override {
- bool needs_delete = self_deleting_;
- R result = (object_->*method_)(p1_, p2_, p3_, p4_, p5_, p6_, a1, a2);
- if (needs_delete) delete this;
- return result;
- }
-
- private:
- T* object_;
- MethodType method_;
- bool self_deleting_;
- typename std::remove_reference<P1>::type p1_;
- typename std::remove_reference<P2>::type p2_;
- typename std::remove_reference<P3>::type p3_;
- typename std::remove_reference<P4>::type p4_;
- typename std::remove_reference<P5>::type p5_;
- typename std::remove_reference<P6>::type p6_;
-};
-
-} // namespace internal
-
-// See Closure.
-inline Closure* NewCallback(void (*function)()) {
- return new internal::FunctionClosure0(function, true);
-}
-
-// See Closure.
-inline Closure* NewPermanentCallback(void (*function)()) {
- return new internal::FunctionClosure0(function, false);
-}
-
-// See Closure.
-template <typename Class>
-inline Closure* NewCallback(Class* object, void (Class::*method)()) {
- return new internal::MethodClosure0<Class>(object, method, true);
-}
-
-// See Closure.
-template <typename Class>
-inline Closure* NewPermanentCallback(Class* object, void (Class::*method)()) {
- return new internal::MethodClosure0<Class>(object, method, false);
-}
-
-// See Closure.
-template <typename Arg1>
-inline Closure* NewCallback(void (*function)(Arg1),
- Arg1 arg1) {
- return new internal::FunctionClosure1<Arg1>(function, true, arg1);
-}
-
-// See Closure.
-template <typename Arg1>
-inline Closure* NewPermanentCallback(void (*function)(Arg1),
- Arg1 arg1) {
- return new internal::FunctionClosure1<Arg1>(function, false, arg1);
-}
-
-// See Closure.
-template <typename Class, typename Arg1>
-inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1),
- Arg1 arg1) {
- return new internal::MethodClosure1<Class, Arg1>(object, method, true, arg1);
-}
-
-// See Closure.
-template <typename Class, typename Arg1>
-inline Closure* NewPermanentCallback(Class* object, void (Class::*method)(Arg1),
- Arg1 arg1) {
- return new internal::MethodClosure1<Class, Arg1>(object, method, false, arg1);
-}
-
-// See Closure.
-template <typename Arg1, typename Arg2>
-inline Closure* NewCallback(void (*function)(Arg1, Arg2),
- Arg1 arg1, Arg2 arg2) {
- return new internal::FunctionClosure2<Arg1, Arg2>(
- function, true, arg1, arg2);
-}
-
-// See Closure.
-template <typename Arg1, typename Arg2>
-inline Closure* NewPermanentCallback(void (*function)(Arg1, Arg2),
- Arg1 arg1, Arg2 arg2) {
- return new internal::FunctionClosure2<Arg1, Arg2>(
- function, false, arg1, arg2);
-}
-
-// See Closure.
-template <typename Class, typename Arg1, typename Arg2>
-inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1, Arg2),
- Arg1 arg1, Arg2 arg2) {
- return new internal::MethodClosure2<Class, Arg1, Arg2>(
- object, method, true, arg1, arg2);
-}
-
-// See Closure.
-template <typename Class, typename Arg1, typename Arg2>
-inline Closure* NewPermanentCallback(
- Class* object, void (Class::*method)(Arg1, Arg2),
- Arg1 arg1, Arg2 arg2) {
- return new internal::MethodClosure2<Class, Arg1, Arg2>(
- object, method, false, arg1, arg2);
-}
-
-// See ResultCallback
-template<typename R>
-inline ResultCallback<R>* NewCallback(R (*function)()) {
- return new internal::FunctionResultCallback_0_0<R>(function, true);
-}
-
-// See ResultCallback
-template<typename R>
-inline ResultCallback<R>* NewPermanentCallback(R (*function)()) {
- return new internal::FunctionResultCallback_0_0<R>(function, false);
-}
-
-// See ResultCallback
-template<typename R, typename P1>
-inline ResultCallback<R>* NewCallback(R (*function)(P1), P1 p1) {
- return new internal::FunctionResultCallback_1_0<R, P1>(
- function, true, p1);
-}
-
-// See ResultCallback
-template<typename R, typename P1>
-inline ResultCallback<R>* NewPermanentCallback(
- R (*function)(P1), P1 p1) {
- return new internal::FunctionResultCallback_1_0<R, P1>(
- function, false, p1);
-}
-
-// See ResultCallback1
-template<typename R, typename A1>
-inline ResultCallback1<R, A1>* NewCallback(R (*function)(A1)) {
- return new internal::FunctionResultCallback_0_1<R, A1>(function, true);
-}
-
-// See ResultCallback1
-template<typename R, typename A1>
-inline ResultCallback1<R, A1>* NewPermanentCallback(R (*function)(A1)) {
- return new internal::FunctionResultCallback_0_1<R, A1>(function, false);
-}
-
-// See ResultCallback1
-template<typename R, typename P1, typename A1>
-inline ResultCallback1<R, A1>* NewCallback(R (*function)(P1, A1), P1 p1) {
- return new internal::FunctionResultCallback_1_1<R, P1, A1>(
- function, true, p1);
-}
-
-// See ResultCallback1
-template<typename R, typename P1, typename A1>
-inline ResultCallback1<R, A1>* NewPermanentCallback(
- R (*function)(P1, A1), P1 p1) {
- return new internal::FunctionResultCallback_1_1<R, P1, A1>(
- function, false, p1);
-}
-
-// See MethodResultCallback_0_0
-template <typename R, typename T1, typename T2>
-inline ResultCallback<R>* NewPermanentCallback(
- T1* object, R (T2::*function)()) {
- return new internal::MethodResultCallback_0_0<R, T1>(object, function, false);
-}
-
-// See MethodResultCallback_6_2
-template <typename R, typename T, typename P1, typename P2, typename P3,
- typename P4, typename P5, typename P6, typename A1, typename A2>
-inline ResultCallback2<R, A1, A2>* NewPermanentCallback(
- T* object, R (T::*function)(P1, P2, P3, P4, P5, P6, A1, A2),
- typename internal::InternalConstRef<P1>::type p1,
- typename internal::InternalConstRef<P2>::type p2,
- typename internal::InternalConstRef<P3>::type p3,
- typename internal::InternalConstRef<P4>::type p4,
- typename internal::InternalConstRef<P5>::type p5,
- typename internal::InternalConstRef<P6>::type p6) {
- return new internal::MethodResultCallback_6_2<R, T, P1, P2, P3, P4, P5, P6,
- A1, A2>(object, function, false,
- p1, p2, p3, p4, p5, p6);
-}
-
-// A function which does nothing. Useful for creating no-op callbacks, e.g.:
-// Closure* nothing = NewCallback(&DoNothing);
-void PROTOBUF_EXPORT DoNothing();
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_CALLBACK_H_
diff --git a/include/google/protobuf/stubs/casts.h b/include/google/protobuf/stubs/casts.h
deleted file mode 100644
index ad29dac1f8..0000000000
--- a/include/google/protobuf/stubs/casts.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2014 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_CASTS_H__
-#define GOOGLE_PROTOBUF_CASTS_H__
-
-#include <google/protobuf/stubs/common.h>
-
-#include <google/protobuf/port_def.inc>
-#include <type_traits>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Use implicit_cast as a safe version of static_cast or const_cast
-// for upcasting in the type hierarchy (i.e. casting a pointer to Foo
-// to a pointer to SuperclassOfFoo or casting a pointer to Foo to
-// a const pointer to Foo).
-// When you use implicit_cast, the compiler checks that the cast is safe.
-// Such explicit implicit_casts are necessary in surprisingly many
-// situations where C++ demands an exact type match instead of an
-// argument type convertible to a target type.
-//
-// The From type can be inferred, so the preferred syntax for using
-// implicit_cast is the same as for static_cast etc.:
-//
-// implicit_cast<ToType>(expr)
-//
-// implicit_cast would have been part of the C++ standard library,
-// but the proposal was submitted too late. It will probably make
-// its way into the language in the future.
-template<typename To, typename From>
-inline To implicit_cast(From const &f) {
- return f;
-}
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use implicit_cast<>, since upcasts
-// always succeed. When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo? It
-// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
-// when you downcast, you should use this macro. In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not). In normal mode, we do the efficient static_cast<>
-// instead. Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-// This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-
-template<typename To, typename From> // use like this: down_cast<T*>(foo);
-inline To down_cast(From* f) { // so we only accept pointers
- // Ensures that To is a sub-type of From *. This test is here only
- // for compile-time type checking, and has no overhead in an
- // optimized build at run-time, as it will be optimized away
- // completely.
- if (false) {
- implicit_cast<From*, To>(0);
- }
-
-#if !defined(NDEBUG) && PROTOBUF_RTTI
- assert(f == nullptr || dynamic_cast<To>(f) != nullptr); // RTTI: debug mode only!
-#endif
- return static_cast<To>(f);
-}
-
-template<typename To, typename From> // use like this: down_cast<T&>(foo);
-inline To down_cast(From& f) {
- typedef typename std::remove_reference<To>::type* ToAsPointer;
- // Ensures that To is a sub-type of From *. This test is here only
- // for compile-time type checking, and has no overhead in an
- // optimized build at run-time, as it will be optimized away
- // completely.
- if (false) {
- implicit_cast<From*, ToAsPointer>(0);
- }
-
-#if !defined(NDEBUG) && PROTOBUF_RTTI
- // RTTI: debug mode only!
- assert(dynamic_cast<ToAsPointer>(&f) != nullptr);
-#endif
- return *static_cast<ToAsPointer>(&f);
-}
-
-template<typename To, typename From>
-inline To bit_cast(const From& from) {
- static_assert(sizeof(From) == sizeof(To), "bit_cast_with_different_sizes");
- To dest;
- memcpy(&dest, &from, sizeof(dest));
- return dest;
-}
-
-} // namespace internal
-
-// We made these internal so that they would show up as such in the docs,
-// but we don't want to stick "internal::" in front of them everywhere.
-using internal::implicit_cast;
-using internal::down_cast;
-using internal::bit_cast;
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_CASTS_H__
diff --git a/include/google/protobuf/stubs/common.h b/include/google/protobuf/stubs/common.h
deleted file mode 100644
index c4d26369a3..0000000000
--- a/include/google/protobuf/stubs/common.h
+++ /dev/null
@@ -1,197 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda) and others
-//
-// Contains basic types and utilities used by the rest of the library.
-
-#ifndef GOOGLE_PROTOBUF_COMMON_H__
-#define GOOGLE_PROTOBUF_COMMON_H__
-
-#include <algorithm>
-#include <iostream>
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/macros.h>
-#include <google/protobuf/stubs/platform_macros.h>
-#include <google/protobuf/stubs/port.h>
-#include <google/protobuf/stubs/stringpiece.h>
-
-#ifndef PROTOBUF_USE_EXCEPTIONS
-#if defined(_MSC_VER) && defined(_CPPUNWIND)
- #define PROTOBUF_USE_EXCEPTIONS 1
-#elif defined(__EXCEPTIONS)
- #define PROTOBUF_USE_EXCEPTIONS 1
-#else
- #define PROTOBUF_USE_EXCEPTIONS 0
-#endif
-#endif
-
-#if PROTOBUF_USE_EXCEPTIONS
-#include <exception>
-#endif
-#if defined(__APPLE__)
-#include <TargetConditionals.h> // for TARGET_OS_IPHONE
-#endif
-
-#if defined(__ANDROID__) || defined(GOOGLE_PROTOBUF_OS_ANDROID) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(GOOGLE_PROTOBUF_OS_IPHONE)
-#include <pthread.h>
-#endif
-
-#include <google/protobuf/port_def.inc>
-
-namespace std {}
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Some of these constants are macros rather than const ints so that they can
-// be used in #if directives.
-
-// The current version, represented as a single integer to make comparison
-// easier: major * 10^6 + minor * 10^3 + micro
-#define GOOGLE_PROTOBUF_VERSION 3021004
-
-// A suffix string for alpha, beta or rc releases. Empty for stable releases.
-#define GOOGLE_PROTOBUF_VERSION_SUFFIX ""
-
-// The minimum header version which works with the current version of
-// the library. This constant should only be used by protoc's C++ code
-// generator.
-static const int kMinHeaderVersionForLibrary = 3021000;
-
-// The minimum protoc version which works with the current version of the
-// headers.
-#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 3021000
-
-// The minimum header version which works with the current version of
-// protoc. This constant should only be used in VerifyVersion().
-static const int kMinHeaderVersionForProtoc = 3021000;
-
-// Verifies that the headers and libraries are compatible. Use the macro
-// below to call this.
-void PROTOBUF_EXPORT VerifyVersion(int headerVersion, int minLibraryVersion,
- const char* filename);
-
-// Converts a numeric version number to a string.
-std::string PROTOBUF_EXPORT VersionString(int version);
-
-} // namespace internal
-
-// Place this macro in your main() function (or somewhere before you attempt
-// to use the protobuf library) to verify that the version you link against
-// matches the headers you compiled against. If a version mismatch is
-// detected, the process will abort.
-#define GOOGLE_PROTOBUF_VERIFY_VERSION \
- ::google::protobuf::internal::VerifyVersion( \
- GOOGLE_PROTOBUF_VERSION, GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION, \
- __FILE__)
-
-
-// ===================================================================
-// from google3/util/utf8/public/unilib.h
-
-namespace internal {
-
-// Checks if the buffer contains structurally-valid UTF-8. Implemented in
-// structurally_valid.cc.
-PROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char* buf, int len);
-
-inline bool IsStructurallyValidUTF8(StringPiece str) {
- return IsStructurallyValidUTF8(str.data(), static_cast<int>(str.length()));
-}
-
-// Returns initial number of bytes of structurally valid UTF-8.
-PROTOBUF_EXPORT int UTF8SpnStructurallyValid(StringPiece str);
-
-// Coerce UTF-8 byte string in src_str to be
-// a structurally-valid equal-length string by selectively
-// overwriting illegal bytes with replace_char (typically ' ' or '?').
-// replace_char must be legal printable 7-bit Ascii 0x20..0x7e.
-// src_str is read-only.
-//
-// Returns pointer to output buffer, src_str.data() if no changes were made,
-// or idst if some bytes were changed. idst is allocated by the caller
-// and must be at least as big as src_str
-//
-// Optimized for: all structurally valid and no byte copying is done.
-//
-PROTOBUF_EXPORT char* UTF8CoerceToStructurallyValid(StringPiece str, char* dst,
- char replace_char);
-
-} // namespace internal
-
-// This lives in message_lite.h now, but we leave this here for any users that
-// #include common.h and not message_lite.h.
-PROTOBUF_EXPORT void ShutdownProtobufLibrary();
-
-namespace internal {
-
-// Strongly references the given variable such that the linker will be forced
-// to pull in this variable's translation unit.
-template <typename T>
-void StrongReference(const T& var) {
- auto volatile unused = &var;
- (void)&unused; // Use address to avoid an extra load of "unused".
-}
-
-} // namespace internal
-
-#if PROTOBUF_USE_EXCEPTIONS
-class FatalException : public std::exception {
- public:
- FatalException(const char* filename, int line, const std::string& message)
- : filename_(filename), line_(line), message_(message) {}
- virtual ~FatalException() throw();
-
- const char* what() const throw() override;
-
- const char* filename() const { return filename_; }
- int line() const { return line_; }
- const std::string& message() const { return message_; }
-
- private:
- const char* filename_;
- const int line_;
- const std::string message_;
-};
-#endif
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_COMMON_H__
diff --git a/include/google/protobuf/stubs/hash.h b/include/google/protobuf/stubs/hash.h
deleted file mode 100644
index a7ec068074..0000000000
--- a/include/google/protobuf/stubs/hash.h
+++ /dev/null
@@ -1,114 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-
-#ifndef GOOGLE_PROTOBUF_STUBS_HASH_H__
-#define GOOGLE_PROTOBUF_STUBS_HASH_H__
-
-#include <cstring>
-#include <string>
-#include <unordered_map>
-#include <unordered_set>
-
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE_DECLARATION_START \
- namespace google { \
- namespace protobuf {
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE_DECLARATION_END }}
-
-namespace google {
-namespace protobuf {
-
-template <typename Key>
-struct hash : public std::hash<Key> {};
-
-template <typename Key>
-struct hash<const Key*> {
- inline size_t operator()(const Key* key) const {
- return reinterpret_cast<size_t>(key);
- }
-};
-
-// Unlike the old SGI version, the TR1 "hash" does not special-case char*. So,
-// we go ahead and provide our own implementation.
-template <>
-struct hash<const char*> {
- inline size_t operator()(const char* str) const {
- size_t result = 0;
- for (; *str != '\0'; str++) {
- result = 5 * result + static_cast<size_t>(*str);
- }
- return result;
- }
-};
-
-template<>
-struct hash<bool> {
- size_t operator()(bool x) const {
- return static_cast<size_t>(x);
- }
-};
-
-template <>
-struct hash<std::string> {
- inline size_t operator()(const std::string& key) const {
- return hash<const char*>()(key.c_str());
- }
-
- static const size_t bucket_size = 4;
- static const size_t min_buckets = 8;
- inline bool operator()(const std::string& a, const std::string& b) const {
- return a < b;
- }
-};
-
-template <typename First, typename Second>
-struct hash<std::pair<First, Second> > {
- inline size_t operator()(const std::pair<First, Second>& key) const {
- size_t first_hash = hash<First>()(key.first);
- size_t second_hash = hash<Second>()(key.second);
-
- // FIXME(kenton): What is the best way to compute this hash? I have
- // no idea! This seems a bit better than an XOR.
- return first_hash * ((1 << 16) - 1) + second_hash;
- }
-
- static const size_t bucket_size = 4;
- static const size_t min_buckets = 8;
- inline bool operator()(const std::pair<First, Second>& a,
- const std::pair<First, Second>& b) const {
- return a < b;
- }
-};
-
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_STUBS_HASH_H__
diff --git a/include/google/protobuf/stubs/logging.h b/include/google/protobuf/stubs/logging.h
deleted file mode 100644
index 8ecc2fa0f1..0000000000
--- a/include/google/protobuf/stubs/logging.h
+++ /dev/null
@@ -1,239 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_LOGGING_H_
-#define GOOGLE_PROTOBUF_STUBS_LOGGING_H_
-
-#include <google/protobuf/stubs/macros.h>
-#include <google/protobuf/stubs/port.h>
-#include <google/protobuf/stubs/status.h>
-#include <google/protobuf/stubs/stringpiece.h>
-
-#include <google/protobuf/port_def.inc>
-
-// ===================================================================
-// emulates google3/base/logging.h
-
-namespace google {
-namespace protobuf {
-
-enum LogLevel {
- LOGLEVEL_INFO, // Informational. This is never actually used by
- // libprotobuf.
- LOGLEVEL_WARNING, // Warns about issues that, although not technically a
- // problem now, could cause problems in the future. For
- // example, a // warning will be printed when parsing a
- // message that is near the message size limit.
- LOGLEVEL_ERROR, // An error occurred which should never happen during
- // normal use.
- LOGLEVEL_FATAL, // An error occurred from which the library cannot
- // recover. This usually indicates a programming error
- // in the code which calls the library, especially when
- // compiled in debug mode.
-
-#ifdef NDEBUG
- LOGLEVEL_DFATAL = LOGLEVEL_ERROR
-#else
- LOGLEVEL_DFATAL = LOGLEVEL_FATAL
-#endif
-};
-
-class uint128;
-namespace internal {
-
-class LogFinisher;
-
-class PROTOBUF_EXPORT LogMessage {
- public:
- LogMessage(LogLevel level, const char* filename, int line);
- ~LogMessage();
-
- LogMessage& operator<<(const std::string& value);
- LogMessage& operator<<(const char* value);
- LogMessage& operator<<(char value);
- LogMessage& operator<<(int value);
- LogMessage& operator<<(uint value);
- LogMessage& operator<<(long value);
- LogMessage& operator<<(unsigned long value);
- LogMessage& operator<<(long long value);
- LogMessage& operator<<(unsigned long long value);
- LogMessage& operator<<(double value);
- LogMessage& operator<<(void* value);
- LogMessage& operator<<(const StringPiece& value);
- LogMessage& operator<<(const util::Status& status);
- LogMessage& operator<<(const uint128& value);
-
- private:
- friend class LogFinisher;
- void Finish();
-
- LogLevel level_;
- const char* filename_;
- int line_;
- std::string message_;
-};
-
-// Used to make the entire "LOG(BLAH) << etc." expression have a void return
-// type and print a newline after each message.
-class PROTOBUF_EXPORT LogFinisher {
- public:
- void operator=(LogMessage& other);
-};
-
-template<typename T>
-bool IsOk(T status) { return status.ok(); }
-template<>
-inline bool IsOk(bool status) { return status; }
-
-} // namespace internal
-
-// Undef everything in case we're being mixed with some other Google library
-// which already defined them itself. Presumably all Google libraries will
-// support the same syntax for these so it should not be a big deal if they
-// end up using our definitions instead.
-#undef GOOGLE_LOG
-#undef GOOGLE_LOG_IF
-
-#undef GOOGLE_CHECK
-#undef GOOGLE_CHECK_OK
-#undef GOOGLE_CHECK_EQ
-#undef GOOGLE_CHECK_NE
-#undef GOOGLE_CHECK_LT
-#undef GOOGLE_CHECK_LE
-#undef GOOGLE_CHECK_GT
-#undef GOOGLE_CHECK_GE
-#undef GOOGLE_CHECK_NOTNULL
-
-#undef GOOGLE_DLOG
-#undef GOOGLE_DCHECK
-#undef GOOGLE_DCHECK_OK
-#undef GOOGLE_DCHECK_EQ
-#undef GOOGLE_DCHECK_NE
-#undef GOOGLE_DCHECK_LT
-#undef GOOGLE_DCHECK_LE
-#undef GOOGLE_DCHECK_GT
-#undef GOOGLE_DCHECK_GE
-
-#define GOOGLE_LOG(LEVEL) \
- ::google::protobuf::internal::LogFinisher() = \
- ::google::protobuf::internal::LogMessage( \
- ::google::protobuf::LOGLEVEL_##LEVEL, __FILE__, __LINE__)
-#define GOOGLE_LOG_IF(LEVEL, CONDITION) \
- !(CONDITION) ? (void)0 : GOOGLE_LOG(LEVEL)
-
-#define GOOGLE_CHECK(EXPRESSION) \
- GOOGLE_LOG_IF(FATAL, !(EXPRESSION)) << "CHECK failed: " #EXPRESSION ": "
-#define GOOGLE_CHECK_OK(A) GOOGLE_CHECK(::google::protobuf::internal::IsOk(A))
-#define GOOGLE_CHECK_EQ(A, B) GOOGLE_CHECK((A) == (B))
-#define GOOGLE_CHECK_NE(A, B) GOOGLE_CHECK((A) != (B))
-#define GOOGLE_CHECK_LT(A, B) GOOGLE_CHECK((A) < (B))
-#define GOOGLE_CHECK_LE(A, B) GOOGLE_CHECK((A) <= (B))
-#define GOOGLE_CHECK_GT(A, B) GOOGLE_CHECK((A) > (B))
-#define GOOGLE_CHECK_GE(A, B) GOOGLE_CHECK((A) >= (B))
-
-namespace internal {
-template<typename T>
-T* CheckNotNull(const char* /* file */, int /* line */,
- const char* name, T* val) {
- if (val == nullptr) {
- GOOGLE_LOG(FATAL) << name;
- }
- return val;
-}
-} // namespace internal
-#define GOOGLE_CHECK_NOTNULL(A) \
- ::google::protobuf::internal::CheckNotNull( \
- __FILE__, __LINE__, "'" #A "' must not be nullptr", (A))
-
-#ifdef NDEBUG
-
-#define GOOGLE_DLOG(LEVEL) GOOGLE_LOG_IF(LEVEL, false)
-
-#define GOOGLE_DCHECK(EXPRESSION) while(false) GOOGLE_CHECK(EXPRESSION)
-#define GOOGLE_DCHECK_OK(E) GOOGLE_DCHECK(::google::protobuf::internal::IsOk(E))
-#define GOOGLE_DCHECK_EQ(A, B) GOOGLE_DCHECK((A) == (B))
-#define GOOGLE_DCHECK_NE(A, B) GOOGLE_DCHECK((A) != (B))
-#define GOOGLE_DCHECK_LT(A, B) GOOGLE_DCHECK((A) < (B))
-#define GOOGLE_DCHECK_LE(A, B) GOOGLE_DCHECK((A) <= (B))
-#define GOOGLE_DCHECK_GT(A, B) GOOGLE_DCHECK((A) > (B))
-#define GOOGLE_DCHECK_GE(A, B) GOOGLE_DCHECK((A) >= (B))
-
-#else // NDEBUG
-
-#define GOOGLE_DLOG GOOGLE_LOG
-
-#define GOOGLE_DCHECK GOOGLE_CHECK
-#define GOOGLE_DCHECK_OK GOOGLE_CHECK_OK
-#define GOOGLE_DCHECK_EQ GOOGLE_CHECK_EQ
-#define GOOGLE_DCHECK_NE GOOGLE_CHECK_NE
-#define GOOGLE_DCHECK_LT GOOGLE_CHECK_LT
-#define GOOGLE_DCHECK_LE GOOGLE_CHECK_LE
-#define GOOGLE_DCHECK_GT GOOGLE_CHECK_GT
-#define GOOGLE_DCHECK_GE GOOGLE_CHECK_GE
-
-#endif // !NDEBUG
-
-typedef void LogHandler(LogLevel level, const char* filename, int line,
- const std::string& message);
-
-// The protobuf library sometimes writes warning and error messages to
-// stderr. These messages are primarily useful for developers, but may
-// also help end users figure out a problem. If you would prefer that
-// these messages be sent somewhere other than stderr, call SetLogHandler()
-// to set your own handler. This returns the old handler. Set the handler
-// to nullptr to ignore log messages (but see also LogSilencer, below).
-//
-// Obviously, SetLogHandler is not thread-safe. You should only call it
-// at initialization time, and probably not from library code. If you
-// simply want to suppress log messages temporarily (e.g. because you
-// have some code that tends to trigger them frequently and you know
-// the warnings are not important to you), use the LogSilencer class
-// below.
-PROTOBUF_EXPORT LogHandler* SetLogHandler(LogHandler* new_func);
-
-// Create a LogSilencer if you want to temporarily suppress all log
-// messages. As long as any LogSilencer objects exist, non-fatal
-// log messages will be discarded (the current LogHandler will *not*
-// be called). Constructing a LogSilencer is thread-safe. You may
-// accidentally suppress log messages occurring in another thread, but
-// since messages are generally for debugging purposes only, this isn't
-// a big deal. If you want to intercept log messages, use SetLogHandler().
-class PROTOBUF_EXPORT LogSilencer {
- public:
- LogSilencer();
- ~LogSilencer();
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_LOGGING_H_
diff --git a/include/google/protobuf/stubs/macros.h b/include/google/protobuf/stubs/macros.h
deleted file mode 100644
index ae9a8b987f..0000000000
--- a/include/google/protobuf/stubs/macros.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_MACROS_H__
-#define GOOGLE_PROTOBUF_MACROS_H__
-
-namespace google {
-namespace protobuf {
-
-#undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
-#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName) \
- TypeName(const TypeName&) = delete; \
- void operator=(const TypeName&) = delete
-
-#undef GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS
-#define GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
- TypeName() = delete; \
- TypeName(const TypeName&) = delete; \
- void operator=(const TypeName&) = delete
-
-// ===================================================================
-// from google3/base/basictypes.h
-
-// The GOOGLE_ARRAYSIZE(arr) macro returns the # of elements in an array arr.
-// The expression is a compile-time constant, and therefore can be
-// used in defining new arrays, for example.
-//
-// GOOGLE_ARRAYSIZE catches a few type errors. If you see a compiler error
-//
-// "warning: division by zero in ..."
-//
-// when using GOOGLE_ARRAYSIZE, you are (wrongfully) giving it a pointer.
-// You should only use GOOGLE_ARRAYSIZE on statically allocated arrays.
-//
-// The following comments are on the implementation details, and can
-// be ignored by the users.
-//
-// ARRAYSIZE(arr) works by inspecting sizeof(arr) (the # of bytes in
-// the array) and sizeof(*(arr)) (the # of bytes in one array
-// element). If the former is divisible by the latter, perhaps arr is
-// indeed an array, in which case the division result is the # of
-// elements in the array. Otherwise, arr cannot possibly be an array,
-// and we generate a compiler error to prevent the code from
-// compiling.
-//
-// Since the size of bool is implementation-defined, we need to cast
-// !(sizeof(a) & sizeof(*(a))) to size_t in order to ensure the final
-// result has type size_t.
-//
-// This macro is not perfect as it wrongfully accepts certain
-// pointers, namely where the pointer size is divisible by the pointee
-// size. Since all our code has to go through a 32-bit compiler,
-// where a pointer is 4 bytes, this means all pointers to a type whose
-// size is 3 or greater than 4 will be (righteously) rejected.
-//
-// Kudos to Jorg Brown for this simple and elegant implementation.
-
-#undef GOOGLE_ARRAYSIZE
-#define GOOGLE_ARRAYSIZE(a) \
- ((sizeof(a) / sizeof(*(a))) / \
- static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))
-
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_MACROS_H__
diff --git a/include/google/protobuf/stubs/map_util.h b/include/google/protobuf/stubs/map_util.h
deleted file mode 100644
index 24e098ad1b..0000000000
--- a/include/google/protobuf/stubs/map_util.h
+++ /dev/null
@@ -1,769 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2014 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// from google3/util/gtl/map_util.h
-// Author: Anton Carver
-
-#ifndef GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__
-#define GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__
-
-#include <stddef.h>
-#include <iterator>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-// Local implementation of RemoveConst to avoid including base/type_traits.h.
-template <class T> struct RemoveConst { typedef T type; };
-template <class T> struct RemoveConst<const T> : RemoveConst<T> {};
-} // namespace internal
-
-//
-// Find*()
-//
-
-// Returns a const reference to the value associated with the given key if it
-// exists. Crashes otherwise.
-//
-// This is intended as a replacement for operator[] as an rvalue (for reading)
-// when the key is guaranteed to exist.
-//
-// operator[] for lookup is discouraged for several reasons:
-// * It has a side-effect of inserting missing keys
-// * It is not thread-safe (even when it is not inserting, it can still
-// choose to resize the underlying storage)
-// * It invalidates iterators (when it chooses to resize)
-// * It default constructs a value object even if it doesn't need to
-//
-// This version assumes the key is printable, and includes it in the fatal log
-// message.
-template <class Collection>
-const typename Collection::value_type::second_type&
-FindOrDie(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- GOOGLE_CHECK(it != collection.end()) << "Map key not found: " << key;
- return it->second;
-}
-
-// Same as above, but returns a non-const reference.
-template <class Collection>
-typename Collection::value_type::second_type&
-FindOrDie(Collection& collection, // NOLINT
- const typename Collection::value_type::first_type& key) {
- typename Collection::iterator it = collection.find(key);
- GOOGLE_CHECK(it != collection.end()) << "Map key not found: " << key;
- return it->second;
-}
-
-// Same as FindOrDie above, but doesn't log the key on failure.
-template <class Collection>
-const typename Collection::value_type::second_type&
-FindOrDieNoPrint(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- GOOGLE_CHECK(it != collection.end()) << "Map key not found";
- return it->second;
-}
-
-// Same as above, but returns a non-const reference.
-template <class Collection>
-typename Collection::value_type::second_type&
-FindOrDieNoPrint(Collection& collection, // NOLINT
- const typename Collection::value_type::first_type& key) {
- typename Collection::iterator it = collection.find(key);
- GOOGLE_CHECK(it != collection.end()) << "Map key not found";
- return it->second;
-}
-
-// Returns a const reference to the value associated with the given key if it
-// exists, otherwise returns a const reference to the provided default value.
-//
-// WARNING: If a temporary object is passed as the default "value,"
-// this function will return a reference to that temporary object,
-// which will be destroyed at the end of the statement. A common
-// example: if you have a map with string values, and you pass a char*
-// as the default "value," either use the returned value immediately
-// or store it in a string (not string&).
-// Details: http://go/findwithdefault
-template <class Collection>
-const typename Collection::value_type::second_type&
-FindWithDefault(const Collection& collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value) {
- typename Collection::const_iterator it = collection.find(key);
- if (it == collection.end()) {
- return value;
- }
- return it->second;
-}
-
-// Returns a pointer to the const value associated with the given key if it
-// exists, or nullptr otherwise.
-template <class Collection>
-const typename Collection::value_type::second_type*
-FindOrNull(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- if (it == collection.end()) {
- return 0;
- }
- return &it->second;
-}
-
-// Same as above but returns a pointer to the non-const value.
-template <class Collection>
-typename Collection::value_type::second_type*
-FindOrNull(Collection& collection, // NOLINT
- const typename Collection::value_type::first_type& key) {
- typename Collection::iterator it = collection.find(key);
- if (it == collection.end()) {
- return 0;
- }
- return &it->second;
-}
-
-// Returns the pointer value associated with the given key. If none is found,
-// nullptr is returned. The function is designed to be used with a map of keys to
-// pointers.
-//
-// This function does not distinguish between a missing key and a key mapped
-// to nullptr.
-template <class Collection>
-typename Collection::value_type::second_type
-FindPtrOrNull(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- if (it == collection.end()) {
- return typename Collection::value_type::second_type();
- }
- return it->second;
-}
-
-// Same as above, except takes non-const reference to collection.
-//
-// This function is needed for containers that propagate constness to the
-// pointee, such as boost::ptr_map.
-template <class Collection>
-typename Collection::value_type::second_type
-FindPtrOrNull(Collection& collection, // NOLINT
- const typename Collection::value_type::first_type& key) {
- typename Collection::iterator it = collection.find(key);
- if (it == collection.end()) {
- return typename Collection::value_type::second_type();
- }
- return it->second;
-}
-
-// Finds the pointer value associated with the given key in a map whose values
-// are linked_ptrs. Returns nullptr if key is not found.
-template <class Collection>
-typename Collection::value_type::second_type::element_type*
-FindLinkedPtrOrNull(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- if (it == collection.end()) {
- return 0;
- }
- // Since linked_ptr::get() is a const member returning a non const,
- // we do not need a version of this function taking a non const collection.
- return it->second.get();
-}
-
-// Same as above, but dies if the key is not found.
-template <class Collection>
-typename Collection::value_type::second_type::element_type&
-FindLinkedPtrOrDie(const Collection& collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::const_iterator it = collection.find(key);
- GOOGLE_CHECK(it != collection.end()) << "key not found: " << key;
- // Since linked_ptr::operator*() is a const member returning a non const,
- // we do not need a version of this function taking a non const collection.
- return *it->second;
-}
-
-// Finds the value associated with the given key and copies it to *value (if not
-// nullptr). Returns false if the key was not found, true otherwise.
-template <class Collection, class Key, class Value>
-bool FindCopy(const Collection& collection,
- const Key& key,
- Value* const value) {
- typename Collection::const_iterator it = collection.find(key);
- if (it == collection.end()) {
- return false;
- }
- if (value) {
- *value = it->second;
- }
- return true;
-}
-
-//
-// Contains*()
-//
-
-// Returns true if and only if the given collection contains the given key.
-template <class Collection, class Key>
-bool ContainsKey(const Collection& collection, const Key& key) {
- return collection.find(key) != collection.end();
-}
-
-// Returns true if and only if the given collection contains the given key-value
-// pair.
-template <class Collection, class Key, class Value>
-bool ContainsKeyValuePair(const Collection& collection,
- const Key& key,
- const Value& value) {
- typedef typename Collection::const_iterator const_iterator;
- std::pair<const_iterator, const_iterator> range = collection.equal_range(key);
- for (const_iterator it = range.first; it != range.second; ++it) {
- if (it->second == value) {
- return true;
- }
- }
- return false;
-}
-
-//
-// Insert*()
-//
-
-// Inserts the given key-value pair into the collection. Returns true if and
-// only if the key from the given pair didn't previously exist. Otherwise, the
-// value in the map is replaced with the value from the given pair.
-template <class Collection>
-bool InsertOrUpdate(Collection* const collection,
- const typename Collection::value_type& vt) {
- std::pair<typename Collection::iterator, bool> ret = collection->insert(vt);
- if (!ret.second) {
- // update
- ret.first->second = vt.second;
- return false;
- }
- return true;
-}
-
-// Same as above, except that the key and value are passed separately.
-template <class Collection>
-bool InsertOrUpdate(Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value) {
- return InsertOrUpdate(
- collection, typename Collection::value_type(key, value));
-}
-
-// Inserts/updates all the key-value pairs from the range defined by the
-// iterators "first" and "last" into the given collection.
-template <class Collection, class InputIterator>
-void InsertOrUpdateMany(Collection* const collection,
- InputIterator first, InputIterator last) {
- for (; first != last; ++first) {
- InsertOrUpdate(collection, *first);
- }
-}
-
-// Change the value associated with a particular key in a map or hash_map
-// of the form map<Key, Value*> which owns the objects pointed to by the
-// value pointers. If there was an existing value for the key, it is deleted.
-// True indicates an insert took place, false indicates an update + delete.
-template <class Collection>
-bool InsertAndDeleteExisting(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value) {
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, value));
- if (!ret.second) {
- delete ret.first->second;
- ret.first->second = value;
- return false;
- }
- return true;
-}
-
-// Inserts the given key and value into the given collection if and only if the
-// given key did NOT already exist in the collection. If the key previously
-// existed in the collection, the value is not changed. Returns true if the
-// key-value pair was inserted; returns false if the key was already present.
-template <class Collection>
-bool InsertIfNotPresent(Collection* const collection,
- const typename Collection::value_type& vt) {
- return collection->insert(vt).second;
-}
-
-// Same as above except the key and value are passed separately.
-template <class Collection>
-bool InsertIfNotPresent(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value) {
- return InsertIfNotPresent(
- collection, typename Collection::value_type(key, value));
-}
-
-// Same as above except dies if the key already exists in the collection.
-template <class Collection>
-void InsertOrDie(Collection* const collection,
- const typename Collection::value_type& value) {
- GOOGLE_CHECK(InsertIfNotPresent(collection, value))
- << "duplicate value: " << value;
-}
-
-// Same as above except doesn't log the value on error.
-template <class Collection>
-void InsertOrDieNoPrint(Collection* const collection,
- const typename Collection::value_type& value) {
- GOOGLE_CHECK(InsertIfNotPresent(collection, value)) << "duplicate value.";
-}
-
-// Inserts the key-value pair into the collection. Dies if key was already
-// present.
-template <class Collection>
-void InsertOrDie(Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& data) {
- GOOGLE_CHECK(InsertIfNotPresent(collection, key, data))
- << "duplicate key: " << key;
-}
-
-// Same as above except doesn't log the key on error.
-template <class Collection>
-void InsertOrDieNoPrint(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& data) {
- GOOGLE_CHECK(InsertIfNotPresent(collection, key, data)) << "duplicate key.";
-}
-
-// Inserts a new key and default-initialized value. Dies if the key was already
-// present. Returns a reference to the value. Example usage:
-//
-// map<int, SomeProto> m;
-// SomeProto& proto = InsertKeyOrDie(&m, 3);
-// proto.set_field("foo");
-template <class Collection>
-typename Collection::value_type::second_type& InsertKeyOrDie(
- Collection* const collection,
- const typename Collection::value_type::first_type& key) {
- typedef typename Collection::value_type value_type;
- std::pair<typename Collection::iterator, bool> res =
- collection->insert(value_type(key, typename value_type::second_type()));
- GOOGLE_CHECK(res.second) << "duplicate key: " << key;
- return res.first->second;
-}
-
-//
-// Lookup*()
-//
-
-// Looks up a given key and value pair in a collection and inserts the key-value
-// pair if it's not already present. Returns a reference to the value associated
-// with the key.
-template <class Collection>
-typename Collection::value_type::second_type&
-LookupOrInsert(Collection* const collection,
- const typename Collection::value_type& vt) {
- return collection->insert(vt).first->second;
-}
-
-// Same as above except the key-value are passed separately.
-template <class Collection>
-typename Collection::value_type::second_type&
-LookupOrInsert(Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value) {
- return LookupOrInsert(
- collection, typename Collection::value_type(key, value));
-}
-
-// Counts the number of equivalent elements in the given "sequence", and stores
-// the results in "count_map" with element as the key and count as the value.
-//
-// Example:
-// vector<string> v = {"a", "b", "c", "a", "b"};
-// map<string, int> m;
-// AddTokenCounts(v, 1, &m);
-// assert(m["a"] == 2);
-// assert(m["b"] == 2);
-// assert(m["c"] == 1);
-template <typename Sequence, typename Collection>
-void AddTokenCounts(
- const Sequence& sequence,
- const typename Collection::value_type::second_type& increment,
- Collection* const count_map) {
- for (typename Sequence::const_iterator it = sequence.begin();
- it != sequence.end(); ++it) {
- typename Collection::value_type::second_type& value =
- LookupOrInsert(count_map, *it,
- typename Collection::value_type::second_type());
- value += increment;
- }
-}
-
-// Returns a reference to the value associated with key. If not found, a value
-// is default constructed on the heap and added to the map.
-//
-// This function is useful for containers of the form map<Key, Value*>, where
-// inserting a new key, value pair involves constructing a new heap-allocated
-// Value, and storing a pointer to that in the collection.
-template <class Collection>
-typename Collection::value_type::second_type&
-LookupOrInsertNew(Collection* const collection,
- const typename Collection::value_type::first_type& key) {
- typedef typename std::iterator_traits<
- typename Collection::value_type::second_type>::value_type Element;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(
- key,
- static_cast<typename Collection::value_type::second_type>(nullptr)));
- if (ret.second) {
- ret.first->second = new Element();
- }
- return ret.first->second;
-}
-
-// Same as above but constructs the value using the single-argument constructor
-// and the given "arg".
-template <class Collection, class Arg>
-typename Collection::value_type::second_type&
-LookupOrInsertNew(Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const Arg& arg) {
- typedef typename std::iterator_traits<
- typename Collection::value_type::second_type>::value_type Element;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(
- key,
- static_cast<typename Collection::value_type::second_type>(nullptr)));
- if (ret.second) {
- ret.first->second = new Element(arg);
- }
- return ret.first->second;
-}
-
-// Lookup of linked/shared pointers is used in two scenarios:
-//
-// Use LookupOrInsertNewLinkedPtr if the container owns the elements.
-// In this case it is fine working with the raw pointer as long as it is
-// guaranteed that no other thread can delete/update an accessed element.
-// A mutex will need to lock the container operation as well as the use
-// of the returned elements. Finding an element may be performed using
-// FindLinkedPtr*().
-//
-// Use LookupOrInsertNewSharedPtr if the container does not own the elements
-// for their whole lifetime. This is typically the case when a reader allows
-// parallel updates to the container. In this case a Mutex only needs to lock
-// container operations, but all element operations must be performed on the
-// shared pointer. Finding an element must be performed using FindPtr*() and
-// cannot be done with FindLinkedPtr*() even though it compiles.
-
-// Lookup a key in a map or hash_map whose values are linked_ptrs. If it is
-// missing, set collection[key].reset(new Value::element_type) and return that.
-// Value::element_type must be default constructable.
-template <class Collection>
-typename Collection::value_type::second_type::element_type*
-LookupOrInsertNewLinkedPtr(
- Collection* const collection,
- const typename Collection::value_type::first_type& key) {
- typedef typename Collection::value_type::second_type Value;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, Value()));
- if (ret.second) {
- ret.first->second.reset(new typename Value::element_type);
- }
- return ret.first->second.get();
-}
-
-// A variant of LookupOrInsertNewLinkedPtr where the value is constructed using
-// a single-parameter constructor. Note: the constructor argument is computed
-// even if it will not be used, so only values cheap to compute should be passed
-// here. On the other hand it does not matter how expensive the construction of
-// the actual stored value is, as that only occurs if necessary.
-template <class Collection, class Arg>
-typename Collection::value_type::second_type::element_type*
-LookupOrInsertNewLinkedPtr(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const Arg& arg) {
- typedef typename Collection::value_type::second_type Value;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, Value()));
- if (ret.second) {
- ret.first->second.reset(new typename Value::element_type(arg));
- }
- return ret.first->second.get();
-}
-
-// Lookup a key in a map or hash_map whose values are shared_ptrs. If it is
-// missing, set collection[key].reset(new Value::element_type). Unlike
-// LookupOrInsertNewLinkedPtr, this function returns the shared_ptr instead of
-// the raw pointer. Value::element_type must be default constructable.
-template <class Collection>
-typename Collection::value_type::second_type&
-LookupOrInsertNewSharedPtr(
- Collection* const collection,
- const typename Collection::value_type::first_type& key) {
- typedef typename Collection::value_type::second_type SharedPtr;
- typedef typename Collection::value_type::second_type::element_type Element;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, SharedPtr()));
- if (ret.second) {
- ret.first->second.reset(new Element());
- }
- return ret.first->second;
-}
-
-// A variant of LookupOrInsertNewSharedPtr where the value is constructed using
-// a single-parameter constructor. Note: the constructor argument is computed
-// even if it will not be used, so only values cheap to compute should be passed
-// here. On the other hand it does not matter how expensive the construction of
-// the actual stored value is, as that only occurs if necessary.
-template <class Collection, class Arg>
-typename Collection::value_type::second_type&
-LookupOrInsertNewSharedPtr(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const Arg& arg) {
- typedef typename Collection::value_type::second_type SharedPtr;
- typedef typename Collection::value_type::second_type::element_type Element;
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, SharedPtr()));
- if (ret.second) {
- ret.first->second.reset(new Element(arg));
- }
- return ret.first->second;
-}
-
-//
-// Misc Utility Functions
-//
-
-// Updates the value associated with the given key. If the key was not already
-// present, then the key-value pair are inserted and "previous" is unchanged. If
-// the key was already present, the value is updated and "*previous" will
-// contain a copy of the old value.
-//
-// InsertOrReturnExisting has complementary behavior that returns the
-// address of an already existing value, rather than updating it.
-template <class Collection>
-bool UpdateReturnCopy(Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& value,
- typename Collection::value_type::second_type* previous) {
- std::pair<typename Collection::iterator, bool> ret =
- collection->insert(typename Collection::value_type(key, value));
- if (!ret.second) {
- // update
- if (previous) {
- *previous = ret.first->second;
- }
- ret.first->second = value;
- return true;
- }
- return false;
-}
-
-// Same as above except that the key and value are passed as a pair.
-template <class Collection>
-bool UpdateReturnCopy(Collection* const collection,
- const typename Collection::value_type& vt,
- typename Collection::value_type::second_type* previous) {
- std::pair<typename Collection::iterator, bool> ret = collection->insert(vt);
- if (!ret.second) {
- // update
- if (previous) {
- *previous = ret.first->second;
- }
- ret.first->second = vt.second;
- return true;
- }
- return false;
-}
-
-// Tries to insert the given key-value pair into the collection. Returns nullptr if
-// the insert succeeds. Otherwise, returns a pointer to the existing value.
-//
-// This complements UpdateReturnCopy in that it allows to update only after
-// verifying the old value and still insert quickly without having to look up
-// twice. Unlike UpdateReturnCopy this also does not come with the issue of an
-// undefined previous* in case new data was inserted.
-template <class Collection>
-typename Collection::value_type::second_type* InsertOrReturnExisting(
- Collection* const collection, const typename Collection::value_type& vt) {
- std::pair<typename Collection::iterator, bool> ret = collection->insert(vt);
- if (ret.second) {
- return nullptr; // Inserted, no existing previous value.
- } else {
- return &ret.first->second; // Return address of already existing value.
- }
-}
-
-// Same as above, except for explicit key and data.
-template <class Collection>
-typename Collection::value_type::second_type* InsertOrReturnExisting(
- Collection* const collection,
- const typename Collection::value_type::first_type& key,
- const typename Collection::value_type::second_type& data) {
- return InsertOrReturnExisting(collection,
- typename Collection::value_type(key, data));
-}
-
-// Erases the collection item identified by the given key, and returns the value
-// associated with that key. It is assumed that the value (i.e., the
-// mapped_type) is a pointer. Returns nullptr if the key was not found in the
-// collection.
-//
-// Examples:
-// map<string, MyType*> my_map;
-//
-// One line cleanup:
-// delete EraseKeyReturnValuePtr(&my_map, "abc");
-//
-// Use returned value:
-// std::unique_ptr<MyType> value_ptr(
-// EraseKeyReturnValuePtr(&my_map, "abc"));
-// if (value_ptr.get())
-// value_ptr->DoSomething();
-//
-template <class Collection>
-typename Collection::value_type::second_type EraseKeyReturnValuePtr(
- Collection* const collection,
- const typename Collection::value_type::first_type& key) {
- typename Collection::iterator it = collection->find(key);
- if (it == collection->end()) {
- return nullptr;
- }
- typename Collection::value_type::second_type v = it->second;
- collection->erase(it);
- return v;
-}
-
-// Inserts all the keys from map_container into key_container, which must
-// support insert(MapContainer::key_type).
-//
-// Note: any initial contents of the key_container are not cleared.
-template <class MapContainer, class KeyContainer>
-void InsertKeysFromMap(const MapContainer& map_container,
- KeyContainer* key_container) {
- GOOGLE_CHECK(key_container != nullptr);
- for (typename MapContainer::const_iterator it = map_container.begin();
- it != map_container.end(); ++it) {
- key_container->insert(it->first);
- }
-}
-
-// Appends all the keys from map_container into key_container, which must
-// support push_back(MapContainer::key_type).
-//
-// Note: any initial contents of the key_container are not cleared.
-template <class MapContainer, class KeyContainer>
-void AppendKeysFromMap(const MapContainer& map_container,
- KeyContainer* key_container) {
- GOOGLE_CHECK(key_container != nullptr);
- for (typename MapContainer::const_iterator it = map_container.begin();
- it != map_container.end(); ++it) {
- key_container->push_back(it->first);
- }
-}
-
-// A more specialized overload of AppendKeysFromMap to optimize reallocations
-// for the common case in which we're appending keys to a vector and hence can
-// (and sometimes should) call reserve() first.
-//
-// (It would be possible to play SFINAE games to call reserve() for any
-// container that supports it, but this seems to get us 99% of what we need
-// without the complexity of a SFINAE-based solution.)
-template <class MapContainer, class KeyType>
-void AppendKeysFromMap(const MapContainer& map_container,
- std::vector<KeyType>* key_container) {
- GOOGLE_CHECK(key_container != nullptr);
- // We now have the opportunity to call reserve(). Calling reserve() every
- // time is a bad idea for some use cases: libstdc++'s implementation of
- // vector<>::reserve() resizes the vector's backing store to exactly the
- // given size (unless it's already at least that big). Because of this,
- // the use case that involves appending a lot of small maps (total size
- // N) one by one to a vector would be O(N^2). But never calling reserve()
- // loses the opportunity to improve the use case of adding from a large
- // map to an empty vector (this improves performance by up to 33%). A
- // number of heuristics are possible; see the discussion in
- // cl/34081696. Here we use the simplest one.
- if (key_container->empty()) {
- key_container->reserve(map_container.size());
- }
- for (typename MapContainer::const_iterator it = map_container.begin();
- it != map_container.end(); ++it) {
- key_container->push_back(it->first);
- }
-}
-
-// Inserts all the values from map_container into value_container, which must
-// support push_back(MapContainer::mapped_type).
-//
-// Note: any initial contents of the value_container are not cleared.
-template <class MapContainer, class ValueContainer>
-void AppendValuesFromMap(const MapContainer& map_container,
- ValueContainer* value_container) {
- GOOGLE_CHECK(value_container != nullptr);
- for (typename MapContainer::const_iterator it = map_container.begin();
- it != map_container.end(); ++it) {
- value_container->push_back(it->second);
- }
-}
-
-// A more specialized overload of AppendValuesFromMap to optimize reallocations
-// for the common case in which we're appending values to a vector and hence
-// can (and sometimes should) call reserve() first.
-//
-// (It would be possible to play SFINAE games to call reserve() for any
-// container that supports it, but this seems to get us 99% of what we need
-// without the complexity of a SFINAE-based solution.)
-template <class MapContainer, class ValueType>
-void AppendValuesFromMap(const MapContainer& map_container,
- std::vector<ValueType>* value_container) {
- GOOGLE_CHECK(value_container != nullptr);
- // See AppendKeysFromMap for why this is done.
- if (value_container->empty()) {
- value_container->reserve(map_container.size());
- }
- for (typename MapContainer::const_iterator it = map_container.begin();
- it != map_container.end(); ++it) {
- value_container->push_back(it->second);
- }
-}
-
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__
diff --git a/include/google/protobuf/stubs/mutex.h b/include/google/protobuf/stubs/mutex.h
deleted file mode 100644
index c4599913be..0000000000
--- a/include/google/protobuf/stubs/mutex.h
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright (c) 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_MUTEX_H_
-#define GOOGLE_PROTOBUF_STUBS_MUTEX_H_
-
-#include <mutex>
-
-#ifdef GOOGLE_PROTOBUF_SUPPORT_WINDOWS_XP
-
-#include <windows.h>
-
-// GetMessage conflicts with GeneratedMessageReflection::GetMessage().
-#ifdef GetMessage
-#undef GetMessage
-#endif
-
-#endif
-
-#include <google/protobuf/stubs/macros.h>
-
-// Define thread-safety annotations for use below, if we are building with
-// Clang.
-#if defined(__clang__) && !defined(SWIG)
-#define GOOGLE_PROTOBUF_ACQUIRE(...) \
- __attribute__((acquire_capability(__VA_ARGS__)))
-#define GOOGLE_PROTOBUF_RELEASE(...) \
- __attribute__((release_capability(__VA_ARGS__)))
-#define GOOGLE_PROTOBUF_SCOPED_CAPABILITY __attribute__((scoped_lockable))
-#define GOOGLE_PROTOBUF_CAPABILITY(x) __attribute__((capability(x)))
-#else
-#define GOOGLE_PROTOBUF_ACQUIRE(...)
-#define GOOGLE_PROTOBUF_RELEASE(...)
-#define GOOGLE_PROTOBUF_SCOPED_CAPABILITY
-#define GOOGLE_PROTOBUF_CAPABILITY(x)
-#endif
-
-#include <google/protobuf/port_def.inc>
-
-// ===================================================================
-// emulates google3/base/mutex.h
-namespace google {
-namespace protobuf {
-namespace internal {
-
-#define GOOGLE_PROTOBUF_LINKER_INITIALIZED
-
-#ifdef GOOGLE_PROTOBUF_SUPPORT_WINDOWS_XP
-
-// This class is a lightweight replacement for std::mutex on Windows platforms.
-// std::mutex does not work on Windows XP SP2 with the latest VC++ libraries,
-// because it utilizes the Concurrency Runtime that is only supported on Windows
-// XP SP3 and above.
-class PROTOBUF_EXPORT CriticalSectionLock {
- public:
- CriticalSectionLock() { InitializeCriticalSection(&critical_section_); }
- ~CriticalSectionLock() { DeleteCriticalSection(&critical_section_); }
- void lock() { EnterCriticalSection(&critical_section_); }
- void unlock() { LeaveCriticalSection(&critical_section_); }
-
- private:
- CRITICAL_SECTION critical_section_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CriticalSectionLock);
-};
-
-#endif
-
-// In MSVC std::mutex does not have a constexpr constructor.
-// This wrapper makes the constructor constexpr.
-template <typename T>
-class CallOnceInitializedMutex {
- public:
- constexpr CallOnceInitializedMutex() : flag_{}, buf_{} {}
- ~CallOnceInitializedMutex() { get().~T(); }
-
- void lock() { get().lock(); }
- void unlock() { get().unlock(); }
-
- private:
- T& get() {
- std::call_once(flag_, [&] { ::new (static_cast<void*>(&buf_)) T(); });
- return reinterpret_cast<T&>(buf_);
- }
-
- std::once_flag flag_;
- alignas(T) char buf_[sizeof(T)];
-};
-
-// Mutex is a natural type to wrap. As both google and other organization have
-// specialized mutexes. gRPC also provides an injection mechanism for custom
-// mutexes.
-class GOOGLE_PROTOBUF_CAPABILITY("mutex") PROTOBUF_EXPORT WrappedMutex {
- public:
-#if defined(__QNX__)
- constexpr WrappedMutex() = default;
-#else
- constexpr WrappedMutex() {}
-#endif
- void Lock() GOOGLE_PROTOBUF_ACQUIRE() { mu_.lock(); }
- void Unlock() GOOGLE_PROTOBUF_RELEASE() { mu_.unlock(); }
- // Crash if this Mutex is not held exclusively by this thread.
- // May fail to crash when it should; will never crash when it should not.
- void AssertHeld() const {}
-
- private:
-#if defined(GOOGLE_PROTOBUF_SUPPORT_WINDOWS_XP)
- CallOnceInitializedMutex<CriticalSectionLock> mu_{};
-#elif defined(_WIN32)
- CallOnceInitializedMutex<std::mutex> mu_{};
-#else
- std::mutex mu_{};
-#endif
-};
-
-using Mutex = WrappedMutex;
-
-// MutexLock(mu) acquires mu when constructed and releases it when destroyed.
-class GOOGLE_PROTOBUF_SCOPED_CAPABILITY PROTOBUF_EXPORT MutexLock {
- public:
- explicit MutexLock(Mutex* mu) GOOGLE_PROTOBUF_ACQUIRE(mu) : mu_(mu) {
- this->mu_->Lock();
- }
- ~MutexLock() GOOGLE_PROTOBUF_RELEASE() { this->mu_->Unlock(); }
-
- private:
- Mutex *const mu_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLock);
-};
-
-// TODO(kenton): Implement these? Hard to implement portably.
-typedef MutexLock ReaderMutexLock;
-typedef MutexLock WriterMutexLock;
-
-// MutexLockMaybe is like MutexLock, but is a no-op when mu is nullptr.
-class PROTOBUF_EXPORT MutexLockMaybe {
- public:
- explicit MutexLockMaybe(Mutex *mu) :
- mu_(mu) { if (this->mu_ != nullptr) { this->mu_->Lock(); } }
- ~MutexLockMaybe() { if (this->mu_ != nullptr) { this->mu_->Unlock(); } }
- private:
- Mutex *const mu_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLockMaybe);
-};
-
-#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL)
-template<typename T>
-class ThreadLocalStorage {
- public:
- ThreadLocalStorage() {
- pthread_key_create(&key_, &ThreadLocalStorage::Delete);
- }
- ~ThreadLocalStorage() {
- pthread_key_delete(key_);
- }
- T* Get() {
- T* result = static_cast<T*>(pthread_getspecific(key_));
- if (result == nullptr) {
- result = new T();
- pthread_setspecific(key_, result);
- }
- return result;
- }
- private:
- static void Delete(void* value) {
- delete static_cast<T*>(value);
- }
- pthread_key_t key_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ThreadLocalStorage);
-};
-#endif
-
-} // namespace internal
-
-// We made these internal so that they would show up as such in the docs,
-// but we don't want to stick "internal::" in front of them everywhere.
-using internal::Mutex;
-using internal::MutexLock;
-using internal::ReaderMutexLock;
-using internal::WriterMutexLock;
-using internal::MutexLockMaybe;
-
-} // namespace protobuf
-} // namespace google
-
-#undef GOOGLE_PROTOBUF_ACQUIRE
-#undef GOOGLE_PROTOBUF_RELEASE
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_MUTEX_H_
diff --git a/include/google/protobuf/stubs/once.h b/include/google/protobuf/stubs/once.h
deleted file mode 100644
index 070d36d193..0000000000
--- a/include/google/protobuf/stubs/once.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_ONCE_H__
-#define GOOGLE_PROTOBUF_STUBS_ONCE_H__
-
-#include <mutex>
-#include <utility>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-using once_flag = std::once_flag;
-template <typename... Args>
-void call_once(Args&&... args ) {
- std::call_once(std::forward<Args>(args)...);
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_ONCE_H__
diff --git a/include/google/protobuf/stubs/platform_macros.h b/include/google/protobuf/stubs/platform_macros.h
deleted file mode 100644
index f50efdfb71..0000000000
--- a/include/google/protobuf/stubs/platform_macros.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2012 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_PLATFORM_MACROS_H_
-#define GOOGLE_PROTOBUF_PLATFORM_MACROS_H_
-
-#define GOOGLE_PROTOBUF_PLATFORM_ERROR \
-#error "Host platform was not detected as supported by protobuf"
-
-// Processor architecture detection. For more info on what's defined, see:
-// http://msdn.microsoft.com/en-us/library/b0084kay.aspx
-// http://www.agner.org/optimize/calling_conventions.pdf
-// or with gcc, run: "echo | gcc -E -dM -"
-#if defined(_M_X64) || defined(__x86_64__)
-#define GOOGLE_PROTOBUF_ARCH_X64 1
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#elif defined(_M_IX86) || defined(__i386__)
-#define GOOGLE_PROTOBUF_ARCH_IA32 1
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#elif defined(__QNX__)
-#define GOOGLE_PROTOBUF_ARCH_ARM_QNX 1
-#if defined(__aarch64__)
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#else
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#endif
-#elif defined(_M_ARM) || defined(__ARMEL__)
-#define GOOGLE_PROTOBUF_ARCH_ARM 1
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#elif defined(_M_ARM64)
-#define GOOGLE_PROTOBUF_ARCH_ARM 1
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#elif defined(__aarch64__)
-#define GOOGLE_PROTOBUF_ARCH_AARCH64 1
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#elif defined(__mips__)
-#if defined(__LP64__)
-#define GOOGLE_PROTOBUF_ARCH_MIPS64 1
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#else
-#define GOOGLE_PROTOBUF_ARCH_MIPS 1
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#endif
-#elif defined(__pnacl__)
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#elif defined(sparc)
-#define GOOGLE_PROTOBUF_ARCH_SPARC 1
-#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#else
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#endif
-#elif defined(_POWER) || defined(__powerpc64__) || defined(__PPC64__)
-#define GOOGLE_PROTOBUF_ARCH_POWER 1
-#define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-#elif defined(__PPC__)
-#define GOOGLE_PROTOBUF_ARCH_PPC 1
-#define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-#elif defined(__GNUC__)
-# if (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4))
-// We fallback to the generic Clang/GCC >= 4.7 implementation in atomicops.h
-# elif defined(__clang__)
-# if !__has_extension(c_atomic)
-GOOGLE_PROTOBUF_PLATFORM_ERROR
-# endif
-// We fallback to the generic Clang/GCC >= 4.7 implementation in atomicops.h
-# endif
-# if __LP64__
-# define GOOGLE_PROTOBUF_ARCH_64_BIT 1
-# else
-# define GOOGLE_PROTOBUF_ARCH_32_BIT 1
-# endif
-#else
-GOOGLE_PROTOBUF_PLATFORM_ERROR
-#endif
-
-#if defined(__APPLE__)
-#define GOOGLE_PROTOBUF_OS_APPLE
-#include <Availability.h>
-#include <TargetConditionals.h>
-#if TARGET_OS_IPHONE
-#define GOOGLE_PROTOBUF_OS_IPHONE
-#endif
-#elif defined(__EMSCRIPTEN__)
-#define GOOGLE_PROTOBUF_OS_EMSCRIPTEN
-#elif defined(__native_client__)
-#define GOOGLE_PROTOBUF_OS_NACL
-#elif defined(sun)
-#define GOOGLE_PROTOBUF_OS_SOLARIS
-#elif defined(_AIX)
-#define GOOGLE_PROTOBUF_OS_AIX
-#elif defined(__ANDROID__)
-#define GOOGLE_PROTOBUF_OS_ANDROID
-#endif
-
-#undef GOOGLE_PROTOBUF_PLATFORM_ERROR
-
-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
-// Android ndk does not support the __thread keyword very well yet. Here
-// we use pthread_key_create()/pthread_getspecific()/... methods for
-// TLS support on android.
-// iOS and OpenBSD also do not support the __thread keyword.
-#define GOOGLE_PROTOBUF_NO_THREADLOCAL
-#endif
-
-#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
-// __thread keyword requires at least 10.7
-#define GOOGLE_PROTOBUF_NO_THREADLOCAL
-#endif
-
-#ifndef PROTOBUF_USE_DLLS
-#define PROTOBUF_USE_DLLS
-#endif // PROTOBUF_USE_DLLS
-
-#endif // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_
diff --git a/include/google/protobuf/stubs/port.h b/include/google/protobuf/stubs/port.h
deleted file mode 100644
index b074cb1630..0000000000
--- a/include/google/protobuf/stubs/port.h
+++ /dev/null
@@ -1,413 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_PORT_H_
-#define GOOGLE_PROTOBUF_STUBS_PORT_H_
-
-#include <assert.h>
-#include <cstdint>
-#include <stdlib.h>
-#include <cstddef>
-#include <string>
-#include <string.h>
-
-#include <google/protobuf/stubs/platform_macros.h>
-
-#include <google/protobuf/port_def.inc>
-
-#undef PROTOBUF_LITTLE_ENDIAN
-#ifdef _WIN32
- // Assuming windows is always little-endian.
- // TODO(xiaofeng): The PROTOBUF_LITTLE_ENDIAN is not only used for
- // optimization but also for correctness. We should define an
- // different macro to test the big-endian code path in coded_stream.
- #if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
- #define PROTOBUF_LITTLE_ENDIAN 1
- #endif
-#if defined(_MSC_VER) && _MSC_VER >= 1300 && !defined(__INTEL_COMPILER)
-// If MSVC has "/RTCc" set, it will complain about truncating casts at
-// runtime. This file contains some intentional truncating casts.
-#pragma runtime_checks("c", off)
-#endif
-#else
-#ifdef __APPLE__
-#include <machine/endian.h> // __BYTE_ORDER
-#elif defined(__FreeBSD__)
-#include <sys/endian.h> // __BYTE_ORDER
-#elif (defined(sun) || defined(__sun)) && (defined(__SVR4) || defined(__svr4__))
-#include <sys/isa_defs.h> // __BYTE_ORDER
-#elif defined(_AIX) || defined(__TOS_AIX__)
-#include <sys/machine.h> // BYTE_ORDER
-#else
-#if !defined(__QNX__)
-#include <endian.h> // __BYTE_ORDER
-#endif
-#endif
-#if ((defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
- (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) || \
- (defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN)) && \
- !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
-#define PROTOBUF_LITTLE_ENDIAN 1
-#endif
-#endif
-
-// These #includes are for the byte swap functions declared later on.
-#ifdef _MSC_VER
-#include <stdlib.h> // NOLINT(build/include)
-#include <intrin.h>
-#elif defined(__APPLE__)
-#include <libkern/OSByteOrder.h>
-#elif defined(__linux__) || defined(__ANDROID__) || defined(__CYGWIN__)
-#include <byteswap.h> // IWYU pragma: export
-#endif
-
-// Legacy: some users reference these (internal-only) macros even though we
-// don't need them any more.
-#if defined(_MSC_VER) && defined(PROTOBUF_USE_DLLS)
- #ifdef LIBPROTOBUF_EXPORTS
- #define LIBPROTOBUF_EXPORT __declspec(dllexport)
- #else
- #define LIBPROTOBUF_EXPORT __declspec(dllimport)
- #endif
- #ifdef LIBPROTOC_EXPORTS
- #define LIBPROTOC_EXPORT __declspec(dllexport)
- #else
- #define LIBPROTOC_EXPORT __declspec(dllimport)
- #endif
-#else
- #define LIBPROTOBUF_EXPORT
- #define LIBPROTOC_EXPORT
-#endif
-
-#define PROTOBUF_RUNTIME_DEPRECATED(message) PROTOBUF_DEPRECATED_MSG(message)
-#define GOOGLE_PROTOBUF_RUNTIME_DEPRECATED(message) \
- PROTOBUF_DEPRECATED_MSG(message)
-
-// ===================================================================
-// from google3/base/port.h
-
-#if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L || \
- (defined(_MSC_VER) && _MSC_VER >= 1900))
-// Define this to 1 if the code is compiled in C++11 mode; leave it
-// undefined otherwise. Do NOT define it to 0 -- that causes
-// '#ifdef LANG_CXX11' to behave differently from '#if LANG_CXX11'.
-#define LANG_CXX11 1
-#else
-#error "Protobuf requires at least C++11."
-#endif
-
-namespace google {
-namespace protobuf {
-
-using ConstStringParam = const std::string &;
-
-typedef unsigned int uint;
-
-typedef int8_t int8;
-typedef int16_t int16;
-typedef int32_t int32;
-typedef int64_t int64;
-
-typedef uint8_t uint8;
-typedef uint16_t uint16;
-typedef uint32_t uint32;
-typedef uint64_t uint64;
-
-static const int32 kint32max = 0x7FFFFFFF;
-static const int32 kint32min = -kint32max - 1;
-static const int64 kint64max = int64_t{0x7FFFFFFFFFFFFFFF};
-static const int64 kint64min = -kint64max - 1;
-static const uint32 kuint32max = 0xFFFFFFFFu;
-static const uint64 kuint64max = uint64_t{0xFFFFFFFFFFFFFFFFu};
-
-#if defined(ADDRESS_SANITIZER) || defined(THREAD_SANITIZER) ||\
- defined(MEMORY_SANITIZER)
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-uint16_t __sanitizer_unaligned_load16(const void *p);
-uint32_t __sanitizer_unaligned_load32(const void *p);
-uint64_t __sanitizer_unaligned_load64(const void *p);
-void __sanitizer_unaligned_store16(void *p, uint16_t v);
-void __sanitizer_unaligned_store32(void *p, uint32_t v);
-void __sanitizer_unaligned_store64(void *p, uint64_t v);
-#ifdef __cplusplus
-} // extern "C"
-#endif // __cplusplus
-
-inline uint16_t GOOGLE_UNALIGNED_LOAD16(const void *p) {
- return __sanitizer_unaligned_load16(p);
-}
-
-inline uint32_t GOOGLE_UNALIGNED_LOAD32(const void *p) {
- return __sanitizer_unaligned_load32(p);
-}
-
-inline uint64_t GOOGLE_UNALIGNED_LOAD64(const void *p) {
- return __sanitizer_unaligned_load64(p);
-}
-
-inline void GOOGLE_UNALIGNED_STORE16(void *p, uint16_t v) {
- __sanitizer_unaligned_store16(p, v);
-}
-
-inline void GOOGLE_UNALIGNED_STORE32(void *p, uint32_t v) {
- __sanitizer_unaligned_store32(p, v);
-}
-
-inline void GOOGLE_UNALIGNED_STORE64(void *p, uint64_t v) {
- __sanitizer_unaligned_store64(p, v);
-}
-
-#elif defined(GOOGLE_PROTOBUF_USE_UNALIGNED) && GOOGLE_PROTOBUF_USE_UNALIGNED
-
-#define GOOGLE_UNALIGNED_LOAD16(_p) (*reinterpret_cast<const uint16_t *>(_p))
-#define GOOGLE_UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32_t *>(_p))
-#define GOOGLE_UNALIGNED_LOAD64(_p) (*reinterpret_cast<const uint64_t *>(_p))
-
-#define GOOGLE_UNALIGNED_STORE16(_p, _val) (*reinterpret_cast<uint16_t *>(_p) = (_val))
-#define GOOGLE_UNALIGNED_STORE32(_p, _val) (*reinterpret_cast<uint32_t *>(_p) = (_val))
-#define GOOGLE_UNALIGNED_STORE64(_p, _val) (*reinterpret_cast<uint64_t *>(_p) = (_val))
-
-#else
-inline uint16_t GOOGLE_UNALIGNED_LOAD16(const void *p) {
- uint16_t t;
- memcpy(&t, p, sizeof t);
- return t;
-}
-
-inline uint32_t GOOGLE_UNALIGNED_LOAD32(const void *p) {
- uint32_t t;
- memcpy(&t, p, sizeof t);
- return t;
-}
-
-inline uint64_t GOOGLE_UNALIGNED_LOAD64(const void *p) {
- uint64_t t;
- memcpy(&t, p, sizeof t);
- return t;
-}
-
-inline void GOOGLE_UNALIGNED_STORE16(void *p, uint16_t v) {
- memcpy(p, &v, sizeof v);
-}
-
-inline void GOOGLE_UNALIGNED_STORE32(void *p, uint32_t v) {
- memcpy(p, &v, sizeof v);
-}
-
-inline void GOOGLE_UNALIGNED_STORE64(void *p, uint64_t v) {
- memcpy(p, &v, sizeof v);
-}
-#endif
-
-#if defined(GOOGLE_PROTOBUF_OS_NACL) \
- || (defined(__ANDROID__) && defined(__clang__) \
- && (__clang_major__ == 3 && __clang_minor__ == 8) \
- && (__clang_patchlevel__ < 275480))
-# define GOOGLE_PROTOBUF_USE_PORTABLE_LOG2
-#endif
-
-// The following guarantees declaration of the byte swap functions.
-#ifdef _MSC_VER
-#define bswap_16(x) _byteswap_ushort(x)
-#define bswap_32(x) _byteswap_ulong(x)
-#define bswap_64(x) _byteswap_uint64(x)
-
-#elif defined(__APPLE__)
-// Mac OS X / Darwin features
-#define bswap_16(x) OSSwapInt16(x)
-#define bswap_32(x) OSSwapInt32(x)
-#define bswap_64(x) OSSwapInt64(x)
-
-#elif !defined(__linux__) && !defined(__ANDROID__) && !defined(__CYGWIN__)
-
-#ifndef bswap_16
-static inline uint16_t bswap_16(uint16_t x) {
- return static_cast<uint16_t>(((x & 0xFF) << 8) | ((x & 0xFF00) >> 8));
-}
-#define bswap_16(x) bswap_16(x)
-#endif
-
-#ifndef bswap_32
-static inline uint32_t bswap_32(uint32_t x) {
- return (((x & 0xFF) << 24) |
- ((x & 0xFF00) << 8) |
- ((x & 0xFF0000) >> 8) |
- ((x & 0xFF000000) >> 24));
-}
-#define bswap_32(x) bswap_32(x)
-#endif
-
-#ifndef bswap_64
-static inline uint64_t bswap_64(uint64_t x) {
- return (((x & uint64_t{0xFFu}) << 56) | ((x & uint64_t{0xFF00u}) << 40) |
- ((x & uint64_t{0xFF0000u}) << 24) |
- ((x & uint64_t{0xFF000000u}) << 8) |
- ((x & uint64_t{0xFF00000000u}) >> 8) |
- ((x & uint64_t{0xFF0000000000u}) >> 24) |
- ((x & uint64_t{0xFF000000000000u}) >> 40) |
- ((x & uint64_t{0xFF00000000000000u}) >> 56));
-}
-#define bswap_64(x) bswap_64(x)
-#endif
-
-#endif
-
-// ===================================================================
-// from google3/util/bits/bits.h
-
-class Bits {
- public:
- static uint32_t Log2FloorNonZero(uint32_t n) {
-#if defined(__GNUC__)
- return 31 ^ static_cast<uint32_t>(__builtin_clz(n));
-#elif defined(_MSC_VER)
- unsigned long where;
- _BitScanReverse(&where, n);
- return where;
-#else
- return Log2FloorNonZero_Portable(n);
-#endif
- }
-
- static uint32_t Log2FloorNonZero64(uint64_t n) {
- // Older versions of clang run into an instruction-selection failure when
- // it encounters __builtin_clzll:
- // https://bugs.chromium.org/p/nativeclient/issues/detail?id=4395
- // This includes arm-nacl-clang and clang in older Android NDK versions.
- // To work around this, when we build with those we use the portable
- // implementation instead.
-#if defined(__GNUC__) && !defined(GOOGLE_PROTOBUF_USE_PORTABLE_LOG2)
- return 63 ^ static_cast<uint32_t>(__builtin_clzll(n));
-#elif defined(_MSC_VER) && defined(_M_X64)
- unsigned long where;
- _BitScanReverse64(&where, n);
- return where;
-#else
- return Log2FloorNonZero64_Portable(n);
-#endif
- }
- private:
- static int Log2FloorNonZero_Portable(uint32_t n) {
- if (n == 0)
- return -1;
- int log = 0;
- uint32_t value = n;
- for (int i = 4; i >= 0; --i) {
- int shift = (1 << i);
- uint32_t x = value >> shift;
- if (x != 0) {
- value = x;
- log += shift;
- }
- }
- assert(value == 1);
- return log;
- }
-
- static int Log2FloorNonZero64_Portable(uint64_t n) {
- const uint32_t topbits = static_cast<uint32_t>(n >> 32);
- if (topbits == 0) {
- // Top bits are zero, so scan in bottom bits
- return static_cast<int>(Log2FloorNonZero(static_cast<uint32_t>(n)));
- } else {
- return 32 + static_cast<int>(Log2FloorNonZero(topbits));
- }
- }
-};
-
-// ===================================================================
-// from google3/util/endian/endian.h
-PROTOBUF_EXPORT uint32_t ghtonl(uint32_t x);
-
-class BigEndian {
- public:
-#ifdef PROTOBUF_LITTLE_ENDIAN
-
- static uint16_t FromHost16(uint16_t x) { return bswap_16(x); }
- static uint16_t ToHost16(uint16_t x) { return bswap_16(x); }
-
- static uint32_t FromHost32(uint32_t x) { return bswap_32(x); }
- static uint32_t ToHost32(uint32_t x) { return bswap_32(x); }
-
- static uint64_t FromHost64(uint64_t x) { return bswap_64(x); }
- static uint64_t ToHost64(uint64_t x) { return bswap_64(x); }
-
- static bool IsLittleEndian() { return true; }
-
-#else
-
- static uint16_t FromHost16(uint16_t x) { return x; }
- static uint16_t ToHost16(uint16_t x) { return x; }
-
- static uint32_t FromHost32(uint32_t x) { return x; }
- static uint32_t ToHost32(uint32_t x) { return x; }
-
- static uint64_t FromHost64(uint64_t x) { return x; }
- static uint64_t ToHost64(uint64_t x) { return x; }
-
- static bool IsLittleEndian() { return false; }
-
-#endif /* ENDIAN */
-
- // Functions to do unaligned loads and stores in big-endian order.
- static uint16_t Load16(const void *p) {
- return ToHost16(GOOGLE_UNALIGNED_LOAD16(p));
- }
-
- static void Store16(void *p, uint16_t v) {
- GOOGLE_UNALIGNED_STORE16(p, FromHost16(v));
- }
-
- static uint32_t Load32(const void *p) {
- return ToHost32(GOOGLE_UNALIGNED_LOAD32(p));
- }
-
- static void Store32(void *p, uint32_t v) {
- GOOGLE_UNALIGNED_STORE32(p, FromHost32(v));
- }
-
- static uint64_t Load64(const void *p) {
- return ToHost64(GOOGLE_UNALIGNED_LOAD64(p));
- }
-
- static void Store64(void *p, uint64_t v) {
- GOOGLE_UNALIGNED_STORE64(p, FromHost64(v));
- }
-};
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_PORT_H_
diff --git a/include/google/protobuf/stubs/status.h b/include/google/protobuf/stubs/status.h
deleted file mode 100644
index c858cf6239..0000000000
--- a/include/google/protobuf/stubs/status.h
+++ /dev/null
@@ -1,196 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_STATUS_H_
-#define GOOGLE_PROTOBUF_STUBS_STATUS_H_
-
-#include <string>
-
-#include <google/protobuf/stubs/stringpiece.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace util {
-namespace status_internal {
-
-// These values must match error codes defined in google/rpc/code.proto.
-enum class StatusCode : int {
- kOk = 0,
- kCancelled = 1,
- kUnknown = 2,
- kInvalidArgument = 3,
- kDeadlineExceeded = 4,
- kNotFound = 5,
- kAlreadyExists = 6,
- kPermissionDenied = 7,
- kUnauthenticated = 16,
- kResourceExhausted = 8,
- kFailedPrecondition = 9,
- kAborted = 10,
- kOutOfRange = 11,
- kUnimplemented = 12,
- kInternal = 13,
- kUnavailable = 14,
- kDataLoss = 15,
-};
-
-class PROTOBUF_EXPORT Status {
- public:
- // Creates a "successful" status.
- Status();
-
- // Create a status in the canonical error space with the specified
- // code, and error message. If "code == 0", error_message is
- // ignored and a Status object identical to Status::kOk is
- // constructed.
- Status(StatusCode error_code, StringPiece error_message);
- Status(const Status&);
- Status& operator=(const Status& x);
- ~Status() {}
-
- // Accessor
- bool ok() const { return error_code_ == StatusCode::kOk; }
- StatusCode code() const { return error_code_; }
- StringPiece message() const {
- return error_message_;
- }
-
- bool operator==(const Status& x) const;
- bool operator!=(const Status& x) const {
- return !operator==(x);
- }
-
- // Return a combination of the error code name and message.
- std::string ToString() const;
-
- private:
- StatusCode error_code_;
- std::string error_message_;
-};
-
-// Returns an OK status, equivalent to a default constructed instance. Prefer
-// usage of `OkStatus()` when constructing such an OK status.
-PROTOBUF_EXPORT Status OkStatus();
-
-// Prints a human-readable representation of 'x' to 'os'.
-PROTOBUF_EXPORT std::ostream& operator<<(std::ostream& os, const Status& x);
-
-// These convenience functions return `true` if a given status matches the
-// `StatusCode` error code of its associated function.
-PROTOBUF_EXPORT bool IsAborted(const Status& status);
-PROTOBUF_EXPORT bool IsAlreadyExists(const Status& status);
-PROTOBUF_EXPORT bool IsCancelled(const Status& status);
-PROTOBUF_EXPORT bool IsDataLoss(const Status& status);
-PROTOBUF_EXPORT bool IsDeadlineExceeded(const Status& status);
-PROTOBUF_EXPORT bool IsFailedPrecondition(const Status& status);
-PROTOBUF_EXPORT bool IsInternal(const Status& status);
-PROTOBUF_EXPORT bool IsInvalidArgument(const Status& status);
-PROTOBUF_EXPORT bool IsNotFound(const Status& status);
-PROTOBUF_EXPORT bool IsOutOfRange(const Status& status);
-PROTOBUF_EXPORT bool IsPermissionDenied(const Status& status);
-PROTOBUF_EXPORT bool IsResourceExhausted(const Status& status);
-PROTOBUF_EXPORT bool IsUnauthenticated(const Status& status);
-PROTOBUF_EXPORT bool IsUnavailable(const Status& status);
-PROTOBUF_EXPORT bool IsUnimplemented(const Status& status);
-PROTOBUF_EXPORT bool IsUnknown(const Status& status);
-
-// These convenience functions create an `Status` object with an error code as
-// indicated by the associated function name, using the error message passed in
-// `message`.
-//
-// These functions are intentionally named `*Error` rather than `*Status` to
-// match the names from Abseil:
-// https://github.com/abseil/abseil-cpp/blob/2e9532cc6c701a8323d0cffb468999ab804095ab/absl/status/status.h#L716
-PROTOBUF_EXPORT Status AbortedError(StringPiece message);
-PROTOBUF_EXPORT Status AlreadyExistsError(StringPiece message);
-PROTOBUF_EXPORT Status CancelledError(StringPiece message);
-PROTOBUF_EXPORT Status DataLossError(StringPiece message);
-PROTOBUF_EXPORT Status DeadlineExceededError(StringPiece message);
-PROTOBUF_EXPORT Status FailedPreconditionError(StringPiece message);
-PROTOBUF_EXPORT Status InternalError(StringPiece message);
-PROTOBUF_EXPORT Status InvalidArgumentError(StringPiece message);
-PROTOBUF_EXPORT Status NotFoundError(StringPiece message);
-PROTOBUF_EXPORT Status OutOfRangeError(StringPiece message);
-PROTOBUF_EXPORT Status PermissionDeniedError(StringPiece message);
-PROTOBUF_EXPORT Status ResourceExhaustedError(StringPiece message);
-PROTOBUF_EXPORT Status UnauthenticatedError(StringPiece message);
-PROTOBUF_EXPORT Status UnavailableError(StringPiece message);
-PROTOBUF_EXPORT Status UnimplementedError(StringPiece message);
-PROTOBUF_EXPORT Status UnknownError(StringPiece message);
-
-} // namespace status_internal
-
-using ::google::protobuf::util::status_internal::Status;
-using ::google::protobuf::util::status_internal::StatusCode;
-
-using ::google::protobuf::util::status_internal::IsAborted;
-using ::google::protobuf::util::status_internal::IsAlreadyExists;
-using ::google::protobuf::util::status_internal::IsCancelled;
-using ::google::protobuf::util::status_internal::IsDataLoss;
-using ::google::protobuf::util::status_internal::IsDeadlineExceeded;
-using ::google::protobuf::util::status_internal::IsFailedPrecondition;
-using ::google::protobuf::util::status_internal::IsInternal;
-using ::google::protobuf::util::status_internal::IsInvalidArgument;
-using ::google::protobuf::util::status_internal::IsNotFound;
-using ::google::protobuf::util::status_internal::IsOutOfRange;
-using ::google::protobuf::util::status_internal::IsPermissionDenied;
-using ::google::protobuf::util::status_internal::IsResourceExhausted;
-using ::google::protobuf::util::status_internal::IsUnauthenticated;
-using ::google::protobuf::util::status_internal::IsUnavailable;
-using ::google::protobuf::util::status_internal::IsUnimplemented;
-using ::google::protobuf::util::status_internal::IsUnknown;
-
-using ::google::protobuf::util::status_internal::AbortedError;
-using ::google::protobuf::util::status_internal::AlreadyExistsError;
-using ::google::protobuf::util::status_internal::CancelledError;
-using ::google::protobuf::util::status_internal::DataLossError;
-using ::google::protobuf::util::status_internal::DeadlineExceededError;
-using ::google::protobuf::util::status_internal::FailedPreconditionError;
-using ::google::protobuf::util::status_internal::InternalError;
-using ::google::protobuf::util::status_internal::InvalidArgumentError;
-using ::google::protobuf::util::status_internal::NotFoundError;
-using ::google::protobuf::util::status_internal::OkStatus;
-using ::google::protobuf::util::status_internal::OutOfRangeError;
-using ::google::protobuf::util::status_internal::PermissionDeniedError;
-using ::google::protobuf::util::status_internal::ResourceExhaustedError;
-using ::google::protobuf::util::status_internal::UnauthenticatedError;
-using ::google::protobuf::util::status_internal::UnavailableError;
-using ::google::protobuf::util::status_internal::UnimplementedError;
-using ::google::protobuf::util::status_internal::UnknownError;
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_STATUS_H_
diff --git a/include/google/protobuf/stubs/stl_util.h b/include/google/protobuf/stubs/stl_util.h
deleted file mode 100644
index e6260d0760..0000000000
--- a/include/google/protobuf/stubs/stl_util.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// from google3/util/gtl/stl_util.h
-
-#ifndef GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__
-#define GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__
-
-#include <google/protobuf/stubs/common.h>
-
-#include <algorithm>
-
-// Must be last.
-#include <google/protobuf/port_def.inc> // NOLINT
-
-namespace google {
-namespace protobuf {
-
-// Inside Google, this function implements a horrible, disgusting hack in which
-// we reach into the string's private implementation and resize it without
-// initializing the new bytes. In some cases doing this can significantly
-// improve performance. However, since it's totally non-portable it has no
-// place in open source code. Feel free to fill this function in with your
-// own disgusting hack if you want the perf boost.
-inline void STLStringResizeUninitialized(std::string* s, size_t new_size) {
- s->resize(new_size);
-}
-
-// As above, but we make sure to follow amortized growth in which we always
-// increase the capacity by at least a constant factor >1.
-inline void STLStringResizeUninitializedAmortized(std::string* s,
- size_t new_size) {
- const size_t cap = s->capacity();
- if (new_size > cap) {
- // Make sure to always grow by at least a factor of 2x.
- s->reserve(std::max<size_t>(new_size, 2 * cap));
- }
- STLStringResizeUninitialized(s, new_size);
-}
-
-// Return a mutable char* pointing to a string's internal buffer,
-// which may not be null-terminated. Writing through this pointer will
-// modify the string.
-//
-// string_as_array(&str)[i] is valid for 0 <= i < str.size() until the
-// next call to a string method that invalidates iterators.
-//
-// As of 2006-04, there is no standard-blessed way of getting a
-// mutable reference to a string's internal buffer. However, issue 530
-// (http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#530)
-// proposes this as the method. According to Matt Austern, this should
-// already work on all current implementations.
-inline char* string_as_array(std::string* str) {
- // DO NOT USE const_cast<char*>(str->data())! See the unittest for why.
- return str->empty() ? nullptr : &*str->begin();
-}
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc> // NOLINT
-
-#endif // GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__
diff --git a/include/google/protobuf/stubs/stringpiece.h b/include/google/protobuf/stubs/stringpiece.h
deleted file mode 100644
index c63e25b254..0000000000
--- a/include/google/protobuf/stubs/stringpiece.h
+++ /dev/null
@@ -1,402 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// A StringPiece points to part or all of a string, Cord, double-quoted string
-// literal, or other string-like object. A StringPiece does *not* own the
-// string to which it points. A StringPiece is not null-terminated.
-//
-// You can use StringPiece as a function or method parameter. A StringPiece
-// parameter can receive a double-quoted string literal argument, a "const
-// char*" argument, a string argument, or a StringPiece argument with no data
-// copying. Systematic use of StringPiece for arguments reduces data
-// copies and strlen() calls.
-//
-// Prefer passing StringPieces by value:
-// void MyFunction(StringPiece arg);
-// If circumstances require, you may also pass by const reference:
-// void MyFunction(const StringPiece& arg); // not preferred
-// Both of these have the same lifetime semantics. Passing by value
-// generates slightly smaller code. For more discussion, see the thread
-// go/stringpiecebyvalue on c-users.
-//
-// StringPiece is also suitable for local variables if you know that
-// the lifetime of the underlying object is longer than the lifetime
-// of your StringPiece variable.
-//
-// Beware of binding a StringPiece to a temporary:
-// StringPiece sp = obj.MethodReturningString(); // BAD: lifetime problem
-//
-// This code is okay:
-// string str = obj.MethodReturningString(); // str owns its contents
-// StringPiece sp(str); // GOOD, because str outlives sp
-//
-// StringPiece is sometimes a poor choice for a return value and usually a poor
-// choice for a data member. If you do use a StringPiece this way, it is your
-// responsibility to ensure that the object pointed to by the StringPiece
-// outlives the StringPiece.
-//
-// A StringPiece may represent just part of a string; thus the name "Piece".
-// For example, when splitting a string, vector<StringPiece> is a natural data
-// type for the output. For another example, a Cord is a non-contiguous,
-// potentially very long string-like object. The Cord class has an interface
-// that iteratively provides StringPiece objects that point to the
-// successive pieces of a Cord object.
-//
-// A StringPiece is not null-terminated. If you write code that scans a
-// StringPiece, you must check its length before reading any characters.
-// Common idioms that work on null-terminated strings do not work on
-// StringPiece objects.
-//
-// There are several ways to create a null StringPiece:
-// StringPiece()
-// StringPiece(nullptr)
-// StringPiece(nullptr, 0)
-// For all of the above, sp.data() == nullptr, sp.length() == 0,
-// and sp.empty() == true. Also, if you create a StringPiece with
-// a non-null pointer then sp.data() != nullptr. Once created,
-// sp.data() will stay either nullptr or not-nullptr, except if you call
-// sp.clear() or sp.set().
-//
-// Thus, you can use StringPiece(nullptr) to signal an out-of-band value
-// that is different from other StringPiece values. This is similar
-// to the way that const char* p1 = nullptr; is different from
-// const char* p2 = "";.
-//
-// There are many ways to create an empty StringPiece:
-// StringPiece()
-// StringPiece(nullptr)
-// StringPiece(nullptr, 0)
-// StringPiece("")
-// StringPiece("", 0)
-// StringPiece("abcdef", 0)
-// StringPiece("abcdef"+6, 0)
-// For all of the above, sp.length() will be 0 and sp.empty() will be true.
-// For some empty StringPiece values, sp.data() will be nullptr.
-// For some empty StringPiece values, sp.data() will not be nullptr.
-//
-// Be careful not to confuse: null StringPiece and empty StringPiece.
-// The set of empty StringPieces properly includes the set of null StringPieces.
-// That is, every null StringPiece is an empty StringPiece,
-// but some non-null StringPieces are empty Stringpieces too.
-//
-// All empty StringPiece values compare equal to each other.
-// Even a null StringPieces compares equal to a non-null empty StringPiece:
-// StringPiece() == StringPiece("", 0)
-// StringPiece(nullptr) == StringPiece("abc", 0)
-// StringPiece(nullptr, 0) == StringPiece("abcdef"+6, 0)
-//
-// Look carefully at this example:
-// StringPiece("") == nullptr
-// True or false? TRUE, because StringPiece::operator== converts
-// the right-hand side from nullptr to StringPiece(nullptr),
-// and then compares two zero-length spans of characters.
-// However, we are working to make this example produce a compile error.
-//
-// Suppose you want to write:
-// bool TestWhat?(StringPiece sp) { return sp == nullptr; } // BAD
-// Do not do that. Write one of these instead:
-// bool TestNull(StringPiece sp) { return sp.data() == nullptr; }
-// bool TestEmpty(StringPiece sp) { return sp.empty(); }
-// The intent of TestWhat? is unclear. Did you mean TestNull or TestEmpty?
-// Right now, TestWhat? behaves likes TestEmpty.
-// We are working to make TestWhat? produce a compile error.
-// TestNull is good to test for an out-of-band signal.
-// TestEmpty is good to test for an empty StringPiece.
-//
-// Caveats (again):
-// (1) The lifetime of the pointed-to string (or piece of a string)
-// must be longer than the lifetime of the StringPiece.
-// (2) There may or may not be a '\0' character after the end of
-// StringPiece data.
-// (3) A null StringPiece is empty.
-// An empty StringPiece may or may not be a null StringPiece.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_STRINGPIECE_H_
-#define GOOGLE_PROTOBUF_STUBS_STRINGPIECE_H_
-
-#include <assert.h>
-#include <stddef.h>
-#include <string.h>
-#include <iosfwd>
-#include <limits>
-#include <string>
-
-#if defined(__cpp_lib_string_view)
-#include <string_view>
-#endif
-
-#include <google/protobuf/stubs/hash.h>
-
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace stringpiece_internal {
-
-class PROTOBUF_EXPORT StringPiece {
- public:
- using traits_type = std::char_traits<char>;
- using value_type = char;
- using pointer = char*;
- using const_pointer = const char*;
- using reference = char&;
- using const_reference = const char&;
- using const_iterator = const char*;
- using iterator = const_iterator;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
- using reverse_iterator = const_reverse_iterator;
- using size_type = size_t;
- using difference_type = std::ptrdiff_t;
-
- private:
- const char* ptr_;
- size_type length_;
-
- static constexpr size_type kMaxSize =
- (std::numeric_limits<difference_type>::max)();
-
- static size_type CheckSize(size_type size) {
-#if !defined(NDEBUG) || defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0
- if (PROTOBUF_PREDICT_FALSE(size > kMaxSize)) {
- // Some people grep for this message in logs
- // so take care if you ever change it.
- LogFatalSizeTooBig(size, "string length exceeds max size");
- }
-#endif
- return size;
- }
-
- // Out-of-line error path.
- static void LogFatalSizeTooBig(size_type size, const char* details);
-
- public:
- // We provide non-explicit singleton constructors so users can pass
- // in a "const char*" or a "string" wherever a "StringPiece" is
- // expected.
- //
- // Style guide exception granted:
- // http://goto/style-guide-exception-20978288
- StringPiece() : ptr_(nullptr), length_(0) {}
-
- StringPiece(const char* str) // NOLINT(runtime/explicit)
- : ptr_(str), length_(0) {
- if (str != nullptr) {
- length_ = CheckSize(strlen(str));
- }
- }
-
- template <class Allocator>
- StringPiece( // NOLINT(runtime/explicit)
- const std::basic_string<char, std::char_traits<char>, Allocator>& str)
- : ptr_(str.data()), length_(0) {
- length_ = CheckSize(str.size());
- }
-
-#if defined(__cpp_lib_string_view)
- StringPiece( // NOLINT(runtime/explicit)
- std::string_view str)
- : ptr_(str.data()), length_(0) {
- length_ = CheckSize(str.size());
- }
-#endif
-
- StringPiece(const char* offset, size_type len)
- : ptr_(offset), length_(CheckSize(len)) {}
-
- // data() may return a pointer to a buffer with embedded NULs, and the
- // returned buffer may or may not be null terminated. Therefore it is
- // typically a mistake to pass data() to a routine that expects a NUL
- // terminated string.
- const_pointer data() const { return ptr_; }
- size_type size() const { return length_; }
- size_type length() const { return length_; }
- bool empty() const { return length_ == 0; }
-
- char operator[](size_type i) const {
- assert(i < length_);
- return ptr_[i];
- }
-
- void remove_prefix(size_type n) {
- assert(length_ >= n);
- ptr_ += n;
- length_ -= n;
- }
-
- void remove_suffix(size_type n) {
- assert(length_ >= n);
- length_ -= n;
- }
-
- // returns {-1, 0, 1}
- int compare(StringPiece x) const {
- size_type min_size = length_ < x.length_ ? length_ : x.length_;
- int r = memcmp(ptr_, x.ptr_, static_cast<size_t>(min_size));
- if (r < 0) return -1;
- if (r > 0) return 1;
- if (length_ < x.length_) return -1;
- if (length_ > x.length_) return 1;
- return 0;
- }
-
- std::string as_string() const { return ToString(); }
- // We also define ToString() here, since many other string-like
- // interfaces name the routine that converts to a C++ string
- // "ToString", and it's confusing to have the method that does that
- // for a StringPiece be called "as_string()". We also leave the
- // "as_string()" method defined here for existing code.
- std::string ToString() const {
- if (ptr_ == nullptr) return "";
- return std::string(data(), static_cast<size_type>(size()));
- }
-
- explicit operator std::string() const { return ToString(); }
-
- void CopyToString(std::string* target) const;
- void AppendToString(std::string* target) const;
-
- bool starts_with(StringPiece x) const {
- return (length_ >= x.length_) &&
- (memcmp(ptr_, x.ptr_, static_cast<size_t>(x.length_)) == 0);
- }
-
- bool ends_with(StringPiece x) const {
- return ((length_ >= x.length_) &&
- (memcmp(ptr_ + (length_-x.length_), x.ptr_,
- static_cast<size_t>(x.length_)) == 0));
- }
-
- // Checks whether StringPiece starts with x and if so advances the beginning
- // of it to past the match. It's basically a shortcut for starts_with
- // followed by remove_prefix.
- bool Consume(StringPiece x);
- // Like above but for the end of the string.
- bool ConsumeFromEnd(StringPiece x);
-
- // standard STL container boilerplate
- static const size_type npos;
- const_iterator begin() const { return ptr_; }
- const_iterator end() const { return ptr_ + length_; }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(ptr_ + length_);
- }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(ptr_);
- }
- size_type max_size() const { return length_; }
- size_type capacity() const { return length_; }
-
- // cpplint.py emits a false positive [build/include_what_you_use]
- size_type copy(char* buf, size_type n, size_type pos = 0) const; // NOLINT
-
- bool contains(StringPiece s) const;
-
- size_type find(StringPiece s, size_type pos = 0) const;
- size_type find(char c, size_type pos = 0) const;
- size_type rfind(StringPiece s, size_type pos = npos) const;
- size_type rfind(char c, size_type pos = npos) const;
-
- size_type find_first_of(StringPiece s, size_type pos = 0) const;
- size_type find_first_of(char c, size_type pos = 0) const {
- return find(c, pos);
- }
- size_type find_first_not_of(StringPiece s, size_type pos = 0) const;
- size_type find_first_not_of(char c, size_type pos = 0) const;
- size_type find_last_of(StringPiece s, size_type pos = npos) const;
- size_type find_last_of(char c, size_type pos = npos) const {
- return rfind(c, pos);
- }
- size_type find_last_not_of(StringPiece s, size_type pos = npos) const;
- size_type find_last_not_of(char c, size_type pos = npos) const;
-
- StringPiece substr(size_type pos, size_type n = npos) const;
-};
-
-// This large function is defined inline so that in a fairly common case where
-// one of the arguments is a literal, the compiler can elide a lot of the
-// following comparisons.
-inline bool operator==(StringPiece x, StringPiece y) {
- StringPiece::size_type len = x.size();
- if (len != y.size()) {
- return false;
- }
-
- return x.data() == y.data() || len <= 0 ||
- memcmp(x.data(), y.data(), static_cast<size_t>(len)) == 0;
-}
-
-inline bool operator!=(StringPiece x, StringPiece y) {
- return !(x == y);
-}
-
-inline bool operator<(StringPiece x, StringPiece y) {
- const StringPiece::size_type min_size =
- x.size() < y.size() ? x.size() : y.size();
- const int r = memcmp(x.data(), y.data(), static_cast<size_t>(min_size));
- return (r < 0) || (r == 0 && x.size() < y.size());
-}
-
-inline bool operator>(StringPiece x, StringPiece y) {
- return y < x;
-}
-
-inline bool operator<=(StringPiece x, StringPiece y) {
- return !(x > y);
-}
-
-inline bool operator>=(StringPiece x, StringPiece y) {
- return !(x < y);
-}
-
-// allow StringPiece to be logged
-extern std::ostream& operator<<(std::ostream& o, StringPiece piece);
-
-} // namespace stringpiece_internal
-
-using ::google::protobuf::stringpiece_internal::StringPiece;
-
-} // namespace protobuf
-} // namespace google
-
-GOOGLE_PROTOBUF_HASH_NAMESPACE_DECLARATION_START
-template<> struct hash<StringPiece> {
- size_t operator()(const StringPiece& s) const {
- size_t result = 0;
- for (const char *str = s.data(), *end = str + s.size(); str < end; str++) {
- result = 5 * result + static_cast<size_t>(*str);
- }
- return result;
- }
-};
-GOOGLE_PROTOBUF_HASH_NAMESPACE_DECLARATION_END
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // STRINGS_STRINGPIECE_H_
diff --git a/include/google/protobuf/stubs/strutil.h b/include/google/protobuf/stubs/strutil.h
deleted file mode 100644
index 9658abf908..0000000000
--- a/include/google/protobuf/stubs/strutil.h
+++ /dev/null
@@ -1,950 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// from google3/strings/strutil.h
-
-#ifndef GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
-#define GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/stringpiece.h>
-#include <stdlib.h>
-
-#include <cstring>
-#include <google/protobuf/port_def.inc>
-#include <vector>
-
-namespace google {
-namespace protobuf {
-
-#if defined(_MSC_VER) && _MSC_VER < 1800
-#define strtoll _strtoi64
-#define strtoull _strtoui64
-#elif defined(__DECCXX) && defined(__osf__)
-// HP C++ on Tru64 does not have strtoll, but strtol is already 64-bit.
-#define strtoll strtol
-#define strtoull strtoul
-#endif
-
-// ----------------------------------------------------------------------
-// ascii_isalnum()
-// Check if an ASCII character is alphanumeric. We can't use ctype's
-// isalnum() because it is affected by locale. This function is applied
-// to identifiers in the protocol buffer language, not to natural-language
-// strings, so locale should not be taken into account.
-// ascii_isdigit()
-// Like above, but only accepts digits.
-// ascii_isspace()
-// Check if the character is a space character.
-// ----------------------------------------------------------------------
-
-inline bool ascii_isalnum(char c) {
- return ('a' <= c && c <= 'z') ||
- ('A' <= c && c <= 'Z') ||
- ('0' <= c && c <= '9');
-}
-
-inline bool ascii_isdigit(char c) {
- return ('0' <= c && c <= '9');
-}
-
-inline bool ascii_isspace(char c) {
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' ||
- c == '\r';
-}
-
-inline bool ascii_isupper(char c) {
- return c >= 'A' && c <= 'Z';
-}
-
-inline bool ascii_islower(char c) {
- return c >= 'a' && c <= 'z';
-}
-
-inline char ascii_toupper(char c) {
- return ascii_islower(c) ? c - ('a' - 'A') : c;
-}
-
-inline char ascii_tolower(char c) {
- return ascii_isupper(c) ? c + ('a' - 'A') : c;
-}
-
-inline int hex_digit_to_int(char c) {
- /* Assume ASCII. */
- int x = static_cast<unsigned char>(c);
- if (x > '9') {
- x += 9;
- }
- return x & 0xf;
-}
-
-// ----------------------------------------------------------------------
-// HasPrefixString()
-// Check if a string begins with a given prefix.
-// StripPrefixString()
-// Given a string and a putative prefix, returns the string minus the
-// prefix string if the prefix matches, otherwise the original
-// string.
-// ----------------------------------------------------------------------
-inline bool HasPrefixString(StringPiece str, StringPiece prefix) {
- return str.size() >= prefix.size() &&
- memcmp(str.data(), prefix.data(), prefix.size()) == 0;
-}
-
-inline std::string StripPrefixString(const std::string& str,
- const std::string& prefix) {
- if (HasPrefixString(str, prefix)) {
- return str.substr(prefix.size());
- } else {
- return str;
- }
-}
-
-// ----------------------------------------------------------------------
-// HasSuffixString()
-// Return true if str ends in suffix.
-// StripSuffixString()
-// Given a string and a putative suffix, returns the string minus the
-// suffix string if the suffix matches, otherwise the original
-// string.
-// ----------------------------------------------------------------------
-inline bool HasSuffixString(StringPiece str, StringPiece suffix) {
- return str.size() >= suffix.size() &&
- memcmp(str.data() + str.size() - suffix.size(), suffix.data(),
- suffix.size()) == 0;
-}
-
-inline std::string StripSuffixString(const std::string& str,
- const std::string& suffix) {
- if (HasSuffixString(str, suffix)) {
- return str.substr(0, str.size() - suffix.size());
- } else {
- return str;
- }
-}
-
-// ----------------------------------------------------------------------
-// ReplaceCharacters
-// Replaces any occurrence of the character 'remove' (or the characters
-// in 'remove') with the character 'replacewith'.
-// Good for keeping html characters or protocol characters (\t) out
-// of places where they might cause a problem.
-// StripWhitespace
-// Removes whitespaces from both ends of the given string.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT void ReplaceCharacters(std::string* s, const char* remove,
- char replacewith);
-
-PROTOBUF_EXPORT void StripWhitespace(std::string* s);
-
-// ----------------------------------------------------------------------
-// LowerString()
-// UpperString()
-// ToUpper()
-// Convert the characters in "s" to lowercase or uppercase. ASCII-only:
-// these functions intentionally ignore locale because they are applied to
-// identifiers used in the Protocol Buffer language, not to natural-language
-// strings.
-// ----------------------------------------------------------------------
-
-inline void LowerString(std::string* s) {
- std::string::iterator end = s->end();
- for (std::string::iterator i = s->begin(); i != end; ++i) {
- // tolower() changes based on locale. We don't want this!
- if ('A' <= *i && *i <= 'Z') *i += 'a' - 'A';
- }
-}
-
-inline void UpperString(std::string* s) {
- std::string::iterator end = s->end();
- for (std::string::iterator i = s->begin(); i != end; ++i) {
- // toupper() changes based on locale. We don't want this!
- if ('a' <= *i && *i <= 'z') *i += 'A' - 'a';
- }
-}
-
-inline void ToUpper(std::string* s) { UpperString(s); }
-
-inline std::string ToUpper(const std::string& s) {
- std::string out = s;
- UpperString(&out);
- return out;
-}
-
-// ----------------------------------------------------------------------
-// StringReplace()
-// Give me a string and two patterns "old" and "new", and I replace
-// the first instance of "old" in the string with "new", if it
-// exists. RETURN a new string, regardless of whether the replacement
-// happened or not.
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT std::string StringReplace(const std::string& s,
- const std::string& oldsub,
- const std::string& newsub,
- bool replace_all);
-
-// ----------------------------------------------------------------------
-// SplitStringUsing()
-// Split a string using a character delimiter. Append the components
-// to 'result'. If there are consecutive delimiters, this function skips
-// over all of them.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT void SplitStringUsing(StringPiece full, const char* delim,
- std::vector<std::string>* res);
-
-// Split a string using one or more byte delimiters, presented
-// as a nul-terminated c string. Append the components to 'result'.
-// If there are consecutive delimiters, this function will return
-// corresponding empty strings. If you want to drop the empty
-// strings, try SplitStringUsing().
-//
-// If "full" is the empty string, yields an empty string as the only value.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT void SplitStringAllowEmpty(StringPiece full, const char* delim,
- std::vector<std::string>* result);
-
-// ----------------------------------------------------------------------
-// Split()
-// Split a string using a character delimiter.
-// ----------------------------------------------------------------------
-inline std::vector<std::string> Split(StringPiece full, const char* delim,
- bool skip_empty = true) {
- std::vector<std::string> result;
- if (skip_empty) {
- SplitStringUsing(full, delim, &result);
- } else {
- SplitStringAllowEmpty(full, delim, &result);
- }
- return result;
-}
-
-// ----------------------------------------------------------------------
-// JoinStrings()
-// These methods concatenate a vector of strings into a C++ string, using
-// the C-string "delim" as a separator between components. There are two
-// flavors of the function, one flavor returns the concatenated string,
-// another takes a pointer to the target string. In the latter case the
-// target string is cleared and overwritten.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT void JoinStrings(const std::vector<std::string>& components,
- const char* delim, std::string* result);
-
-inline std::string JoinStrings(const std::vector<std::string>& components,
- const char* delim) {
- std::string result;
- JoinStrings(components, delim, &result);
- return result;
-}
-
-// ----------------------------------------------------------------------
-// UnescapeCEscapeSequences()
-// Copies "source" to "dest", rewriting C-style escape sequences
-// -- '\n', '\r', '\\', '\ooo', etc -- to their ASCII
-// equivalents. "dest" must be sufficiently large to hold all
-// the characters in the rewritten string (i.e. at least as large
-// as strlen(source) + 1 should be safe, since the replacements
-// are always shorter than the original escaped sequences). It's
-// safe for source and dest to be the same. RETURNS the length
-// of dest.
-//
-// It allows hex sequences \xhh, or generally \xhhhhh with an
-// arbitrary number of hex digits, but all of them together must
-// specify a value of a single byte (e.g. \x0045 is equivalent
-// to \x45, and \x1234 is erroneous).
-//
-// It also allows escape sequences of the form \uhhhh (exactly four
-// hex digits, upper or lower case) or \Uhhhhhhhh (exactly eight
-// hex digits, upper or lower case) to specify a Unicode code
-// point. The dest array will contain the UTF8-encoded version of
-// that code-point (e.g., if source contains \u2019, then dest will
-// contain the three bytes 0xE2, 0x80, and 0x99).
-//
-// Errors: In the first form of the call, errors are reported with
-// LOG(ERROR). The same is true for the second form of the call if
-// the pointer to the string std::vector is nullptr; otherwise, error
-// messages are stored in the std::vector. In either case, the effect on
-// the dest array is not defined, but rest of the source will be
-// processed.
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT int UnescapeCEscapeSequences(const char* source, char* dest);
-PROTOBUF_EXPORT int UnescapeCEscapeSequences(const char* source, char* dest,
- std::vector<std::string>* errors);
-
-// ----------------------------------------------------------------------
-// UnescapeCEscapeString()
-// This does the same thing as UnescapeCEscapeSequences, but creates
-// a new string. The caller does not need to worry about allocating
-// a dest buffer. This should be used for non performance critical
-// tasks such as printing debug messages. It is safe for src and dest
-// to be the same.
-//
-// The second call stores its errors in a supplied string vector.
-// If the string vector pointer is nullptr, it reports the errors with LOG().
-//
-// In the first and second calls, the length of dest is returned. In the
-// the third call, the new string is returned.
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT int UnescapeCEscapeString(const std::string& src,
- std::string* dest);
-PROTOBUF_EXPORT int UnescapeCEscapeString(const std::string& src,
- std::string* dest,
- std::vector<std::string>* errors);
-PROTOBUF_EXPORT std::string UnescapeCEscapeString(const std::string& src);
-
-// ----------------------------------------------------------------------
-// CEscape()
-// Escapes 'src' using C-style escape sequences and returns the resulting
-// string.
-//
-// Escaped chars: \n, \r, \t, ", ', \, and !isprint().
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT std::string CEscape(const std::string& src);
-
-// ----------------------------------------------------------------------
-// CEscapeAndAppend()
-// Escapes 'src' using C-style escape sequences, and appends the escaped
-// string to 'dest'.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT void CEscapeAndAppend(StringPiece src, std::string* dest);
-
-namespace strings {
-// Like CEscape() but does not escape bytes with the upper bit set.
-PROTOBUF_EXPORT std::string Utf8SafeCEscape(const std::string& src);
-
-// Like CEscape() but uses hex (\x) escapes instead of octals.
-PROTOBUF_EXPORT std::string CHexEscape(const std::string& src);
-} // namespace strings
-
-// ----------------------------------------------------------------------
-// strto32()
-// strtou32()
-// strto64()
-// strtou64()
-// Architecture-neutral plug compatible replacements for strtol() and
-// strtoul(). Long's have different lengths on ILP-32 and LP-64
-// platforms, so using these is safer, from the point of view of
-// overflow behavior, than using the standard libc functions.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int32_t strto32_adaptor(const char* nptr, char** endptr,
- int base);
-PROTOBUF_EXPORT uint32_t strtou32_adaptor(const char* nptr, char** endptr,
- int base);
-
-inline int32_t strto32(const char *nptr, char **endptr, int base) {
- if (sizeof(int32_t) == sizeof(long))
- return strtol(nptr, endptr, base);
- else
- return strto32_adaptor(nptr, endptr, base);
-}
-
-inline uint32_t strtou32(const char *nptr, char **endptr, int base) {
- if (sizeof(uint32_t) == sizeof(unsigned long))
- return strtoul(nptr, endptr, base);
- else
- return strtou32_adaptor(nptr, endptr, base);
-}
-
-// For now, long long is 64-bit on all the platforms we care about, so these
-// functions can simply pass the call to strto[u]ll.
-inline int64_t strto64(const char *nptr, char **endptr, int base) {
- static_assert(sizeof(int64_t) == sizeof(long long),
- "sizeof int64_t is not sizeof long long");
- return strtoll(nptr, endptr, base);
-}
-
-inline uint64_t strtou64(const char *nptr, char **endptr, int base) {
- static_assert(sizeof(uint64_t) == sizeof(unsigned long long),
- "sizeof uint64_t is not sizeof unsigned long long");
- return strtoull(nptr, endptr, base);
-}
-
-// ----------------------------------------------------------------------
-// safe_strtob()
-// safe_strto32()
-// safe_strtou32()
-// safe_strto64()
-// safe_strtou64()
-// safe_strtof()
-// safe_strtod()
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT bool safe_strtob(StringPiece str, bool* value);
-
-PROTOBUF_EXPORT bool safe_strto32(const std::string& str, int32_t* value);
-PROTOBUF_EXPORT bool safe_strtou32(const std::string& str, uint32_t* value);
-inline bool safe_strto32(const char* str, int32_t* value) {
- return safe_strto32(std::string(str), value);
-}
-inline bool safe_strto32(StringPiece str, int32_t* value) {
- return safe_strto32(str.ToString(), value);
-}
-inline bool safe_strtou32(const char* str, uint32_t* value) {
- return safe_strtou32(std::string(str), value);
-}
-inline bool safe_strtou32(StringPiece str, uint32_t* value) {
- return safe_strtou32(str.ToString(), value);
-}
-
-PROTOBUF_EXPORT bool safe_strto64(const std::string& str, int64_t* value);
-PROTOBUF_EXPORT bool safe_strtou64(const std::string& str, uint64_t* value);
-inline bool safe_strto64(const char* str, int64_t* value) {
- return safe_strto64(std::string(str), value);
-}
-inline bool safe_strto64(StringPiece str, int64_t* value) {
- return safe_strto64(str.ToString(), value);
-}
-inline bool safe_strtou64(const char* str, uint64_t* value) {
- return safe_strtou64(std::string(str), value);
-}
-inline bool safe_strtou64(StringPiece str, uint64_t* value) {
- return safe_strtou64(str.ToString(), value);
-}
-
-PROTOBUF_EXPORT bool safe_strtof(const char* str, float* value);
-PROTOBUF_EXPORT bool safe_strtod(const char* str, double* value);
-inline bool safe_strtof(const std::string& str, float* value) {
- return safe_strtof(str.c_str(), value);
-}
-inline bool safe_strtod(const std::string& str, double* value) {
- return safe_strtod(str.c_str(), value);
-}
-inline bool safe_strtof(StringPiece str, float* value) {
- return safe_strtof(str.ToString(), value);
-}
-inline bool safe_strtod(StringPiece str, double* value) {
- return safe_strtod(str.ToString(), value);
-}
-
-// ----------------------------------------------------------------------
-// FastIntToBuffer()
-// FastHexToBuffer()
-// FastHex64ToBuffer()
-// FastHex32ToBuffer()
-// FastTimeToBuffer()
-// These are intended for speed. FastIntToBuffer() assumes the
-// integer is non-negative. FastHexToBuffer() puts output in
-// hex rather than decimal. FastTimeToBuffer() puts the output
-// into RFC822 format.
-//
-// FastHex64ToBuffer() puts a 64-bit unsigned value in hex-format,
-// padded to exactly 16 bytes (plus one byte for '\0')
-//
-// FastHex32ToBuffer() puts a 32-bit unsigned value in hex-format,
-// padded to exactly 8 bytes (plus one byte for '\0')
-//
-// All functions take the output buffer as an arg.
-// They all return a pointer to the beginning of the output,
-// which may not be the beginning of the input buffer.
-// ----------------------------------------------------------------------
-
-// Suggested buffer size for FastToBuffer functions. Also works with
-// DoubleToBuffer() and FloatToBuffer().
-static const int kFastToBufferSize = 32;
-
-PROTOBUF_EXPORT char* FastInt32ToBuffer(int32_t i, char* buffer);
-PROTOBUF_EXPORT char* FastInt64ToBuffer(int64_t i, char* buffer);
-char* FastUInt32ToBuffer(uint32_t i, char* buffer); // inline below
-char* FastUInt64ToBuffer(uint64_t i, char* buffer); // inline below
-PROTOBUF_EXPORT char* FastHexToBuffer(int i, char* buffer);
-PROTOBUF_EXPORT char* FastHex64ToBuffer(uint64_t i, char* buffer);
-PROTOBUF_EXPORT char* FastHex32ToBuffer(uint32_t i, char* buffer);
-
-// at least 22 bytes long
-inline char* FastIntToBuffer(int i, char* buffer) {
- return (sizeof(i) == 4 ?
- FastInt32ToBuffer(i, buffer) : FastInt64ToBuffer(i, buffer));
-}
-inline char* FastUIntToBuffer(unsigned int i, char* buffer) {
- return (sizeof(i) == 4 ?
- FastUInt32ToBuffer(i, buffer) : FastUInt64ToBuffer(i, buffer));
-}
-inline char* FastLongToBuffer(long i, char* buffer) {
- return (sizeof(i) == 4 ?
- FastInt32ToBuffer(i, buffer) : FastInt64ToBuffer(i, buffer));
-}
-inline char* FastULongToBuffer(unsigned long i, char* buffer) {
- return (sizeof(i) == 4 ?
- FastUInt32ToBuffer(i, buffer) : FastUInt64ToBuffer(i, buffer));
-}
-
-// ----------------------------------------------------------------------
-// FastInt32ToBufferLeft()
-// FastUInt32ToBufferLeft()
-// FastInt64ToBufferLeft()
-// FastUInt64ToBufferLeft()
-//
-// Like the Fast*ToBuffer() functions above, these are intended for speed.
-// Unlike the Fast*ToBuffer() functions, however, these functions write
-// their output to the beginning of the buffer (hence the name, as the
-// output is left-aligned). The caller is responsible for ensuring that
-// the buffer has enough space to hold the output.
-//
-// Returns a pointer to the end of the string (i.e. the null character
-// terminating the string).
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT char* FastInt32ToBufferLeft(int32_t i, char* buffer);
-PROTOBUF_EXPORT char* FastUInt32ToBufferLeft(uint32_t i, char* buffer);
-PROTOBUF_EXPORT char* FastInt64ToBufferLeft(int64_t i, char* buffer);
-PROTOBUF_EXPORT char* FastUInt64ToBufferLeft(uint64_t i, char* buffer);
-
-// Just define these in terms of the above.
-inline char* FastUInt32ToBuffer(uint32_t i, char* buffer) {
- FastUInt32ToBufferLeft(i, buffer);
- return buffer;
-}
-inline char* FastUInt64ToBuffer(uint64_t i, char* buffer) {
- FastUInt64ToBufferLeft(i, buffer);
- return buffer;
-}
-
-inline std::string SimpleBtoa(bool value) { return value ? "true" : "false"; }
-
-// ----------------------------------------------------------------------
-// SimpleItoa()
-// Description: converts an integer to a string.
-//
-// Return value: string
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT std::string SimpleItoa(int i);
-PROTOBUF_EXPORT std::string SimpleItoa(unsigned int i);
-PROTOBUF_EXPORT std::string SimpleItoa(long i);
-PROTOBUF_EXPORT std::string SimpleItoa(unsigned long i);
-PROTOBUF_EXPORT std::string SimpleItoa(long long i);
-PROTOBUF_EXPORT std::string SimpleItoa(unsigned long long i);
-
-// ----------------------------------------------------------------------
-// SimpleDtoa()
-// SimpleFtoa()
-// DoubleToBuffer()
-// FloatToBuffer()
-// Description: converts a double or float to a string which, if
-// passed to NoLocaleStrtod(), will produce the exact same original double
-// (except in case of NaN; all NaNs are considered the same value).
-// We try to keep the string short but it's not guaranteed to be as
-// short as possible.
-//
-// DoubleToBuffer() and FloatToBuffer() write the text to the given
-// buffer and return it. The buffer must be at least
-// kDoubleToBufferSize bytes for doubles and kFloatToBufferSize
-// bytes for floats. kFastToBufferSize is also guaranteed to be large
-// enough to hold either.
-//
-// Return value: string
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT std::string SimpleDtoa(double value);
-PROTOBUF_EXPORT std::string SimpleFtoa(float value);
-
-PROTOBUF_EXPORT char* DoubleToBuffer(double i, char* buffer);
-PROTOBUF_EXPORT char* FloatToBuffer(float i, char* buffer);
-
-// In practice, doubles should never need more than 24 bytes and floats
-// should never need more than 14 (including null terminators), but we
-// overestimate to be safe.
-static const int kDoubleToBufferSize = 32;
-static const int kFloatToBufferSize = 24;
-
-namespace strings {
-
-enum PadSpec {
- NO_PAD = 1,
- ZERO_PAD_2,
- ZERO_PAD_3,
- ZERO_PAD_4,
- ZERO_PAD_5,
- ZERO_PAD_6,
- ZERO_PAD_7,
- ZERO_PAD_8,
- ZERO_PAD_9,
- ZERO_PAD_10,
- ZERO_PAD_11,
- ZERO_PAD_12,
- ZERO_PAD_13,
- ZERO_PAD_14,
- ZERO_PAD_15,
- ZERO_PAD_16,
-};
-
-struct Hex {
- uint64_t value;
- enum PadSpec spec;
- template <class Int>
- explicit Hex(Int v, PadSpec s = NO_PAD)
- : spec(s) {
- // Prevent sign-extension by casting integers to
- // their unsigned counterparts.
-#ifdef LANG_CXX11
- static_assert(
- sizeof(v) == 1 || sizeof(v) == 2 || sizeof(v) == 4 || sizeof(v) == 8,
- "Unknown integer type");
-#endif
- value = sizeof(v) == 1 ? static_cast<uint8_t>(v)
- : sizeof(v) == 2 ? static_cast<uint16_t>(v)
- : sizeof(v) == 4 ? static_cast<uint32_t>(v)
- : static_cast<uint64_t>(v);
- }
-};
-
-struct PROTOBUF_EXPORT AlphaNum {
- const char *piece_data_; // move these to string_ref eventually
- size_t piece_size_; // move these to string_ref eventually
-
- char digits[kFastToBufferSize];
-
- // No bool ctor -- bools convert to an integral type.
- // A bool ctor would also convert incoming pointers (bletch).
-
- AlphaNum(int i32)
- : piece_data_(digits),
- piece_size_(FastInt32ToBufferLeft(i32, digits) - &digits[0]) {}
- AlphaNum(unsigned int u32)
- : piece_data_(digits),
- piece_size_(FastUInt32ToBufferLeft(u32, digits) - &digits[0]) {}
- AlphaNum(long long i64)
- : piece_data_(digits),
- piece_size_(FastInt64ToBufferLeft(i64, digits) - &digits[0]) {}
- AlphaNum(unsigned long long u64)
- : piece_data_(digits),
- piece_size_(FastUInt64ToBufferLeft(u64, digits) - &digits[0]) {}
-
- // Note: on some architectures, "long" is only 32 bits, not 64, but the
- // performance hit of using FastInt64ToBufferLeft to handle 32-bit values
- // is quite minor.
- AlphaNum(long i64)
- : piece_data_(digits),
- piece_size_(FastInt64ToBufferLeft(i64, digits) - &digits[0]) {}
- AlphaNum(unsigned long u64)
- : piece_data_(digits),
- piece_size_(FastUInt64ToBufferLeft(u64, digits) - &digits[0]) {}
-
- AlphaNum(float f)
- : piece_data_(digits), piece_size_(strlen(FloatToBuffer(f, digits))) {}
- AlphaNum(double f)
- : piece_data_(digits), piece_size_(strlen(DoubleToBuffer(f, digits))) {}
-
- AlphaNum(Hex hex);
-
- AlphaNum(const char* c_str)
- : piece_data_(c_str), piece_size_(strlen(c_str)) {}
- // TODO: Add a string_ref constructor, eventually
- // AlphaNum(const StringPiece &pc) : piece(pc) {}
-
- AlphaNum(const std::string& str)
- : piece_data_(str.data()), piece_size_(str.size()) {}
-
- AlphaNum(StringPiece str)
- : piece_data_(str.data()), piece_size_(str.size()) {}
-
- size_t size() const { return piece_size_; }
- const char *data() const { return piece_data_; }
-
- private:
- // Use ":" not ':'
- AlphaNum(char c); // NOLINT(runtime/explicit)
-
- // Disallow copy and assign.
- AlphaNum(const AlphaNum&);
- void operator=(const AlphaNum&);
-};
-
-} // namespace strings
-
-using strings::AlphaNum;
-
-// ----------------------------------------------------------------------
-// StrCat()
-// This merges the given strings or numbers, with no delimiter. This
-// is designed to be the fastest possible way to construct a string out
-// of a mix of raw C strings, strings, bool values,
-// and numeric values.
-//
-// Don't use this for user-visible strings. The localization process
-// works poorly on strings built up out of fragments.
-//
-// For clarity and performance, don't use StrCat when appending to a
-// string. In particular, avoid using any of these (anti-)patterns:
-// str.append(StrCat(...)
-// str += StrCat(...)
-// str = StrCat(str, ...)
-// where the last is the worse, with the potential to change a loop
-// from a linear time operation with O(1) dynamic allocations into a
-// quadratic time operation with O(n) dynamic allocations. StrAppend
-// is a better choice than any of the above, subject to the restriction
-// of StrAppend(&str, a, b, c, ...) that none of the a, b, c, ... may
-// be a reference into str.
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d,
- const AlphaNum& e);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d,
- const AlphaNum& e, const AlphaNum& f);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d,
- const AlphaNum& e, const AlphaNum& f,
- const AlphaNum& g);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d,
- const AlphaNum& e, const AlphaNum& f,
- const AlphaNum& g, const AlphaNum& h);
-PROTOBUF_EXPORT std::string StrCat(const AlphaNum& a, const AlphaNum& b,
- const AlphaNum& c, const AlphaNum& d,
- const AlphaNum& e, const AlphaNum& f,
- const AlphaNum& g, const AlphaNum& h,
- const AlphaNum& i);
-
-inline std::string StrCat(const AlphaNum& a) {
- return std::string(a.data(), a.size());
-}
-
-// ----------------------------------------------------------------------
-// StrAppend()
-// Same as above, but adds the output to the given string.
-// WARNING: For speed, StrAppend does not try to check each of its input
-// arguments to be sure that they are not a subset of the string being
-// appended to. That is, while this will work:
-//
-// string s = "foo";
-// s += s;
-//
-// This will not (necessarily) work:
-//
-// string s = "foo";
-// StrAppend(&s, s);
-//
-// Note: while StrCat supports appending up to 9 arguments, StrAppend
-// is currently limited to 4. That's rarely an issue except when
-// automatically transforming StrCat to StrAppend, and can easily be
-// worked around as consecutive calls to StrAppend are quite efficient.
-// ----------------------------------------------------------------------
-
-PROTOBUF_EXPORT void StrAppend(std::string* dest, const AlphaNum& a);
-PROTOBUF_EXPORT void StrAppend(std::string* dest, const AlphaNum& a,
- const AlphaNum& b);
-PROTOBUF_EXPORT void StrAppend(std::string* dest, const AlphaNum& a,
- const AlphaNum& b, const AlphaNum& c);
-PROTOBUF_EXPORT void StrAppend(std::string* dest, const AlphaNum& a,
- const AlphaNum& b, const AlphaNum& c,
- const AlphaNum& d);
-
-// ----------------------------------------------------------------------
-// Join()
-// These methods concatenate a range of components into a C++ string, using
-// the C-string "delim" as a separator between components.
-// ----------------------------------------------------------------------
-template <typename Iterator>
-void Join(Iterator start, Iterator end, const char* delim,
- std::string* result) {
- for (Iterator it = start; it != end; ++it) {
- if (it != start) {
- result->append(delim);
- }
- StrAppend(result, *it);
- }
-}
-
-template <typename Range>
-std::string Join(const Range& components, const char* delim) {
- std::string result;
- Join(components.begin(), components.end(), delim, &result);
- return result;
-}
-
-// ----------------------------------------------------------------------
-// ToHex()
-// Return a lower-case hex string representation of the given integer.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT std::string ToHex(uint64_t num);
-
-// ----------------------------------------------------------------------
-// GlobalReplaceSubstring()
-// Replaces all instances of a substring in a string. Does nothing
-// if 'substring' is empty. Returns the number of replacements.
-//
-// NOTE: The string pieces must not overlap s.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int GlobalReplaceSubstring(const std::string& substring,
- const std::string& replacement,
- std::string* s);
-
-// ----------------------------------------------------------------------
-// Base64Unescape()
-// Converts "src" which is encoded in Base64 to its binary equivalent and
-// writes it to "dest". If src contains invalid characters, dest is cleared
-// and the function returns false. Returns true on success.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT bool Base64Unescape(StringPiece src, std::string* dest);
-
-// ----------------------------------------------------------------------
-// WebSafeBase64Unescape()
-// This is a variation of Base64Unescape which uses '-' instead of '+', and
-// '_' instead of '/'. src is not null terminated, instead specify len. I
-// recommend that slen<szdest, but we honor szdest anyway.
-// RETURNS the length of dest, or -1 if src contains invalid chars.
-
-// The variation that stores into a string clears the string first, and
-// returns false (with dest empty) if src contains invalid chars; for
-// this version src and dest must be different strings.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int WebSafeBase64Unescape(const char* src, int slen, char* dest,
- int szdest);
-PROTOBUF_EXPORT bool WebSafeBase64Unescape(StringPiece src, std::string* dest);
-
-// Return the length to use for the output buffer given to the base64 escape
-// routines. Make sure to use the same value for do_padding in both.
-// This function may return incorrect results if given input_len values that
-// are extremely high, which should happen rarely.
-PROTOBUF_EXPORT int CalculateBase64EscapedLen(int input_len, bool do_padding);
-// Use this version when calling Base64Escape without a do_padding arg.
-PROTOBUF_EXPORT int CalculateBase64EscapedLen(int input_len);
-
-// ----------------------------------------------------------------------
-// Base64Escape()
-// WebSafeBase64Escape()
-// Encode "src" to "dest" using base64 encoding.
-// src is not null terminated, instead specify len.
-// 'dest' should have at least CalculateBase64EscapedLen() length.
-// RETURNS the length of dest.
-// The WebSafe variation use '-' instead of '+' and '_' instead of '/'
-// so that we can place the out in the URL or cookies without having
-// to escape them. It also has an extra parameter "do_padding",
-// which when set to false will prevent padding with "=".
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int Base64Escape(const unsigned char* src, int slen, char* dest,
- int szdest);
-PROTOBUF_EXPORT int WebSafeBase64Escape(const unsigned char* src, int slen,
- char* dest, int szdest,
- bool do_padding);
-// Encode src into dest with padding.
-PROTOBUF_EXPORT void Base64Escape(StringPiece src, std::string* dest);
-// Encode src into dest web-safely without padding.
-PROTOBUF_EXPORT void WebSafeBase64Escape(StringPiece src, std::string* dest);
-// Encode src into dest web-safely with padding.
-PROTOBUF_EXPORT void WebSafeBase64EscapeWithPadding(StringPiece src,
- std::string* dest);
-
-PROTOBUF_EXPORT void Base64Escape(const unsigned char* src, int szsrc,
- std::string* dest, bool do_padding);
-PROTOBUF_EXPORT void WebSafeBase64Escape(const unsigned char* src, int szsrc,
- std::string* dest, bool do_padding);
-
-inline bool IsValidCodePoint(uint32_t code_point) {
- return code_point < 0xD800 ||
- (code_point >= 0xE000 && code_point <= 0x10FFFF);
-}
-
-static const int UTFmax = 4;
-// ----------------------------------------------------------------------
-// EncodeAsUTF8Char()
-// Helper to append a Unicode code point to a string as UTF8, without bringing
-// in any external dependencies. The output buffer must be as least 4 bytes
-// large.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int EncodeAsUTF8Char(uint32_t code_point, char* output);
-
-// ----------------------------------------------------------------------
-// UTF8FirstLetterNumBytes()
-// Length of the first UTF-8 character.
-// ----------------------------------------------------------------------
-PROTOBUF_EXPORT int UTF8FirstLetterNumBytes(const char* src, int len);
-
-// From google3/third_party/absl/strings/escaping.h
-
-// ----------------------------------------------------------------------
-// CleanStringLineEndings()
-// Clean up a multi-line string to conform to Unix line endings.
-// Reads from src and appends to dst, so usually dst should be empty.
-//
-// If there is no line ending at the end of a non-empty string, it can
-// be added automatically.
-//
-// Four different types of input are correctly handled:
-//
-// - Unix/Linux files: line ending is LF: pass through unchanged
-//
-// - DOS/Windows files: line ending is CRLF: convert to LF
-//
-// - Legacy Mac files: line ending is CR: convert to LF
-//
-// - Garbled files: random line endings: convert gracefully
-// lonely CR, lonely LF, CRLF: convert to LF
-//
-// @param src The multi-line string to convert
-// @param dst The converted string is appended to this string
-// @param auto_end_last_line Automatically terminate the last line
-//
-// Limitations:
-//
-// This does not do the right thing for CRCRLF files created by
-// broken programs that do another Unix->DOS conversion on files
-// that are already in CRLF format. For this, a two-pass approach
-// brute-force would be needed that
-//
-// (1) determines the presence of LF (first one is ok)
-// (2) if yes, removes any CR, else convert every CR to LF
-PROTOBUF_EXPORT void CleanStringLineEndings(const std::string& src,
- std::string* dst,
- bool auto_end_last_line);
-
-// Same as above, but transforms the argument in place.
-PROTOBUF_EXPORT void CleanStringLineEndings(std::string* str,
- bool auto_end_last_line);
-
-namespace strings {
-inline bool EndsWith(StringPiece text, StringPiece suffix) {
- return suffix.empty() ||
- (text.size() >= suffix.size() &&
- memcmp(text.data() + (text.size() - suffix.size()), suffix.data(),
- suffix.size()) == 0);
-}
-} // namespace strings
-
-namespace internal {
-
-// A locale-independent version of the standard strtod(), which always
-// uses a dot as the decimal separator.
-double NoLocaleStrtod(const char* str, char** endptr);
-
-} // namespace internal
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
diff --git a/include/google/protobuf/stubs/template_util.h b/include/google/protobuf/stubs/template_util.h
deleted file mode 100644
index feef904bea..0000000000
--- a/include/google/protobuf/stubs/template_util.h
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2005 Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// ----
-// Author: lar@google.com (Laramie Leavitt)
-//
-// Template metaprogramming utility functions.
-//
-// This code is compiled directly on many platforms, including client
-// platforms like Windows, Mac, and embedded systems. Before making
-// any changes here, make sure that you're not breaking any platforms.
-//
-//
-// The names chosen here reflect those used in tr1 and the boost::mpl
-// library, there are similar operations used in the Loki library as
-// well. I prefer the boost names for 2 reasons:
-// 1. I think that portions of the Boost libraries are more likely to
-// be included in the c++ standard.
-// 2. It is not impossible that some of the boost libraries will be
-// included in our own build in the future.
-// Both of these outcomes means that we may be able to directly replace
-// some of these with boost equivalents.
-//
-#ifndef GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_
-#define GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// Types small_ and big_ are guaranteed such that sizeof(small_) <
-// sizeof(big_)
-typedef char small_;
-
-struct big_ {
- char dummy[2];
-};
-
-// Identity metafunction.
-template <class T>
-struct identity_ {
- typedef T type;
-};
-
-// integral_constant, defined in tr1, is a wrapper for an integer
-// value. We don't really need this generality; we could get away
-// with hardcoding the integer type to bool. We use the fully
-// general integer_constant for compatibility with tr1.
-
-template<class T, T v>
-struct integral_constant {
- static const T value = v;
- typedef T value_type;
- typedef integral_constant<T, v> type;
-};
-
-template <class T, T v> const T integral_constant<T, v>::value;
-
-
-// Abbreviations: true_type and false_type are structs that represent boolean
-// true and false values. Also define the boost::mpl versions of those names,
-// true_ and false_.
-typedef integral_constant<bool, true> true_type;
-typedef integral_constant<bool, false> false_type;
-typedef true_type true_;
-typedef false_type false_;
-
-// if_ is a templatized conditional statement.
-// if_<cond, A, B> is a compile time evaluation of cond.
-// if_<>::type contains A if cond is true, B otherwise.
-template<bool cond, typename A, typename B>
-struct if_{
- typedef A type;
-};
-
-template<typename A, typename B>
-struct if_<false, A, B> {
- typedef B type;
-};
-
-
-// type_equals_ is a template type comparator, similar to Loki IsSameType.
-// type_equals_<A, B>::value is true iff "A" is the same type as "B".
-//
-// New code should prefer base::is_same, defined in base/type_traits.h.
-// It is functionally identical, but is_same is the standard spelling.
-template<typename A, typename B>
-struct type_equals_ : public false_ {
-};
-
-template<typename A>
-struct type_equals_<A, A> : public true_ {
-};
-
-// and_ is a template && operator.
-// and_<A, B>::value evaluates "A::value && B::value".
-template<typename A, typename B>
-struct and_ : public integral_constant<bool, (A::value && B::value)> {
-};
-
-// or_ is a template || operator.
-// or_<A, B>::value evaluates "A::value || B::value".
-template<typename A, typename B>
-struct or_ : public integral_constant<bool, (A::value || B::value)> {
-};
-
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#endif // GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_
diff --git a/include/google/protobuf/text_format.h b/include/google/protobuf/text_format.h
deleted file mode 100644
index e10bef7ddf..0000000000
--- a/include/google/protobuf/text_format.h
+++ /dev/null
@@ -1,693 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jschorr@google.com (Joseph Schorr)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Utilities for printing and parsing protocol messages in a human-readable,
-// text-based format.
-
-#ifndef GOOGLE_PROTOBUF_TEXT_FORMAT_H__
-#define GOOGLE_PROTOBUF_TEXT_FORMAT_H__
-
-
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/message_lite.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-
-namespace internal {
-PROTOBUF_EXPORT extern const char kDebugStringSilentMarker[1];
-PROTOBUF_EXPORT extern const char kDebugStringSilentMarkerForDetection[3];
-} // namespace internal
-
-namespace io {
-class ErrorCollector; // tokenizer.h
-}
-
-// This class implements protocol buffer text format, colloquially known as text
-// proto. Printing and parsing protocol messages in text format is useful for
-// debugging and human editing of messages.
-//
-// This class is really a namespace that contains only static methods.
-class PROTOBUF_EXPORT TextFormat {
- public:
- // Outputs a textual representation of the given message to the given
- // output stream. Returns false if printing fails.
- static bool Print(const Message& message, io::ZeroCopyOutputStream* output);
-
- // Print the fields in an UnknownFieldSet. They are printed by tag number
- // only. Embedded messages are heuristically identified by attempting to
- // parse them. Returns false if printing fails.
- static bool PrintUnknownFields(const UnknownFieldSet& unknown_fields,
- io::ZeroCopyOutputStream* output);
-
- // Like Print(), but outputs directly to a string.
- // Note: output will be cleared prior to printing, and will be left empty
- // even if printing fails. Returns false if printing fails.
- static bool PrintToString(const Message& message, std::string* output);
-
- // Like PrintUnknownFields(), but outputs directly to a string. Returns
- // false if printing fails.
- static bool PrintUnknownFieldsToString(const UnknownFieldSet& unknown_fields,
- std::string* output);
-
- // Outputs a textual representation of the value of the field supplied on
- // the message supplied. For non-repeated fields, an index of -1 must
- // be supplied. Note that this method will print the default value for a
- // field if it is not set.
- static void PrintFieldValueToString(const Message& message,
- const FieldDescriptor* field, int index,
- std::string* output);
-
- class PROTOBUF_EXPORT BaseTextGenerator {
- public:
- virtual ~BaseTextGenerator();
-
- virtual void Indent() {}
- virtual void Outdent() {}
- // Returns the current indentation size in characters.
- virtual size_t GetCurrentIndentationSize() const { return 0; }
-
- // Print text to the output stream.
- virtual void Print(const char* text, size_t size) = 0;
-
- void PrintString(const std::string& str) { Print(str.data(), str.size()); }
-
- template <size_t n>
- void PrintLiteral(const char (&text)[n]) {
- Print(text, n - 1); // n includes the terminating zero character.
- }
- };
-
- // The default printer that converts scalar values from fields into their
- // string representation.
- // You can derive from this FastFieldValuePrinter if you want to have fields
- // to be printed in a different way and register it at the Printer.
- class PROTOBUF_EXPORT FastFieldValuePrinter {
- public:
- FastFieldValuePrinter();
- virtual ~FastFieldValuePrinter();
- virtual void PrintBool(bool val, BaseTextGenerator* generator) const;
- virtual void PrintInt32(int32_t val, BaseTextGenerator* generator) const;
- virtual void PrintUInt32(uint32_t val, BaseTextGenerator* generator) const;
- virtual void PrintInt64(int64_t val, BaseTextGenerator* generator) const;
- virtual void PrintUInt64(uint64_t val, BaseTextGenerator* generator) const;
- virtual void PrintFloat(float val, BaseTextGenerator* generator) const;
- virtual void PrintDouble(double val, BaseTextGenerator* generator) const;
- virtual void PrintString(const std::string& val,
- BaseTextGenerator* generator) const;
- virtual void PrintBytes(const std::string& val,
- BaseTextGenerator* generator) const;
- virtual void PrintEnum(int32_t val, const std::string& name,
- BaseTextGenerator* generator) const;
- virtual void PrintFieldName(const Message& message, int field_index,
- int field_count, const Reflection* reflection,
- const FieldDescriptor* field,
- BaseTextGenerator* generator) const;
- virtual void PrintFieldName(const Message& message,
- const Reflection* reflection,
- const FieldDescriptor* field,
- BaseTextGenerator* generator) const;
- virtual void PrintMessageStart(const Message& message, int field_index,
- int field_count, bool single_line_mode,
- BaseTextGenerator* generator) const;
- // Allows to override the logic on how to print the content of a message.
- // Return false to use the default printing logic. Note that it is legal for
- // this function to print something and then return false to use the default
- // content printing (although at that point it would behave similarly to
- // PrintMessageStart).
- virtual bool PrintMessageContent(const Message& message, int field_index,
- int field_count, bool single_line_mode,
- BaseTextGenerator* generator) const;
- virtual void PrintMessageEnd(const Message& message, int field_index,
- int field_count, bool single_line_mode,
- BaseTextGenerator* generator) const;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FastFieldValuePrinter);
- };
-
- // Deprecated: please use FastFieldValuePrinter instead.
- class PROTOBUF_EXPORT FieldValuePrinter {
- public:
- FieldValuePrinter();
- virtual ~FieldValuePrinter();
- virtual std::string PrintBool(bool val) const;
- virtual std::string PrintInt32(int32_t val) const;
- virtual std::string PrintUInt32(uint32_t val) const;
- virtual std::string PrintInt64(int64_t val) const;
- virtual std::string PrintUInt64(uint64_t val) const;
- virtual std::string PrintFloat(float val) const;
- virtual std::string PrintDouble(double val) const;
- virtual std::string PrintString(const std::string& val) const;
- virtual std::string PrintBytes(const std::string& val) const;
- virtual std::string PrintEnum(int32_t val, const std::string& name) const;
- virtual std::string PrintFieldName(const Message& message,
- const Reflection* reflection,
- const FieldDescriptor* field) const;
- virtual std::string PrintMessageStart(const Message& message,
- int field_index, int field_count,
- bool single_line_mode) const;
- virtual std::string PrintMessageEnd(const Message& message, int field_index,
- int field_count,
- bool single_line_mode) const;
-
- private:
- FastFieldValuePrinter delegate_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldValuePrinter);
- };
-
- class PROTOBUF_EXPORT MessagePrinter {
- public:
- MessagePrinter() {}
- virtual ~MessagePrinter() {}
- virtual void Print(const Message& message, bool single_line_mode,
- BaseTextGenerator* generator) const = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessagePrinter);
- };
-
- // Interface that Printers or Parsers can use to find extensions, or types
- // referenced in Any messages.
- class PROTOBUF_EXPORT Finder {
- public:
- virtual ~Finder();
-
- // Try to find an extension of *message by fully-qualified field
- // name. Returns nullptr if no extension is known for this name or number.
- // The base implementation uses the extensions already known by the message.
- virtual const FieldDescriptor* FindExtension(Message* message,
- const std::string& name) const;
-
- // Similar to FindExtension, but uses a Descriptor and the extension number
- // instead of using a Message and the name when doing the look up.
- virtual const FieldDescriptor* FindExtensionByNumber(
- const Descriptor* descriptor, int number) const;
-
- // Find the message type for an Any proto.
- // Returns nullptr if no message is known for this name.
- // The base implementation only accepts prefixes of type.googleprod.com/ or
- // type.googleapis.com/, and searches the DescriptorPool of the parent
- // message.
- virtual const Descriptor* FindAnyType(const Message& message,
- const std::string& prefix,
- const std::string& name) const;
-
- // Find the message factory for the given extension field. This can be used
- // to generalize the Parser to add extension fields to a message in the same
- // way as the "input" message for the Parser.
- virtual MessageFactory* FindExtensionFactory(
- const FieldDescriptor* field) const;
- };
-
- // Class for those users which require more fine-grained control over how
- // a protobuffer message is printed out.
- class PROTOBUF_EXPORT Printer {
- public:
- Printer();
-
- // Like TextFormat::Print
- bool Print(const Message& message, io::ZeroCopyOutputStream* output) const;
- // Like TextFormat::PrintUnknownFields
- bool PrintUnknownFields(const UnknownFieldSet& unknown_fields,
- io::ZeroCopyOutputStream* output) const;
- // Like TextFormat::PrintToString
- bool PrintToString(const Message& message, std::string* output) const;
- // Like TextFormat::PrintUnknownFieldsToString
- bool PrintUnknownFieldsToString(const UnknownFieldSet& unknown_fields,
- std::string* output) const;
- // Like TextFormat::PrintFieldValueToString
- void PrintFieldValueToString(const Message& message,
- const FieldDescriptor* field, int index,
- std::string* output) const;
-
- // Adjust the initial indent level of all output. Each indent level is
- // equal to two spaces.
- void SetInitialIndentLevel(int indent_level) {
- initial_indent_level_ = indent_level;
- }
-
- // If printing in single line mode, then the entire message will be output
- // on a single line with no line breaks.
- void SetSingleLineMode(bool single_line_mode) {
- single_line_mode_ = single_line_mode;
- }
-
- bool IsInSingleLineMode() const { return single_line_mode_; }
-
- // If use_field_number is true, uses field number instead of field name.
- void SetUseFieldNumber(bool use_field_number) {
- use_field_number_ = use_field_number;
- }
-
- // Set true to print repeated primitives in a format like:
- // field_name: [1, 2, 3, 4]
- // instead of printing each value on its own line. Short format applies
- // only to primitive values -- i.e. everything except strings and
- // sub-messages/groups.
- void SetUseShortRepeatedPrimitives(bool use_short_repeated_primitives) {
- use_short_repeated_primitives_ = use_short_repeated_primitives;
- }
-
- // Set true to output UTF-8 instead of ASCII. The only difference
- // is that bytes >= 0x80 in string fields will not be escaped,
- // because they are assumed to be part of UTF-8 multi-byte
- // sequences. This will change the default FastFieldValuePrinter.
- void SetUseUtf8StringEscaping(bool as_utf8);
-
- // Set the default FastFieldValuePrinter that is used for all fields that
- // don't have a field-specific printer registered.
- // Takes ownership of the printer.
- void SetDefaultFieldValuePrinter(const FastFieldValuePrinter* printer);
-
- PROTOBUF_DEPRECATED_MSG("Please use FastFieldValuePrinter")
- void SetDefaultFieldValuePrinter(const FieldValuePrinter* printer);
-
- // Sets whether we want to hide unknown fields or not.
- // Usually unknown fields are printed in a generic way that includes the
- // tag number of the field instead of field name. However, sometimes it
- // is useful to be able to print the message without unknown fields (e.g.
- // for the python protobuf version to maintain consistency between its pure
- // python and c++ implementations).
- void SetHideUnknownFields(bool hide) { hide_unknown_fields_ = hide; }
-
- // If print_message_fields_in_index_order is true, fields of a proto message
- // will be printed using the order defined in source code instead of the
- // field number, extensions will be printed at the end of the message
- // and their relative order is determined by the extension number.
- // By default, use the field number order.
- void SetPrintMessageFieldsInIndexOrder(
- bool print_message_fields_in_index_order) {
- print_message_fields_in_index_order_ =
- print_message_fields_in_index_order;
- }
-
- // If expand==true, expand google.protobuf.Any payloads. The output
- // will be of form
- // [type_url] { <value_printed_in_text> }
- //
- // If expand==false, print Any using the default printer. The output will
- // look like
- // type_url: "<type_url>" value: "serialized_content"
- void SetExpandAny(bool expand) { expand_any_ = expand; }
-
- // Set how parser finds message for Any payloads.
- void SetFinder(const Finder* finder) { finder_ = finder; }
-
- // If non-zero, we truncate all string fields that are longer than
- // this threshold. This is useful when the proto message has very long
- // strings, e.g., dump of encoded image file.
- //
- // NOTE(hfgong): Setting a non-zero value breaks round-trip safe
- // property of TextFormat::Printer. That is, from the printed message, we
- // cannot fully recover the original string field any more.
- void SetTruncateStringFieldLongerThan(
- const int64_t truncate_string_field_longer_than) {
- truncate_string_field_longer_than_ = truncate_string_field_longer_than;
- }
-
- // Register a custom field-specific FastFieldValuePrinter for fields
- // with a particular FieldDescriptor.
- // Returns "true" if the registration succeeded, or "false", if there is
- // already a printer for that FieldDescriptor.
- // Takes ownership of the printer on successful registration.
- bool RegisterFieldValuePrinter(const FieldDescriptor* field,
- const FastFieldValuePrinter* printer);
-
- PROTOBUF_DEPRECATED_MSG("Please use FastFieldValuePrinter")
- bool RegisterFieldValuePrinter(const FieldDescriptor* field,
- const FieldValuePrinter* printer);
-
- // Register a custom message-specific MessagePrinter for messages with a
- // particular Descriptor.
- // Returns "true" if the registration succeeded, or "false" if there is
- // already a printer for that Descriptor.
- bool RegisterMessagePrinter(const Descriptor* descriptor,
- const MessagePrinter* printer);
-
- private:
- friend std::string Message::DebugString() const;
- friend std::string Message::ShortDebugString() const;
- friend std::string Message::Utf8DebugString() const;
-
- // Sets whether *DebugString should insert a silent marker.
- void SetInsertSilentMarker(bool v) { insert_silent_marker_ = v; }
-
- // Forward declaration of an internal class used to print the text
- // output to the OutputStream (see text_format.cc for implementation).
- class TextGenerator;
-
- // Forward declaration of an internal class used to print field values for
- // DebugString APIs (see text_format.cc for implementation).
- class DebugStringFieldValuePrinter;
-
- // Forward declaration of an internal class used to print UTF-8 escaped
- // strings (see text_format.cc for implementation).
- class FastFieldValuePrinterUtf8Escaping;
-
- static const char* const kDoNotParse;
-
- // Internal Print method, used for writing to the OutputStream via
- // the TextGenerator class.
- void Print(const Message& message, TextGenerator* generator) const;
-
- // Print a single field.
- void PrintField(const Message& message, const Reflection* reflection,
- const FieldDescriptor* field,
- TextGenerator* generator) const;
-
- // Print a repeated primitive field in short form.
- void PrintShortRepeatedField(const Message& message,
- const Reflection* reflection,
- const FieldDescriptor* field,
- TextGenerator* generator) const;
-
- // Print the name of a field -- i.e. everything that comes before the
- // ':' for a single name/value pair.
- void PrintFieldName(const Message& message, int field_index,
- int field_count, const Reflection* reflection,
- const FieldDescriptor* field,
- TextGenerator* generator) const;
-
- // Outputs a textual representation of the value of the field supplied on
- // the message supplied or the default value if not set.
- void PrintFieldValue(const Message& message, const Reflection* reflection,
- const FieldDescriptor* field, int index,
- TextGenerator* generator) const;
-
- // Print the fields in an UnknownFieldSet. They are printed by tag number
- // only. Embedded messages are heuristically identified by attempting to
- // parse them (subject to the recursion budget).
- void PrintUnknownFields(const UnknownFieldSet& unknown_fields,
- TextGenerator* generator,
- int recursion_budget) const;
-
- bool PrintAny(const Message& message, TextGenerator* generator) const;
-
- const FastFieldValuePrinter* GetFieldPrinter(
- const FieldDescriptor* field) const {
- auto it = custom_printers_.find(field);
- return it == custom_printers_.end() ? default_field_value_printer_.get()
- : it->second.get();
- }
-
- int initial_indent_level_;
- bool single_line_mode_;
- bool use_field_number_;
- bool use_short_repeated_primitives_;
- bool insert_silent_marker_;
- bool hide_unknown_fields_;
- bool print_message_fields_in_index_order_;
- bool expand_any_;
- int64_t truncate_string_field_longer_than_;
-
- std::unique_ptr<const FastFieldValuePrinter> default_field_value_printer_;
- typedef std::map<const FieldDescriptor*,
- std::unique_ptr<const FastFieldValuePrinter>>
- CustomPrinterMap;
- CustomPrinterMap custom_printers_;
-
- typedef std::map<const Descriptor*, std::unique_ptr<const MessagePrinter>>
- CustomMessagePrinterMap;
- CustomMessagePrinterMap custom_message_printers_;
-
- const Finder* finder_;
- };
-
- // Parses a text-format protocol message from the given input stream to
- // the given message object. This function parses the human-readable
- // serialization format written by Print(). Returns true on success. The
- // message is cleared first, even if the function fails -- See Merge() to
- // avoid this behavior.
- //
- // Example input: "user {\n id: 123 extra { gender: MALE language: 'en' }\n}"
- //
- // One common use for this function is parsing handwritten strings in test
- // code.
- //
- // If you would like to read a protocol buffer serialized in the
- // (non-human-readable) binary wire format, see
- // google::protobuf::MessageLite::ParseFromString().
- static bool Parse(io::ZeroCopyInputStream* input, Message* output);
- // Like Parse(), but reads directly from a string.
- static bool ParseFromString(ConstStringParam input, Message* output);
-
- // Like Parse(), but the data is merged into the given message, as if
- // using Message::MergeFrom().
- static bool Merge(io::ZeroCopyInputStream* input, Message* output);
- // Like Merge(), but reads directly from a string.
- static bool MergeFromString(ConstStringParam input, Message* output);
-
- // Parse the given text as a single field value and store it into the
- // given field of the given message. If the field is a repeated field,
- // the new value will be added to the end
- static bool ParseFieldValueFromString(const std::string& input,
- const FieldDescriptor* field,
- Message* message);
-
- // A location in the parsed text.
- struct ParseLocation {
- int line;
- int column;
-
- ParseLocation() : line(-1), column(-1) {}
- ParseLocation(int line_param, int column_param)
- : line(line_param), column(column_param) {}
- };
-
- // A range of locations in the parsed text, including `start` and excluding
- // `end`.
- struct ParseLocationRange {
- ParseLocation start;
- ParseLocation end;
- ParseLocationRange() : start(), end() {}
- ParseLocationRange(ParseLocation start_param, ParseLocation end_param)
- : start(start_param), end(end_param) {}
- };
-
- // Data structure which is populated with the locations of each field
- // value parsed from the text.
- class PROTOBUF_EXPORT ParseInfoTree {
- public:
- ParseInfoTree() = default;
- ParseInfoTree(const ParseInfoTree&) = delete;
- ParseInfoTree& operator=(const ParseInfoTree&) = delete;
-
- // Returns the parse location range for index-th value of the field in
- // the parsed text. If none exists, returns a location with start and end
- // line -1. Index should be -1 for not-repeated fields.
- ParseLocationRange GetLocationRange(const FieldDescriptor* field,
- int index) const;
-
- // Returns the starting parse location for index-th value of the field in
- // the parsed text. If none exists, returns a location with line = -1. Index
- // should be -1 for not-repeated fields.
- ParseLocation GetLocation(const FieldDescriptor* field, int index) const {
- return GetLocationRange(field, index).start;
- }
-
- // Returns the parse info tree for the given field, which must be a message
- // type. The nested information tree is owned by the root tree and will be
- // deleted when it is deleted.
- ParseInfoTree* GetTreeForNested(const FieldDescriptor* field,
- int index) const;
-
- private:
- // Allow the text format parser to record information into the tree.
- friend class TextFormat;
-
- // Records the starting and ending locations of a single value for a field.
- void RecordLocation(const FieldDescriptor* field, ParseLocationRange range);
-
- // Create and records a nested tree for a nested message field.
- ParseInfoTree* CreateNested(const FieldDescriptor* field);
-
- // Defines the map from the index-th field descriptor to its parse location.
- typedef std::map<const FieldDescriptor*, std::vector<ParseLocationRange>>
- LocationMap;
-
- // Defines the map from the index-th field descriptor to the nested parse
- // info tree.
- typedef std::map<const FieldDescriptor*,
- std::vector<std::unique_ptr<ParseInfoTree>>>
- NestedMap;
-
- LocationMap locations_;
- NestedMap nested_;
- };
-
- // For more control over parsing, use this class.
- class PROTOBUF_EXPORT Parser {
- public:
- Parser();
- ~Parser();
-
- // Like TextFormat::Parse().
- bool Parse(io::ZeroCopyInputStream* input, Message* output);
- // Like TextFormat::ParseFromString().
- bool ParseFromString(ConstStringParam input, Message* output);
- // Like TextFormat::Merge().
- bool Merge(io::ZeroCopyInputStream* input, Message* output);
- // Like TextFormat::MergeFromString().
- bool MergeFromString(ConstStringParam input, Message* output);
-
- // Set where to report parse errors. If nullptr (the default), errors will
- // be printed to stderr.
- void RecordErrorsTo(io::ErrorCollector* error_collector) {
- error_collector_ = error_collector;
- }
-
- // Set how parser finds extensions. If nullptr (the default), the
- // parser will use the standard Reflection object associated with
- // the message being parsed.
- void SetFinder(const Finder* finder) { finder_ = finder; }
-
- // Sets where location information about the parse will be written. If
- // nullptr
- // (the default), then no location will be written.
- void WriteLocationsTo(ParseInfoTree* tree) { parse_info_tree_ = tree; }
-
- // Normally parsing fails if, after parsing, output->IsInitialized()
- // returns false. Call AllowPartialMessage(true) to skip this check.
- void AllowPartialMessage(bool allow) { allow_partial_ = allow; }
-
- // Allow field names to be matched case-insensitively.
- // This is not advisable if there are fields that only differ in case, or
- // if you want to enforce writing in the canonical form.
- // This is 'false' by default.
- void AllowCaseInsensitiveField(bool allow) {
- allow_case_insensitive_field_ = allow;
- }
-
- // Like TextFormat::ParseFieldValueFromString
- bool ParseFieldValueFromString(const std::string& input,
- const FieldDescriptor* field,
- Message* output);
-
- // When an unknown extension is met, parsing will fail if this option is
- // set to false (the default). If true, unknown extensions will be ignored
- // and a warning message will be generated.
- // Beware! Setting this option true may hide some errors (e.g. spelling
- // error on extension name). This allows data loss; unlike binary format,
- // text format cannot preserve unknown extensions. Avoid using this option
- // if possible.
- void AllowUnknownExtension(bool allow) { allow_unknown_extension_ = allow; }
-
- // When an unknown field is met, parsing will fail if this option is set
- // to false (the default). If true, unknown fields will be ignored and
- // a warning message will be generated.
- // Beware! Setting this option true may hide some errors (e.g. spelling
- // error on field name). This allows data loss; unlike binary format, text
- // format cannot preserve unknown fields. Avoid using this option
- // if possible.
- void AllowUnknownField(bool allow) { allow_unknown_field_ = allow; }
-
-
- void AllowFieldNumber(bool allow) { allow_field_number_ = allow; }
-
- // Sets maximum recursion depth which parser can use. This is effectively
- // the maximum allowed nesting of proto messages.
- void SetRecursionLimit(int limit) { recursion_limit_ = limit; }
-
- private:
- // Forward declaration of an internal class used to parse text
- // representations (see text_format.cc for implementation).
- class ParserImpl;
-
- // Like TextFormat::Merge(). The provided implementation is used
- // to do the parsing.
- bool MergeUsingImpl(io::ZeroCopyInputStream* input, Message* output,
- ParserImpl* parser_impl);
-
- io::ErrorCollector* error_collector_;
- const Finder* finder_;
- ParseInfoTree* parse_info_tree_;
- bool allow_partial_;
- bool allow_case_insensitive_field_;
- bool allow_unknown_field_;
- bool allow_unknown_extension_;
- bool allow_unknown_enum_;
- bool allow_field_number_;
- bool allow_relaxed_whitespace_;
- bool allow_singular_overwrites_;
- int recursion_limit_;
- };
-
-
- private:
- // Hack: ParseInfoTree declares TextFormat as a friend which should extend
- // the friendship to TextFormat::Parser::ParserImpl, but unfortunately some
- // old compilers (e.g. GCC 3.4.6) don't implement this correctly. We provide
- // helpers for ParserImpl to call methods of ParseInfoTree.
- static inline void RecordLocation(ParseInfoTree* info_tree,
- const FieldDescriptor* field,
- ParseLocationRange location);
- static inline ParseInfoTree* CreateNested(ParseInfoTree* info_tree,
- const FieldDescriptor* field);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TextFormat);
-};
-
-inline void TextFormat::RecordLocation(ParseInfoTree* info_tree,
- const FieldDescriptor* field,
- ParseLocationRange location) {
- info_tree->RecordLocation(field, location);
-}
-
-inline TextFormat::ParseInfoTree* TextFormat::CreateNested(
- ParseInfoTree* info_tree, const FieldDescriptor* field) {
- return info_tree->CreateNested(field);
-}
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_TEXT_FORMAT_H__
diff --git a/include/google/protobuf/timestamp.pb.h b/include/google/protobuf/timestamp.pb.h
deleted file mode 100644
index 771216e61b..0000000000
--- a/include/google/protobuf/timestamp.pb.h
+++ /dev/null
@@ -1,278 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/timestamp.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftimestamp_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftimestamp_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2ftimestamp_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2ftimestamp_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Timestamp;
-struct TimestampDefaultTypeInternal;
-PROTOBUF_EXPORT extern TimestampDefaultTypeInternal _Timestamp_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Timestamp* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Timestamp>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT Timestamp final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Timestamp) */ {
- public:
- inline Timestamp() : Timestamp(nullptr) {}
- ~Timestamp() override;
- explicit PROTOBUF_CONSTEXPR Timestamp(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Timestamp(const Timestamp& from);
- Timestamp(Timestamp&& from) noexcept
- : Timestamp() {
- *this = ::std::move(from);
- }
-
- inline Timestamp& operator=(const Timestamp& from) {
- CopyFrom(from);
- return *this;
- }
- inline Timestamp& operator=(Timestamp&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Timestamp& default_instance() {
- return *internal_default_instance();
- }
- static inline const Timestamp* internal_default_instance() {
- return reinterpret_cast<const Timestamp*>(
- &_Timestamp_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Timestamp& a, Timestamp& b) {
- a.Swap(&b);
- }
- inline void Swap(Timestamp* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Timestamp* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Timestamp* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Timestamp>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Timestamp& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Timestamp& from) {
- Timestamp::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Timestamp* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Timestamp";
- }
- protected:
- explicit Timestamp(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kSecondsFieldNumber = 1,
- kNanosFieldNumber = 2,
- };
- // int64 seconds = 1;
- void clear_seconds();
- int64_t seconds() const;
- void set_seconds(int64_t value);
- private:
- int64_t _internal_seconds() const;
- void _internal_set_seconds(int64_t value);
- public:
-
- // int32 nanos = 2;
- void clear_nanos();
- int32_t nanos() const;
- void set_nanos(int32_t value);
- private:
- int32_t _internal_nanos() const;
- void _internal_set_nanos(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Timestamp)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- int64_t seconds_;
- int32_t nanos_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftimestamp_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Timestamp
-
-// int64 seconds = 1;
-inline void Timestamp::clear_seconds() {
- _impl_.seconds_ = int64_t{0};
-}
-inline int64_t Timestamp::_internal_seconds() const {
- return _impl_.seconds_;
-}
-inline int64_t Timestamp::seconds() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Timestamp.seconds)
- return _internal_seconds();
-}
-inline void Timestamp::_internal_set_seconds(int64_t value) {
-
- _impl_.seconds_ = value;
-}
-inline void Timestamp::set_seconds(int64_t value) {
- _internal_set_seconds(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Timestamp.seconds)
-}
-
-// int32 nanos = 2;
-inline void Timestamp::clear_nanos() {
- _impl_.nanos_ = 0;
-}
-inline int32_t Timestamp::_internal_nanos() const {
- return _impl_.nanos_;
-}
-inline int32_t Timestamp::nanos() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Timestamp.nanos)
- return _internal_nanos();
-}
-inline void Timestamp::_internal_set_nanos(int32_t value) {
-
- _impl_.nanos_ = value;
-}
-inline void Timestamp::set_nanos(int32_t value) {
- _internal_set_nanos(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Timestamp.nanos)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftimestamp_2eproto
diff --git a/include/google/protobuf/timestamp.proto b/include/google/protobuf/timestamp.proto
deleted file mode 100644
index 3b2df6d911..0000000000
--- a/include/google/protobuf/timestamp.proto
+++ /dev/null
@@ -1,147 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/protobuf/types/known/timestamppb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "TimestampProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// A Timestamp represents a point in time independent of any time zone or local
-// calendar, encoded as a count of seconds and fractions of seconds at
-// nanosecond resolution. The count is relative to an epoch at UTC midnight on
-// January 1, 1970, in the proleptic Gregorian calendar which extends the
-// Gregorian calendar backwards to year one.
-//
-// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
-// second table is needed for interpretation, using a [24-hour linear
-// smear](https://developers.google.com/time/smear).
-//
-// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
-// restricting to that range, we ensure that we can convert to and from [RFC
-// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
-//
-// # Examples
-//
-// Example 1: Compute Timestamp from POSIX `time()`.
-//
-// Timestamp timestamp;
-// timestamp.set_seconds(time(NULL));
-// timestamp.set_nanos(0);
-//
-// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
-//
-// struct timeval tv;
-// gettimeofday(&tv, NULL);
-//
-// Timestamp timestamp;
-// timestamp.set_seconds(tv.tv_sec);
-// timestamp.set_nanos(tv.tv_usec * 1000);
-//
-// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
-//
-// FILETIME ft;
-// GetSystemTimeAsFileTime(&ft);
-// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
-//
-// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
-// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
-// Timestamp timestamp;
-// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
-// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
-//
-// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
-//
-// long millis = System.currentTimeMillis();
-//
-// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
-// .setNanos((int) ((millis % 1000) * 1000000)).build();
-//
-//
-// Example 5: Compute Timestamp from Java `Instant.now()`.
-//
-// Instant now = Instant.now();
-//
-// Timestamp timestamp =
-// Timestamp.newBuilder().setSeconds(now.getEpochSecond())
-// .setNanos(now.getNano()).build();
-//
-//
-// Example 6: Compute Timestamp from current time in Python.
-//
-// timestamp = Timestamp()
-// timestamp.GetCurrentTime()
-//
-// # JSON Mapping
-//
-// In JSON format, the Timestamp type is encoded as a string in the
-// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
-// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
-// where {year} is always expressed using four digits while {month}, {day},
-// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
-// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
-// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
-// is required. A proto3 JSON serializer should always use UTC (as indicated by
-// "Z") when printing the Timestamp type and a proto3 JSON parser should be
-// able to accept both UTC and other timezones (as indicated by an offset).
-//
-// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
-// 01:30 UTC on January 15, 2017.
-//
-// In JavaScript, one can convert a Date object to this format using the
-// standard
-// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
-// method. In Python, a standard `datetime.datetime` object can be converted
-// to this format using
-// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
-// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
-// the Joda Time's [`ISODateTimeFormat.dateTime()`](
-// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
-// ) to obtain a formatter capable of generating timestamps in this format.
-//
-//
-message Timestamp {
- // Represents seconds of UTC time since Unix epoch
- // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
- // 9999-12-31T23:59:59Z inclusive.
- int64 seconds = 1;
-
- // Non-negative fractions of a second at nanosecond resolution. Negative
- // second values with fractions must still have non-negative nanos values
- // that count forward in time. Must be from 0 to 999,999,999
- // inclusive.
- int32 nanos = 2;
-}
diff --git a/include/google/protobuf/type.pb.h b/include/google/protobuf/type.pb.h
deleted file mode 100644
index 49bd00c0de..0000000000
--- a/include/google/protobuf/type.pb.h
+++ /dev/null
@@ -1,2571 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/type.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftype_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftype_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-#include <google/protobuf/any.pb.h>
-#include <google/protobuf/source_context.pb.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftype_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2ftype_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2ftype_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class Enum;
-struct EnumDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumDefaultTypeInternal _Enum_default_instance_;
-class EnumValue;
-struct EnumValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern EnumValueDefaultTypeInternal _EnumValue_default_instance_;
-class Field;
-struct FieldDefaultTypeInternal;
-PROTOBUF_EXPORT extern FieldDefaultTypeInternal _Field_default_instance_;
-class Option;
-struct OptionDefaultTypeInternal;
-PROTOBUF_EXPORT extern OptionDefaultTypeInternal _Option_default_instance_;
-class Type;
-struct TypeDefaultTypeInternal;
-PROTOBUF_EXPORT extern TypeDefaultTypeInternal _Type_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Enum* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Enum>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::EnumValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::EnumValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Field* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Field>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Option* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Option>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Type* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Type>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-enum Field_Kind : int {
- Field_Kind_TYPE_UNKNOWN = 0,
- Field_Kind_TYPE_DOUBLE = 1,
- Field_Kind_TYPE_FLOAT = 2,
- Field_Kind_TYPE_INT64 = 3,
- Field_Kind_TYPE_UINT64 = 4,
- Field_Kind_TYPE_INT32 = 5,
- Field_Kind_TYPE_FIXED64 = 6,
- Field_Kind_TYPE_FIXED32 = 7,
- Field_Kind_TYPE_BOOL = 8,
- Field_Kind_TYPE_STRING = 9,
- Field_Kind_TYPE_GROUP = 10,
- Field_Kind_TYPE_MESSAGE = 11,
- Field_Kind_TYPE_BYTES = 12,
- Field_Kind_TYPE_UINT32 = 13,
- Field_Kind_TYPE_ENUM = 14,
- Field_Kind_TYPE_SFIXED32 = 15,
- Field_Kind_TYPE_SFIXED64 = 16,
- Field_Kind_TYPE_SINT32 = 17,
- Field_Kind_TYPE_SINT64 = 18,
- Field_Kind_Field_Kind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
- Field_Kind_Field_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
-};
-PROTOBUF_EXPORT bool Field_Kind_IsValid(int value);
-constexpr Field_Kind Field_Kind_Kind_MIN = Field_Kind_TYPE_UNKNOWN;
-constexpr Field_Kind Field_Kind_Kind_MAX = Field_Kind_TYPE_SINT64;
-constexpr int Field_Kind_Kind_ARRAYSIZE = Field_Kind_Kind_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Field_Kind_descriptor();
-template<typename T>
-inline const std::string& Field_Kind_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Field_Kind>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Field_Kind_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- Field_Kind_descriptor(), enum_t_value);
-}
-inline bool Field_Kind_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Field_Kind* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Field_Kind>(
- Field_Kind_descriptor(), name, value);
-}
-enum Field_Cardinality : int {
- Field_Cardinality_CARDINALITY_UNKNOWN = 0,
- Field_Cardinality_CARDINALITY_OPTIONAL = 1,
- Field_Cardinality_CARDINALITY_REQUIRED = 2,
- Field_Cardinality_CARDINALITY_REPEATED = 3,
- Field_Cardinality_Field_Cardinality_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
- Field_Cardinality_Field_Cardinality_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
-};
-PROTOBUF_EXPORT bool Field_Cardinality_IsValid(int value);
-constexpr Field_Cardinality Field_Cardinality_Cardinality_MIN = Field_Cardinality_CARDINALITY_UNKNOWN;
-constexpr Field_Cardinality Field_Cardinality_Cardinality_MAX = Field_Cardinality_CARDINALITY_REPEATED;
-constexpr int Field_Cardinality_Cardinality_ARRAYSIZE = Field_Cardinality_Cardinality_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Field_Cardinality_descriptor();
-template<typename T>
-inline const std::string& Field_Cardinality_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Field_Cardinality>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Field_Cardinality_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- Field_Cardinality_descriptor(), enum_t_value);
-}
-inline bool Field_Cardinality_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Field_Cardinality* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Field_Cardinality>(
- Field_Cardinality_descriptor(), name, value);
-}
-enum Syntax : int {
- SYNTAX_PROTO2 = 0,
- SYNTAX_PROTO3 = 1,
- Syntax_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
- Syntax_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
-};
-PROTOBUF_EXPORT bool Syntax_IsValid(int value);
-constexpr Syntax Syntax_MIN = SYNTAX_PROTO2;
-constexpr Syntax Syntax_MAX = SYNTAX_PROTO3;
-constexpr int Syntax_ARRAYSIZE = Syntax_MAX + 1;
-
-PROTOBUF_EXPORT const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Syntax_descriptor();
-template<typename T>
-inline const std::string& Syntax_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Syntax>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Syntax_Name.");
- return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
- Syntax_descriptor(), enum_t_value);
-}
-inline bool Syntax_Parse(
- ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Syntax* value) {
- return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Syntax>(
- Syntax_descriptor(), name, value);
-}
-// ===================================================================
-
-class PROTOBUF_EXPORT Type final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Type) */ {
- public:
- inline Type() : Type(nullptr) {}
- ~Type() override;
- explicit PROTOBUF_CONSTEXPR Type(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Type(const Type& from);
- Type(Type&& from) noexcept
- : Type() {
- *this = ::std::move(from);
- }
-
- inline Type& operator=(const Type& from) {
- CopyFrom(from);
- return *this;
- }
- inline Type& operator=(Type&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Type& default_instance() {
- return *internal_default_instance();
- }
- static inline const Type* internal_default_instance() {
- return reinterpret_cast<const Type*>(
- &_Type_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(Type& a, Type& b) {
- a.Swap(&b);
- }
- inline void Swap(Type* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Type* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Type* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Type>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Type& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Type& from) {
- Type::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Type* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Type";
- }
- protected:
- explicit Type(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kFieldsFieldNumber = 2,
- kOneofsFieldNumber = 3,
- kOptionsFieldNumber = 4,
- kNameFieldNumber = 1,
- kSourceContextFieldNumber = 5,
- kSyntaxFieldNumber = 6,
- };
- // repeated .google.protobuf.Field fields = 2;
- int fields_size() const;
- private:
- int _internal_fields_size() const;
- public:
- void clear_fields();
- ::PROTOBUF_NAMESPACE_ID::Field* mutable_fields(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Field >*
- mutable_fields();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Field& _internal_fields(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Field* _internal_add_fields();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Field& fields(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Field* add_fields();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Field >&
- fields() const;
-
- // repeated string oneofs = 3;
- int oneofs_size() const;
- private:
- int _internal_oneofs_size() const;
- public:
- void clear_oneofs();
- const std::string& oneofs(int index) const;
- std::string* mutable_oneofs(int index);
- void set_oneofs(int index, const std::string& value);
- void set_oneofs(int index, std::string&& value);
- void set_oneofs(int index, const char* value);
- void set_oneofs(int index, const char* value, size_t size);
- std::string* add_oneofs();
- void add_oneofs(const std::string& value);
- void add_oneofs(std::string&& value);
- void add_oneofs(const char* value);
- void add_oneofs(const char* value, size_t size);
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& oneofs() const;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_oneofs();
- private:
- const std::string& _internal_oneofs(int index) const;
- std::string* _internal_add_oneofs();
- public:
-
- // repeated .google.protobuf.Option options = 4;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // .google.protobuf.SourceContext source_context = 5;
- bool has_source_context() const;
- private:
- bool _internal_has_source_context() const;
- public:
- void clear_source_context();
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& source_context() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::SourceContext* release_source_context();
- ::PROTOBUF_NAMESPACE_ID::SourceContext* mutable_source_context();
- void set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- private:
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& _internal_source_context() const;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _internal_mutable_source_context();
- public:
- void unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- ::PROTOBUF_NAMESPACE_ID::SourceContext* unsafe_arena_release_source_context();
-
- // .google.protobuf.Syntax syntax = 6;
- void clear_syntax();
- ::PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
- void set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
- void _internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Type)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Field > fields_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> oneofs_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context_;
- int syntax_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftype_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Field final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Field) */ {
- public:
- inline Field() : Field(nullptr) {}
- ~Field() override;
- explicit PROTOBUF_CONSTEXPR Field(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Field(const Field& from);
- Field(Field&& from) noexcept
- : Field() {
- *this = ::std::move(from);
- }
-
- inline Field& operator=(const Field& from) {
- CopyFrom(from);
- return *this;
- }
- inline Field& operator=(Field&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Field& default_instance() {
- return *internal_default_instance();
- }
- static inline const Field* internal_default_instance() {
- return reinterpret_cast<const Field*>(
- &_Field_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(Field& a, Field& b) {
- a.Swap(&b);
- }
- inline void Swap(Field* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Field* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Field* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Field>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Field& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Field& from) {
- Field::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Field* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Field";
- }
- protected:
- explicit Field(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- typedef Field_Kind Kind;
- static constexpr Kind TYPE_UNKNOWN =
- Field_Kind_TYPE_UNKNOWN;
- static constexpr Kind TYPE_DOUBLE =
- Field_Kind_TYPE_DOUBLE;
- static constexpr Kind TYPE_FLOAT =
- Field_Kind_TYPE_FLOAT;
- static constexpr Kind TYPE_INT64 =
- Field_Kind_TYPE_INT64;
- static constexpr Kind TYPE_UINT64 =
- Field_Kind_TYPE_UINT64;
- static constexpr Kind TYPE_INT32 =
- Field_Kind_TYPE_INT32;
- static constexpr Kind TYPE_FIXED64 =
- Field_Kind_TYPE_FIXED64;
- static constexpr Kind TYPE_FIXED32 =
- Field_Kind_TYPE_FIXED32;
- static constexpr Kind TYPE_BOOL =
- Field_Kind_TYPE_BOOL;
- static constexpr Kind TYPE_STRING =
- Field_Kind_TYPE_STRING;
- static constexpr Kind TYPE_GROUP =
- Field_Kind_TYPE_GROUP;
- static constexpr Kind TYPE_MESSAGE =
- Field_Kind_TYPE_MESSAGE;
- static constexpr Kind TYPE_BYTES =
- Field_Kind_TYPE_BYTES;
- static constexpr Kind TYPE_UINT32 =
- Field_Kind_TYPE_UINT32;
- static constexpr Kind TYPE_ENUM =
- Field_Kind_TYPE_ENUM;
- static constexpr Kind TYPE_SFIXED32 =
- Field_Kind_TYPE_SFIXED32;
- static constexpr Kind TYPE_SFIXED64 =
- Field_Kind_TYPE_SFIXED64;
- static constexpr Kind TYPE_SINT32 =
- Field_Kind_TYPE_SINT32;
- static constexpr Kind TYPE_SINT64 =
- Field_Kind_TYPE_SINT64;
- static inline bool Kind_IsValid(int value) {
- return Field_Kind_IsValid(value);
- }
- static constexpr Kind Kind_MIN =
- Field_Kind_Kind_MIN;
- static constexpr Kind Kind_MAX =
- Field_Kind_Kind_MAX;
- static constexpr int Kind_ARRAYSIZE =
- Field_Kind_Kind_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- Kind_descriptor() {
- return Field_Kind_descriptor();
- }
- template<typename T>
- static inline const std::string& Kind_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Kind>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Kind_Name.");
- return Field_Kind_Name(enum_t_value);
- }
- static inline bool Kind_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- Kind* value) {
- return Field_Kind_Parse(name, value);
- }
-
- typedef Field_Cardinality Cardinality;
- static constexpr Cardinality CARDINALITY_UNKNOWN =
- Field_Cardinality_CARDINALITY_UNKNOWN;
- static constexpr Cardinality CARDINALITY_OPTIONAL =
- Field_Cardinality_CARDINALITY_OPTIONAL;
- static constexpr Cardinality CARDINALITY_REQUIRED =
- Field_Cardinality_CARDINALITY_REQUIRED;
- static constexpr Cardinality CARDINALITY_REPEATED =
- Field_Cardinality_CARDINALITY_REPEATED;
- static inline bool Cardinality_IsValid(int value) {
- return Field_Cardinality_IsValid(value);
- }
- static constexpr Cardinality Cardinality_MIN =
- Field_Cardinality_Cardinality_MIN;
- static constexpr Cardinality Cardinality_MAX =
- Field_Cardinality_Cardinality_MAX;
- static constexpr int Cardinality_ARRAYSIZE =
- Field_Cardinality_Cardinality_ARRAYSIZE;
- static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
- Cardinality_descriptor() {
- return Field_Cardinality_descriptor();
- }
- template<typename T>
- static inline const std::string& Cardinality_Name(T enum_t_value) {
- static_assert(::std::is_same<T, Cardinality>::value ||
- ::std::is_integral<T>::value,
- "Incorrect type passed to function Cardinality_Name.");
- return Field_Cardinality_Name(enum_t_value);
- }
- static inline bool Cardinality_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
- Cardinality* value) {
- return Field_Cardinality_Parse(name, value);
- }
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kOptionsFieldNumber = 9,
- kNameFieldNumber = 4,
- kTypeUrlFieldNumber = 6,
- kJsonNameFieldNumber = 10,
- kDefaultValueFieldNumber = 11,
- kKindFieldNumber = 1,
- kCardinalityFieldNumber = 2,
- kNumberFieldNumber = 3,
- kOneofIndexFieldNumber = 7,
- kPackedFieldNumber = 8,
- };
- // repeated .google.protobuf.Option options = 9;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // string name = 4;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // string type_url = 6;
- void clear_type_url();
- const std::string& type_url() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_type_url(ArgT0&& arg0, ArgT... args);
- std::string* mutable_type_url();
- PROTOBUF_NODISCARD std::string* release_type_url();
- void set_allocated_type_url(std::string* type_url);
- private:
- const std::string& _internal_type_url() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_type_url(const std::string& value);
- std::string* _internal_mutable_type_url();
- public:
-
- // string json_name = 10;
- void clear_json_name();
- const std::string& json_name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_json_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_json_name();
- PROTOBUF_NODISCARD std::string* release_json_name();
- void set_allocated_json_name(std::string* json_name);
- private:
- const std::string& _internal_json_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_json_name(const std::string& value);
- std::string* _internal_mutable_json_name();
- public:
-
- // string default_value = 11;
- void clear_default_value();
- const std::string& default_value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_default_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_default_value();
- PROTOBUF_NODISCARD std::string* release_default_value();
- void set_allocated_default_value(std::string* default_value);
- private:
- const std::string& _internal_default_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_default_value(const std::string& value);
- std::string* _internal_mutable_default_value();
- public:
-
- // .google.protobuf.Field.Kind kind = 1;
- void clear_kind();
- ::PROTOBUF_NAMESPACE_ID::Field_Kind kind() const;
- void set_kind(::PROTOBUF_NAMESPACE_ID::Field_Kind value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Field_Kind _internal_kind() const;
- void _internal_set_kind(::PROTOBUF_NAMESPACE_ID::Field_Kind value);
- public:
-
- // .google.protobuf.Field.Cardinality cardinality = 2;
- void clear_cardinality();
- ::PROTOBUF_NAMESPACE_ID::Field_Cardinality cardinality() const;
- void set_cardinality(::PROTOBUF_NAMESPACE_ID::Field_Cardinality value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Field_Cardinality _internal_cardinality() const;
- void _internal_set_cardinality(::PROTOBUF_NAMESPACE_ID::Field_Cardinality value);
- public:
-
- // int32 number = 3;
- void clear_number();
- int32_t number() const;
- void set_number(int32_t value);
- private:
- int32_t _internal_number() const;
- void _internal_set_number(int32_t value);
- public:
-
- // int32 oneof_index = 7;
- void clear_oneof_index();
- int32_t oneof_index() const;
- void set_oneof_index(int32_t value);
- private:
- int32_t _internal_oneof_index() const;
- void _internal_set_oneof_index(int32_t value);
- public:
-
- // bool packed = 8;
- void clear_packed();
- bool packed() const;
- void set_packed(bool value);
- private:
- bool _internal_packed() const;
- void _internal_set_packed(bool value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Field)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr type_url_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr json_name_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr default_value_;
- int kind_;
- int cardinality_;
- int32_t number_;
- int32_t oneof_index_;
- bool packed_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftype_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Enum final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Enum) */ {
- public:
- inline Enum() : Enum(nullptr) {}
- ~Enum() override;
- explicit PROTOBUF_CONSTEXPR Enum(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Enum(const Enum& from);
- Enum(Enum&& from) noexcept
- : Enum() {
- *this = ::std::move(from);
- }
-
- inline Enum& operator=(const Enum& from) {
- CopyFrom(from);
- return *this;
- }
- inline Enum& operator=(Enum&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Enum& default_instance() {
- return *internal_default_instance();
- }
- static inline const Enum* internal_default_instance() {
- return reinterpret_cast<const Enum*>(
- &_Enum_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(Enum& a, Enum& b) {
- a.Swap(&b);
- }
- inline void Swap(Enum* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Enum* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Enum* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Enum>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Enum& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Enum& from) {
- Enum::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Enum* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Enum";
- }
- protected:
- explicit Enum(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kEnumvalueFieldNumber = 2,
- kOptionsFieldNumber = 3,
- kNameFieldNumber = 1,
- kSourceContextFieldNumber = 4,
- kSyntaxFieldNumber = 5,
- };
- // repeated .google.protobuf.EnumValue enumvalue = 2;
- int enumvalue_size() const;
- private:
- int _internal_enumvalue_size() const;
- public:
- void clear_enumvalue();
- ::PROTOBUF_NAMESPACE_ID::EnumValue* mutable_enumvalue(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValue >*
- mutable_enumvalue();
- private:
- const ::PROTOBUF_NAMESPACE_ID::EnumValue& _internal_enumvalue(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumValue* _internal_add_enumvalue();
- public:
- const ::PROTOBUF_NAMESPACE_ID::EnumValue& enumvalue(int index) const;
- ::PROTOBUF_NAMESPACE_ID::EnumValue* add_enumvalue();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValue >&
- enumvalue() const;
-
- // repeated .google.protobuf.Option options = 3;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // .google.protobuf.SourceContext source_context = 4;
- bool has_source_context() const;
- private:
- bool _internal_has_source_context() const;
- public:
- void clear_source_context();
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& source_context() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::SourceContext* release_source_context();
- ::PROTOBUF_NAMESPACE_ID::SourceContext* mutable_source_context();
- void set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- private:
- const ::PROTOBUF_NAMESPACE_ID::SourceContext& _internal_source_context() const;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _internal_mutable_source_context();
- public:
- void unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context);
- ::PROTOBUF_NAMESPACE_ID::SourceContext* unsafe_arena_release_source_context();
-
- // .google.protobuf.Syntax syntax = 5;
- void clear_syntax();
- ::PROTOBUF_NAMESPACE_ID::Syntax syntax() const;
- void set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- private:
- ::PROTOBUF_NAMESPACE_ID::Syntax _internal_syntax() const;
- void _internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Enum)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValue > enumvalue_;
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context_;
- int syntax_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftype_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT EnumValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.EnumValue) */ {
- public:
- inline EnumValue() : EnumValue(nullptr) {}
- ~EnumValue() override;
- explicit PROTOBUF_CONSTEXPR EnumValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- EnumValue(const EnumValue& from);
- EnumValue(EnumValue&& from) noexcept
- : EnumValue() {
- *this = ::std::move(from);
- }
-
- inline EnumValue& operator=(const EnumValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline EnumValue& operator=(EnumValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const EnumValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const EnumValue* internal_default_instance() {
- return reinterpret_cast<const EnumValue*>(
- &_EnumValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 3;
-
- friend void swap(EnumValue& a, EnumValue& b) {
- a.Swap(&b);
- }
- inline void Swap(EnumValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(EnumValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- EnumValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<EnumValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const EnumValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const EnumValue& from) {
- EnumValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(EnumValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.EnumValue";
- }
- protected:
- explicit EnumValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kOptionsFieldNumber = 3,
- kNameFieldNumber = 1,
- kNumberFieldNumber = 2,
- };
- // repeated .google.protobuf.Option options = 3;
- int options_size() const;
- private:
- int _internal_options_size() const;
- public:
- void clear_options();
- ::PROTOBUF_NAMESPACE_ID::Option* mutable_options(int index);
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
- mutable_options();
- private:
- const ::PROTOBUF_NAMESPACE_ID::Option& _internal_options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* _internal_add_options();
- public:
- const ::PROTOBUF_NAMESPACE_ID::Option& options(int index) const;
- ::PROTOBUF_NAMESPACE_ID::Option* add_options();
- const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
- options() const;
-
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // int32 number = 2;
- void clear_number();
- int32_t number() const;
- void set_number(int32_t value);
- private:
- int32_t _internal_number() const;
- void _internal_set_number(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.EnumValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option > options_;
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- int32_t number_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftype_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Option final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Option) */ {
- public:
- inline Option() : Option(nullptr) {}
- ~Option() override;
- explicit PROTOBUF_CONSTEXPR Option(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Option(const Option& from);
- Option(Option&& from) noexcept
- : Option() {
- *this = ::std::move(from);
- }
-
- inline Option& operator=(const Option& from) {
- CopyFrom(from);
- return *this;
- }
- inline Option& operator=(Option&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Option& default_instance() {
- return *internal_default_instance();
- }
- static inline const Option* internal_default_instance() {
- return reinterpret_cast<const Option*>(
- &_Option_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 4;
-
- friend void swap(Option& a, Option& b) {
- a.Swap(&b);
- }
- inline void Swap(Option* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Option* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Option* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Option>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Option& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Option& from) {
- Option::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Option* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Option";
- }
- protected:
- explicit Option(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kNameFieldNumber = 1,
- kValueFieldNumber = 2,
- };
- // string name = 1;
- void clear_name();
- const std::string& name() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_name(ArgT0&& arg0, ArgT... args);
- std::string* mutable_name();
- PROTOBUF_NODISCARD std::string* release_name();
- void set_allocated_name(std::string* name);
- private:
- const std::string& _internal_name() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
- std::string* _internal_mutable_name();
- public:
-
- // .google.protobuf.Any value = 2;
- bool has_value() const;
- private:
- bool _internal_has_value() const;
- public:
- void clear_value();
- const ::PROTOBUF_NAMESPACE_ID::Any& value() const;
- PROTOBUF_NODISCARD ::PROTOBUF_NAMESPACE_ID::Any* release_value();
- ::PROTOBUF_NAMESPACE_ID::Any* mutable_value();
- void set_allocated_value(::PROTOBUF_NAMESPACE_ID::Any* value);
- private:
- const ::PROTOBUF_NAMESPACE_ID::Any& _internal_value() const;
- ::PROTOBUF_NAMESPACE_ID::Any* _internal_mutable_value();
- public:
- void unsafe_arena_set_allocated_value(
- ::PROTOBUF_NAMESPACE_ID::Any* value);
- ::PROTOBUF_NAMESPACE_ID::Any* unsafe_arena_release_value();
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Option)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
- ::PROTOBUF_NAMESPACE_ID::Any* value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2ftype_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// Type
-
-// string name = 1;
-inline void Type::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Type::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Type::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Type.name)
-}
-inline std::string* Type::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Type.name)
- return _s;
-}
-inline const std::string& Type::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Type::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Type::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Type::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Type.name)
- return _impl_.name_.Release();
-}
-inline void Type::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Type.name)
-}
-
-// repeated .google.protobuf.Field fields = 2;
-inline int Type::_internal_fields_size() const {
- return _impl_.fields_.size();
-}
-inline int Type::fields_size() const {
- return _internal_fields_size();
-}
-inline void Type::clear_fields() {
- _impl_.fields_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field* Type::mutable_fields(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Type.fields)
- return _impl_.fields_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Field >*
-Type::mutable_fields() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Type.fields)
- return &_impl_.fields_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Field& Type::_internal_fields(int index) const {
- return _impl_.fields_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Field& Type::fields(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.fields)
- return _internal_fields(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field* Type::_internal_add_fields() {
- return _impl_.fields_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field* Type::add_fields() {
- ::PROTOBUF_NAMESPACE_ID::Field* _add = _internal_add_fields();
- // @@protoc_insertion_point(field_add:google.protobuf.Type.fields)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Field >&
-Type::fields() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Type.fields)
- return _impl_.fields_;
-}
-
-// repeated string oneofs = 3;
-inline int Type::_internal_oneofs_size() const {
- return _impl_.oneofs_.size();
-}
-inline int Type::oneofs_size() const {
- return _internal_oneofs_size();
-}
-inline void Type::clear_oneofs() {
- _impl_.oneofs_.Clear();
-}
-inline std::string* Type::add_oneofs() {
- std::string* _s = _internal_add_oneofs();
- // @@protoc_insertion_point(field_add_mutable:google.protobuf.Type.oneofs)
- return _s;
-}
-inline const std::string& Type::_internal_oneofs(int index) const {
- return _impl_.oneofs_.Get(index);
-}
-inline const std::string& Type::oneofs(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.oneofs)
- return _internal_oneofs(index);
-}
-inline std::string* Type::mutable_oneofs(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Type.oneofs)
- return _impl_.oneofs_.Mutable(index);
-}
-inline void Type::set_oneofs(int index, const std::string& value) {
- _impl_.oneofs_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Type.oneofs)
-}
-inline void Type::set_oneofs(int index, std::string&& value) {
- _impl_.oneofs_.Mutable(index)->assign(std::move(value));
- // @@protoc_insertion_point(field_set:google.protobuf.Type.oneofs)
-}
-inline void Type::set_oneofs(int index, const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.oneofs_.Mutable(index)->assign(value);
- // @@protoc_insertion_point(field_set_char:google.protobuf.Type.oneofs)
-}
-inline void Type::set_oneofs(int index, const char* value, size_t size) {
- _impl_.oneofs_.Mutable(index)->assign(
- reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_set_pointer:google.protobuf.Type.oneofs)
-}
-inline std::string* Type::_internal_add_oneofs() {
- return _impl_.oneofs_.Add();
-}
-inline void Type::add_oneofs(const std::string& value) {
- _impl_.oneofs_.Add()->assign(value);
- // @@protoc_insertion_point(field_add:google.protobuf.Type.oneofs)
-}
-inline void Type::add_oneofs(std::string&& value) {
- _impl_.oneofs_.Add(std::move(value));
- // @@protoc_insertion_point(field_add:google.protobuf.Type.oneofs)
-}
-inline void Type::add_oneofs(const char* value) {
- GOOGLE_DCHECK(value != nullptr);
- _impl_.oneofs_.Add()->assign(value);
- // @@protoc_insertion_point(field_add_char:google.protobuf.Type.oneofs)
-}
-inline void Type::add_oneofs(const char* value, size_t size) {
- _impl_.oneofs_.Add()->assign(reinterpret_cast<const char*>(value), size);
- // @@protoc_insertion_point(field_add_pointer:google.protobuf.Type.oneofs)
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
-Type::oneofs() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Type.oneofs)
- return _impl_.oneofs_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
-Type::mutable_oneofs() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Type.oneofs)
- return &_impl_.oneofs_;
-}
-
-// repeated .google.protobuf.Option options = 4;
-inline int Type::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int Type::options_size() const {
- return _internal_options_size();
-}
-inline void Type::clear_options() {
- _impl_.options_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Type::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Type.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-Type::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Type.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Type::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Type::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Type::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Type::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.Type.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-Type::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Type.options)
- return _impl_.options_;
-}
-
-// .google.protobuf.SourceContext source_context = 5;
-inline bool Type::_internal_has_source_context() const {
- return this != internal_default_instance() && _impl_.source_context_ != nullptr;
-}
-inline bool Type::has_source_context() const {
- return _internal_has_source_context();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Type::_internal_source_context() const {
- const ::PROTOBUF_NAMESPACE_ID::SourceContext* p = _impl_.source_context_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::SourceContext&>(
- ::PROTOBUF_NAMESPACE_ID::_SourceContext_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Type::source_context() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.source_context)
- return _internal_source_context();
-}
-inline void Type::unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- _impl_.source_context_ = source_context;
- if (source_context) {
-
- } else {
-
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Type.source_context)
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Type::release_source_context() {
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Type::unsafe_arena_release_source_context() {
- // @@protoc_insertion_point(field_release:google.protobuf.Type.source_context)
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Type::_internal_mutable_source_context() {
-
- if (_impl_.source_context_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceContext>(GetArenaForAllocation());
- _impl_.source_context_ = p;
- }
- return _impl_.source_context_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Type::mutable_source_context() {
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _msg = _internal_mutable_source_context();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Type.source_context)
- return _msg;
-}
-inline void Type::set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- if (source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
- reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_context));
- if (message_arena != submessage_arena) {
- source_context = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, source_context, submessage_arena);
- }
-
- } else {
-
- }
- _impl_.source_context_ = source_context;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Type.source_context)
-}
-
-// .google.protobuf.Syntax syntax = 6;
-inline void Type::clear_syntax() {
- _impl_.syntax_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Type::_internal_syntax() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Syntax >(_impl_.syntax_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Type::syntax() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Type.syntax)
- return _internal_syntax();
-}
-inline void Type::_internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
-
- _impl_.syntax_ = value;
-}
-inline void Type::set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
- _internal_set_syntax(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Type.syntax)
-}
-
-// -------------------------------------------------------------------
-
-// Field
-
-// .google.protobuf.Field.Kind kind = 1;
-inline void Field::clear_kind() {
- _impl_.kind_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field_Kind Field::_internal_kind() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Field_Kind >(_impl_.kind_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field_Kind Field::kind() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.kind)
- return _internal_kind();
-}
-inline void Field::_internal_set_kind(::PROTOBUF_NAMESPACE_ID::Field_Kind value) {
-
- _impl_.kind_ = value;
-}
-inline void Field::set_kind(::PROTOBUF_NAMESPACE_ID::Field_Kind value) {
- _internal_set_kind(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Field.kind)
-}
-
-// .google.protobuf.Field.Cardinality cardinality = 2;
-inline void Field::clear_cardinality() {
- _impl_.cardinality_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field_Cardinality Field::_internal_cardinality() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Field_Cardinality >(_impl_.cardinality_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Field_Cardinality Field::cardinality() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.cardinality)
- return _internal_cardinality();
-}
-inline void Field::_internal_set_cardinality(::PROTOBUF_NAMESPACE_ID::Field_Cardinality value) {
-
- _impl_.cardinality_ = value;
-}
-inline void Field::set_cardinality(::PROTOBUF_NAMESPACE_ID::Field_Cardinality value) {
- _internal_set_cardinality(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Field.cardinality)
-}
-
-// int32 number = 3;
-inline void Field::clear_number() {
- _impl_.number_ = 0;
-}
-inline int32_t Field::_internal_number() const {
- return _impl_.number_;
-}
-inline int32_t Field::number() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.number)
- return _internal_number();
-}
-inline void Field::_internal_set_number(int32_t value) {
-
- _impl_.number_ = value;
-}
-inline void Field::set_number(int32_t value) {
- _internal_set_number(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Field.number)
-}
-
-// string name = 4;
-inline void Field::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Field::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Field::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Field.name)
-}
-inline std::string* Field::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Field.name)
- return _s;
-}
-inline const std::string& Field::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Field::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Field::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Field::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Field.name)
- return _impl_.name_.Release();
-}
-inline void Field::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Field.name)
-}
-
-// string type_url = 6;
-inline void Field::clear_type_url() {
- _impl_.type_url_.ClearToEmpty();
-}
-inline const std::string& Field::type_url() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.type_url)
- return _internal_type_url();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Field::set_type_url(ArgT0&& arg0, ArgT... args) {
-
- _impl_.type_url_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Field.type_url)
-}
-inline std::string* Field::mutable_type_url() {
- std::string* _s = _internal_mutable_type_url();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Field.type_url)
- return _s;
-}
-inline const std::string& Field::_internal_type_url() const {
- return _impl_.type_url_.Get();
-}
-inline void Field::_internal_set_type_url(const std::string& value) {
-
- _impl_.type_url_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Field::_internal_mutable_type_url() {
-
- return _impl_.type_url_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Field::release_type_url() {
- // @@protoc_insertion_point(field_release:google.protobuf.Field.type_url)
- return _impl_.type_url_.Release();
-}
-inline void Field::set_allocated_type_url(std::string* type_url) {
- if (type_url != nullptr) {
-
- } else {
-
- }
- _impl_.type_url_.SetAllocated(type_url, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.type_url_.IsDefault()) {
- _impl_.type_url_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Field.type_url)
-}
-
-// int32 oneof_index = 7;
-inline void Field::clear_oneof_index() {
- _impl_.oneof_index_ = 0;
-}
-inline int32_t Field::_internal_oneof_index() const {
- return _impl_.oneof_index_;
-}
-inline int32_t Field::oneof_index() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.oneof_index)
- return _internal_oneof_index();
-}
-inline void Field::_internal_set_oneof_index(int32_t value) {
-
- _impl_.oneof_index_ = value;
-}
-inline void Field::set_oneof_index(int32_t value) {
- _internal_set_oneof_index(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Field.oneof_index)
-}
-
-// bool packed = 8;
-inline void Field::clear_packed() {
- _impl_.packed_ = false;
-}
-inline bool Field::_internal_packed() const {
- return _impl_.packed_;
-}
-inline bool Field::packed() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.packed)
- return _internal_packed();
-}
-inline void Field::_internal_set_packed(bool value) {
-
- _impl_.packed_ = value;
-}
-inline void Field::set_packed(bool value) {
- _internal_set_packed(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Field.packed)
-}
-
-// repeated .google.protobuf.Option options = 9;
-inline int Field::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int Field::options_size() const {
- return _internal_options_size();
-}
-inline void Field::clear_options() {
- _impl_.options_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Field::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Field.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-Field::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Field.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Field::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Field::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Field::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Field::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.Field.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-Field::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Field.options)
- return _impl_.options_;
-}
-
-// string json_name = 10;
-inline void Field::clear_json_name() {
- _impl_.json_name_.ClearToEmpty();
-}
-inline const std::string& Field::json_name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.json_name)
- return _internal_json_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Field::set_json_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.json_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Field.json_name)
-}
-inline std::string* Field::mutable_json_name() {
- std::string* _s = _internal_mutable_json_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Field.json_name)
- return _s;
-}
-inline const std::string& Field::_internal_json_name() const {
- return _impl_.json_name_.Get();
-}
-inline void Field::_internal_set_json_name(const std::string& value) {
-
- _impl_.json_name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Field::_internal_mutable_json_name() {
-
- return _impl_.json_name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Field::release_json_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Field.json_name)
- return _impl_.json_name_.Release();
-}
-inline void Field::set_allocated_json_name(std::string* json_name) {
- if (json_name != nullptr) {
-
- } else {
-
- }
- _impl_.json_name_.SetAllocated(json_name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.json_name_.IsDefault()) {
- _impl_.json_name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Field.json_name)
-}
-
-// string default_value = 11;
-inline void Field::clear_default_value() {
- _impl_.default_value_.ClearToEmpty();
-}
-inline const std::string& Field::default_value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Field.default_value)
- return _internal_default_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Field::set_default_value(ArgT0&& arg0, ArgT... args) {
-
- _impl_.default_value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Field.default_value)
-}
-inline std::string* Field::mutable_default_value() {
- std::string* _s = _internal_mutable_default_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Field.default_value)
- return _s;
-}
-inline const std::string& Field::_internal_default_value() const {
- return _impl_.default_value_.Get();
-}
-inline void Field::_internal_set_default_value(const std::string& value) {
-
- _impl_.default_value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Field::_internal_mutable_default_value() {
-
- return _impl_.default_value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Field::release_default_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Field.default_value)
- return _impl_.default_value_.Release();
-}
-inline void Field::set_allocated_default_value(std::string* default_value) {
- if (default_value != nullptr) {
-
- } else {
-
- }
- _impl_.default_value_.SetAllocated(default_value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.default_value_.IsDefault()) {
- _impl_.default_value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Field.default_value)
-}
-
-// -------------------------------------------------------------------
-
-// Enum
-
-// string name = 1;
-inline void Enum::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Enum::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Enum.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Enum::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Enum.name)
-}
-inline std::string* Enum::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Enum.name)
- return _s;
-}
-inline const std::string& Enum::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Enum::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Enum::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Enum::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Enum.name)
- return _impl_.name_.Release();
-}
-inline void Enum::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Enum.name)
-}
-
-// repeated .google.protobuf.EnumValue enumvalue = 2;
-inline int Enum::_internal_enumvalue_size() const {
- return _impl_.enumvalue_.size();
-}
-inline int Enum::enumvalue_size() const {
- return _internal_enumvalue_size();
-}
-inline void Enum::clear_enumvalue() {
- _impl_.enumvalue_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValue* Enum::mutable_enumvalue(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Enum.enumvalue)
- return _impl_.enumvalue_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValue >*
-Enum::mutable_enumvalue() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Enum.enumvalue)
- return &_impl_.enumvalue_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValue& Enum::_internal_enumvalue(int index) const {
- return _impl_.enumvalue_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::EnumValue& Enum::enumvalue(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Enum.enumvalue)
- return _internal_enumvalue(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValue* Enum::_internal_add_enumvalue() {
- return _impl_.enumvalue_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::EnumValue* Enum::add_enumvalue() {
- ::PROTOBUF_NAMESPACE_ID::EnumValue* _add = _internal_add_enumvalue();
- // @@protoc_insertion_point(field_add:google.protobuf.Enum.enumvalue)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::EnumValue >&
-Enum::enumvalue() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Enum.enumvalue)
- return _impl_.enumvalue_;
-}
-
-// repeated .google.protobuf.Option options = 3;
-inline int Enum::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int Enum::options_size() const {
- return _internal_options_size();
-}
-inline void Enum::clear_options() {
- _impl_.options_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Enum::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.Enum.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-Enum::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.Enum.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Enum::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& Enum::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.Enum.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Enum::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* Enum::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.Enum.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-Enum::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.Enum.options)
- return _impl_.options_;
-}
-
-// .google.protobuf.SourceContext source_context = 4;
-inline bool Enum::_internal_has_source_context() const {
- return this != internal_default_instance() && _impl_.source_context_ != nullptr;
-}
-inline bool Enum::has_source_context() const {
- return _internal_has_source_context();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Enum::_internal_source_context() const {
- const ::PROTOBUF_NAMESPACE_ID::SourceContext* p = _impl_.source_context_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::SourceContext&>(
- ::PROTOBUF_NAMESPACE_ID::_SourceContext_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::SourceContext& Enum::source_context() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Enum.source_context)
- return _internal_source_context();
-}
-inline void Enum::unsafe_arena_set_allocated_source_context(
- ::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- _impl_.source_context_ = source_context;
- if (source_context) {
-
- } else {
-
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Enum.source_context)
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Enum::release_source_context() {
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Enum::unsafe_arena_release_source_context() {
- // @@protoc_insertion_point(field_release:google.protobuf.Enum.source_context)
-
- ::PROTOBUF_NAMESPACE_ID::SourceContext* temp = _impl_.source_context_;
- _impl_.source_context_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Enum::_internal_mutable_source_context() {
-
- if (_impl_.source_context_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::SourceContext>(GetArenaForAllocation());
- _impl_.source_context_ = p;
- }
- return _impl_.source_context_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::SourceContext* Enum::mutable_source_context() {
- ::PROTOBUF_NAMESPACE_ID::SourceContext* _msg = _internal_mutable_source_context();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Enum.source_context)
- return _msg;
-}
-inline void Enum::set_allocated_source_context(::PROTOBUF_NAMESPACE_ID::SourceContext* source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.source_context_);
- }
- if (source_context) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
- reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_context));
- if (message_arena != submessage_arena) {
- source_context = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, source_context, submessage_arena);
- }
-
- } else {
-
- }
- _impl_.source_context_ = source_context;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Enum.source_context)
-}
-
-// .google.protobuf.Syntax syntax = 5;
-inline void Enum::clear_syntax() {
- _impl_.syntax_ = 0;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Enum::_internal_syntax() const {
- return static_cast< ::PROTOBUF_NAMESPACE_ID::Syntax >(_impl_.syntax_);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Syntax Enum::syntax() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Enum.syntax)
- return _internal_syntax();
-}
-inline void Enum::_internal_set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
-
- _impl_.syntax_ = value;
-}
-inline void Enum::set_syntax(::PROTOBUF_NAMESPACE_ID::Syntax value) {
- _internal_set_syntax(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Enum.syntax)
-}
-
-// -------------------------------------------------------------------
-
-// EnumValue
-
-// string name = 1;
-inline void EnumValue::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& EnumValue::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValue.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void EnumValue::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.EnumValue.name)
-}
-inline std::string* EnumValue::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValue.name)
- return _s;
-}
-inline const std::string& EnumValue::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void EnumValue::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* EnumValue::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* EnumValue::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.EnumValue.name)
- return _impl_.name_.Release();
-}
-inline void EnumValue::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.EnumValue.name)
-}
-
-// int32 number = 2;
-inline void EnumValue::clear_number() {
- _impl_.number_ = 0;
-}
-inline int32_t EnumValue::_internal_number() const {
- return _impl_.number_;
-}
-inline int32_t EnumValue::number() const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValue.number)
- return _internal_number();
-}
-inline void EnumValue::_internal_set_number(int32_t value) {
-
- _impl_.number_ = value;
-}
-inline void EnumValue::set_number(int32_t value) {
- _internal_set_number(value);
- // @@protoc_insertion_point(field_set:google.protobuf.EnumValue.number)
-}
-
-// repeated .google.protobuf.Option options = 3;
-inline int EnumValue::_internal_options_size() const {
- return _impl_.options_.size();
-}
-inline int EnumValue::options_size() const {
- return _internal_options_size();
-}
-inline void EnumValue::clear_options() {
- _impl_.options_.Clear();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* EnumValue::mutable_options(int index) {
- // @@protoc_insertion_point(field_mutable:google.protobuf.EnumValue.options)
- return _impl_.options_.Mutable(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >*
-EnumValue::mutable_options() {
- // @@protoc_insertion_point(field_mutable_list:google.protobuf.EnumValue.options)
- return &_impl_.options_;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& EnumValue::_internal_options(int index) const {
- return _impl_.options_.Get(index);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Option& EnumValue::options(int index) const {
- // @@protoc_insertion_point(field_get:google.protobuf.EnumValue.options)
- return _internal_options(index);
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* EnumValue::_internal_add_options() {
- return _impl_.options_.Add();
-}
-inline ::PROTOBUF_NAMESPACE_ID::Option* EnumValue::add_options() {
- ::PROTOBUF_NAMESPACE_ID::Option* _add = _internal_add_options();
- // @@protoc_insertion_point(field_add:google.protobuf.EnumValue.options)
- return _add;
-}
-inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::PROTOBUF_NAMESPACE_ID::Option >&
-EnumValue::options() const {
- // @@protoc_insertion_point(field_list:google.protobuf.EnumValue.options)
- return _impl_.options_;
-}
-
-// -------------------------------------------------------------------
-
-// Option
-
-// string name = 1;
-inline void Option::clear_name() {
- _impl_.name_.ClearToEmpty();
-}
-inline const std::string& Option::name() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Option.name)
- return _internal_name();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void Option::set_name(ArgT0&& arg0, ArgT... args) {
-
- _impl_.name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.Option.name)
-}
-inline std::string* Option::mutable_name() {
- std::string* _s = _internal_mutable_name();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Option.name)
- return _s;
-}
-inline const std::string& Option::_internal_name() const {
- return _impl_.name_.Get();
-}
-inline void Option::_internal_set_name(const std::string& value) {
-
- _impl_.name_.Set(value, GetArenaForAllocation());
-}
-inline std::string* Option::_internal_mutable_name() {
-
- return _impl_.name_.Mutable(GetArenaForAllocation());
-}
-inline std::string* Option::release_name() {
- // @@protoc_insertion_point(field_release:google.protobuf.Option.name)
- return _impl_.name_.Release();
-}
-inline void Option::set_allocated_name(std::string* name) {
- if (name != nullptr) {
-
- } else {
-
- }
- _impl_.name_.SetAllocated(name, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.name_.IsDefault()) {
- _impl_.name_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Option.name)
-}
-
-// .google.protobuf.Any value = 2;
-inline bool Option::_internal_has_value() const {
- return this != internal_default_instance() && _impl_.value_ != nullptr;
-}
-inline bool Option::has_value() const {
- return _internal_has_value();
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Any& Option::_internal_value() const {
- const ::PROTOBUF_NAMESPACE_ID::Any* p = _impl_.value_;
- return p != nullptr ? *p : reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Any&>(
- ::PROTOBUF_NAMESPACE_ID::_Any_default_instance_);
-}
-inline const ::PROTOBUF_NAMESPACE_ID::Any& Option::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Option.value)
- return _internal_value();
-}
-inline void Option::unsafe_arena_set_allocated_value(
- ::PROTOBUF_NAMESPACE_ID::Any* value) {
- if (GetArenaForAllocation() == nullptr) {
- delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.value_);
- }
- _impl_.value_ = value;
- if (value) {
-
- } else {
-
- }
- // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.protobuf.Option.value)
-}
-inline ::PROTOBUF_NAMESPACE_ID::Any* Option::release_value() {
-
- ::PROTOBUF_NAMESPACE_ID::Any* temp = _impl_.value_;
- _impl_.value_ = nullptr;
-#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
- auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- if (GetArenaForAllocation() == nullptr) { delete old; }
-#else // PROTOBUF_FORCE_COPY_IN_RELEASE
- if (GetArenaForAllocation() != nullptr) {
- temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
- }
-#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Any* Option::unsafe_arena_release_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.Option.value)
-
- ::PROTOBUF_NAMESPACE_ID::Any* temp = _impl_.value_;
- _impl_.value_ = nullptr;
- return temp;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Any* Option::_internal_mutable_value() {
-
- if (_impl_.value_ == nullptr) {
- auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Any>(GetArenaForAllocation());
- _impl_.value_ = p;
- }
- return _impl_.value_;
-}
-inline ::PROTOBUF_NAMESPACE_ID::Any* Option::mutable_value() {
- ::PROTOBUF_NAMESPACE_ID::Any* _msg = _internal_mutable_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.Option.value)
- return _msg;
-}
-inline void Option::set_allocated_value(::PROTOBUF_NAMESPACE_ID::Any* value) {
- ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
- if (message_arena == nullptr) {
- delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.value_);
- }
- if (value) {
- ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
- ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
- reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(value));
- if (message_arena != submessage_arena) {
- value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
- message_arena, value, submessage_arena);
- }
-
- } else {
-
- }
- _impl_.value_ = value;
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.Option.value)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-PROTOBUF_NAMESPACE_OPEN
-
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::Field_Kind> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::Field_Kind>() {
- return ::PROTOBUF_NAMESPACE_ID::Field_Kind_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::Field_Cardinality> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::Field_Cardinality>() {
- return ::PROTOBUF_NAMESPACE_ID::Field_Cardinality_descriptor();
-}
-template <> struct is_proto_enum< ::PROTOBUF_NAMESPACE_ID::Syntax> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::PROTOBUF_NAMESPACE_ID::Syntax>() {
- return ::PROTOBUF_NAMESPACE_ID::Syntax_descriptor();
-}
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2ftype_2eproto
diff --git a/include/google/protobuf/type.proto b/include/google/protobuf/type.proto
deleted file mode 100644
index d3f6a68b83..0000000000
--- a/include/google/protobuf/type.proto
+++ /dev/null
@@ -1,187 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-import "google/protobuf/any.proto";
-import "google/protobuf/source_context.proto";
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option java_package = "com.google.protobuf";
-option java_outer_classname = "TypeProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-option go_package = "google.golang.org/protobuf/types/known/typepb";
-
-// A protocol buffer message type.
-message Type {
- // The fully qualified message name.
- string name = 1;
- // The list of fields.
- repeated Field fields = 2;
- // The list of types appearing in `oneof` definitions in this type.
- repeated string oneofs = 3;
- // The protocol buffer options.
- repeated Option options = 4;
- // The source context.
- SourceContext source_context = 5;
- // The source syntax.
- Syntax syntax = 6;
-}
-
-// A single field of a message type.
-message Field {
- // Basic field types.
- enum Kind {
- // Field type unknown.
- TYPE_UNKNOWN = 0;
- // Field type double.
- TYPE_DOUBLE = 1;
- // Field type float.
- TYPE_FLOAT = 2;
- // Field type int64.
- TYPE_INT64 = 3;
- // Field type uint64.
- TYPE_UINT64 = 4;
- // Field type int32.
- TYPE_INT32 = 5;
- // Field type fixed64.
- TYPE_FIXED64 = 6;
- // Field type fixed32.
- TYPE_FIXED32 = 7;
- // Field type bool.
- TYPE_BOOL = 8;
- // Field type string.
- TYPE_STRING = 9;
- // Field type group. Proto2 syntax only, and deprecated.
- TYPE_GROUP = 10;
- // Field type message.
- TYPE_MESSAGE = 11;
- // Field type bytes.
- TYPE_BYTES = 12;
- // Field type uint32.
- TYPE_UINT32 = 13;
- // Field type enum.
- TYPE_ENUM = 14;
- // Field type sfixed32.
- TYPE_SFIXED32 = 15;
- // Field type sfixed64.
- TYPE_SFIXED64 = 16;
- // Field type sint32.
- TYPE_SINT32 = 17;
- // Field type sint64.
- TYPE_SINT64 = 18;
- }
-
- // Whether a field is optional, required, or repeated.
- enum Cardinality {
- // For fields with unknown cardinality.
- CARDINALITY_UNKNOWN = 0;
- // For optional fields.
- CARDINALITY_OPTIONAL = 1;
- // For required fields. Proto2 syntax only.
- CARDINALITY_REQUIRED = 2;
- // For repeated fields.
- CARDINALITY_REPEATED = 3;
- }
-
- // The field type.
- Kind kind = 1;
- // The field cardinality.
- Cardinality cardinality = 2;
- // The field number.
- int32 number = 3;
- // The field name.
- string name = 4;
- // The field type URL, without the scheme, for message or enumeration
- // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
- string type_url = 6;
- // The index of the field type in `Type.oneofs`, for message or enumeration
- // types. The first type has index 1; zero means the type is not in the list.
- int32 oneof_index = 7;
- // Whether to use alternative packed wire representation.
- bool packed = 8;
- // The protocol buffer options.
- repeated Option options = 9;
- // The field JSON name.
- string json_name = 10;
- // The string value of the default value of this field. Proto2 syntax only.
- string default_value = 11;
-}
-
-// Enum type definition.
-message Enum {
- // Enum type name.
- string name = 1;
- // Enum value definitions.
- repeated EnumValue enumvalue = 2;
- // Protocol buffer options.
- repeated Option options = 3;
- // The source context.
- SourceContext source_context = 4;
- // The source syntax.
- Syntax syntax = 5;
-}
-
-// Enum value definition.
-message EnumValue {
- // Enum value name.
- string name = 1;
- // Enum value number.
- int32 number = 2;
- // Protocol buffer options.
- repeated Option options = 3;
-}
-
-// A protocol buffer option, which can be attached to a message, field,
-// enumeration, etc.
-message Option {
- // The option's name. For protobuf built-in options (options defined in
- // descriptor.proto), this is the short name. For example, `"map_entry"`.
- // For custom options, it should be the fully-qualified name. For example,
- // `"google.api.http"`.
- string name = 1;
- // The option's value packed in an Any message. If the value is a primitive,
- // the corresponding wrapper type defined in google/protobuf/wrappers.proto
- // should be used. If the value is an enum, it should be stored as an int32
- // value using the google.protobuf.Int32Value type.
- Any value = 2;
-}
-
-// The syntax in which a protocol buffer element is defined.
-enum Syntax {
- // Syntax `proto2`.
- SYNTAX_PROTO2 = 0;
- // Syntax `proto3`.
- SYNTAX_PROTO3 = 1;
-}
diff --git a/include/google/protobuf/unknown_field_set.h b/include/google/protobuf/unknown_field_set.h
deleted file mode 100644
index 9aa2cbbe47..0000000000
--- a/include/google/protobuf/unknown_field_set.h
+++ /dev/null
@@ -1,407 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// Contains classes used to keep track of unrecognized fields seen while
-// parsing a protocol message.
-
-#ifndef GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__
-#define GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__
-
-
-#include <assert.h>
-
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/parse_context.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-namespace google {
-namespace protobuf {
-namespace internal {
-class InternalMetadata; // metadata_lite.h
-class WireFormat; // wire_format.h
-class MessageSetFieldSkipperUsingCord;
-// extension_set_heavy.cc
-} // namespace internal
-
-class Message; // message.h
-class UnknownField; // below
-
-// An UnknownFieldSet contains fields that were encountered while parsing a
-// message but were not defined by its type. Keeping track of these can be
-// useful, especially in that they may be written if the message is serialized
-// again without being cleared in between. This means that software which
-// simply receives messages and forwards them to other servers does not need
-// to be updated every time a new field is added to the message definition.
-//
-// To get the UnknownFieldSet attached to any message, call
-// Reflection::GetUnknownFields().
-//
-// This class is necessarily tied to the protocol buffer wire format, unlike
-// the Reflection interface which is independent of any serialization scheme.
-class PROTOBUF_EXPORT UnknownFieldSet {
- public:
- UnknownFieldSet();
- ~UnknownFieldSet();
-
- // Remove all fields.
- inline void Clear();
-
- // Remove all fields and deallocate internal data objects
- void ClearAndFreeMemory();
-
- // Is this set empty?
- inline bool empty() const;
-
- // Merge the contents of some other UnknownFieldSet with this one.
- void MergeFrom(const UnknownFieldSet& other);
-
- // Similar to above, but this function will destroy the contents of other.
- void MergeFromAndDestroy(UnknownFieldSet* other);
-
- // Merge the contents an UnknownFieldSet with the UnknownFieldSet in
- // *metadata, if there is one. If *metadata doesn't have an UnknownFieldSet
- // then add one to it and make it be a copy of the first arg.
- static void MergeToInternalMetadata(const UnknownFieldSet& other,
- internal::InternalMetadata* metadata);
-
- // Swaps the contents of some other UnknownFieldSet with this one.
- inline void Swap(UnknownFieldSet* x);
-
- // Computes (an estimate of) the total number of bytes currently used for
- // storing the unknown fields in memory. Does NOT include
- // sizeof(*this) in the calculation.
- size_t SpaceUsedExcludingSelfLong() const;
-
- int SpaceUsedExcludingSelf() const {
- return internal::ToIntSize(SpaceUsedExcludingSelfLong());
- }
-
- // Version of SpaceUsed() including sizeof(*this).
- size_t SpaceUsedLong() const;
-
- int SpaceUsed() const { return internal::ToIntSize(SpaceUsedLong()); }
-
- // Returns the number of fields present in the UnknownFieldSet.
- inline int field_count() const;
- // Get a field in the set, where 0 <= index < field_count(). The fields
- // appear in the order in which they were added.
- inline const UnknownField& field(int index) const;
- // Get a mutable pointer to a field in the set, where
- // 0 <= index < field_count(). The fields appear in the order in which
- // they were added.
- inline UnknownField* mutable_field(int index);
-
- // Adding fields ---------------------------------------------------
-
- void AddVarint(int number, uint64_t value);
- void AddFixed32(int number, uint32_t value);
- void AddFixed64(int number, uint64_t value);
- void AddLengthDelimited(int number, const std::string& value);
- std::string* AddLengthDelimited(int number);
- UnknownFieldSet* AddGroup(int number);
-
- // Adds an unknown field from another set.
- void AddField(const UnknownField& field);
-
- // Delete fields with indices in the range [start .. start+num-1].
- // Caution: implementation moves all fields with indices [start+num .. ].
- void DeleteSubrange(int start, int num);
-
- // Delete all fields with a specific field number. The order of left fields
- // is preserved.
- // Caution: implementation moves all fields after the first deleted field.
- void DeleteByNumber(int number);
-
- // Parsing helpers -------------------------------------------------
- // These work exactly like the similarly-named methods of Message.
-
- bool MergeFromCodedStream(io::CodedInputStream* input);
- bool ParseFromCodedStream(io::CodedInputStream* input);
- bool ParseFromZeroCopyStream(io::ZeroCopyInputStream* input);
- bool ParseFromArray(const void* data, int size);
- inline bool ParseFromString(const std::string& data) {
- return ParseFromArray(data.data(), static_cast<int>(data.size()));
- }
-
- // Merges this message's unknown field data (if any). This works whether
- // the message is a lite or full proto (for legacy reasons, lite and full
- // return different types for MessageType::unknown_fields()).
- template <typename MessageType>
- bool MergeFromMessage(const MessageType& message);
-
- // Serialization.
- bool SerializeToString(std::string* output) const;
- bool SerializeToCodedStream(io::CodedOutputStream* output) const;
- static const UnknownFieldSet& default_instance();
-
- private:
- // For InternalMergeFrom
- friend class UnknownField;
- // Merges from other UnknownFieldSet. This method assumes, that this object
- // is newly created and has no fields.
- void InternalMergeFrom(const UnknownFieldSet& other);
- void ClearFallback();
-
- template <typename MessageType,
- typename std::enable_if<
- std::is_base_of<Message, MessageType>::value, int>::type = 0>
- bool InternalMergeFromMessage(const MessageType& message) {
- MergeFrom(message.GetReflection()->GetUnknownFields(message));
- return true;
- }
-
- template <typename MessageType,
- typename std::enable_if<
- std::is_base_of<MessageLite, MessageType>::value &&
- !std::is_base_of<Message, MessageType>::value,
- int>::type = 0>
- bool InternalMergeFromMessage(const MessageType& message) {
- const auto& unknown_fields = message.unknown_fields();
- io::ArrayInputStream array_stream(unknown_fields.data(),
- unknown_fields.size());
- io::CodedInputStream coded_stream(&array_stream);
- return MergeFromCodedStream(&coded_stream);
- }
-
- std::vector<UnknownField> fields_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(UnknownFieldSet);
-};
-
-namespace internal {
-
-inline void WriteVarint(uint32_t num, uint64_t val, UnknownFieldSet* unknown) {
- unknown->AddVarint(num, val);
-}
-inline void WriteLengthDelimited(uint32_t num, StringPiece val,
- UnknownFieldSet* unknown) {
- unknown->AddLengthDelimited(num)->assign(val.data(), val.size());
-}
-
-PROTOBUF_EXPORT
-const char* UnknownGroupParse(UnknownFieldSet* unknown, const char* ptr,
- ParseContext* ctx);
-PROTOBUF_EXPORT
-const char* UnknownFieldParse(uint64_t tag, UnknownFieldSet* unknown,
- const char* ptr, ParseContext* ctx);
-
-} // namespace internal
-
-// Represents one field in an UnknownFieldSet.
-class PROTOBUF_EXPORT UnknownField {
- public:
- enum Type {
- TYPE_VARINT,
- TYPE_FIXED32,
- TYPE_FIXED64,
- TYPE_LENGTH_DELIMITED,
- TYPE_GROUP
- };
-
- // The field's field number, as seen on the wire.
- inline int number() const;
-
- // The field type.
- inline Type type() const;
-
- // Accessors -------------------------------------------------------
- // Each method works only for UnknownFields of the corresponding type.
-
- inline uint64_t varint() const;
- inline uint32_t fixed32() const;
- inline uint64_t fixed64() const;
- inline const std::string& length_delimited() const;
- inline const UnknownFieldSet& group() const;
-
- inline void set_varint(uint64_t value);
- inline void set_fixed32(uint32_t value);
- inline void set_fixed64(uint64_t value);
- inline void set_length_delimited(const std::string& value);
- inline std::string* mutable_length_delimited();
- inline UnknownFieldSet* mutable_group();
-
- inline size_t GetLengthDelimitedSize() const;
- uint8_t* InternalSerializeLengthDelimitedNoTag(
- uint8_t* target, io::EpsCopyOutputStream* stream) const;
-
-
- // If this UnknownField contains a pointer, delete it.
- void Delete();
-
- // Make a deep copy of any pointers in this UnknownField.
- void DeepCopy(const UnknownField& other);
-
- // Set the wire type of this UnknownField. Should only be used when this
- // UnknownField is being created.
- inline void SetType(Type type);
-
- union LengthDelimited {
- std::string* string_value;
- };
-
- uint32_t number_;
- uint32_t type_;
- union {
- uint64_t varint_;
- uint32_t fixed32_;
- uint64_t fixed64_;
- mutable union LengthDelimited length_delimited_;
- UnknownFieldSet* group_;
- } data_;
-};
-
-// ===================================================================
-// inline implementations
-
-inline UnknownFieldSet::UnknownFieldSet() {}
-
-inline UnknownFieldSet::~UnknownFieldSet() { Clear(); }
-
-inline void UnknownFieldSet::ClearAndFreeMemory() { Clear(); }
-
-inline void UnknownFieldSet::Clear() {
- if (!fields_.empty()) {
- ClearFallback();
- }
-}
-
-inline bool UnknownFieldSet::empty() const { return fields_.empty(); }
-
-inline void UnknownFieldSet::Swap(UnknownFieldSet* x) {
- fields_.swap(x->fields_);
-}
-
-inline int UnknownFieldSet::field_count() const {
- return static_cast<int>(fields_.size());
-}
-inline const UnknownField& UnknownFieldSet::field(int index) const {
- return (fields_)[static_cast<size_t>(index)];
-}
-inline UnknownField* UnknownFieldSet::mutable_field(int index) {
- return &(fields_)[static_cast<size_t>(index)];
-}
-
-inline void UnknownFieldSet::AddLengthDelimited(int number,
- const std::string& value) {
- AddLengthDelimited(number)->assign(value);
-}
-
-
-
-
-inline int UnknownField::number() const { return static_cast<int>(number_); }
-inline UnknownField::Type UnknownField::type() const {
- return static_cast<Type>(type_);
-}
-
-inline uint64_t UnknownField::varint() const {
- assert(type() == TYPE_VARINT);
- return data_.varint_;
-}
-inline uint32_t UnknownField::fixed32() const {
- assert(type() == TYPE_FIXED32);
- return data_.fixed32_;
-}
-inline uint64_t UnknownField::fixed64() const {
- assert(type() == TYPE_FIXED64);
- return data_.fixed64_;
-}
-inline const std::string& UnknownField::length_delimited() const {
- assert(type() == TYPE_LENGTH_DELIMITED);
- return *data_.length_delimited_.string_value;
-}
-inline const UnknownFieldSet& UnknownField::group() const {
- assert(type() == TYPE_GROUP);
- return *data_.group_;
-}
-
-inline void UnknownField::set_varint(uint64_t value) {
- assert(type() == TYPE_VARINT);
- data_.varint_ = value;
-}
-inline void UnknownField::set_fixed32(uint32_t value) {
- assert(type() == TYPE_FIXED32);
- data_.fixed32_ = value;
-}
-inline void UnknownField::set_fixed64(uint64_t value) {
- assert(type() == TYPE_FIXED64);
- data_.fixed64_ = value;
-}
-inline void UnknownField::set_length_delimited(const std::string& value) {
- assert(type() == TYPE_LENGTH_DELIMITED);
- data_.length_delimited_.string_value->assign(value);
-}
-inline std::string* UnknownField::mutable_length_delimited() {
- assert(type() == TYPE_LENGTH_DELIMITED);
- return data_.length_delimited_.string_value;
-}
-inline UnknownFieldSet* UnknownField::mutable_group() {
- assert(type() == TYPE_GROUP);
- return data_.group_;
-}
-template <typename MessageType>
-bool UnknownFieldSet::MergeFromMessage(const MessageType& message) {
- // SFINAE will route to the right version.
- return InternalMergeFromMessage(message);
-}
-
-
-inline size_t UnknownField::GetLengthDelimitedSize() const {
- GOOGLE_DCHECK_EQ(TYPE_LENGTH_DELIMITED, type());
- return data_.length_delimited_.string_value->size();
-}
-
-inline void UnknownField::SetType(Type type) {
- type_ = type;
-}
-
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_UNKNOWN_FIELD_SET_H__
diff --git a/include/google/protobuf/util/delimited_message_util.h b/include/google/protobuf/util/delimited_message_util.h
deleted file mode 100644
index 78625cf2f1..0000000000
--- a/include/google/protobuf/util/delimited_message_util.h
+++ /dev/null
@@ -1,109 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Adapted from the patch of kenton@google.com (Kenton Varda)
-// See https://github.com/protocolbuffers/protobuf/pull/710 for details.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_DELIMITED_MESSAGE_UTIL_H__
-#define GOOGLE_PROTOBUF_UTIL_DELIMITED_MESSAGE_UTIL_H__
-
-
-#include <ostream>
-
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace util {
-
-// Write a single size-delimited message from the given stream. Delimited
-// format allows a single file or stream to contain multiple messages,
-// whereas normally writing multiple non-delimited messages to the same
-// stream would cause them to be merged. A delimited message is a varint
-// encoding the message size followed by a message of exactly that size.
-//
-// Note that if you want to *read* a delimited message from a file descriptor
-// or istream, you will need to construct an io::FileInputStream or
-// io::OstreamInputStream (implementations of io::ZeroCopyStream) and use the
-// utility function ParseDelimitedFromZeroCopyStream(). You must then
-// continue to use the same ZeroCopyInputStream to read all further data from
-// the stream until EOF. This is because these ZeroCopyInputStream
-// implementations are buffered: they read a big chunk of data at a time,
-// then parse it. As a result, they may read past the end of the delimited
-// message. There is no way for them to push the extra data back into the
-// underlying source, so instead you must keep using the same stream object.
-bool PROTOBUF_EXPORT SerializeDelimitedToFileDescriptor(
- const MessageLite& message, int file_descriptor);
-
-bool PROTOBUF_EXPORT SerializeDelimitedToOstream(const MessageLite& message,
- std::ostream* output);
-
-// Read a single size-delimited message from the given stream. Delimited
-// format allows a single file or stream to contain multiple messages,
-// whereas normally parsing consumes the entire input. A delimited message
-// is a varint encoding the message size followed by a message of exactly
-// that size.
-//
-// If |clean_eof| is not NULL, then it will be set to indicate whether the
-// stream ended cleanly. That is, if the stream ends without this method
-// having read any data at all from it, then *clean_eof will be set true,
-// otherwise it will be set false. Note that these methods return false
-// on EOF, but they also return false on other errors, so |clean_eof| is
-// needed to distinguish a clean end from errors.
-bool PROTOBUF_EXPORT ParseDelimitedFromZeroCopyStream(
- MessageLite* message, io::ZeroCopyInputStream* input, bool* clean_eof);
-
-bool PROTOBUF_EXPORT ParseDelimitedFromCodedStream(MessageLite* message,
- io::CodedInputStream* input,
- bool* clean_eof);
-
-// Write a single size-delimited message from the given stream. Delimited
-// format allows a single file or stream to contain multiple messages,
-// whereas normally writing multiple non-delimited messages to the same
-// stream would cause them to be merged. A delimited message is a varint
-// encoding the message size followed by a message of exactly that size.
-bool PROTOBUF_EXPORT SerializeDelimitedToZeroCopyStream(
- const MessageLite& message, io::ZeroCopyOutputStream* output);
-
-bool PROTOBUF_EXPORT SerializeDelimitedToCodedStream(
- const MessageLite& message, io::CodedOutputStream* output);
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_DELIMITED_MESSAGE_UTIL_H__
diff --git a/include/google/protobuf/util/field_comparator.h b/include/google/protobuf/util/field_comparator.h
deleted file mode 100644
index 5706da357a..0000000000
--- a/include/google/protobuf/util/field_comparator.h
+++ /dev/null
@@ -1,288 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Defines classes for field comparison.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_FIELD_COMPARATOR_H__
-#define GOOGLE_PROTOBUF_UTIL_FIELD_COMPARATOR_H__
-
-
-#include <cstdint>
-#include <map>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/stubs/common.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class Message;
-class EnumValueDescriptor;
-class FieldDescriptor;
-
-namespace util {
-
-class FieldContext;
-class MessageDifferencer;
-
-// Base class specifying the interface for comparing protocol buffer fields.
-// Regular users should consider using or subclassing DefaultFieldComparator
-// rather than this interface.
-// Currently, this does not support comparing unknown fields.
-class PROTOBUF_EXPORT FieldComparator {
- public:
- FieldComparator();
- virtual ~FieldComparator();
-
- enum ComparisonResult {
- SAME, // Compared fields are equal. In case of comparing submessages,
- // user should not recursively compare their contents.
- DIFFERENT, // Compared fields are different. In case of comparing
- // submessages, user should not recursively compare their
- // contents.
- RECURSE, // Compared submessages need to be compared recursively.
- // FieldComparator does not specify the semantics of recursive
- // comparison. This value should not be returned for simple
- // values.
- };
-
- // Compares the values of a field in two protocol buffer messages.
- // Returns SAME or DIFFERENT for simple values, and SAME, DIFFERENT or RECURSE
- // for submessages. Returning RECURSE for fields not being submessages is
- // illegal.
- // In case the given FieldDescriptor points to a repeated field, the indices
- // need to be valid. Otherwise they should be ignored.
- //
- // FieldContext contains information about the specific instances of the
- // fields being compared, versus FieldDescriptor which only contains general
- // type information about the fields.
- virtual ComparisonResult Compare(const Message& message_1,
- const Message& message_2,
- const FieldDescriptor* field, int index_1,
- int index_2,
- const util::FieldContext* field_context) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldComparator);
-};
-
-// Basic implementation of FieldComparator. Supports three modes of floating
-// point value comparison: exact, approximate using MathUtil::AlmostEqual
-// method, and arbitrarily precise using MathUtil::WithinFractionOrMargin.
-class PROTOBUF_EXPORT SimpleFieldComparator : public FieldComparator {
- public:
- enum FloatComparison {
- EXACT, // Floats and doubles are compared exactly.
- APPROXIMATE, // Floats and doubles are compared using the
- // MathUtil::AlmostEqual method or
- // MathUtil::WithinFractionOrMargin method.
- // TODO(ksroka): Introduce third value to differentiate uses of AlmostEqual
- // and WithinFractionOrMargin.
- };
-
- // Creates new comparator with float comparison set to EXACT.
- SimpleFieldComparator();
-
- ~SimpleFieldComparator() override;
-
- void set_float_comparison(FloatComparison float_comparison) {
- float_comparison_ = float_comparison;
- }
-
- FloatComparison float_comparison() const { return float_comparison_; }
-
- // Set whether the FieldComparator shall treat floats or doubles that are both
- // NaN as equal (treat_nan_as_equal = true) or as different
- // (treat_nan_as_equal = false). Default is treating NaNs always as different.
- void set_treat_nan_as_equal(bool treat_nan_as_equal) {
- treat_nan_as_equal_ = treat_nan_as_equal;
- }
-
- bool treat_nan_as_equal() const { return treat_nan_as_equal_; }
-
- // Sets the fraction and margin for the float comparison of a given field.
- // Uses MathUtil::WithinFractionOrMargin to compare the values.
- //
- // REQUIRES: field->cpp_type == FieldDescriptor::CPPTYPE_DOUBLE or
- // field->cpp_type == FieldDescriptor::CPPTYPE_FLOAT
- // REQUIRES: float_comparison_ == APPROXIMATE
- void SetFractionAndMargin(const FieldDescriptor* field, double fraction,
- double margin);
-
- // Sets the fraction and margin for the float comparison of all float and
- // double fields, unless a field has been given a specific setting via
- // SetFractionAndMargin() above.
- // Uses MathUtil::WithinFractionOrMargin to compare the values.
- //
- // REQUIRES: float_comparison_ == APPROXIMATE
- void SetDefaultFractionAndMargin(double fraction, double margin);
-
- protected:
- // Returns the comparison result for the given field in two messages.
- //
- // This function is called directly by DefaultFieldComparator::Compare.
- // Subclasses can call this function to compare fields they do not need to
- // handle specially.
- ComparisonResult SimpleCompare(const Message& message_1,
- const Message& message_2,
- const FieldDescriptor* field, int index_1,
- int index_2,
- const util::FieldContext* field_context);
-
- // Compare using the provided message_differencer. For example, a subclass can
- // use this method to compare some field in a certain way using the same
- // message_differencer instance and the field context.
- bool CompareWithDifferencer(MessageDifferencer* differencer,
- const Message& message1, const Message& message2,
- const util::FieldContext* field_context);
-
- // Returns FieldComparator::SAME if boolean_result is true and
- // FieldComparator::DIFFERENT otherwise.
- ComparisonResult ResultFromBoolean(bool boolean_result) const;
-
- private:
- // Defines the tolerance for floating point comparison (fraction and margin).
- struct Tolerance {
- double fraction;
- double margin;
- Tolerance() : fraction(0.0), margin(0.0) {}
- Tolerance(double f, double m) : fraction(f), margin(m) {}
- };
-
- // Defines the map to store the tolerances for floating point comparison.
- typedef std::map<const FieldDescriptor*, Tolerance> ToleranceMap;
-
- friend class MessageDifferencer;
- // The following methods get executed when CompareFields is called for the
- // basic types (instead of submessages). They return true on success. One
- // can use ResultFromBoolean() to convert that boolean to a ComparisonResult
- // value.
- bool CompareBool(const FieldDescriptor& /* unused */, bool value_1,
- bool value_2) {
- return value_1 == value_2;
- }
-
- // Uses CompareDoubleOrFloat, a helper function used by both CompareDouble and
- // CompareFloat.
- bool CompareDouble(const FieldDescriptor& field, double value_1,
- double value_2);
-
- bool CompareEnum(const FieldDescriptor& field,
- const EnumValueDescriptor* value_1,
- const EnumValueDescriptor* value_2);
-
- // Uses CompareDoubleOrFloat, a helper function used by both CompareDouble and
- // CompareFloat.
- bool CompareFloat(const FieldDescriptor& field, float value_1, float value_2);
-
- bool CompareInt32(const FieldDescriptor& /* unused */, int32_t value_1,
- int32_t value_2) {
- return value_1 == value_2;
- }
-
- bool CompareInt64(const FieldDescriptor& /* unused */, int64_t value_1,
- int64_t value_2) {
- return value_1 == value_2;
- }
-
- bool CompareString(const FieldDescriptor& /* unused */,
- const std::string& value_1, const std::string& value_2) {
- return value_1 == value_2;
- }
-
- bool CompareUInt32(const FieldDescriptor& /* unused */, uint32_t value_1,
- uint32_t value_2) {
- return value_1 == value_2;
- }
-
- bool CompareUInt64(const FieldDescriptor& /* unused */, uint64_t value_1,
- uint64_t value_2) {
- return value_1 == value_2;
- }
-
- // This function is used by CompareDouble and CompareFloat to avoid code
- // duplication. There are no checks done against types of the values passed,
- // but it's likely to fail if passed non-numeric arguments.
- template <typename T>
- bool CompareDoubleOrFloat(const FieldDescriptor& field, T value_1, T value_2);
-
- FloatComparison float_comparison_;
-
- // If true, floats and doubles that are both NaN are considered to be
- // equal. Otherwise, two floats or doubles that are NaN are considered to be
- // different.
- bool treat_nan_as_equal_;
-
- // True iff default_tolerance_ has been explicitly set.
- //
- // If false, then the default tolerance for floats and doubles is that which
- // is used by MathUtil::AlmostEquals().
- bool has_default_tolerance_;
-
- // Default float/double tolerance. Only meaningful if
- // has_default_tolerance_ == true.
- Tolerance default_tolerance_;
-
- // Field-specific float/double tolerances, which override any default for
- // those particular fields.
- ToleranceMap map_tolerance_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(SimpleFieldComparator);
-};
-
-// Default field comparison: use the basic implementation of FieldComparator.
-#ifdef PROTOBUF_FUTURE_BREAKING_CHANGES
-class PROTOBUF_EXPORT DefaultFieldComparator final
- : public SimpleFieldComparator
-#else // PROTOBUF_FUTURE_BREAKING_CHANGES
-class PROTOBUF_EXPORT DefaultFieldComparator : public SimpleFieldComparator
-#endif // PROTOBUF_FUTURE_BREAKING_CHANGES
-{
- public:
- ComparisonResult Compare(const Message& message_1, const Message& message_2,
- const FieldDescriptor* field, int index_1,
- int index_2,
- const util::FieldContext* field_context) override {
- return SimpleCompare(message_1, message_2, field, index_1, index_2,
- field_context);
- }
-};
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_FIELD_COMPARATOR_H__
diff --git a/include/google/protobuf/util/field_mask_util.h b/include/google/protobuf/util/field_mask_util.h
deleted file mode 100644
index d51a332c8b..0000000000
--- a/include/google/protobuf/util/field_mask_util.h
+++ /dev/null
@@ -1,263 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Defines utilities for the FieldMask well known type.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_FIELD_MASK_UTIL_H__
-#define GOOGLE_PROTOBUF_UTIL_FIELD_MASK_UTIL_H__
-
-#include <cstdint>
-#include <string>
-
-#include <google/protobuf/field_mask.pb.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/descriptor.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace util {
-
-class PROTOBUF_EXPORT FieldMaskUtil {
- typedef google::protobuf::FieldMask FieldMask;
-
- public:
- // Converts FieldMask to/from string, formatted by separating each path
- // with a comma (e.g., "foo_bar,baz.quz").
- static std::string ToString(const FieldMask& mask);
- static void FromString(StringPiece str, FieldMask* out);
-
- // Populates the FieldMask with the paths corresponding to the fields with the
- // given numbers, after checking that all field numbers are valid.
- template <typename T>
- static void FromFieldNumbers(const std::vector<int64_t>& field_numbers,
- FieldMask* out) {
- for (const auto field_number : field_numbers) {
- const FieldDescriptor* field_desc =
- T::descriptor()->FindFieldByNumber(field_number);
- GOOGLE_CHECK(field_desc != nullptr)
- << "Invalid field number for " << T::descriptor()->full_name() << ": "
- << field_number;
- AddPathToFieldMask<T>(field_desc->lowercase_name(), out);
- }
- }
-
- // Converts FieldMask to/from string, formatted according to proto3 JSON
- // spec for FieldMask (e.g., "fooBar,baz.quz"). If the field name is not
- // style conforming (i.e., not snake_case when converted to string, or not
- // camelCase when converted from string), the conversion will fail.
- static bool ToJsonString(const FieldMask& mask, std::string* out);
- static bool FromJsonString(StringPiece str, FieldMask* out);
-
- // Get the descriptors of the fields which the given path from the message
- // descriptor traverses, if field_descriptors is not null.
- // Return false if the path is not valid, and the content of field_descriptors
- // is unspecified.
- static bool GetFieldDescriptors(
- const Descriptor* descriptor, StringPiece path,
- std::vector<const FieldDescriptor*>* field_descriptors);
-
- // Checks whether the given path is valid for type T.
- template <typename T>
- static bool IsValidPath(StringPiece path) {
- return GetFieldDescriptors(T::descriptor(), path, nullptr);
- }
-
- // Checks whether the given FieldMask is valid for type T.
- template <typename T>
- static bool IsValidFieldMask(const FieldMask& mask) {
- for (int i = 0; i < mask.paths_size(); ++i) {
- if (!GetFieldDescriptors(T::descriptor(), mask.paths(i), nullptr)) {
- return false;
- }
- }
- return true;
- }
-
- // Adds a path to FieldMask after checking whether the given path is valid.
- // This method check-fails if the path is not a valid path for type T.
- template <typename T>
- static void AddPathToFieldMask(StringPiece path, FieldMask* mask) {
- GOOGLE_CHECK(IsValidPath<T>(path)) << path;
- mask->add_paths(std::string(path));
- }
-
- // Creates a FieldMask with all fields of type T. This FieldMask only
- // contains fields of T but not any sub-message fields.
- template <typename T>
- static FieldMask GetFieldMaskForAllFields() {
- FieldMask out;
- GetFieldMaskForAllFields(T::descriptor(), &out);
- return out;
- }
- template <typename T>
- PROTOBUF_DEPRECATED_MSG("Use *out = GetFieldMaskForAllFields() instead")
- static void GetFieldMaskForAllFields(FieldMask* out) {
- GetFieldMaskForAllFields(T::descriptor(), out);
- }
- // This flavor takes the protobuf type descriptor as an argument.
- // Useful when the type is not known at compile time.
- static void GetFieldMaskForAllFields(const Descriptor* descriptor,
- FieldMask* out);
-
- // Converts a FieldMask to the canonical form. It will:
- // 1. Remove paths that are covered by another path. For example,
- // "foo.bar" is covered by "foo" and will be removed if "foo"
- // is also in the FieldMask.
- // 2. Sort all paths in alphabetical order.
- static void ToCanonicalForm(const FieldMask& mask, FieldMask* out);
-
- // Creates an union of two FieldMasks.
- static void Union(const FieldMask& mask1, const FieldMask& mask2,
- FieldMask* out);
-
- // Creates an intersection of two FieldMasks.
- static void Intersect(const FieldMask& mask1, const FieldMask& mask2,
- FieldMask* out);
-
- // Subtracts mask2 from mask1 base of type T.
- template <typename T>
- static void Subtract(const FieldMask& mask1, const FieldMask& mask2,
- FieldMask* out) {
- Subtract(T::descriptor(), mask1, mask2, out);
- }
- // This flavor takes the protobuf type descriptor as an argument.
- // Useful when the type is not known at compile time.
- static void Subtract(const Descriptor* descriptor, const FieldMask& mask1,
- const FieldMask& mask2, FieldMask* out);
-
- // Returns true if path is covered by the given FieldMask. Note that path
- // "foo.bar" covers all paths like "foo.bar.baz", "foo.bar.quz.x", etc.
- // Also note that parent paths are not covered by explicit child path, i.e.
- // "foo.bar" does NOT cover "foo", even if "bar" is the only child.
- static bool IsPathInFieldMask(StringPiece path, const FieldMask& mask);
-
- class MergeOptions;
- // Merges fields specified in a FieldMask into another message.
- static void MergeMessageTo(const Message& source, const FieldMask& mask,
- const MergeOptions& options, Message* destination);
-
- class TrimOptions;
- // Removes from 'message' any field that is not represented in the given
- // FieldMask. If the FieldMask is empty, does nothing.
- // Returns true if the message is modified.
- static bool TrimMessage(const FieldMask& mask, Message* message);
-
- // Removes from 'message' any field that is not represented in the given
- // FieldMask with customized TrimOptions.
- // If the FieldMask is empty, does nothing.
- // Returns true if the message is modified.
- static bool TrimMessage(const FieldMask& mask, Message* message,
- const TrimOptions& options);
-
- private:
- friend class SnakeCaseCamelCaseTest;
- // Converts a field name from snake_case to camelCase:
- // 1. Every character after "_" will be converted to uppercase.
- // 2. All "_"s are removed.
- // The conversion will fail if:
- // 1. The field name contains uppercase letters.
- // 2. Any character after a "_" is not a lowercase letter.
- // If the conversion succeeds, it's guaranteed that the resulted
- // camelCase name will yield the original snake_case name when
- // converted using CamelCaseToSnakeCase().
- //
- // Note that the input can contain characters not allowed in C identifiers.
- // For example, "foo_bar,baz_quz" will be converted to "fooBar,bazQuz"
- // successfully.
- static bool SnakeCaseToCamelCase(StringPiece input,
- std::string* output);
- // Converts a field name from camelCase to snake_case:
- // 1. Every uppercase letter is converted to lowercase with an additional
- // preceding "_".
- // The conversion will fail if:
- // 1. The field name contains "_"s.
- // If the conversion succeeds, it's guaranteed that the resulted
- // snake_case name will yield the original camelCase name when
- // converted using SnakeCaseToCamelCase().
- //
- // Note that the input can contain characters not allowed in C identifiers.
- // For example, "fooBar,bazQuz" will be converted to "foo_bar,baz_quz"
- // successfully.
- static bool CamelCaseToSnakeCase(StringPiece input,
- std::string* output);
-};
-
-class PROTOBUF_EXPORT FieldMaskUtil::MergeOptions {
- public:
- MergeOptions()
- : replace_message_fields_(false), replace_repeated_fields_(false) {}
- // When merging message fields, the default behavior is to merge the
- // content of two message fields together. If you instead want to use
- // the field from the source message to replace the corresponding field
- // in the destination message, set this flag to true. When this flag is set,
- // specified submessage fields that are missing in source will be cleared in
- // destination.
- void set_replace_message_fields(bool value) {
- replace_message_fields_ = value;
- }
- bool replace_message_fields() const { return replace_message_fields_; }
- // The default merging behavior will append entries from the source
- // repeated field to the destination repeated field. If you only want
- // to keep the entries from the source repeated field, set this flag
- // to true.
- void set_replace_repeated_fields(bool value) {
- replace_repeated_fields_ = value;
- }
- bool replace_repeated_fields() const { return replace_repeated_fields_; }
-
- private:
- bool replace_message_fields_;
- bool replace_repeated_fields_;
-};
-
-class PROTOBUF_EXPORT FieldMaskUtil::TrimOptions {
- public:
- TrimOptions() : keep_required_fields_(false) {}
- // When trimming message fields, the default behavior is to trim required
- // fields of the present message if they are not specified in the field mask.
- // If you instead want to keep required fields of the present message even
- // when they are not specified in the field mask, set this flag to true.
- void set_keep_required_fields(bool value) { keep_required_fields_ = value; }
- bool keep_required_fields() const { return keep_required_fields_; }
-
- private:
- bool keep_required_fields_;
-};
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_FIELD_MASK_UTIL_H__
diff --git a/include/google/protobuf/util/json_util.h b/include/google/protobuf/util/json_util.h
deleted file mode 100644
index 0f1c4d8b5f..0000000000
--- a/include/google/protobuf/util/json_util.h
+++ /dev/null
@@ -1,204 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Utility functions to convert between protobuf binary format and proto3 JSON
-// format.
-#ifndef GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
-#define GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
-
-#include <google/protobuf/stubs/bytestream.h>
-#include <google/protobuf/stubs/status.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/util/type_resolver.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace io {
-class ZeroCopyInputStream;
-class ZeroCopyOutputStream;
-} // namespace io
-namespace util {
-
-struct JsonParseOptions {
- // Whether to ignore unknown JSON fields during parsing
- bool ignore_unknown_fields;
-
- // If true, when a lowercase enum value fails to parse, try convert it to
- // UPPER_CASE and see if it matches a valid enum.
- // WARNING: This option exists only to preserve legacy behavior. Avoid using
- // this option. If your enum needs to support different casing, consider using
- // allow_alias instead.
- bool case_insensitive_enum_parsing;
-
- JsonParseOptions()
- : ignore_unknown_fields(false), case_insensitive_enum_parsing(false) {}
-};
-
-struct JsonPrintOptions {
- // Whether to add spaces, line breaks and indentation to make the JSON output
- // easy to read.
- bool add_whitespace;
- // Whether to always print primitive fields. By default proto3 primitive
- // fields with default values will be omitted in JSON output. For example, an
- // int32 field set to 0 will be omitted. Set this flag to true will override
- // the default behavior and print primitive fields regardless of their values.
- bool always_print_primitive_fields;
- // Whether to always print enums as ints. By default they are rendered as
- // strings.
- bool always_print_enums_as_ints;
- // Whether to preserve proto field names
- bool preserve_proto_field_names;
-
- JsonPrintOptions()
- : add_whitespace(false),
- always_print_primitive_fields(false),
- always_print_enums_as_ints(false),
- preserve_proto_field_names(false) {}
-};
-
-// DEPRECATED. Use JsonPrintOptions instead.
-typedef JsonPrintOptions JsonOptions;
-
-// Converts from protobuf message to JSON and appends it to |output|. This is a
-// simple wrapper of BinaryToJsonString(). It will use the DescriptorPool of the
-// passed-in message to resolve Any types.
-PROTOBUF_EXPORT util::Status MessageToJsonString(const Message& message,
- std::string* output,
- const JsonOptions& options);
-
-inline util::Status MessageToJsonString(const Message& message,
- std::string* output) {
- return MessageToJsonString(message, output, JsonOptions());
-}
-
-// Converts from JSON to protobuf message. This is a simple wrapper of
-// JsonStringToBinary(). It will use the DescriptorPool of the passed-in
-// message to resolve Any types.
-PROTOBUF_EXPORT util::Status JsonStringToMessage(
- StringPiece input, Message* message, const JsonParseOptions& options);
-
-inline util::Status JsonStringToMessage(StringPiece input,
- Message* message) {
- return JsonStringToMessage(input, message, JsonParseOptions());
-}
-
-// Converts protobuf binary data to JSON.
-// The conversion will fail if:
-// 1. TypeResolver fails to resolve a type.
-// 2. input is not valid protobuf wire format, or conflicts with the type
-// information returned by TypeResolver.
-// Note that unknown fields will be discarded silently.
-PROTOBUF_EXPORT util::Status BinaryToJsonStream(
- TypeResolver* resolver, const std::string& type_url,
- io::ZeroCopyInputStream* binary_input,
- io::ZeroCopyOutputStream* json_output, const JsonPrintOptions& options);
-
-inline util::Status BinaryToJsonStream(TypeResolver* resolver,
- const std::string& type_url,
- io::ZeroCopyInputStream* binary_input,
- io::ZeroCopyOutputStream* json_output) {
- return BinaryToJsonStream(resolver, type_url, binary_input, json_output,
- JsonPrintOptions());
-}
-
-PROTOBUF_EXPORT util::Status BinaryToJsonString(
- TypeResolver* resolver, const std::string& type_url,
- const std::string& binary_input, std::string* json_output,
- const JsonPrintOptions& options);
-
-inline util::Status BinaryToJsonString(TypeResolver* resolver,
- const std::string& type_url,
- const std::string& binary_input,
- std::string* json_output) {
- return BinaryToJsonString(resolver, type_url, binary_input, json_output,
- JsonPrintOptions());
-}
-
-// Converts JSON data to protobuf binary format.
-// The conversion will fail if:
-// 1. TypeResolver fails to resolve a type.
-// 2. input is not valid JSON format, or conflicts with the type
-// information returned by TypeResolver.
-PROTOBUF_EXPORT util::Status JsonToBinaryStream(
- TypeResolver* resolver, const std::string& type_url,
- io::ZeroCopyInputStream* json_input,
- io::ZeroCopyOutputStream* binary_output, const JsonParseOptions& options);
-
-inline util::Status JsonToBinaryStream(
- TypeResolver* resolver, const std::string& type_url,
- io::ZeroCopyInputStream* json_input,
- io::ZeroCopyOutputStream* binary_output) {
- return JsonToBinaryStream(resolver, type_url, json_input, binary_output,
- JsonParseOptions());
-}
-
-PROTOBUF_EXPORT util::Status JsonToBinaryString(
- TypeResolver* resolver, const std::string& type_url,
- StringPiece json_input, std::string* binary_output,
- const JsonParseOptions& options);
-
-inline util::Status JsonToBinaryString(TypeResolver* resolver,
- const std::string& type_url,
- StringPiece json_input,
- std::string* binary_output) {
- return JsonToBinaryString(resolver, type_url, json_input, binary_output,
- JsonParseOptions());
-}
-
-namespace internal {
-// Internal helper class. Put in the header so we can write unit-tests for it.
-class PROTOBUF_EXPORT ZeroCopyStreamByteSink : public strings::ByteSink {
- public:
- explicit ZeroCopyStreamByteSink(io::ZeroCopyOutputStream* stream)
- : stream_(stream), buffer_(nullptr), buffer_size_(0) {}
- ~ZeroCopyStreamByteSink() override;
-
- void Append(const char* bytes, size_t len) override;
-
- private:
- io::ZeroCopyOutputStream* stream_;
- void* buffer_;
- int buffer_size_;
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyStreamByteSink);
-};
-} // namespace internal
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_JSON_UTIL_H__
diff --git a/include/google/protobuf/util/message_differencer.h b/include/google/protobuf/util/message_differencer.h
deleted file mode 100644
index f63cd54185..0000000000
--- a/include/google/protobuf/util/message_differencer.h
+++ /dev/null
@@ -1,980 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: jschorr@google.com (Joseph Schorr)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This file defines static methods and classes for comparing Protocol
-// Messages.
-//
-// Aug. 2008: Added Unknown Fields Comparison for messages.
-// Aug. 2009: Added different options to compare repeated fields.
-// Apr. 2010: Moved field comparison to FieldComparator
-// Sep. 2020: Added option to output map keys in path
-
-#ifndef GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__
-#define GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__
-
-
-#include <functional>
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-#include <vector>
-
-#include <google/protobuf/descriptor.h> // FieldDescriptor
-#include <google/protobuf/message.h> // Message
-#include <google/protobuf/unknown_field_set.h>
-#include <google/protobuf/util/field_comparator.h>
-
-// Always include as last one, otherwise it can break compilation
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-
-class DynamicMessageFactory;
-class FieldDescriptor;
-
-namespace io {
-class ZeroCopyOutputStream;
-class Printer;
-} // namespace io
-
-namespace util {
-
-class DefaultFieldComparator;
-class FieldContext; // declared below MessageDifferencer
-
-// Defines a collection of field descriptors.
-// In case of internal google codebase we are using absl::FixedArray instead
-// of vector. It significantly speeds up proto comparison (by ~30%) by
-// reducing the number of malloc/free operations
-typedef std::vector<const FieldDescriptor*> FieldDescriptorArray;
-
-// A basic differencer that can be used to determine
-// the differences between two specified Protocol Messages. If any differences
-// are found, the Compare method will return false, and any differencer reporter
-// specified via ReportDifferencesTo will have its reporting methods called (see
-// below for implementation of the report). Based off of the original
-// ProtocolDifferencer implementation in //net/proto/protocol-differencer.h
-// (Thanks Todd!).
-//
-// MessageDifferencer REQUIRES that compared messages be the same type, defined
-// as messages that share the same descriptor. If not, the behavior of this
-// class is undefined.
-//
-// People disagree on what MessageDifferencer should do when asked to compare
-// messages with different descriptors. Some people think it should always
-// return false. Others expect it to try to look for similar fields and
-// compare them anyway -- especially if the descriptors happen to be identical.
-// If we chose either of these behaviors, some set of people would find it
-// surprising, and could end up writing code expecting the other behavior
-// without realizing their error. Therefore, we forbid that usage.
-//
-// This class is implemented based on the proto2 reflection. The performance
-// should be good enough for normal usages. However, for places where the
-// performance is extremely sensitive, there are several alternatives:
-// - Comparing serialized string
-// Downside: false negatives (there are messages that are the same but their
-// serialized strings are different).
-// - Equals code generator by compiler plugin (net/proto2/contrib/equals_plugin)
-// Downside: more generated code; maintenance overhead for the additional rule
-// (must be in sync with the original proto_library).
-//
-// Note on handling of google.protobuf.Any: MessageDifferencer automatically
-// unpacks Any::value into a Message and compares its individual fields.
-// Messages encoded in a repeated Any cannot be compared using TreatAsMap.
-//
-// Note on thread-safety: MessageDifferencer is *not* thread-safe. You need to
-// guard it with a lock to use the same MessageDifferencer instance from
-// multiple threads. Note that it's fine to call static comparison methods
-// (like MessageDifferencer::Equals) concurrently, but it's not recommended for
-// performance critical code as it leads to extra allocations.
-class PROTOBUF_EXPORT MessageDifferencer {
- public:
- // Determines whether the supplied messages are equal. Equality is defined as
- // all fields within the two messages being set to the same value. Primitive
- // fields and strings are compared by value while embedded messages/groups
- // are compared as if via a recursive call. Use Compare() with IgnoreField()
- // if some fields should be ignored in the comparison. Use Compare() with
- // TreatAsSet() if there are repeated fields where ordering does not matter.
- //
- // This method REQUIRES that the two messages have the same
- // Descriptor (message1.GetDescriptor() == message2.GetDescriptor()).
- static bool Equals(const Message& message1, const Message& message2);
-
- // Determines whether the supplied messages are equivalent. Equivalency is
- // defined as all fields within the two messages having the same value. This
- // differs from the Equals method above in that fields with default values
- // are considered set to said value automatically. For details on how default
- // values are defined for each field type, see:
- // https://developers.google.com/protocol-buffers/docs/proto?csw=1#optional.
- // Also, Equivalent() ignores unknown fields. Use IgnoreField() and Compare()
- // if some fields should be ignored in the comparison.
- //
- // This method REQUIRES that the two messages have the same
- // Descriptor (message1.GetDescriptor() == message2.GetDescriptor()).
- static bool Equivalent(const Message& message1, const Message& message2);
-
- // Determines whether the supplied messages are approximately equal.
- // Approximate equality is defined as all fields within the two messages
- // being approximately equal. Primitive (non-float) fields and strings are
- // compared by value, floats are compared using MathUtil::AlmostEquals() and
- // embedded messages/groups are compared as if via a recursive call. Use
- // IgnoreField() and Compare() if some fields should be ignored in the
- // comparison.
- //
- // This method REQUIRES that the two messages have the same
- // Descriptor (message1.GetDescriptor() == message2.GetDescriptor()).
- static bool ApproximatelyEquals(const Message& message1,
- const Message& message2);
-
- // Determines whether the supplied messages are approximately equivalent.
- // Approximate equivalency is defined as all fields within the two messages
- // being approximately equivalent. As in
- // MessageDifferencer::ApproximatelyEquals, primitive (non-float) fields and
- // strings are compared by value, floats are compared using
- // MathUtil::AlmostEquals() and embedded messages/groups are compared as if
- // via a recursive call. However, fields with default values are considered
- // set to said value, as per MessageDiffencer::Equivalent. Use IgnoreField()
- // and Compare() if some fields should be ignored in the comparison.
- //
- // This method REQUIRES that the two messages have the same
- // Descriptor (message1.GetDescriptor() == message2.GetDescriptor()).
- static bool ApproximatelyEquivalent(const Message& message1,
- const Message& message2);
-
- // Identifies an individual field in a message instance. Used for field_path,
- // below.
- struct SpecificField {
- // For known fields, "field" is filled in and "unknown_field_number" is -1.
- // For unknown fields, "field" is NULL, "unknown_field_number" is the field
- // number, and "unknown_field_type" is its type.
- const FieldDescriptor* field = nullptr;
- int unknown_field_number = -1;
- UnknownField::Type unknown_field_type = UnknownField::Type::TYPE_VARINT;
-
- // If this a repeated field, "index" is the index within it. For unknown
- // fields, this is the index of the field among all unknown fields of the
- // same field number and type.
- int index = -1;
-
- // If "field" is a repeated field which is being treated as a map or
- // a set (see TreatAsMap() and TreatAsSet(), below), new_index indicates
- // the index the position to which the element has moved. If the element
- // has not moved, "new_index" will have the same value as "index".
- int new_index = -1;
-
- // If "field" is a map field, point to the map entry.
- const Message* map_entry1 = nullptr;
- const Message* map_entry2 = nullptr;
-
- // For unknown fields, these are the pointers to the UnknownFieldSet
- // containing the unknown fields. In certain cases (e.g. proto1's
- // MessageSet, or nested groups of unknown fields), these may differ from
- // the messages' internal UnknownFieldSets.
- const UnknownFieldSet* unknown_field_set1 = nullptr;
- const UnknownFieldSet* unknown_field_set2 = nullptr;
-
- // For unknown fields, these are the index of the field within the
- // UnknownFieldSets. One or the other will be -1 when
- // reporting an addition or deletion.
- int unknown_field_index1 = -1;
- int unknown_field_index2 = -1;
- };
-
- // Abstract base class from which all MessageDifferencer
- // reporters derive. The five Report* methods below will be called when
- // a field has been added, deleted, modified, moved, or matched. The third
- // argument is a vector of FieldDescriptor pointers which describes the chain
- // of fields that was taken to find the current field. For example, for a
- // field found in an embedded message, the vector will contain two
- // FieldDescriptors. The first will be the field of the embedded message
- // itself and the second will be the actual field in the embedded message
- // that was added/deleted/modified.
- // Fields will be reported in PostTraversalOrder.
- // For example, given following proto, if both baz and mooo are changed.
- // foo {
- // bar {
- // baz: 1
- // mooo: 2
- // }
- // }
- // ReportModified will be invoked with following order:
- // 1. foo.bar.baz or foo.bar.mooo
- // 2. foo.bar.mooo or foo.bar.baz
- // 2. foo.bar
- // 3. foo
- class PROTOBUF_EXPORT Reporter {
- public:
- Reporter();
- virtual ~Reporter();
-
- // Reports that a field has been added into Message2.
- virtual void ReportAdded(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) = 0;
-
- // Reports that a field has been deleted from Message1.
- virtual void ReportDeleted(
- const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) = 0;
-
- // Reports that the value of a field has been modified.
- virtual void ReportModified(
- const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) = 0;
-
- // Reports that a repeated field has been moved to another location. This
- // only applies when using TreatAsSet or TreatAsMap() -- see below. Also
- // note that for any given field, ReportModified and ReportMoved are
- // mutually exclusive. If a field has been both moved and modified, then
- // only ReportModified will be called.
- virtual void ReportMoved(
- const Message& /* message1 */, const Message& /* message2 */,
- const std::vector<SpecificField>& /* field_path */) {}
-
- // Reports that two fields match. Useful for doing side-by-side diffs.
- // This function is mutually exclusive with ReportModified and ReportMoved.
- // Note that you must call set_report_matches(true) before calling Compare
- // to make use of this function.
- virtual void ReportMatched(
- const Message& /* message1 */, const Message& /* message2 */,
- const std::vector<SpecificField>& /* field_path */) {}
-
- // Reports that two fields would have been compared, but the
- // comparison has been skipped because the field was marked as
- // 'ignored' using IgnoreField(). This function is mutually
- // exclusive with all the other Report() functions.
- //
- // The contract of ReportIgnored is slightly different than the
- // other Report() functions, in that |field_path.back().index| is
- // always equal to -1, even if the last field is repeated. This is
- // because while the other Report() functions indicate where in a
- // repeated field the action (Addition, Deletion, etc...)
- // happened, when a repeated field is 'ignored', the differencer
- // simply calls ReportIgnored on the repeated field as a whole and
- // moves on without looking at its individual elements.
- //
- // Furthermore, ReportIgnored() does not indicate whether the
- // fields were in fact equal or not, as Compare() does not inspect
- // these fields at all. It is up to the Reporter to decide whether
- // the fields are equal or not (perhaps with a second call to
- // Compare()), if it cares.
- virtual void ReportIgnored(
- const Message& /* message1 */, const Message& /* message2 */,
- const std::vector<SpecificField>& /* field_path */) {}
-
- // Report that an unknown field is ignored. (see comment above).
- // Note this is a different function since the last SpecificField in field
- // path has a null field. This could break existing Reporter.
- virtual void ReportUnknownFieldIgnored(
- const Message& /* message1 */, const Message& /* message2 */,
- const std::vector<SpecificField>& /* field_path */) {}
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Reporter);
- };
-
- // MapKeyComparator is used to determine if two elements have the same key
- // when comparing elements of a repeated field as a map.
- class PROTOBUF_EXPORT MapKeyComparator {
- public:
- MapKeyComparator();
- virtual ~MapKeyComparator();
-
- virtual bool IsMatch(
- const Message& /* message1 */, const Message& /* message2 */,
- const std::vector<SpecificField>& /* parent_fields */) const {
- GOOGLE_CHECK(false) << "IsMatch() is not implemented.";
- return false;
- }
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MapKeyComparator);
- };
-
- // Abstract base class from which all IgnoreCriteria derive.
- // By adding IgnoreCriteria more complex ignore logic can be implemented.
- // IgnoreCriteria are registered with AddIgnoreCriteria. For each compared
- // field IsIgnored is called on each added IgnoreCriteria until one returns
- // true or all return false.
- // IsIgnored is called for fields where at least one side has a value.
- class PROTOBUF_EXPORT IgnoreCriteria {
- public:
- IgnoreCriteria();
- virtual ~IgnoreCriteria();
-
- // Returns true if the field should be ignored.
- virtual bool IsIgnored(
- const Message& /* message1 */, const Message& /* message2 */,
- const FieldDescriptor* /* field */,
- const std::vector<SpecificField>& /* parent_fields */) = 0;
-
- // Returns true if the unknown field should be ignored.
- // Note: This will be called for unknown fields as well in which case
- // field.field will be null.
- virtual bool IsUnknownFieldIgnored(
- const Message& /* message1 */, const Message& /* message2 */,
- const SpecificField& /* field */,
- const std::vector<SpecificField>& /* parent_fields */) {
- return false;
- }
- };
-
- // To add a Reporter, construct default here, then use ReportDifferencesTo or
- // ReportDifferencesToString.
- explicit MessageDifferencer();
-
- ~MessageDifferencer();
-
- enum MessageFieldComparison {
- EQUAL, // Fields must be present in both messages
- // for the messages to be considered the same.
- EQUIVALENT, // Fields with default values are considered set
- // for comparison purposes even if not explicitly
- // set in the messages themselves. Unknown fields
- // are ignored.
- };
-
- enum Scope {
- FULL, // All fields of both messages are considered in the comparison.
- PARTIAL // Only fields present in the first message are considered; fields
- // set only in the second message will be skipped during
- // comparison.
- };
-
- // DEPRECATED. Use FieldComparator::FloatComparison instead.
- enum FloatComparison {
- EXACT, // Floats and doubles are compared exactly.
- APPROXIMATE // Floats and doubles are compared using the
- // MathUtil::AlmostEquals method.
- };
-
- enum RepeatedFieldComparison {
- AS_LIST, // Repeated fields are compared in order. Differing values at
- // the same index are reported using ReportModified(). If the
- // repeated fields have different numbers of elements, the
- // unpaired elements are reported using ReportAdded() or
- // ReportDeleted().
- AS_SET, // Treat all the repeated fields as sets.
- // See TreatAsSet(), as below.
- AS_SMART_LIST, // Similar to AS_SET, but preserve the order and find the
- // longest matching sequence from the first matching
- // element. To use an optimal solution, call
- // SetMatchIndicesForSmartListCallback() to pass it in.
- AS_SMART_SET, // Similar to AS_SET, but match elements with fewest diffs.
- };
-
- // The elements of the given repeated field will be treated as a set for
- // diffing purposes, so different orderings of the same elements will be
- // considered equal. Elements which are present on both sides of the
- // comparison but which have changed position will be reported with
- // ReportMoved(). Elements which only exist on one side or the other are
- // reported with ReportAdded() and ReportDeleted() regardless of their
- // positions. ReportModified() is never used for this repeated field. If
- // the only differences between the compared messages is that some fields
- // have been moved, then the comparison returns true.
- //
- // Note that despite the name of this method, this is really
- // comparison as multisets: if one side of the comparison has a duplicate
- // in the repeated field but the other side doesn't, this will count as
- // a mismatch.
- //
- // If the scope of comparison is set to PARTIAL, then in addition to what's
- // above, extra values added to repeated fields of the second message will
- // not cause the comparison to fail.
- //
- // Note that set comparison is currently O(k * n^2) (where n is the total
- // number of elements, and k is the average size of each element). In theory
- // it could be made O(n * k) with a more complex hashing implementation. Feel
- // free to contribute one if the current implementation is too slow for you.
- // If partial matching is also enabled, the time complexity will be O(k * n^2
- // + n^3) in which n^3 is the time complexity of the maximum matching
- // algorithm.
- //
- // REQUIRES: field->is_repeated() and field not registered with TreatAsMap*
- void TreatAsSet(const FieldDescriptor* field);
- void TreatAsSmartSet(const FieldDescriptor* field);
-
- // The elements of the given repeated field will be treated as a list for
- // diffing purposes, so different orderings of the same elements will NOT be
- // considered equal.
- //
- // REQUIRES: field->is_repeated() and field not registered with TreatAsMap*
- void TreatAsList(const FieldDescriptor* field);
- // Note that the complexity is similar to treating as SET.
- void TreatAsSmartList(const FieldDescriptor* field);
-
- // The elements of the given repeated field will be treated as a map for
- // diffing purposes, with |key| being the map key. Thus, elements with the
- // same key will be compared even if they do not appear at the same index.
- // Differences are reported similarly to TreatAsSet(), except that
- // ReportModified() is used to report elements with the same key but
- // different values. Note that if an element is both moved and modified,
- // only ReportModified() will be called. As with TreatAsSet, if the only
- // differences between the compared messages is that some fields have been
- // moved, then the comparison returns true. See TreatAsSet for notes on
- // performance.
- //
- // REQUIRES: field->is_repeated()
- // REQUIRES: field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE
- // REQUIRES: key->containing_type() == field->message_type()
- void TreatAsMap(const FieldDescriptor* field, const FieldDescriptor* key);
- // Same as TreatAsMap except that this method will use multiple fields as
- // the key in comparison. All specified fields in 'key_fields' should be
- // present in the compared elements. Two elements will be treated as having
- // the same key iff they have the same value for every specified field. There
- // are two steps in the comparison process. The first one is key matching.
- // Every element from one message will be compared to every element from
- // the other message. Only fields in 'key_fields' are compared in this step
- // to decide if two elements have the same key. The second step is value
- // comparison. Those pairs of elements with the same key (with equal value
- // for every field in 'key_fields') will be compared in this step.
- // Time complexity of the first step is O(s * m * n ^ 2) where s is the
- // average size of the fields specified in 'key_fields', m is the number of
- // fields in 'key_fields' and n is the number of elements. If partial
- // matching is enabled, an extra O(n^3) will be incured by the maximum
- // matching algorithm. The second step is O(k * n) where k is the average
- // size of each element.
- void TreatAsMapWithMultipleFieldsAsKey(
- const FieldDescriptor* field,
- const std::vector<const FieldDescriptor*>& key_fields);
- // Same as TreatAsMapWithMultipleFieldsAsKey, except that each of the field
- // do not necessarily need to be a direct subfield. Each element in
- // key_field_paths indicate a path from the message being compared, listing
- // successive subfield to reach the key field.
- //
- // REQUIRES:
- // for key_field_path in key_field_paths:
- // key_field_path[0]->containing_type() == field->message_type()
- // for i in [0, key_field_path.size() - 1):
- // key_field_path[i+1]->containing_type() ==
- // key_field_path[i]->message_type()
- // key_field_path[i]->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE
- // !key_field_path[i]->is_repeated()
- void TreatAsMapWithMultipleFieldPathsAsKey(
- const FieldDescriptor* field,
- const std::vector<std::vector<const FieldDescriptor*> >& key_field_paths);
-
- // Uses a custom MapKeyComparator to determine if two elements have the same
- // key when comparing a repeated field as a map.
- // The caller is responsible to delete the key_comparator.
- // This method varies from TreatAsMapWithMultipleFieldsAsKey only in the
- // first key matching step. Rather than comparing some specified fields, it
- // will invoke the IsMatch method of the given 'key_comparator' to decide if
- // two elements have the same key.
- void TreatAsMapUsingKeyComparator(const FieldDescriptor* field,
- const MapKeyComparator* key_comparator);
-
- // Initiates and returns a new instance of MultipleFieldsMapKeyComparator.
- MapKeyComparator* CreateMultipleFieldsMapKeyComparator(
- const std::vector<std::vector<const FieldDescriptor*> >& key_field_paths);
-
- // Add a custom ignore criteria that is evaluated in addition to the
- // ignored fields added with IgnoreField.
- // Takes ownership of ignore_criteria.
- void AddIgnoreCriteria(IgnoreCriteria* ignore_criteria);
-
- // Indicates that any field with the given descriptor should be
- // ignored for the purposes of comparing two messages. This applies
- // to fields nested in the message structure as well as top level
- // ones. When the MessageDifferencer encounters an ignored field,
- // ReportIgnored is called on the reporter, if one is specified.
- //
- // The only place where the field's 'ignored' status is not applied is when
- // it is being used as a key in a field passed to TreatAsMap or is one of
- // the fields passed to TreatAsMapWithMultipleFieldsAsKey.
- // In this case it is compared in key matching but after that it's ignored
- // in value comparison.
- void IgnoreField(const FieldDescriptor* field);
-
- // Sets the field comparator used to determine differences between protocol
- // buffer fields. By default it's set to a DefaultFieldComparator instance.
- // MessageDifferencer doesn't take ownership over the passed object.
- // Note that this method must be called before Compare for the comparator to
- // be used.
- void set_field_comparator(FieldComparator* comparator);
-#ifdef PROTOBUF_FUTURE_BREAKING_CHANGES
- void set_field_comparator(DefaultFieldComparator* comparator);
-#endif // PROTOBUF_FUTURE_BREAKING_CHANGES
-
- // DEPRECATED. Pass a DefaultFieldComparator instance instead.
- // Sets the fraction and margin for the float comparison of a given field.
- // Uses MathUtil::WithinFractionOrMargin to compare the values.
- // NOTE: this method does nothing if differencer's field comparator has been
- // set to a custom object.
- //
- // REQUIRES: field->cpp_type == FieldDescriptor::CPPTYPE_DOUBLE or
- // field->cpp_type == FieldDescriptor::CPPTYPE_FLOAT
- // REQUIRES: float_comparison_ == APPROXIMATE
- void SetFractionAndMargin(const FieldDescriptor* field, double fraction,
- double margin);
-
- // Sets the type of comparison (as defined in the MessageFieldComparison
- // enumeration above) that is used by this differencer when determining how
- // to compare fields in messages.
- void set_message_field_comparison(MessageFieldComparison comparison);
-
- // Returns the current message field comparison used in this differencer.
- MessageFieldComparison message_field_comparison() const;
-
- // Tells the differencer whether or not to report matches. This method must
- // be called before Compare. The default for a new differencer is false.
- void set_report_matches(bool report_matches) {
- report_matches_ = report_matches;
- }
-
- // Tells the differencer whether or not to report moves (in a set or map
- // repeated field). This method must be called before Compare. The default for
- // a new differencer is true.
- void set_report_moves(bool report_moves) { report_moves_ = report_moves; }
-
- // Tells the differencer whether or not to report ignored values. This method
- // must be called before Compare. The default for a new differencer is true.
- void set_report_ignores(bool report_ignores) {
- report_ignores_ = report_ignores;
- }
-
- // Sets the scope of the comparison (as defined in the Scope enumeration
- // above) that is used by this differencer when determining which fields to
- // compare between the messages.
- void set_scope(Scope scope);
-
- // Returns the current scope used by this differencer.
- Scope scope() const;
-
- // DEPRECATED. Pass a DefaultFieldComparator instance instead.
- // Sets the type of comparison (as defined in the FloatComparison enumeration
- // above) that is used by this differencer when comparing float (and double)
- // fields in messages.
- // NOTE: this method does nothing if differencer's field comparator has been
- // set to a custom object.
- void set_float_comparison(FloatComparison comparison);
-
- // Sets the type of comparison for repeated field (as defined in the
- // RepeatedFieldComparison enumeration above) that is used by this
- // differencer when compare repeated fields in messages.
- void set_repeated_field_comparison(RepeatedFieldComparison comparison);
-
- // Returns the current repeated field comparison used by this differencer.
- RepeatedFieldComparison repeated_field_comparison() const;
-
- // Compares the two specified messages, returning true if they are the same,
- // false otherwise. If this method returns false, any changes between the
- // two messages will be reported if a Reporter was specified via
- // ReportDifferencesTo (see also ReportDifferencesToString).
- //
- // This method REQUIRES that the two messages have the same
- // Descriptor (message1.GetDescriptor() == message2.GetDescriptor()).
- bool Compare(const Message& message1, const Message& message2);
-
- // Same as above, except comparing only the list of fields specified by the
- // two vectors of FieldDescriptors.
- bool CompareWithFields(
- const Message& message1, const Message& message2,
- const std::vector<const FieldDescriptor*>& message1_fields,
- const std::vector<const FieldDescriptor*>& message2_fields);
-
- // Automatically creates a reporter that will output the differences
- // found (if any) to the specified output string pointer. Note that this
- // method must be called before Compare.
- void ReportDifferencesToString(std::string* output);
-
- // Tells the MessageDifferencer to report differences via the specified
- // reporter. Note that this method must be called before Compare for
- // the reporter to be used. It is the responsibility of the caller to delete
- // this object.
- // If the provided pointer equals NULL, the MessageDifferencer stops reporting
- // differences to any previously set reporters or output strings.
- void ReportDifferencesTo(Reporter* reporter);
-
- private:
- // Class for processing Any deserialization. This logic is used by both the
- // MessageDifferencer and StreamReporter classes.
- class UnpackAnyField {
- private:
- std::unique_ptr<DynamicMessageFactory> dynamic_message_factory_;
-
- public:
- UnpackAnyField() = default;
- ~UnpackAnyField() = default;
- // If "any" is of type google.protobuf.Any, extract its payload using
- // DynamicMessageFactory and store in "data".
- bool UnpackAny(const Message& any, std::unique_ptr<Message>* data);
- };
-
- public:
- // An implementation of the MessageDifferencer Reporter that outputs
- // any differences found in human-readable form to the supplied
- // ZeroCopyOutputStream or Printer. If a printer is used, the delimiter
- // *must* be '$'.
- //
- // WARNING: this reporter does not necessarily flush its output until it is
- // destroyed. As a result, it is not safe to assume the output is valid or
- // complete until after you destroy the reporter. For example, if you use a
- // StreamReporter to write to a StringOutputStream, the target string may
- // contain uninitialized data until the reporter is destroyed.
- class PROTOBUF_EXPORT StreamReporter : public Reporter {
- public:
- explicit StreamReporter(io::ZeroCopyOutputStream* output);
- explicit StreamReporter(io::Printer* printer); // delimiter '$'
- ~StreamReporter() override;
-
- // When set to true, the stream reporter will also output aggregates nodes
- // (i.e. messages and groups) whose subfields have been modified. When
- // false, will only report the individual subfields. Defaults to false.
- void set_report_modified_aggregates(bool report) {
- report_modified_aggregates_ = report;
- }
-
- // The following are implementations of the methods described above.
-
- void ReportAdded(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportDeleted(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportModified(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportMoved(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportMatched(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportIgnored(const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- void ReportUnknownFieldIgnored(
- const Message& message1, const Message& message2,
- const std::vector<SpecificField>& field_path) override;
-
- // Messages that are being compared must be provided to StreamReporter prior
- // to processing
- void SetMessages(const Message& message1, const Message& message2);
-
- protected:
- // Prints the specified path of fields to the buffer.
- virtual void PrintPath(const std::vector<SpecificField>& field_path,
- bool left_side);
-
- // Prints the value of fields to the buffer. left_side is true if the
- // given message is from the left side of the comparison, false if it
- // was the right. This is relevant only to decide whether to follow
- // unknown_field_index1 or unknown_field_index2 when an unknown field
- // is encountered in field_path.
- virtual void PrintValue(const Message& message,
- const std::vector<SpecificField>& field_path,
- bool left_side);
-
- // Prints the specified path of unknown fields to the buffer.
- virtual void PrintUnknownFieldValue(const UnknownField* unknown_field);
-
- // Just print a string
- void Print(const std::string& str);
-
- private:
- // helper function for PrintPath that contains logic for printing maps
- void PrintMapKey(bool left_side, const SpecificField& specific_field);
-
- io::Printer* printer_;
- bool delete_printer_;
- bool report_modified_aggregates_;
- const Message* message1_;
- const Message* message2_;
- MessageDifferencer::UnpackAnyField unpack_any_field_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StreamReporter);
- };
-
- private:
- friend class SimpleFieldComparator;
-
- // A MapKeyComparator to be used in TreatAsMapUsingKeyComparator.
- // Implementation of this class needs to do field value comparison which
- // relies on some private methods of MessageDifferencer. That's why this
- // class is declared as a nested class of MessageDifferencer.
- class MultipleFieldsMapKeyComparator;
-
- // A MapKeyComparator for use with map_entries.
- class PROTOBUF_EXPORT MapEntryKeyComparator : public MapKeyComparator {
- public:
- explicit MapEntryKeyComparator(MessageDifferencer* message_differencer);
- bool IsMatch(
- const Message& message1, const Message& message2,
- const std::vector<SpecificField>& parent_fields) const override;
-
- private:
- MessageDifferencer* message_differencer_;
- };
-
- // Returns true if field1's number() is less than field2's.
- static bool FieldBefore(const FieldDescriptor* field1,
- const FieldDescriptor* field2);
-
- // Retrieve all the set fields, including extensions.
- FieldDescriptorArray RetrieveFields(const Message& message,
- bool base_message);
-
- // Combine the two lists of fields into the combined_fields output vector.
- // All fields present in both lists will always be included in the combined
- // list. Fields only present in one of the lists will only appear in the
- // combined list if the corresponding fields_scope option is set to FULL.
- FieldDescriptorArray CombineFields(const FieldDescriptorArray& fields1,
- Scope fields1_scope,
- const FieldDescriptorArray& fields2,
- Scope fields2_scope);
-
- // Internal version of the Compare method which performs the actual
- // comparison. The parent_fields vector is a vector containing field
- // descriptors of all fields accessed to get to this comparison operation
- // (i.e. if the current message is an embedded message, the parent_fields
- // vector will contain the field that has this embedded message).
- bool Compare(const Message& message1, const Message& message2,
- std::vector<SpecificField>* parent_fields);
-
- // Compares all the unknown fields in two messages.
- bool CompareUnknownFields(const Message& message1, const Message& message2,
- const UnknownFieldSet&, const UnknownFieldSet&,
- std::vector<SpecificField>* parent_fields);
-
- // Compares the specified messages for the requested field lists. The field
- // lists are modified depending on comparison settings, and then passed to
- // CompareWithFieldsInternal.
- bool CompareRequestedFieldsUsingSettings(
- const Message& message1, const Message& message2,
- const FieldDescriptorArray& message1_fields,
- const FieldDescriptorArray& message2_fields,
- std::vector<SpecificField>* parent_fields);
-
- // Compares the specified messages with the specified field lists.
- bool CompareWithFieldsInternal(const Message& message1,
- const Message& message2,
- const FieldDescriptorArray& message1_fields,
- const FieldDescriptorArray& message2_fields,
- std::vector<SpecificField>* parent_fields);
-
- // Compares the repeated fields, and report the error.
- bool CompareRepeatedField(const Message& message1, const Message& message2,
- const FieldDescriptor* field,
- std::vector<SpecificField>* parent_fields);
-
- // Compares map fields, and report the error.
- bool CompareMapField(const Message& message1, const Message& message2,
- const FieldDescriptor* field,
- std::vector<SpecificField>* parent_fields);
-
- // Helper for CompareRepeatedField and CompareMapField: compares and reports
- // differences element-wise. This is the implementation for non-map fields,
- // and can also compare map fields by using the underlying representation.
- bool CompareRepeatedRep(const Message& message1, const Message& message2,
- const FieldDescriptor* field,
- std::vector<SpecificField>* parent_fields);
-
- // Helper for CompareMapField: compare the map fields using map reflection
- // instead of sync to repeated.
- bool CompareMapFieldByMapReflection(const Message& message1,
- const Message& message2,
- const FieldDescriptor* field,
- std::vector<SpecificField>* parent_fields,
- DefaultFieldComparator* comparator);
-
- // Shorthand for CompareFieldValueUsingParentFields with NULL parent_fields.
- bool CompareFieldValue(const Message& message1, const Message& message2,
- const FieldDescriptor* field, int index1, int index2);
-
- // Compares the specified field on the two messages, returning
- // true if they are the same, false otherwise. For repeated fields,
- // this method only compares the value in the specified index. This method
- // uses Compare functions to recurse into submessages.
- // The parent_fields vector is used in calls to a Reporter instance calls.
- // It can be NULL, in which case the MessageDifferencer will create new
- // list of parent messages if it needs to recursively compare the given field.
- // To avoid confusing users you should not set it to NULL unless you modified
- // Reporter to handle the change of parent_fields correctly.
- bool CompareFieldValueUsingParentFields(
- const Message& message1, const Message& message2,
- const FieldDescriptor* field, int index1, int index2,
- std::vector<SpecificField>* parent_fields);
-
- // Compares the specified field on the two messages, returning comparison
- // result, as returned by appropriate FieldComparator.
- FieldComparator::ComparisonResult GetFieldComparisonResult(
- const Message& message1, const Message& message2,
- const FieldDescriptor* field, int index1, int index2,
- const FieldContext* field_context);
-
- // Check if the two elements in the repeated field are match to each other.
- // if the key_comprator is NULL, this function returns true when the two
- // elements are equal.
- bool IsMatch(const FieldDescriptor* repeated_field,
- const MapKeyComparator* key_comparator, const Message* message1,
- const Message* message2,
- const std::vector<SpecificField>& parent_fields,
- Reporter* reporter, int index1, int index2);
-
- // Returns true when this repeated field has been configured to be treated
- // as a Set / SmartSet / SmartList.
- bool IsTreatedAsSet(const FieldDescriptor* field);
- bool IsTreatedAsSmartSet(const FieldDescriptor* field);
-
- bool IsTreatedAsSmartList(const FieldDescriptor* field);
- // When treating as SMART_LIST, it uses MatchIndicesPostProcessorForSmartList
- // by default to find the longest matching sequence from the first matching
- // element. The callback takes two vectors showing the matching indices from
- // the other vector, where -1 means an unmatch.
- void SetMatchIndicesForSmartListCallback(
- std::function<void(std::vector<int>*, std::vector<int>*)> callback);
-
- // Returns true when this repeated field is to be compared as a subset, ie.
- // has been configured to be treated as a set or map and scope is set to
- // PARTIAL.
- bool IsTreatedAsSubset(const FieldDescriptor* field);
-
- // Returns true if this field is to be ignored when this
- // MessageDifferencer compares messages.
- bool IsIgnored(const Message& message1, const Message& message2,
- const FieldDescriptor* field,
- const std::vector<SpecificField>& parent_fields);
-
- // Returns true if this unknown field is to be ignored when this
- // MessageDifferencer compares messages.
- bool IsUnknownFieldIgnored(const Message& message1, const Message& message2,
- const SpecificField& field,
- const std::vector<SpecificField>& parent_fields);
-
- // Returns MapKeyComparator* when this field has been configured to be treated
- // as a map or its is_map() return true. If not, returns NULL.
- const MapKeyComparator* GetMapKeyComparator(
- const FieldDescriptor* field) const;
-
- // Attempts to match indices of a repeated field, so that the contained values
- // match. Clears output vectors and sets their values to indices of paired
- // messages, ie. if message1[0] matches message2[1], then match_list1[0] == 1
- // and match_list2[1] == 0. The unmatched indices are indicated by -1.
- // Assumes the repeated field is not treated as a simple list.
- // This method returns false if the match failed. However, it doesn't mean
- // that the comparison succeeds when this method returns true (you need to
- // double-check in this case).
- bool MatchRepeatedFieldIndices(
- const Message& message1, const Message& message2,
- const FieldDescriptor* repeated_field,
- const MapKeyComparator* key_comparator,
- const std::vector<SpecificField>& parent_fields,
- std::vector<int>* match_list1, std::vector<int>* match_list2);
-
- // Checks if index is equal to new_index in all the specific fields.
- static bool CheckPathChanged(const std::vector<SpecificField>& parent_fields);
-
- // CHECKs that the given repeated field can be compared according to
- // new_comparison.
- void CheckRepeatedFieldComparisons(
- const FieldDescriptor* field,
- const RepeatedFieldComparison& new_comparison);
-
- // Defines a map between field descriptors and their MapKeyComparators.
- // Used for repeated fields when they are configured as TreatAsMap.
- typedef std::map<const FieldDescriptor*, const MapKeyComparator*>
- FieldKeyComparatorMap;
-
- // Defines a set to store field descriptors. Used for repeated fields when
- // they are configured as TreatAsSet.
- typedef std::set<const FieldDescriptor*> FieldSet;
- typedef std::map<const FieldDescriptor*, RepeatedFieldComparison> FieldMap;
-
- Reporter* reporter_;
- DefaultFieldComparator default_field_comparator_;
- MessageFieldComparison message_field_comparison_;
- Scope scope_;
- RepeatedFieldComparison repeated_field_comparison_;
-
- FieldMap repeated_field_comparisons_;
- // Keeps track of MapKeyComparators that are created within
- // MessageDifferencer. These MapKeyComparators should be deleted
- // before MessageDifferencer is destroyed.
- // When TreatAsMap or TreatAsMapWithMultipleFieldsAsKey is called, we don't
- // store the supplied FieldDescriptors directly. Instead, a new
- // MapKeyComparator is created for comparison purpose.
- std::vector<MapKeyComparator*> owned_key_comparators_;
- FieldKeyComparatorMap map_field_key_comparator_;
- MapEntryKeyComparator map_entry_key_comparator_;
- std::vector<IgnoreCriteria*> ignore_criteria_;
- // Reused multiple times in RetrieveFields to avoid extra allocations
- std::vector<const FieldDescriptor*> tmp_message_fields_;
-
- FieldSet ignored_fields_;
-
- union {
- DefaultFieldComparator* default_impl;
- FieldComparator* base;
- } field_comparator_ = {&default_field_comparator_};
- enum { kFCDefault, kFCBase } field_comparator_kind_ = kFCDefault;
-
- bool report_matches_;
- bool report_moves_;
- bool report_ignores_;
-
- std::string* output_string_;
-
- // Callback to post-process the matched indices to support SMART_LIST.
- std::function<void(std::vector<int>*, std::vector<int>*)>
- match_indices_for_smart_list_callback_;
-
- MessageDifferencer::UnpackAnyField unpack_any_field_;
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageDifferencer);
-};
-
-// This class provides extra information to the FieldComparator::Compare
-// function.
-class PROTOBUF_EXPORT FieldContext {
- public:
- explicit FieldContext(
- std::vector<MessageDifferencer::SpecificField>* parent_fields)
- : parent_fields_(parent_fields) {}
-
- std::vector<MessageDifferencer::SpecificField>* parent_fields() const {
- return parent_fields_;
- }
-
- private:
- std::vector<MessageDifferencer::SpecificField>* parent_fields_;
-};
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_MESSAGE_DIFFERENCER_H__
diff --git a/include/google/protobuf/util/time_util.h b/include/google/protobuf/util/time_util.h
deleted file mode 100644
index 709527ea27..0000000000
--- a/include/google/protobuf/util/time_util.h
+++ /dev/null
@@ -1,314 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Defines utilities for the Timestamp and Duration well known types.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_TIME_UTIL_H__
-#define GOOGLE_PROTOBUF_UTIL_TIME_UTIL_H__
-
-#include <cstdint>
-#include <ctime>
-#include <ostream>
-#include <string>
-#ifdef _MSC_VER
-#ifdef _XBOX_ONE
-struct timeval {
- int64_t tv_sec; /* seconds */
- int64_t tv_usec; /* and microseconds */
-};
-#else
-#include <winsock2.h>
-#endif // _XBOX_ONE
-#else
-#include <sys/time.h>
-#endif
-
-#include <google/protobuf/duration.pb.h>
-#include <google/protobuf/timestamp.pb.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace util {
-
-// Utility functions for Timestamp and Duration.
-class PROTOBUF_EXPORT TimeUtil {
- typedef google::protobuf::Timestamp Timestamp;
- typedef google::protobuf::Duration Duration;
-
- public:
- // The min/max Timestamp/Duration values we support.
- //
- // For "0001-01-01T00:00:00Z".
- static const int64_t kTimestampMinSeconds = -62135596800LL;
- // For "9999-12-31T23:59:59.999999999Z".
- static const int64_t kTimestampMaxSeconds = 253402300799LL;
- static const int64_t kDurationMinSeconds = -315576000000LL;
- static const int64_t kDurationMaxSeconds = 315576000000LL;
-
- // Converts Timestamp to/from RFC 3339 date string format.
- // Generated output will always be Z-normalized and uses 3, 6 or 9
- // fractional digits as required to represent the exact time. When
- // parsing, any fractional digits (or none) and any offset are
- // accepted as long as they fit into nano-seconds precision.
- // Note that Timestamp can only represent time from
- // 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. Converting
- // a Timestamp outside of this range is undefined behavior.
- // See https://www.ietf.org/rfc/rfc3339.txt
- //
- // Example of generated format:
- // "1972-01-01T10:00:20.021Z"
- //
- // Example of accepted format:
- // "1972-01-01T10:00:20.021-05:00"
- static std::string ToString(const Timestamp& timestamp);
- static bool FromString(const std::string& value, Timestamp* timestamp);
-
- // Converts Duration to/from string format. The string format will contains
- // 3, 6, or 9 fractional digits depending on the precision required to
- // represent the exact Duration value. For example:
- // "1s", "1.010s", "1.000000100s", "-3.100s"
- // The range that can be represented by Duration is from -315,576,000,000
- // to +315,576,000,000 inclusive (in seconds).
- static std::string ToString(const Duration& duration);
- static bool FromString(const std::string& value, Duration* timestamp);
-
-#ifdef GetCurrentTime
-#undef GetCurrentTime // Visual Studio has macro GetCurrentTime
-#endif
- // Gets the current UTC time.
- static Timestamp GetCurrentTime();
- // Returns the Time representing "1970-01-01 00:00:00".
- static Timestamp GetEpoch();
-
- // Converts between Duration and integer types. The behavior is undefined if
- // the input value is not in the valid range of Duration.
- static Duration NanosecondsToDuration(int64_t nanos);
- static Duration MicrosecondsToDuration(int64_t micros);
- static Duration MillisecondsToDuration(int64_t millis);
- static Duration SecondsToDuration(int64_t seconds);
- static Duration MinutesToDuration(int64_t minutes);
- static Duration HoursToDuration(int64_t hours);
- // Result will be truncated towards zero. For example, "-1.5s" will be
- // truncated to "-1s", and "1.5s" to "1s" when converting to seconds.
- // It's undefined behavior if the input duration is not valid or the result
- // exceeds the range of int64. A duration is not valid if it's not in the
- // valid range of Duration, or have an invalid nanos value (i.e., larger
- // than 999999999, less than -999999999, or have a different sign from the
- // seconds part).
- static int64_t DurationToNanoseconds(const Duration& duration);
- static int64_t DurationToMicroseconds(const Duration& duration);
- static int64_t DurationToMilliseconds(const Duration& duration);
- static int64_t DurationToSeconds(const Duration& duration);
- static int64_t DurationToMinutes(const Duration& duration);
- static int64_t DurationToHours(const Duration& duration);
- // Creates Timestamp from integer types. The integer value indicates the
- // time elapsed from Epoch time. The behavior is undefined if the input
- // value is not in the valid range of Timestamp.
- static Timestamp NanosecondsToTimestamp(int64_t nanos);
- static Timestamp MicrosecondsToTimestamp(int64_t micros);
- static Timestamp MillisecondsToTimestamp(int64_t millis);
- static Timestamp SecondsToTimestamp(int64_t seconds);
- // Result will be truncated down to the nearest integer value. For example,
- // with "1969-12-31T23:59:59.9Z", TimestampToMilliseconds() returns -100
- // and TimestampToSeconds() returns -1. It's undefined behavior if the input
- // Timestamp is not valid (i.e., its seconds part or nanos part does not fall
- // in the valid range) or the return value doesn't fit into int64.
- static int64_t TimestampToNanoseconds(const Timestamp& timestamp);
- static int64_t TimestampToMicroseconds(const Timestamp& timestamp);
- static int64_t TimestampToMilliseconds(const Timestamp& timestamp);
- static int64_t TimestampToSeconds(const Timestamp& timestamp);
-
- // Conversion to/from other time/date types. Note that these types may
- // have a different precision and time range from Timestamp/Duration.
- // When converting to a lower precision type, the value will be truncated
- // to the nearest value that can be represented. If the value is
- // out of the range of the result type, the return value is undefined.
- //
- // Conversion to/from time_t
- static Timestamp TimeTToTimestamp(time_t value);
- static time_t TimestampToTimeT(const Timestamp& value);
-
- // Conversion to/from timeval
- static Timestamp TimevalToTimestamp(const timeval& value);
- static timeval TimestampToTimeval(const Timestamp& value);
- static Duration TimevalToDuration(const timeval& value);
- static timeval DurationToTimeval(const Duration& value);
-};
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-// Overloaded operators for Duration.
-//
-// Assignment operators.
-PROTOBUF_EXPORT Duration& operator+=(Duration& d1,
- const Duration& d2); // NOLINT
-PROTOBUF_EXPORT Duration& operator-=(Duration& d1,
- const Duration& d2); // NOLINT
-PROTOBUF_EXPORT Duration& operator*=(Duration& d, int64_t r); // NOLINT
-PROTOBUF_EXPORT Duration& operator*=(Duration& d, double r); // NOLINT
-PROTOBUF_EXPORT Duration& operator/=(Duration& d, int64_t r); // NOLINT
-PROTOBUF_EXPORT Duration& operator/=(Duration& d, double r); // NOLINT
-// Overload for other integer types.
-template <typename T>
-Duration& operator*=(Duration& d, T r) { // NOLINT
- int64_t x = r;
- return d *= x;
-}
-template <typename T>
-Duration& operator/=(Duration& d, T r) { // NOLINT
- int64_t x = r;
- return d /= x;
-}
-PROTOBUF_EXPORT Duration& operator%=(Duration& d1,
- const Duration& d2); // NOLINT
-// Relational operators.
-inline bool operator<(const Duration& d1, const Duration& d2) {
- if (d1.seconds() == d2.seconds()) {
- return d1.nanos() < d2.nanos();
- }
- return d1.seconds() < d2.seconds();
-}
-inline bool operator>(const Duration& d1, const Duration& d2) {
- return d2 < d1;
-}
-inline bool operator>=(const Duration& d1, const Duration& d2) {
- return !(d1 < d2);
-}
-inline bool operator<=(const Duration& d1, const Duration& d2) {
- return !(d2 < d1);
-}
-inline bool operator==(const Duration& d1, const Duration& d2) {
- return d1.seconds() == d2.seconds() && d1.nanos() == d2.nanos();
-}
-inline bool operator!=(const Duration& d1, const Duration& d2) {
- return !(d1 == d2);
-}
-// Additive operators
-inline Duration operator-(const Duration& d) {
- Duration result;
- result.set_seconds(-d.seconds());
- result.set_nanos(-d.nanos());
- return result;
-}
-inline Duration operator+(const Duration& d1, const Duration& d2) {
- Duration result = d1;
- return result += d2;
-}
-inline Duration operator-(const Duration& d1, const Duration& d2) {
- Duration result = d1;
- return result -= d2;
-}
-// Multiplicative operators
-template <typename T>
-inline Duration operator*(Duration d, T r) {
- return d *= r;
-}
-template <typename T>
-inline Duration operator*(T r, Duration d) {
- return d *= r;
-}
-template <typename T>
-inline Duration operator/(Duration d, T r) {
- return d /= r;
-}
-PROTOBUF_EXPORT int64_t operator/(const Duration& d1, const Duration& d2);
-
-inline Duration operator%(const Duration& d1, const Duration& d2) {
- Duration result = d1;
- return result %= d2;
-}
-
-inline std::ostream& operator<<(std::ostream& out, const Duration& d) {
- out << ::PROTOBUF_NAMESPACE_ID::util::TimeUtil::ToString(d);
- return out;
-}
-
-// Overloaded operators for Timestamp
-//
-// Assignment operators.
-PROTOBUF_EXPORT Timestamp& operator+=(Timestamp& t,
- const Duration& d); // NOLINT
-PROTOBUF_EXPORT Timestamp& operator-=(Timestamp& t,
- const Duration& d); // NOLINT
-// Relational operators.
-inline bool operator<(const Timestamp& t1, const Timestamp& t2) {
- if (t1.seconds() == t2.seconds()) {
- return t1.nanos() < t2.nanos();
- }
- return t1.seconds() < t2.seconds();
-}
-inline bool operator>(const Timestamp& t1, const Timestamp& t2) {
- return t2 < t1;
-}
-inline bool operator>=(const Timestamp& t1, const Timestamp& t2) {
- return !(t1 < t2);
-}
-inline bool operator<=(const Timestamp& t1, const Timestamp& t2) {
- return !(t2 < t1);
-}
-inline bool operator==(const Timestamp& t1, const Timestamp& t2) {
- return t1.seconds() == t2.seconds() && t1.nanos() == t2.nanos();
-}
-inline bool operator!=(const Timestamp& t1, const Timestamp& t2) {
- return !(t1 == t2);
-}
-// Additive operators.
-inline Timestamp operator+(const Timestamp& t, const Duration& d) {
- Timestamp result = t;
- return result += d;
-}
-inline Timestamp operator+(const Duration& d, const Timestamp& t) {
- Timestamp result = t;
- return result += d;
-}
-inline Timestamp operator-(const Timestamp& t, const Duration& d) {
- Timestamp result = t;
- return result -= d;
-}
-PROTOBUF_EXPORT Duration operator-(const Timestamp& t1, const Timestamp& t2);
-
-inline std::ostream& operator<<(std::ostream& out, const Timestamp& t) {
- out << ::PROTOBUF_NAMESPACE_ID::util::TimeUtil::ToString(t);
- return out;
-}
-
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_TIME_UTIL_H__
diff --git a/include/google/protobuf/util/type_resolver.h b/include/google/protobuf/util/type_resolver.h
deleted file mode 100644
index b2e7b43d76..0000000000
--- a/include/google/protobuf/util/type_resolver.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Defines a TypeResolver for the Any message.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_H__
-#define GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_H__
-
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/type.pb.h>
-#include <google/protobuf/stubs/status.h>
-#include <google/protobuf/stubs/status.h>
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-class DescriptorPool;
-namespace util {
-
-// Abstract interface for a type resolver.
-//
-// Implementations of this interface must be thread-safe.
-class PROTOBUF_EXPORT TypeResolver {
- public:
- TypeResolver() {}
- virtual ~TypeResolver() {}
-
- // Resolves a type url for a message type.
- virtual util::Status ResolveMessageType(
- const std::string& type_url, google::protobuf::Type* message_type) = 0;
-
- // Resolves a type url for an enum type.
- virtual util::Status ResolveEnumType(const std::string& type_url,
- google::protobuf::Enum* enum_type) = 0;
-
- private:
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeResolver);
-};
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_H__
diff --git a/include/google/protobuf/util/type_resolver_util.h b/include/google/protobuf/util/type_resolver_util.h
deleted file mode 100644
index 7f6a4b9b11..0000000000
--- a/include/google/protobuf/util/type_resolver_util.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Defines utilities for the TypeResolver.
-
-#ifndef GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_UTIL_H__
-#define GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_UTIL_H__
-
-#include <string>
-
-namespace google {
-namespace protobuf {
-class DescriptorPool;
-namespace util {
-class TypeResolver;
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-// Creates a TypeResolver that serves type information in the given descriptor
-// pool. Caller takes ownership of the returned TypeResolver.
-PROTOBUF_EXPORT TypeResolver* NewTypeResolverForDescriptorPool(
- const std::string& url_prefix, const DescriptorPool* pool);
-
-} // namespace util
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_UTIL_TYPE_RESOLVER_UTIL_H__
diff --git a/include/google/protobuf/wire_format.h b/include/google/protobuf/wire_format.h
deleted file mode 100644
index 1acbf9e1f0..0000000000
--- a/include/google/protobuf/wire_format.h
+++ /dev/null
@@ -1,414 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// atenasio@google.com (Chris Atenasio) (ZigZag transform)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-
-#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_H__
-#define GOOGLE_PROTOBUF_WIRE_FORMAT_H__
-
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/parse_context.h>
-#include <google/protobuf/wire_format_lite.h>
-
-#ifdef SWIG
-#error "You cannot SWIG proto headers"
-#endif
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-class MapKey; // map_field.h
-class UnknownFieldSet; // unknown_field_set.h
-} // namespace protobuf
-} // namespace google
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// This class is for internal use by the protocol buffer library and by
-// protocol-compiler-generated message classes. It must not be called
-// directly by clients.
-//
-// This class contains code for implementing the binary protocol buffer
-// wire format via reflection. The WireFormatLite class implements the
-// non-reflection based routines.
-//
-// This class is really a namespace that contains only static methods
-class PROTOBUF_EXPORT WireFormat {
- public:
- // Given a field return its WireType
- static inline WireFormatLite::WireType WireTypeForField(
- const FieldDescriptor* field);
-
- // Given a FieldDescriptor::Type return its WireType
- static inline WireFormatLite::WireType WireTypeForFieldType(
- FieldDescriptor::Type type);
-
- // Compute the byte size of a tag. For groups, this includes both the start
- // and end tags.
- static inline size_t TagSize(int field_number, FieldDescriptor::Type type);
-
- // These procedures can be used to implement the methods of Message which
- // handle parsing and serialization of the protocol buffer wire format
- // using only the Reflection interface. When you ask the protocol
- // compiler to optimize for code size rather than speed, it will implement
- // those methods in terms of these procedures. Of course, these are much
- // slower than the specialized implementations which the protocol compiler
- // generates when told to optimize for speed.
-
- // Read a message in protocol buffer wire format.
- //
- // This procedure reads either to the end of the input stream or through
- // a WIRETYPE_END_GROUP tag ending the message, whichever comes first.
- // It returns false if the input is invalid.
- //
- // Required fields are NOT checked by this method. You must call
- // IsInitialized() on the resulting message yourself.
- static bool ParseAndMergePartial(io::CodedInputStream* input,
- Message* message);
-
- // This is meant for internal protobuf use (WireFormat is an internal class).
- // This is the reflective implementation of the _InternalParse functionality.
- static const char* _InternalParse(Message* msg, const char* ptr,
- internal::ParseContext* ctx);
-
- // Serialize a message in protocol buffer wire format.
- //
- // Any embedded messages within the message must have their correct sizes
- // cached. However, the top-level message need not; its size is passed as
- // a parameter to this procedure.
- //
- // These return false iff the underlying stream returns a write error.
- static void SerializeWithCachedSizes(const Message& message, int size,
- io::CodedOutputStream* output) {
- int expected_endpoint = output->ByteCount() + size;
- output->SetCur(
- _InternalSerialize(message, output->Cur(), output->EpsCopy()));
- GOOGLE_CHECK_EQ(output->ByteCount(), expected_endpoint)
- << ": Protocol message serialized to a size different from what was "
- "originally expected. Perhaps it was modified by another thread "
- "during serialization?";
- }
- static uint8_t* _InternalSerialize(const Message& message, uint8_t* target,
- io::EpsCopyOutputStream* stream);
-
- // Implements Message::ByteSize() via reflection. WARNING: The result
- // of this method is *not* cached anywhere. However, all embedded messages
- // will have their ByteSize() methods called, so their sizes will be cached.
- // Therefore, calling this method is sufficient to allow you to call
- // WireFormat::SerializeWithCachedSizes() on the same object.
- static size_t ByteSize(const Message& message);
-
- // -----------------------------------------------------------------
- // Helpers for dealing with unknown fields
-
- // Skips a field value of the given WireType. The input should start
- // positioned immediately after the tag. If unknown_fields is non-nullptr,
- // the contents of the field will be added to it.
- static bool SkipField(io::CodedInputStream* input, uint32_t tag,
- UnknownFieldSet* unknown_fields);
-
- // Reads and ignores a message from the input. If unknown_fields is
- // non-nullptr, the contents will be added to it.
- static bool SkipMessage(io::CodedInputStream* input,
- UnknownFieldSet* unknown_fields);
-
- // Read a packed enum field. If the is_valid function is not nullptr, values
- // for which is_valid(value) returns false are appended to
- // unknown_fields_stream.
- static bool ReadPackedEnumPreserveUnknowns(io::CodedInputStream* input,
- uint32_t field_number,
- bool (*is_valid)(int),
- UnknownFieldSet* unknown_fields,
- RepeatedField<int>* values);
-
- // Write the contents of an UnknownFieldSet to the output.
- static void SerializeUnknownFields(const UnknownFieldSet& unknown_fields,
- io::CodedOutputStream* output) {
- output->SetCur(InternalSerializeUnknownFieldsToArray(
- unknown_fields, output->Cur(), output->EpsCopy()));
- }
- // Same as above, except writing directly to the provided buffer.
- // Requires that the buffer have sufficient capacity for
- // ComputeUnknownFieldsSize(unknown_fields).
- //
- // Returns a pointer past the last written byte.
- static uint8_t* SerializeUnknownFieldsToArray(
- const UnknownFieldSet& unknown_fields, uint8_t* target) {
- io::EpsCopyOutputStream stream(
- target, static_cast<int>(ComputeUnknownFieldsSize(unknown_fields)),
- io::CodedOutputStream::IsDefaultSerializationDeterministic());
- return InternalSerializeUnknownFieldsToArray(unknown_fields, target,
- &stream);
- }
- static uint8_t* InternalSerializeUnknownFieldsToArray(
- const UnknownFieldSet& unknown_fields, uint8_t* target,
- io::EpsCopyOutputStream* stream);
-
- // Same thing except for messages that have the message_set_wire_format
- // option.
- static void SerializeUnknownMessageSetItems(
- const UnknownFieldSet& unknown_fields, io::CodedOutputStream* output) {
- output->SetCur(InternalSerializeUnknownMessageSetItemsToArray(
- unknown_fields, output->Cur(), output->EpsCopy()));
- }
- // Same as above, except writing directly to the provided buffer.
- // Requires that the buffer have sufficient capacity for
- // ComputeUnknownMessageSetItemsSize(unknown_fields).
- //
- // Returns a pointer past the last written byte.
- static uint8_t* SerializeUnknownMessageSetItemsToArray(
- const UnknownFieldSet& unknown_fields, uint8_t* target);
- static uint8_t* InternalSerializeUnknownMessageSetItemsToArray(
- const UnknownFieldSet& unknown_fields, uint8_t* target,
- io::EpsCopyOutputStream* stream);
-
- // Compute the size of the UnknownFieldSet on the wire.
- static size_t ComputeUnknownFieldsSize(const UnknownFieldSet& unknown_fields);
-
- // Same thing except for messages that have the message_set_wire_format
- // option.
- static size_t ComputeUnknownMessageSetItemsSize(
- const UnknownFieldSet& unknown_fields);
-
- // Helper functions for encoding and decoding tags. (Inlined below and in
- // _inl.h)
- //
- // This is different from MakeTag(field->number(), field->type()) in the
- // case of packed repeated fields.
- static uint32_t MakeTag(const FieldDescriptor* field);
-
- // Parse a single field. The input should start out positioned immediately
- // after the tag.
- static bool ParseAndMergeField(
- uint32_t tag,
- const FieldDescriptor* field, // May be nullptr for unknown
- Message* message, io::CodedInputStream* input);
-
- // Serialize a single field.
- static void SerializeFieldWithCachedSizes(
- const FieldDescriptor* field, // Cannot be nullptr
- const Message& message, io::CodedOutputStream* output) {
- output->SetCur(InternalSerializeField(field, message, output->Cur(),
- output->EpsCopy()));
- }
- static uint8_t* InternalSerializeField(
- const FieldDescriptor* field, // Cannot be nullptr
- const Message& message, uint8_t* target, io::EpsCopyOutputStream* stream);
-
- // Compute size of a single field. If the field is a message type, this
- // will call ByteSize() for the embedded message, insuring that it caches
- // its size.
- static size_t FieldByteSize(const FieldDescriptor* field, // Can't be nullptr
- const Message& message);
-
- // Parse/serialize a MessageSet::Item group. Used with messages that use
- // option message_set_wire_format = true.
- static bool ParseAndMergeMessageSetItem(io::CodedInputStream* input,
- Message* message);
- static void SerializeMessageSetItemWithCachedSizes(
- const FieldDescriptor* field, const Message& message,
- io::CodedOutputStream* output) {
- output->SetCur(InternalSerializeMessageSetItem(
- field, message, output->Cur(), output->EpsCopy()));
- }
- static uint8_t* InternalSerializeMessageSetItem(
- const FieldDescriptor* field, const Message& message, uint8_t* target,
- io::EpsCopyOutputStream* stream);
- static size_t MessageSetItemByteSize(const FieldDescriptor* field,
- const Message& message);
-
- // Computes the byte size of a field, excluding tags. For packed fields, it
- // only includes the size of the raw data, and not the size of the total
- // length, but for other length-delimited types, the size of the length is
- // included.
- static size_t FieldDataOnlyByteSize(
- const FieldDescriptor* field, // Cannot be nullptr
- const Message& message);
-
- enum Operation {
- PARSE = 0,
- SERIALIZE = 1,
- };
-
- // Verifies that a string field is valid UTF8, logging an error if not.
- // This function will not be called by newly generated protobuf code
- // but remains present to support existing code.
- static void VerifyUTF8String(const char* data, int size, Operation op);
- // The NamedField variant takes a field name in order to produce an
- // informative error message if verification fails.
- static void VerifyUTF8StringNamedField(const char* data, int size,
- Operation op, const char* field_name);
-
- private:
- struct MessageSetParser;
- // Skip a MessageSet field.
- static bool SkipMessageSetField(io::CodedInputStream* input,
- uint32_t field_number,
- UnknownFieldSet* unknown_fields);
-
- // Parse a MessageSet field.
- static bool ParseAndMergeMessageSetField(uint32_t field_number,
- const FieldDescriptor* field,
- Message* message,
- io::CodedInputStream* input);
- // Parses the value from the wire that belongs to tag.
- static const char* _InternalParseAndMergeField(Message* msg, const char* ptr,
- internal::ParseContext* ctx,
- uint64_t tag,
- const Reflection* reflection,
- const FieldDescriptor* field);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormat);
-};
-
-// Subclass of FieldSkipper which saves skipped fields to an UnknownFieldSet.
-class PROTOBUF_EXPORT UnknownFieldSetFieldSkipper : public FieldSkipper {
- public:
- UnknownFieldSetFieldSkipper(UnknownFieldSet* unknown_fields)
- : unknown_fields_(unknown_fields) {}
- ~UnknownFieldSetFieldSkipper() override {}
-
- // implements FieldSkipper -----------------------------------------
- bool SkipField(io::CodedInputStream* input, uint32_t tag) override;
- bool SkipMessage(io::CodedInputStream* input) override;
- void SkipUnknownEnum(int field_number, int value) override;
-
- protected:
- UnknownFieldSet* unknown_fields_;
-};
-
-// inline methods ====================================================
-
-inline WireFormatLite::WireType WireFormat::WireTypeForField(
- const FieldDescriptor* field) {
- if (field->is_packed()) {
- return WireFormatLite::WIRETYPE_LENGTH_DELIMITED;
- } else {
- return WireTypeForFieldType(field->type());
- }
-}
-
-inline WireFormatLite::WireType WireFormat::WireTypeForFieldType(
- FieldDescriptor::Type type) {
- // Some compilers don't like enum -> enum casts, so we implicit_cast to
- // int first.
- return WireFormatLite::WireTypeForFieldType(
- static_cast<WireFormatLite::FieldType>(implicit_cast<int>(type)));
-}
-
-inline uint32_t WireFormat::MakeTag(const FieldDescriptor* field) {
- return WireFormatLite::MakeTag(field->number(), WireTypeForField(field));
-}
-
-inline size_t WireFormat::TagSize(int field_number,
- FieldDescriptor::Type type) {
- // Some compilers don't like enum -> enum casts, so we implicit_cast to
- // int first.
- return WireFormatLite::TagSize(
- field_number,
- static_cast<WireFormatLite::FieldType>(implicit_cast<int>(type)));
-}
-
-inline void WireFormat::VerifyUTF8String(const char* data, int size,
- WireFormat::Operation op) {
-#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED
- WireFormatLite::VerifyUtf8String(
- data, size, static_cast<WireFormatLite::Operation>(op), nullptr);
-#else
- // Avoid the compiler warning about unused variables.
- (void)data;
- (void)size;
- (void)op;
-#endif
-}
-
-inline void WireFormat::VerifyUTF8StringNamedField(const char* data, int size,
- WireFormat::Operation op,
- const char* field_name) {
-#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED
- WireFormatLite::VerifyUtf8String(
- data, size, static_cast<WireFormatLite::Operation>(op), field_name);
-#else
- // Avoid the compiler warning about unused variables.
- (void)data;
- (void)size;
- (void)op;
- (void)field_name;
-#endif
-}
-
-
-inline uint8_t* InternalSerializeUnknownMessageSetItemsToArray(
- const UnknownFieldSet& unknown_fields, uint8_t* target,
- io::EpsCopyOutputStream* stream) {
- return WireFormat::InternalSerializeUnknownMessageSetItemsToArray(
- unknown_fields, target, stream);
-}
-
-inline size_t ComputeUnknownMessageSetItemsSize(
- const UnknownFieldSet& unknown_fields) {
- return WireFormat::ComputeUnknownMessageSetItemsSize(unknown_fields);
-}
-
-// Compute the size of the UnknownFieldSet on the wire.
-PROTOBUF_EXPORT
-size_t ComputeUnknownFieldsSize(const InternalMetadata& metadata, size_t size,
- CachedSize* cached_size);
-
-size_t MapKeyDataOnlyByteSize(const FieldDescriptor* field,
- const MapKey& value);
-
-uint8_t* SerializeMapKeyWithCachedSizes(const FieldDescriptor* field,
- const MapKey& value, uint8_t* target,
- io::EpsCopyOutputStream* stream);
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_H__
diff --git a/include/google/protobuf/wire_format_lite.h b/include/google/protobuf/wire_format_lite.h
deleted file mode 100644
index a7e64bf1e4..0000000000
--- a/include/google/protobuf/wire_format_lite.h
+++ /dev/null
@@ -1,1899 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-// atenasio@google.com (Chris Atenasio) (ZigZag transform)
-// wink@google.com (Wink Saville) (refactored from wire_format.h)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// This header is logically internal, but is made public because it is used
-// from protocol-compiler-generated code, which may reside in other components.
-
-#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__
-#define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__
-
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/logging.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/port.h>
-#include <google/protobuf/stubs/casts.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/repeated_field.h>
-
-// Do UTF-8 validation on string type in Debug build only
-#ifndef NDEBUG
-#define GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED
-#endif
-
-// Avoid conflict with iOS where <ConditionalMacros.h> #defines TYPE_BOOL.
-//
-// If some one needs the macro TYPE_BOOL in a file that includes this header,
-// it's possible to bring it back using push/pop_macro as follows.
-//
-// #pragma push_macro("TYPE_BOOL")
-// #include this header and/or all headers that need the macro to be undefined.
-// #pragma pop_macro("TYPE_BOOL")
-#undef TYPE_BOOL
-
-
-// Must be included last.
-#include <google/protobuf/port_def.inc>
-
-namespace google {
-namespace protobuf {
-namespace internal {
-
-// This class is for internal use by the protocol buffer library and by
-// protocol-compiler-generated message classes. It must not be called
-// directly by clients.
-//
-// This class contains helpers for implementing the binary protocol buffer
-// wire format without the need for reflection. Use WireFormat when using
-// reflection.
-//
-// This class is really a namespace that contains only static methods.
-class PROTOBUF_EXPORT WireFormatLite {
- public:
- // -----------------------------------------------------------------
- // Helper constants and functions related to the format. These are
- // mostly meant for internal and generated code to use.
-
- // The wire format is composed of a sequence of tag/value pairs, each
- // of which contains the value of one field (or one element of a repeated
- // field). Each tag is encoded as a varint. The lower bits of the tag
- // identify its wire type, which specifies the format of the data to follow.
- // The rest of the bits contain the field number. Each type of field (as
- // declared by FieldDescriptor::Type, in descriptor.h) maps to one of
- // these wire types. Immediately following each tag is the field's value,
- // encoded in the format specified by the wire type. Because the tag
- // identifies the encoding of this data, it is possible to skip
- // unrecognized fields for forwards compatibility.
-
- enum WireType {
- WIRETYPE_VARINT = 0,
- WIRETYPE_FIXED64 = 1,
- WIRETYPE_LENGTH_DELIMITED = 2,
- WIRETYPE_START_GROUP = 3,
- WIRETYPE_END_GROUP = 4,
- WIRETYPE_FIXED32 = 5,
- };
-
- // Lite alternative to FieldDescriptor::Type. Must be kept in sync.
- enum FieldType {
- TYPE_DOUBLE = 1,
- TYPE_FLOAT = 2,
- TYPE_INT64 = 3,
- TYPE_UINT64 = 4,
- TYPE_INT32 = 5,
- TYPE_FIXED64 = 6,
- TYPE_FIXED32 = 7,
- TYPE_BOOL = 8,
- TYPE_STRING = 9,
- TYPE_GROUP = 10,
- TYPE_MESSAGE = 11,
- TYPE_BYTES = 12,
- TYPE_UINT32 = 13,
- TYPE_ENUM = 14,
- TYPE_SFIXED32 = 15,
- TYPE_SFIXED64 = 16,
- TYPE_SINT32 = 17,
- TYPE_SINT64 = 18,
- MAX_FIELD_TYPE = 18,
- };
-
- // Lite alternative to FieldDescriptor::CppType. Must be kept in sync.
- enum CppType {
- CPPTYPE_INT32 = 1,
- CPPTYPE_INT64 = 2,
- CPPTYPE_UINT32 = 3,
- CPPTYPE_UINT64 = 4,
- CPPTYPE_DOUBLE = 5,
- CPPTYPE_FLOAT = 6,
- CPPTYPE_BOOL = 7,
- CPPTYPE_ENUM = 8,
- CPPTYPE_STRING = 9,
- CPPTYPE_MESSAGE = 10,
- MAX_CPPTYPE = 10,
- };
-
- // Helper method to get the CppType for a particular Type.
- static CppType FieldTypeToCppType(FieldType type);
-
- // Given a FieldDescriptor::Type return its WireType
- static inline WireFormatLite::WireType WireTypeForFieldType(
- WireFormatLite::FieldType type) {
- return kWireTypeForFieldType[type];
- }
-
- // Number of bits in a tag which identify the wire type.
- static constexpr int kTagTypeBits = 3;
- // Mask for those bits.
- static constexpr uint32_t kTagTypeMask = (1 << kTagTypeBits) - 1;
-
- // Helper functions for encoding and decoding tags. (Inlined below and in
- // _inl.h)
- //
- // This is different from MakeTag(field->number(), field->type()) in the
- // case of packed repeated fields.
- constexpr static uint32_t MakeTag(int field_number, WireType type);
- static WireType GetTagWireType(uint32_t tag);
- static int GetTagFieldNumber(uint32_t tag);
-
- // Compute the byte size of a tag. For groups, this includes both the start
- // and end tags.
- static inline size_t TagSize(int field_number,
- WireFormatLite::FieldType type);
-
- // Skips a field value with the given tag. The input should start
- // positioned immediately after the tag. Skipped values are simply
- // discarded, not recorded anywhere. See WireFormat::SkipField() for a
- // version that records to an UnknownFieldSet.
- static bool SkipField(io::CodedInputStream* input, uint32_t tag);
-
- // Skips a field value with the given tag. The input should start
- // positioned immediately after the tag. Skipped values are recorded to a
- // CodedOutputStream.
- static bool SkipField(io::CodedInputStream* input, uint32_t tag,
- io::CodedOutputStream* output);
-
- // Reads and ignores a message from the input. Skipped values are simply
- // discarded, not recorded anywhere. See WireFormat::SkipMessage() for a
- // version that records to an UnknownFieldSet.
- static bool SkipMessage(io::CodedInputStream* input);
-
- // Reads and ignores a message from the input. Skipped values are recorded
- // to a CodedOutputStream.
- static bool SkipMessage(io::CodedInputStream* input,
- io::CodedOutputStream* output);
-
- // This macro does the same thing as WireFormatLite::MakeTag(), but the
- // result is usable as a compile-time constant, which makes it usable
- // as a switch case or a template input. WireFormatLite::MakeTag() is more
- // type-safe, though, so prefer it if possible.
-#define GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(FIELD_NUMBER, TYPE) \
- static_cast<uint32_t>((static_cast<uint32_t>(FIELD_NUMBER) << 3) | (TYPE))
-
- // These are the tags for the old MessageSet format, which was defined as:
- // message MessageSet {
- // repeated group Item = 1 {
- // required int32 type_id = 2;
- // required string message = 3;
- // }
- // }
- static constexpr int kMessageSetItemNumber = 1;
- static constexpr int kMessageSetTypeIdNumber = 2;
- static constexpr int kMessageSetMessageNumber = 3;
- static const int kMessageSetItemStartTag = GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(
- kMessageSetItemNumber, WireFormatLite::WIRETYPE_START_GROUP);
- static const int kMessageSetItemEndTag = GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(
- kMessageSetItemNumber, WireFormatLite::WIRETYPE_END_GROUP);
- static const int kMessageSetTypeIdTag = GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(
- kMessageSetTypeIdNumber, WireFormatLite::WIRETYPE_VARINT);
- static const int kMessageSetMessageTag = GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(
- kMessageSetMessageNumber, WireFormatLite::WIRETYPE_LENGTH_DELIMITED);
-
- // Byte size of all tags of a MessageSet::Item combined.
- static const size_t kMessageSetItemTagsSize;
-
- // Helper functions for converting between floats/doubles and IEEE-754
- // uint32s/uint64s so that they can be written. (Assumes your platform
- // uses IEEE-754 floats.)
- static uint32_t EncodeFloat(float value);
- static float DecodeFloat(uint32_t value);
- static uint64_t EncodeDouble(double value);
- static double DecodeDouble(uint64_t value);
-
- // Helper functions for mapping signed integers to unsigned integers in
- // such a way that numbers with small magnitudes will encode to smaller
- // varints. If you simply static_cast a negative number to an unsigned
- // number and varint-encode it, it will always take 10 bytes, defeating
- // the purpose of varint. So, for the "sint32" and "sint64" field types,
- // we ZigZag-encode the values.
- static uint32_t ZigZagEncode32(int32_t n);
- static int32_t ZigZagDecode32(uint32_t n);
- static uint64_t ZigZagEncode64(int64_t n);
- static int64_t ZigZagDecode64(uint64_t n);
-
- // =================================================================
- // Methods for reading/writing individual field.
-
- // Read fields, not including tags. The assumption is that you already
- // read the tag to determine what field to read.
-
- // For primitive fields, we just use a templatized routine parameterized by
- // the represented type and the FieldType. These are specialized with the
- // appropriate definition for each declared type.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static bool ReadPrimitive(io::CodedInputStream* input,
- CType* value);
-
- // Reads repeated primitive values, with optimizations for repeats.
- // tag_size and tag should both be compile-time constants provided by the
- // protocol compiler.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static bool ReadRepeatedPrimitive(
- int tag_size, uint32_t tag, io::CodedInputStream* input,
- RepeatedField<CType>* value);
-
- // Identical to ReadRepeatedPrimitive, except will not inline the
- // implementation.
- template <typename CType, enum FieldType DeclaredType>
- static bool ReadRepeatedPrimitiveNoInline(int tag_size, uint32_t tag,
- io::CodedInputStream* input,
- RepeatedField<CType>* value);
-
- // Reads a primitive value directly from the provided buffer. It returns a
- // pointer past the segment of data that was read.
- //
- // This is only implemented for the types with fixed wire size, e.g.
- // float, double, and the (s)fixed* types.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static const uint8_t* ReadPrimitiveFromArray(
- const uint8_t* buffer, CType* value);
-
- // Reads a primitive packed field.
- //
- // This is only implemented for packable types.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static bool ReadPackedPrimitive(
- io::CodedInputStream* input, RepeatedField<CType>* value);
-
- // Identical to ReadPackedPrimitive, except will not inline the
- // implementation.
- template <typename CType, enum FieldType DeclaredType>
- static bool ReadPackedPrimitiveNoInline(io::CodedInputStream* input,
- RepeatedField<CType>* value);
-
- // Read a packed enum field. If the is_valid function is not nullptr, values
- // for which is_valid(value) returns false are silently dropped.
- static bool ReadPackedEnumNoInline(io::CodedInputStream* input,
- bool (*is_valid)(int),
- RepeatedField<int>* values);
-
- // Read a packed enum field. If the is_valid function is not nullptr, values
- // for which is_valid(value) returns false are appended to
- // unknown_fields_stream.
- static bool ReadPackedEnumPreserveUnknowns(
- io::CodedInputStream* input, int field_number, bool (*is_valid)(int),
- io::CodedOutputStream* unknown_fields_stream, RepeatedField<int>* values);
-
- // Read a string. ReadString(..., std::string* value) requires an
- // existing std::string.
- static inline bool ReadString(io::CodedInputStream* input,
- std::string* value);
- // ReadString(..., std::string** p) is internal-only, and should only be
- // called from generated code. It starts by setting *p to "new std::string" if
- // *p == &GetEmptyStringAlreadyInited(). It then invokes
- // ReadString(io::CodedInputStream* input, *p). This is useful for reducing
- // code size.
- static inline bool ReadString(io::CodedInputStream* input, std::string** p);
- // Analogous to ReadString().
- static bool ReadBytes(io::CodedInputStream* input, std::string* value);
- static bool ReadBytes(io::CodedInputStream* input, std::string** p);
-
- enum Operation {
- PARSE = 0,
- SERIALIZE = 1,
- };
-
- // Returns true if the data is valid UTF-8.
- static bool VerifyUtf8String(const char* data, int size, Operation op,
- const char* field_name);
-
- template <typename MessageType>
- static inline bool ReadGroup(int field_number, io::CodedInputStream* input,
- MessageType* value);
-
- template <typename MessageType>
- static inline bool ReadMessage(io::CodedInputStream* input,
- MessageType* value);
-
- template <typename MessageType>
- static inline bool ReadMessageNoVirtual(io::CodedInputStream* input,
- MessageType* value) {
- return ReadMessage(input, value);
- }
-
- // Write a tag. The Write*() functions typically include the tag, so
- // normally there's no need to call this unless using the Write*NoTag()
- // variants.
- PROTOBUF_NDEBUG_INLINE static void WriteTag(int field_number, WireType type,
- io::CodedOutputStream* output);
-
- // Write fields, without tags.
- PROTOBUF_NDEBUG_INLINE static void WriteInt32NoTag(
- int32_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteInt64NoTag(
- int64_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteUInt32NoTag(
- uint32_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteUInt64NoTag(
- uint64_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteSInt32NoTag(
- int32_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteSInt64NoTag(
- int64_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteFixed32NoTag(
- uint32_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteFixed64NoTag(
- uint64_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteSFixed32NoTag(
- int32_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteSFixed64NoTag(
- int64_t value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteFloatNoTag(
- float value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteDoubleNoTag(
- double value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteBoolNoTag(
- bool value, io::CodedOutputStream* output);
- PROTOBUF_NDEBUG_INLINE static void WriteEnumNoTag(
- int value, io::CodedOutputStream* output);
-
- // Write array of primitive fields, without tags
- static void WriteFloatArray(const float* a, int n,
- io::CodedOutputStream* output);
- static void WriteDoubleArray(const double* a, int n,
- io::CodedOutputStream* output);
- static void WriteFixed32Array(const uint32_t* a, int n,
- io::CodedOutputStream* output);
- static void WriteFixed64Array(const uint64_t* a, int n,
- io::CodedOutputStream* output);
- static void WriteSFixed32Array(const int32_t* a, int n,
- io::CodedOutputStream* output);
- static void WriteSFixed64Array(const int64_t* a, int n,
- io::CodedOutputStream* output);
- static void WriteBoolArray(const bool* a, int n,
- io::CodedOutputStream* output);
-
- // Write fields, including tags.
- static void WriteInt32(int field_number, int32_t value,
- io::CodedOutputStream* output);
- static void WriteInt64(int field_number, int64_t value,
- io::CodedOutputStream* output);
- static void WriteUInt32(int field_number, uint32_t value,
- io::CodedOutputStream* output);
- static void WriteUInt64(int field_number, uint64_t value,
- io::CodedOutputStream* output);
- static void WriteSInt32(int field_number, int32_t value,
- io::CodedOutputStream* output);
- static void WriteSInt64(int field_number, int64_t value,
- io::CodedOutputStream* output);
- static void WriteFixed32(int field_number, uint32_t value,
- io::CodedOutputStream* output);
- static void WriteFixed64(int field_number, uint64_t value,
- io::CodedOutputStream* output);
- static void WriteSFixed32(int field_number, int32_t value,
- io::CodedOutputStream* output);
- static void WriteSFixed64(int field_number, int64_t value,
- io::CodedOutputStream* output);
- static void WriteFloat(int field_number, float value,
- io::CodedOutputStream* output);
- static void WriteDouble(int field_number, double value,
- io::CodedOutputStream* output);
- static void WriteBool(int field_number, bool value,
- io::CodedOutputStream* output);
- static void WriteEnum(int field_number, int value,
- io::CodedOutputStream* output);
-
- static void WriteString(int field_number, const std::string& value,
- io::CodedOutputStream* output);
- static void WriteBytes(int field_number, const std::string& value,
- io::CodedOutputStream* output);
- static void WriteStringMaybeAliased(int field_number,
- const std::string& value,
- io::CodedOutputStream* output);
- static void WriteBytesMaybeAliased(int field_number, const std::string& value,
- io::CodedOutputStream* output);
-
- static void WriteGroup(int field_number, const MessageLite& value,
- io::CodedOutputStream* output);
- static void WriteMessage(int field_number, const MessageLite& value,
- io::CodedOutputStream* output);
- // Like above, but these will check if the output stream has enough
- // space to write directly to a flat array.
- static void WriteGroupMaybeToArray(int field_number, const MessageLite& value,
- io::CodedOutputStream* output);
- static void WriteMessageMaybeToArray(int field_number,
- const MessageLite& value,
- io::CodedOutputStream* output);
-
- // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The
- // pointer must point at an instance of MessageType, *not* a subclass (or
- // the subclass must not override SerializeWithCachedSizes()).
- template <typename MessageType>
- static inline void WriteGroupNoVirtual(int field_number,
- const MessageType& value,
- io::CodedOutputStream* output);
- template <typename MessageType>
- static inline void WriteMessageNoVirtual(int field_number,
- const MessageType& value,
- io::CodedOutputStream* output);
-
- // Like above, but use only *ToArray methods of CodedOutputStream.
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteTagToArray(int field_number,
- WireType type,
- uint8_t* target);
-
- // Write fields, without tags.
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt32NoTagToArray(
- int32_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt64NoTagToArray(
- int64_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt32NoTagToArray(
- uint32_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt64NoTagToArray(
- uint64_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt32NoTagToArray(
- int32_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt64NoTagToArray(
- int64_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed32NoTagToArray(
- uint32_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed64NoTagToArray(
- uint64_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed32NoTagToArray(
- int32_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed64NoTagToArray(
- int64_t value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFloatNoTagToArray(
- float value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteDoubleNoTagToArray(
- double value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteBoolNoTagToArray(bool value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteEnumNoTagToArray(int value,
- uint8_t* target);
-
- // Write fields, without tags. These require that value.size() > 0.
- template <typename T>
- PROTOBUF_NDEBUG_INLINE static uint8_t* WritePrimitiveNoTagToArray(
- const RepeatedField<T>& value, uint8_t* (*Writer)(T, uint8_t*),
- uint8_t* target);
- template <typename T>
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixedNoTagToArray(
- const RepeatedField<T>& value, uint8_t* (*Writer)(T, uint8_t*),
- uint8_t* target);
-
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt32NoTagToArray(
- const RepeatedField<uint32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt64NoTagToArray(
- const RepeatedField<uint64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed32NoTagToArray(
- const RepeatedField<uint32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed64NoTagToArray(
- const RepeatedField<uint64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFloatNoTagToArray(
- const RepeatedField<float>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteDoubleNoTagToArray(
- const RepeatedField<double>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteBoolNoTagToArray(
- const RepeatedField<bool>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteEnumNoTagToArray(
- const RepeatedField<int>& value, uint8_t* output);
-
- // Write fields, including tags.
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt32ToArray(int field_number,
- int32_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt64ToArray(int field_number,
- int64_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt32ToArray(int field_number,
- uint32_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt64ToArray(int field_number,
- uint64_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt32ToArray(int field_number,
- int32_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt64ToArray(int field_number,
- int64_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed32ToArray(int field_number,
- uint32_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed64ToArray(int field_number,
- uint64_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed32ToArray(int field_number,
- int32_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed64ToArray(int field_number,
- int64_t value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFloatToArray(int field_number,
- float value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteDoubleToArray(int field_number,
- double value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteBoolToArray(int field_number,
- bool value,
- uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteEnumToArray(int field_number,
- int value,
- uint8_t* target);
-
- template <typename T>
- PROTOBUF_NDEBUG_INLINE static uint8_t* WritePrimitiveToArray(
- int field_number, const RepeatedField<T>& value,
- uint8_t* (*Writer)(int, T, uint8_t*), uint8_t* target);
-
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteInt64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt32ToArray(
- int field_number, const RepeatedField<uint32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteUInt64ToArray(
- int field_number, const RepeatedField<uint64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSInt64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed32ToArray(
- int field_number, const RepeatedField<uint32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFixed64ToArray(
- int field_number, const RepeatedField<uint64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteSFixed64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteFloatToArray(
- int field_number, const RepeatedField<float>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteDoubleToArray(
- int field_number, const RepeatedField<double>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteBoolToArray(
- int field_number, const RepeatedField<bool>& value, uint8_t* output);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteEnumToArray(
- int field_number, const RepeatedField<int>& value, uint8_t* output);
-
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteStringToArray(
- int field_number, const std::string& value, uint8_t* target);
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteBytesToArray(
- int field_number, const std::string& value, uint8_t* target);
-
- // Whether to serialize deterministically (e.g., map keys are
- // sorted) is a property of a CodedOutputStream, and in the process
- // of serialization, the "ToArray" variants may be invoked. But they don't
- // have a CodedOutputStream available, so they get an additional parameter
- // telling them whether to serialize deterministically.
- static uint8_t* InternalWriteGroup(int field_number, const MessageLite& value,
- uint8_t* target,
- io::EpsCopyOutputStream* stream);
- static uint8_t* InternalWriteMessage(int field_number,
- const MessageLite& value,
- int cached_size, uint8_t* target,
- io::EpsCopyOutputStream* stream);
-
- // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The
- // pointer must point at an instance of MessageType, *not* a subclass (or
- // the subclass must not override SerializeWithCachedSizes()).
- template <typename MessageType>
- PROTOBUF_NDEBUG_INLINE static uint8_t* InternalWriteGroupNoVirtualToArray(
- int field_number, const MessageType& value, uint8_t* target);
- template <typename MessageType>
- PROTOBUF_NDEBUG_INLINE static uint8_t* InternalWriteMessageNoVirtualToArray(
- int field_number, const MessageType& value, uint8_t* target);
-
- // For backward-compatibility, the last four methods also have versions
- // that are non-deterministic always.
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteGroupToArray(
- int field_number, const MessageLite& value, uint8_t* target) {
- io::EpsCopyOutputStream stream(
- target,
- value.GetCachedSize() +
- static_cast<int>(2 * io::CodedOutputStream::VarintSize32(
- static_cast<uint32_t>(field_number) << 3)),
- io::CodedOutputStream::IsDefaultSerializationDeterministic());
- return InternalWriteGroup(field_number, value, target, &stream);
- }
- PROTOBUF_NDEBUG_INLINE static uint8_t* WriteMessageToArray(
- int field_number, const MessageLite& value, uint8_t* target) {
- int size = value.GetCachedSize();
- io::EpsCopyOutputStream stream(
- target,
- size + static_cast<int>(io::CodedOutputStream::VarintSize32(
- static_cast<uint32_t>(field_number) << 3) +
- io::CodedOutputStream::VarintSize32(size)),
- io::CodedOutputStream::IsDefaultSerializationDeterministic());
- return InternalWriteMessage(field_number, value, value.GetCachedSize(),
- target, &stream);
- }
-
- // Compute the byte size of a field. The XxSize() functions do NOT include
- // the tag, so you must also call TagSize(). (This is because, for repeated
- // fields, you should only call TagSize() once and multiply it by the element
- // count, but you may have to call XxSize() for each individual element.)
- static inline size_t Int32Size(int32_t value);
- static inline size_t Int64Size(int64_t value);
- static inline size_t UInt32Size(uint32_t value);
- static inline size_t UInt64Size(uint64_t value);
- static inline size_t SInt32Size(int32_t value);
- static inline size_t SInt64Size(int64_t value);
- static inline size_t EnumSize(int value);
- static inline size_t Int32SizePlusOne(int32_t value);
- static inline size_t Int64SizePlusOne(int64_t value);
- static inline size_t UInt32SizePlusOne(uint32_t value);
- static inline size_t UInt64SizePlusOne(uint64_t value);
- static inline size_t SInt32SizePlusOne(int32_t value);
- static inline size_t SInt64SizePlusOne(int64_t value);
- static inline size_t EnumSizePlusOne(int value);
-
- static size_t Int32Size(const RepeatedField<int32_t>& value);
- static size_t Int64Size(const RepeatedField<int64_t>& value);
- static size_t UInt32Size(const RepeatedField<uint32_t>& value);
- static size_t UInt64Size(const RepeatedField<uint64_t>& value);
- static size_t SInt32Size(const RepeatedField<int32_t>& value);
- static size_t SInt64Size(const RepeatedField<int64_t>& value);
- static size_t EnumSize(const RepeatedField<int>& value);
-
- // These types always have the same size.
- static constexpr size_t kFixed32Size = 4;
- static constexpr size_t kFixed64Size = 8;
- static constexpr size_t kSFixed32Size = 4;
- static constexpr size_t kSFixed64Size = 8;
- static constexpr size_t kFloatSize = 4;
- static constexpr size_t kDoubleSize = 8;
- static constexpr size_t kBoolSize = 1;
-
- static inline size_t StringSize(const std::string& value);
- static inline size_t BytesSize(const std::string& value);
-
- template <typename MessageType>
- static inline size_t GroupSize(const MessageType& value);
- template <typename MessageType>
- static inline size_t MessageSize(const MessageType& value);
-
- // Like above, but de-virtualize the call to ByteSize(). The
- // pointer must point at an instance of MessageType, *not* a subclass (or
- // the subclass must not override ByteSize()).
- template <typename MessageType>
- static inline size_t GroupSizeNoVirtual(const MessageType& value);
- template <typename MessageType>
- static inline size_t MessageSizeNoVirtual(const MessageType& value);
-
- // Given the length of data, calculate the byte size of the data on the
- // wire if we encode the data as a length delimited field.
- static inline size_t LengthDelimitedSize(size_t length);
-
- private:
- // A helper method for the repeated primitive reader. This method has
- // optimizations for primitive types that have fixed size on the wire, and
- // can be read using potentially faster paths.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static bool ReadRepeatedFixedSizePrimitive(
- int tag_size, uint32_t tag, io::CodedInputStream* input,
- RepeatedField<CType>* value);
-
- // Like ReadRepeatedFixedSizePrimitive but for packed primitive fields.
- template <typename CType, enum FieldType DeclaredType>
- PROTOBUF_NDEBUG_INLINE static bool ReadPackedFixedSizePrimitive(
- io::CodedInputStream* input, RepeatedField<CType>* value);
-
- static const CppType kFieldTypeToCppTypeMap[];
- static const WireFormatLite::WireType kWireTypeForFieldType[];
- static void WriteSubMessageMaybeToArray(int size, const MessageLite& value,
- io::CodedOutputStream* output);
-
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormatLite);
-};
-
-// A class which deals with unknown values. The default implementation just
-// discards them. WireFormat defines a subclass which writes to an
-// UnknownFieldSet. This class is used by ExtensionSet::ParseField(), since
-// ExtensionSet is part of the lite library but UnknownFieldSet is not.
-class PROTOBUF_EXPORT FieldSkipper {
- public:
- FieldSkipper() {}
- virtual ~FieldSkipper() {}
-
- // Skip a field whose tag has already been consumed.
- virtual bool SkipField(io::CodedInputStream* input, uint32_t tag);
-
- // Skip an entire message or group, up to an end-group tag (which is consumed)
- // or end-of-stream.
- virtual bool SkipMessage(io::CodedInputStream* input);
-
- // Deal with an already-parsed unrecognized enum value. The default
- // implementation does nothing, but the UnknownFieldSet-based implementation
- // saves it as an unknown varint.
- virtual void SkipUnknownEnum(int field_number, int value);
-};
-
-// Subclass of FieldSkipper which saves skipped fields to a CodedOutputStream.
-
-class PROTOBUF_EXPORT CodedOutputStreamFieldSkipper : public FieldSkipper {
- public:
- explicit CodedOutputStreamFieldSkipper(io::CodedOutputStream* unknown_fields)
- : unknown_fields_(unknown_fields) {}
- ~CodedOutputStreamFieldSkipper() override {}
-
- // implements FieldSkipper -----------------------------------------
- bool SkipField(io::CodedInputStream* input, uint32_t tag) override;
- bool SkipMessage(io::CodedInputStream* input) override;
- void SkipUnknownEnum(int field_number, int value) override;
-
- protected:
- io::CodedOutputStream* unknown_fields_;
-};
-
-// inline methods ====================================================
-
-inline WireFormatLite::CppType WireFormatLite::FieldTypeToCppType(
- FieldType type) {
- return kFieldTypeToCppTypeMap[type];
-}
-
-constexpr inline uint32_t WireFormatLite::MakeTag(int field_number,
- WireType type) {
- return GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(field_number, type);
-}
-
-inline WireFormatLite::WireType WireFormatLite::GetTagWireType(uint32_t tag) {
- return static_cast<WireType>(tag & kTagTypeMask);
-}
-
-inline int WireFormatLite::GetTagFieldNumber(uint32_t tag) {
- return static_cast<int>(tag >> kTagTypeBits);
-}
-
-inline size_t WireFormatLite::TagSize(int field_number,
- WireFormatLite::FieldType type) {
- size_t result = io::CodedOutputStream::VarintSize32(
- static_cast<uint32_t>(field_number << kTagTypeBits));
- if (type == TYPE_GROUP) {
- // Groups have both a start and an end tag.
- return result * 2;
- } else {
- return result;
- }
-}
-
-inline uint32_t WireFormatLite::EncodeFloat(float value) {
- return bit_cast<uint32_t>(value);
-}
-
-inline float WireFormatLite::DecodeFloat(uint32_t value) {
- return bit_cast<float>(value);
-}
-
-inline uint64_t WireFormatLite::EncodeDouble(double value) {
- return bit_cast<uint64_t>(value);
-}
-
-inline double WireFormatLite::DecodeDouble(uint64_t value) {
- return bit_cast<double>(value);
-}
-
-// ZigZag Transform: Encodes signed integers so that they can be
-// effectively used with varint encoding.
-//
-// varint operates on unsigned integers, encoding smaller numbers into
-// fewer bytes. If you try to use it on a signed integer, it will treat
-// this number as a very large unsigned integer, which means that even
-// small signed numbers like -1 will take the maximum number of bytes
-// (10) to encode. ZigZagEncode() maps signed integers to unsigned
-// in such a way that those with a small absolute value will have smaller
-// encoded values, making them appropriate for encoding using varint.
-//
-// int32_t -> uint32_t
-// -------------------------
-// 0 -> 0
-// -1 -> 1
-// 1 -> 2
-// -2 -> 3
-// ... -> ...
-// 2147483647 -> 4294967294
-// -2147483648 -> 4294967295
-//
-// >> encode >>
-// << decode <<
-
-inline uint32_t WireFormatLite::ZigZagEncode32(int32_t n) {
- // Note: the right-shift must be arithmetic
- // Note: left shift must be unsigned because of overflow
- return (static_cast<uint32_t>(n) << 1) ^ static_cast<uint32_t>(n >> 31);
-}
-
-inline int32_t WireFormatLite::ZigZagDecode32(uint32_t n) {
- // Note: Using unsigned types prevent undefined behavior
- return static_cast<int32_t>((n >> 1) ^ (~(n & 1) + 1));
-}
-
-inline uint64_t WireFormatLite::ZigZagEncode64(int64_t n) {
- // Note: the right-shift must be arithmetic
- // Note: left shift must be unsigned because of overflow
- return (static_cast<uint64_t>(n) << 1) ^ static_cast<uint64_t>(n >> 63);
-}
-
-inline int64_t WireFormatLite::ZigZagDecode64(uint64_t n) {
- // Note: Using unsigned types prevent undefined behavior
- return static_cast<int64_t>((n >> 1) ^ (~(n & 1) + 1));
-}
-
-// String is for UTF-8 text only, but, even so, ReadString() can simply
-// call ReadBytes().
-
-inline bool WireFormatLite::ReadString(io::CodedInputStream* input,
- std::string* value) {
- return ReadBytes(input, value);
-}
-
-inline bool WireFormatLite::ReadString(io::CodedInputStream* input,
- std::string** p) {
- return ReadBytes(input, p);
-}
-
-inline uint8_t* InternalSerializeUnknownMessageSetItemsToArray(
- const std::string& unknown_fields, uint8_t* target,
- io::EpsCopyOutputStream* stream) {
- return stream->WriteRaw(unknown_fields.data(),
- static_cast<int>(unknown_fields.size()), target);
-}
-
-inline size_t ComputeUnknownMessageSetItemsSize(
- const std::string& unknown_fields) {
- return unknown_fields.size();
-}
-
-// Implementation details of ReadPrimitive.
-
-template <>
-inline bool WireFormatLite::ReadPrimitive<int32_t, WireFormatLite::TYPE_INT32>(
- io::CodedInputStream* input, int32_t* value) {
- uint32_t temp;
- if (!input->ReadVarint32(&temp)) return false;
- *value = static_cast<int32_t>(temp);
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<int64_t, WireFormatLite::TYPE_INT64>(
- io::CodedInputStream* input, int64_t* value) {
- uint64_t temp;
- if (!input->ReadVarint64(&temp)) return false;
- *value = static_cast<int64_t>(temp);
- return true;
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<uint32_t, WireFormatLite::TYPE_UINT32>(
- io::CodedInputStream* input, uint32_t* value) {
- return input->ReadVarint32(value);
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<uint64_t, WireFormatLite::TYPE_UINT64>(
- io::CodedInputStream* input, uint64_t* value) {
- return input->ReadVarint64(value);
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<int32_t, WireFormatLite::TYPE_SINT32>(
- io::CodedInputStream* input, int32_t* value) {
- uint32_t temp;
- if (!input->ReadVarint32(&temp)) return false;
- *value = ZigZagDecode32(temp);
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<int64_t, WireFormatLite::TYPE_SINT64>(
- io::CodedInputStream* input, int64_t* value) {
- uint64_t temp;
- if (!input->ReadVarint64(&temp)) return false;
- *value = ZigZagDecode64(temp);
- return true;
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<uint32_t, WireFormatLite::TYPE_FIXED32>(
- io::CodedInputStream* input, uint32_t* value) {
- return input->ReadLittleEndian32(value);
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<uint64_t, WireFormatLite::TYPE_FIXED64>(
- io::CodedInputStream* input, uint64_t* value) {
- return input->ReadLittleEndian64(value);
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<int32_t, WireFormatLite::TYPE_SFIXED32>(
- io::CodedInputStream* input, int32_t* value) {
- uint32_t temp;
- if (!input->ReadLittleEndian32(&temp)) return false;
- *value = static_cast<int32_t>(temp);
- return true;
-}
-template <>
-inline bool
-WireFormatLite::ReadPrimitive<int64_t, WireFormatLite::TYPE_SFIXED64>(
- io::CodedInputStream* input, int64_t* value) {
- uint64_t temp;
- if (!input->ReadLittleEndian64(&temp)) return false;
- *value = static_cast<int64_t>(temp);
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<float, WireFormatLite::TYPE_FLOAT>(
- io::CodedInputStream* input, float* value) {
- uint32_t temp;
- if (!input->ReadLittleEndian32(&temp)) return false;
- *value = DecodeFloat(temp);
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<double, WireFormatLite::TYPE_DOUBLE>(
- io::CodedInputStream* input, double* value) {
- uint64_t temp;
- if (!input->ReadLittleEndian64(&temp)) return false;
- *value = DecodeDouble(temp);
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<bool, WireFormatLite::TYPE_BOOL>(
- io::CodedInputStream* input, bool* value) {
- uint64_t temp;
- if (!input->ReadVarint64(&temp)) return false;
- *value = temp != 0;
- return true;
-}
-template <>
-inline bool WireFormatLite::ReadPrimitive<int, WireFormatLite::TYPE_ENUM>(
- io::CodedInputStream* input, int* value) {
- uint32_t temp;
- if (!input->ReadVarint32(&temp)) return false;
- *value = static_cast<int>(temp);
- return true;
-}
-
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<uint32_t, WireFormatLite::TYPE_FIXED32>(
- const uint8_t* buffer, uint32_t* value) {
- return io::CodedInputStream::ReadLittleEndian32FromArray(buffer, value);
-}
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<uint64_t, WireFormatLite::TYPE_FIXED64>(
- const uint8_t* buffer, uint64_t* value) {
- return io::CodedInputStream::ReadLittleEndian64FromArray(buffer, value);
-}
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<int32_t, WireFormatLite::TYPE_SFIXED32>(
- const uint8_t* buffer, int32_t* value) {
- uint32_t temp;
- buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp);
- *value = static_cast<int32_t>(temp);
- return buffer;
-}
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<int64_t, WireFormatLite::TYPE_SFIXED64>(
- const uint8_t* buffer, int64_t* value) {
- uint64_t temp;
- buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp);
- *value = static_cast<int64_t>(temp);
- return buffer;
-}
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<float, WireFormatLite::TYPE_FLOAT>(
- const uint8_t* buffer, float* value) {
- uint32_t temp;
- buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp);
- *value = DecodeFloat(temp);
- return buffer;
-}
-template <>
-inline const uint8_t*
-WireFormatLite::ReadPrimitiveFromArray<double, WireFormatLite::TYPE_DOUBLE>(
- const uint8_t* buffer, double* value) {
- uint64_t temp;
- buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp);
- *value = DecodeDouble(temp);
- return buffer;
-}
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-inline bool WireFormatLite::ReadRepeatedPrimitive(
- int, // tag_size, unused.
- uint32_t tag, io::CodedInputStream* input, RepeatedField<CType>* values) {
- CType value;
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->Add(value);
- int elements_already_reserved = values->Capacity() - values->size();
- while (elements_already_reserved > 0 && input->ExpectTag(tag)) {
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->AddAlreadyReserved(value);
- elements_already_reserved--;
- }
- return true;
-}
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-inline bool WireFormatLite::ReadRepeatedFixedSizePrimitive(
- int tag_size, uint32_t tag, io::CodedInputStream* input,
- RepeatedField<CType>* values) {
- GOOGLE_DCHECK_EQ(UInt32Size(tag), static_cast<size_t>(tag_size));
- CType value;
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->Add(value);
-
- // For fixed size values, repeated values can be read more quickly by
- // reading directly from a raw array.
- //
- // We can get a tight loop by only reading as many elements as can be
- // added to the RepeatedField without having to do any resizing. Additionally,
- // we only try to read as many elements as are available from the current
- // buffer space. Doing so avoids having to perform boundary checks when
- // reading the value: the maximum number of elements that can be read is
- // known outside of the loop.
- const void* void_pointer;
- int size;
- input->GetDirectBufferPointerInline(&void_pointer, &size);
- if (size > 0) {
- const uint8_t* buffer = reinterpret_cast<const uint8_t*>(void_pointer);
- // The number of bytes each type occupies on the wire.
- const int per_value_size = tag_size + static_cast<int>(sizeof(value));
-
- // parentheses around (std::min) prevents macro expansion of min(...)
- int elements_available =
- (std::min)(values->Capacity() - values->size(), size / per_value_size);
- int num_read = 0;
- while (num_read < elements_available &&
- (buffer = io::CodedInputStream::ExpectTagFromArray(buffer, tag)) !=
- nullptr) {
- buffer = ReadPrimitiveFromArray<CType, DeclaredType>(buffer, &value);
- values->AddAlreadyReserved(value);
- ++num_read;
- }
- const int read_bytes = num_read * per_value_size;
- if (read_bytes > 0) {
- input->Skip(read_bytes);
- }
- }
- return true;
-}
-
-// Specializations of ReadRepeatedPrimitive for the fixed size types, which use
-// the optimized code path.
-#define READ_REPEATED_FIXED_SIZE_PRIMITIVE(CPPTYPE, DECLARED_TYPE) \
- template <> \
- inline bool WireFormatLite::ReadRepeatedPrimitive< \
- CPPTYPE, WireFormatLite::DECLARED_TYPE>( \
- int tag_size, uint32_t tag, io::CodedInputStream* input, \
- RepeatedField<CPPTYPE>* values) { \
- return ReadRepeatedFixedSizePrimitive<CPPTYPE, \
- WireFormatLite::DECLARED_TYPE>( \
- tag_size, tag, input, values); \
- }
-
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint32_t, TYPE_FIXED32)
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint64_t, TYPE_FIXED64)
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(int32_t, TYPE_SFIXED32)
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(int64_t, TYPE_SFIXED64)
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT)
-READ_REPEATED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE)
-
-#undef READ_REPEATED_FIXED_SIZE_PRIMITIVE
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-bool WireFormatLite::ReadRepeatedPrimitiveNoInline(
- int tag_size, uint32_t tag, io::CodedInputStream* input,
- RepeatedField<CType>* value) {
- return ReadRepeatedPrimitive<CType, DeclaredType>(tag_size, tag, input,
- value);
-}
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-inline bool WireFormatLite::ReadPackedPrimitive(io::CodedInputStream* input,
- RepeatedField<CType>* values) {
- int length;
- if (!input->ReadVarintSizeAsInt(&length)) return false;
- io::CodedInputStream::Limit limit = input->PushLimit(length);
- while (input->BytesUntilLimit() > 0) {
- CType value;
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->Add(value);
- }
- input->PopLimit(limit);
- return true;
-}
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-inline bool WireFormatLite::ReadPackedFixedSizePrimitive(
- io::CodedInputStream* input, RepeatedField<CType>* values) {
- int length;
- if (!input->ReadVarintSizeAsInt(&length)) return false;
- const int old_entries = values->size();
- const int new_entries = length / static_cast<int>(sizeof(CType));
- const int new_bytes = new_entries * static_cast<int>(sizeof(CType));
- if (new_bytes != length) return false;
- // We would *like* to pre-allocate the buffer to write into (for
- // speed), but *must* avoid performing a very large allocation due
- // to a malicious user-supplied "length" above. So we have a fast
- // path that pre-allocates when the "length" is less than a bound.
- // We determine the bound by calling BytesUntilTotalBytesLimit() and
- // BytesUntilLimit(). These return -1 to mean "no limit set".
- // There are four cases:
- // TotalBytesLimit Limit
- // -1 -1 Use slow path.
- // -1 >= 0 Use fast path if length <= Limit.
- // >= 0 -1 Use slow path.
- // >= 0 >= 0 Use fast path if length <= min(both limits).
- int64_t bytes_limit = input->BytesUntilTotalBytesLimit();
- if (bytes_limit == -1) {
- bytes_limit = input->BytesUntilLimit();
- } else {
- // parentheses around (std::min) prevents macro expansion of min(...)
- bytes_limit =
- (std::min)(bytes_limit, static_cast<int64_t>(input->BytesUntilLimit()));
- }
- if (bytes_limit >= new_bytes) {
- // Fast-path that pre-allocates *values to the final size.
-#if defined(PROTOBUF_LITTLE_ENDIAN)
- values->Resize(old_entries + new_entries, 0);
- // values->mutable_data() may change after Resize(), so do this after:
- void* dest = reinterpret_cast<void*>(values->mutable_data() + old_entries);
- if (!input->ReadRaw(dest, new_bytes)) {
- values->Truncate(old_entries);
- return false;
- }
-#else
- values->Reserve(old_entries + new_entries);
- CType value;
- for (int i = 0; i < new_entries; ++i) {
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->AddAlreadyReserved(value);
- }
-#endif
- } else {
- // This is the slow-path case where "length" may be too large to
- // safely allocate. We read as much as we can into *values
- // without pre-allocating "length" bytes.
- CType value;
- for (int i = 0; i < new_entries; ++i) {
- if (!ReadPrimitive<CType, DeclaredType>(input, &value)) return false;
- values->Add(value);
- }
- }
- return true;
-}
-
-// Specializations of ReadPackedPrimitive for the fixed size types, which use
-// an optimized code path.
-#define READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(CPPTYPE, DECLARED_TYPE) \
- template <> \
- inline bool \
- WireFormatLite::ReadPackedPrimitive<CPPTYPE, WireFormatLite::DECLARED_TYPE>( \
- io::CodedInputStream * input, RepeatedField<CPPTYPE> * values) { \
- return ReadPackedFixedSizePrimitive<CPPTYPE, \
- WireFormatLite::DECLARED_TYPE>( \
- input, values); \
- }
-
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(uint32_t, TYPE_FIXED32)
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(uint64_t, TYPE_FIXED64)
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(int32_t, TYPE_SFIXED32)
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(int64_t, TYPE_SFIXED64)
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT)
-READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE)
-
-#undef READ_REPEATED_PACKED_FIXED_SIZE_PRIMITIVE
-
-template <typename CType, enum WireFormatLite::FieldType DeclaredType>
-bool WireFormatLite::ReadPackedPrimitiveNoInline(io::CodedInputStream* input,
- RepeatedField<CType>* values) {
- return ReadPackedPrimitive<CType, DeclaredType>(input, values);
-}
-
-
-template <typename MessageType>
-inline bool WireFormatLite::ReadGroup(int field_number,
- io::CodedInputStream* input,
- MessageType* value) {
- if (!input->IncrementRecursionDepth()) return false;
- if (!value->MergePartialFromCodedStream(input)) return false;
- input->UnsafeDecrementRecursionDepth();
- // Make sure the last thing read was an end tag for this group.
- if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) {
- return false;
- }
- return true;
-}
-template <typename MessageType>
-inline bool WireFormatLite::ReadMessage(io::CodedInputStream* input,
- MessageType* value) {
- int length;
- if (!input->ReadVarintSizeAsInt(&length)) return false;
- std::pair<io::CodedInputStream::Limit, int> p =
- input->IncrementRecursionDepthAndPushLimit(length);
- if (p.second < 0 || !value->MergePartialFromCodedStream(input)) return false;
- // Make sure that parsing stopped when the limit was hit, not at an endgroup
- // tag.
- return input->DecrementRecursionDepthAndPopLimit(p.first);
-}
-
-// ===================================================================
-
-inline void WireFormatLite::WriteTag(int field_number, WireType type,
- io::CodedOutputStream* output) {
- output->WriteTag(MakeTag(field_number, type));
-}
-
-inline void WireFormatLite::WriteInt32NoTag(int32_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint32SignExtended(value);
-}
-inline void WireFormatLite::WriteInt64NoTag(int64_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint64(static_cast<uint64_t>(value));
-}
-inline void WireFormatLite::WriteUInt32NoTag(uint32_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint32(value);
-}
-inline void WireFormatLite::WriteUInt64NoTag(uint64_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint64(value);
-}
-inline void WireFormatLite::WriteSInt32NoTag(int32_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint32(ZigZagEncode32(value));
-}
-inline void WireFormatLite::WriteSInt64NoTag(int64_t value,
- io::CodedOutputStream* output) {
- output->WriteVarint64(ZigZagEncode64(value));
-}
-inline void WireFormatLite::WriteFixed32NoTag(uint32_t value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian32(value);
-}
-inline void WireFormatLite::WriteFixed64NoTag(uint64_t value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian64(value);
-}
-inline void WireFormatLite::WriteSFixed32NoTag(int32_t value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian32(static_cast<uint32_t>(value));
-}
-inline void WireFormatLite::WriteSFixed64NoTag(int64_t value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian64(static_cast<uint64_t>(value));
-}
-inline void WireFormatLite::WriteFloatNoTag(float value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian32(EncodeFloat(value));
-}
-inline void WireFormatLite::WriteDoubleNoTag(double value,
- io::CodedOutputStream* output) {
- output->WriteLittleEndian64(EncodeDouble(value));
-}
-inline void WireFormatLite::WriteBoolNoTag(bool value,
- io::CodedOutputStream* output) {
- output->WriteVarint32(value ? 1 : 0);
-}
-inline void WireFormatLite::WriteEnumNoTag(int value,
- io::CodedOutputStream* output) {
- output->WriteVarint32SignExtended(value);
-}
-
-// See comment on ReadGroupNoVirtual to understand the need for this template
-// parameter name.
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline void WireFormatLite::WriteGroupNoVirtual(
- int field_number, const MessageType_WorkAroundCppLookupDefect& value,
- io::CodedOutputStream* output) {
- WriteTag(field_number, WIRETYPE_START_GROUP, output);
- value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output);
- WriteTag(field_number, WIRETYPE_END_GROUP, output);
-}
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline void WireFormatLite::WriteMessageNoVirtual(
- int field_number, const MessageType_WorkAroundCppLookupDefect& value,
- io::CodedOutputStream* output) {
- WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output);
- output->WriteVarint32(
- value.MessageType_WorkAroundCppLookupDefect::GetCachedSize());
- value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output);
-}
-
-// ===================================================================
-
-inline uint8_t* WireFormatLite::WriteTagToArray(int field_number, WireType type,
- uint8_t* target) {
- return io::CodedOutputStream::WriteTagToArray(MakeTag(field_number, type),
- target);
-}
-
-inline uint8_t* WireFormatLite::WriteInt32NoTagToArray(int32_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteInt64NoTagToArray(int64_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint64ToArray(
- static_cast<uint64_t>(value), target);
-}
-inline uint8_t* WireFormatLite::WriteUInt32NoTagToArray(uint32_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint32ToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt64NoTagToArray(uint64_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint64ToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt32NoTagToArray(int32_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint32ToArray(ZigZagEncode32(value),
- target);
-}
-inline uint8_t* WireFormatLite::WriteSInt64NoTagToArray(int64_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint64ToArray(ZigZagEncode64(value),
- target);
-}
-inline uint8_t* WireFormatLite::WriteFixed32NoTagToArray(uint32_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian32ToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed64NoTagToArray(uint64_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian64ToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed32NoTagToArray(int32_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian32ToArray(
- static_cast<uint32_t>(value), target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed64NoTagToArray(int64_t value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian64ToArray(
- static_cast<uint64_t>(value), target);
-}
-inline uint8_t* WireFormatLite::WriteFloatNoTagToArray(float value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian32ToArray(EncodeFloat(value),
- target);
-}
-inline uint8_t* WireFormatLite::WriteDoubleNoTagToArray(double value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteLittleEndian64ToArray(EncodeDouble(value),
- target);
-}
-inline uint8_t* WireFormatLite::WriteBoolNoTagToArray(bool value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint32ToArray(value ? 1 : 0, target);
-}
-inline uint8_t* WireFormatLite::WriteEnumNoTagToArray(int value,
- uint8_t* target) {
- return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target);
-}
-
-template <typename T>
-inline uint8_t* WireFormatLite::WritePrimitiveNoTagToArray(
- const RepeatedField<T>& value, uint8_t* (*Writer)(T, uint8_t*),
- uint8_t* target) {
- const int n = value.size();
- GOOGLE_DCHECK_GT(n, 0);
-
- const T* ii = value.data();
- int i = 0;
- do {
- target = Writer(ii[i], target);
- } while (++i < n);
-
- return target;
-}
-
-template <typename T>
-inline uint8_t* WireFormatLite::WriteFixedNoTagToArray(
- const RepeatedField<T>& value, uint8_t* (*Writer)(T, uint8_t*),
- uint8_t* target) {
-#if defined(PROTOBUF_LITTLE_ENDIAN)
- (void)Writer;
-
- const int n = value.size();
- GOOGLE_DCHECK_GT(n, 0);
-
- const T* ii = value.data();
- const int bytes = n * static_cast<int>(sizeof(ii[0]));
- memcpy(target, ii, static_cast<size_t>(bytes));
- return target + bytes;
-#else
- return WritePrimitiveNoTagToArray(value, Writer, target);
-#endif
-}
-
-inline uint8_t* WireFormatLite::WriteInt32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteInt32NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteInt64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteInt64NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt32NoTagToArray(
- const RepeatedField<uint32_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteUInt32NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt64NoTagToArray(
- const RepeatedField<uint64_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteUInt64NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteSInt32NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteSInt64NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed32NoTagToArray(
- const RepeatedField<uint32_t>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteFixed32NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed64NoTagToArray(
- const RepeatedField<uint64_t>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteFixed64NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed32NoTagToArray(
- const RepeatedField<int32_t>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteSFixed32NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed64NoTagToArray(
- const RepeatedField<int64_t>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteSFixed64NoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteFloatNoTagToArray(
- const RepeatedField<float>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteFloatNoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteDoubleNoTagToArray(
- const RepeatedField<double>& value, uint8_t* target) {
- return WriteFixedNoTagToArray(value, WriteDoubleNoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteBoolNoTagToArray(
- const RepeatedField<bool>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteBoolNoTagToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteEnumNoTagToArray(
- const RepeatedField<int>& value, uint8_t* target) {
- return WritePrimitiveNoTagToArray(value, WriteEnumNoTagToArray, target);
-}
-
-inline uint8_t* WireFormatLite::WriteInt32ToArray(int field_number,
- int32_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteInt32NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteInt64ToArray(int field_number,
- int64_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteInt64NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt32ToArray(int field_number,
- uint32_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteUInt32NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt64ToArray(int field_number,
- uint64_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteUInt64NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt32ToArray(int field_number,
- int32_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteSInt32NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt64ToArray(int field_number,
- int64_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteSInt64NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed32ToArray(int field_number,
- uint32_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target);
- return WriteFixed32NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed64ToArray(int field_number,
- uint64_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target);
- return WriteFixed64NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed32ToArray(int field_number,
- int32_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target);
- return WriteSFixed32NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed64ToArray(int field_number,
- int64_t value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target);
- return WriteSFixed64NoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteFloatToArray(int field_number, float value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target);
- return WriteFloatNoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteDoubleToArray(int field_number,
- double value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target);
- return WriteDoubleNoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteBoolToArray(int field_number, bool value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteBoolNoTagToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteEnumToArray(int field_number, int value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_VARINT, target);
- return WriteEnumNoTagToArray(value, target);
-}
-
-template <typename T>
-inline uint8_t* WireFormatLite::WritePrimitiveToArray(
- int field_number, const RepeatedField<T>& value,
- uint8_t* (*Writer)(int, T, uint8_t*), uint8_t* target) {
- const int n = value.size();
- if (n == 0) {
- return target;
- }
-
- const T* ii = value.data();
- int i = 0;
- do {
- target = Writer(field_number, ii[i], target);
- } while (++i < n);
-
- return target;
-}
-
-inline uint8_t* WireFormatLite::WriteInt32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteInt32ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteInt64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteInt64ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt32ToArray(
- int field_number, const RepeatedField<uint32_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteUInt32ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteUInt64ToArray(
- int field_number, const RepeatedField<uint64_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteUInt64ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteSInt32ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteSInt64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteSInt64ToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteFixed32ToArray(
- int field_number, const RepeatedField<uint32_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteFixed32ToArray,
- target);
-}
-inline uint8_t* WireFormatLite::WriteFixed64ToArray(
- int field_number, const RepeatedField<uint64_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteFixed64ToArray,
- target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed32ToArray(
- int field_number, const RepeatedField<int32_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteSFixed32ToArray,
- target);
-}
-inline uint8_t* WireFormatLite::WriteSFixed64ToArray(
- int field_number, const RepeatedField<int64_t>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteSFixed64ToArray,
- target);
-}
-inline uint8_t* WireFormatLite::WriteFloatToArray(
- int field_number, const RepeatedField<float>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteFloatToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteDoubleToArray(
- int field_number, const RepeatedField<double>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteDoubleToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteBoolToArray(
- int field_number, const RepeatedField<bool>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteBoolToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteEnumToArray(
- int field_number, const RepeatedField<int>& value, uint8_t* target) {
- return WritePrimitiveToArray(field_number, value, WriteEnumToArray, target);
-}
-inline uint8_t* WireFormatLite::WriteStringToArray(int field_number,
- const std::string& value,
- uint8_t* target) {
- // String is for UTF-8 text only
- // WARNING: In wire_format.cc, both strings and bytes are handled by
- // WriteString() to avoid code duplication. If the implementations become
- // different, you will need to update that usage.
- target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target);
- return io::CodedOutputStream::WriteStringWithSizeToArray(value, target);
-}
-inline uint8_t* WireFormatLite::WriteBytesToArray(int field_number,
- const std::string& value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target);
- return io::CodedOutputStream::WriteStringWithSizeToArray(value, target);
-}
-
-
-// See comment on ReadGroupNoVirtual to understand the need for this template
-// parameter name.
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline uint8_t* WireFormatLite::InternalWriteGroupNoVirtualToArray(
- int field_number, const MessageType_WorkAroundCppLookupDefect& value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target);
- target = value.MessageType_WorkAroundCppLookupDefect::
- SerializeWithCachedSizesToArray(target);
- return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target);
-}
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline uint8_t* WireFormatLite::InternalWriteMessageNoVirtualToArray(
- int field_number, const MessageType_WorkAroundCppLookupDefect& value,
- uint8_t* target) {
- target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target);
- target = io::CodedOutputStream::WriteVarint32ToArray(
- static_cast<uint32_t>(
- value.MessageType_WorkAroundCppLookupDefect::GetCachedSize()),
- target);
- return value
- .MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizesToArray(
- target);
-}
-
-// ===================================================================
-
-inline size_t WireFormatLite::Int32Size(int32_t value) {
- return io::CodedOutputStream::VarintSize32SignExtended(value);
-}
-inline size_t WireFormatLite::Int64Size(int64_t value) {
- return io::CodedOutputStream::VarintSize64(static_cast<uint64_t>(value));
-}
-inline size_t WireFormatLite::UInt32Size(uint32_t value) {
- return io::CodedOutputStream::VarintSize32(value);
-}
-inline size_t WireFormatLite::UInt64Size(uint64_t value) {
- return io::CodedOutputStream::VarintSize64(value);
-}
-inline size_t WireFormatLite::SInt32Size(int32_t value) {
- return io::CodedOutputStream::VarintSize32(ZigZagEncode32(value));
-}
-inline size_t WireFormatLite::SInt64Size(int64_t value) {
- return io::CodedOutputStream::VarintSize64(ZigZagEncode64(value));
-}
-inline size_t WireFormatLite::EnumSize(int value) {
- return io::CodedOutputStream::VarintSize32SignExtended(value);
-}
-inline size_t WireFormatLite::Int32SizePlusOne(int32_t value) {
- return io::CodedOutputStream::VarintSize32SignExtendedPlusOne(value);
-}
-inline size_t WireFormatLite::Int64SizePlusOne(int64_t value) {
- return io::CodedOutputStream::VarintSize64PlusOne(
- static_cast<uint64_t>(value));
-}
-inline size_t WireFormatLite::UInt32SizePlusOne(uint32_t value) {
- return io::CodedOutputStream::VarintSize32PlusOne(value);
-}
-inline size_t WireFormatLite::UInt64SizePlusOne(uint64_t value) {
- return io::CodedOutputStream::VarintSize64PlusOne(value);
-}
-inline size_t WireFormatLite::SInt32SizePlusOne(int32_t value) {
- return io::CodedOutputStream::VarintSize32PlusOne(ZigZagEncode32(value));
-}
-inline size_t WireFormatLite::SInt64SizePlusOne(int64_t value) {
- return io::CodedOutputStream::VarintSize64PlusOne(ZigZagEncode64(value));
-}
-inline size_t WireFormatLite::EnumSizePlusOne(int value) {
- return io::CodedOutputStream::VarintSize32SignExtendedPlusOne(value);
-}
-
-inline size_t WireFormatLite::StringSize(const std::string& value) {
- return LengthDelimitedSize(value.size());
-}
-inline size_t WireFormatLite::BytesSize(const std::string& value) {
- return LengthDelimitedSize(value.size());
-}
-
-
-template <typename MessageType>
-inline size_t WireFormatLite::GroupSize(const MessageType& value) {
- return value.ByteSizeLong();
-}
-template <typename MessageType>
-inline size_t WireFormatLite::MessageSize(const MessageType& value) {
- return LengthDelimitedSize(value.ByteSizeLong());
-}
-
-// See comment on ReadGroupNoVirtual to understand the need for this template
-// parameter name.
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline size_t WireFormatLite::GroupSizeNoVirtual(
- const MessageType_WorkAroundCppLookupDefect& value) {
- return value.MessageType_WorkAroundCppLookupDefect::ByteSizeLong();
-}
-template <typename MessageType_WorkAroundCppLookupDefect>
-inline size_t WireFormatLite::MessageSizeNoVirtual(
- const MessageType_WorkAroundCppLookupDefect& value) {
- return LengthDelimitedSize(
- value.MessageType_WorkAroundCppLookupDefect::ByteSizeLong());
-}
-
-inline size_t WireFormatLite::LengthDelimitedSize(size_t length) {
- // The static_cast here prevents an error in certain compiler configurations
- // but is not technically correct--if length is too large to fit in a uint32_t
- // then it will be silently truncated. We will need to fix this if we ever
- // decide to start supporting serialized messages greater than 2 GiB in size.
- return length +
- io::CodedOutputStream::VarintSize32(static_cast<uint32_t>(length));
-}
-
-template <typename MS>
-bool ParseMessageSetItemImpl(io::CodedInputStream* input, MS ms) {
- // This method parses a group which should contain two fields:
- // required int32 type_id = 2;
- // required data message = 3;
-
- uint32_t last_type_id = 0;
-
- // If we see message data before the type_id, we'll append it to this so
- // we can parse it later.
- std::string message_data;
-
- while (true) {
- const uint32_t tag = input->ReadTagNoLastTag();
- if (tag == 0) return false;
-
- switch (tag) {
- case WireFormatLite::kMessageSetTypeIdTag: {
- uint32_t type_id;
- if (!input->ReadVarint32(&type_id)) return false;
- last_type_id = type_id;
-
- if (!message_data.empty()) {
- // We saw some message data before the type_id. Have to parse it
- // now.
- io::CodedInputStream sub_input(
- reinterpret_cast<const uint8_t*>(message_data.data()),
- static_cast<int>(message_data.size()));
- sub_input.SetRecursionLimit(input->RecursionBudget());
- if (!ms.ParseField(last_type_id, &sub_input)) {
- return false;
- }
- message_data.clear();
- }
-
- break;
- }
-
- case WireFormatLite::kMessageSetMessageTag: {
- if (last_type_id == 0) {
- // We haven't seen a type_id yet. Append this data to message_data.
- uint32_t length;
- if (!input->ReadVarint32(&length)) return false;
- if (static_cast<int32_t>(length) < 0) return false;
- uint32_t size = static_cast<uint32_t>(
- length + io::CodedOutputStream::VarintSize32(length));
- message_data.resize(size);
- auto ptr = reinterpret_cast<uint8_t*>(&message_data[0]);
- ptr = io::CodedOutputStream::WriteVarint32ToArray(length, ptr);
- if (!input->ReadRaw(ptr, length)) return false;
- } else {
- // Already saw type_id, so we can parse this directly.
- if (!ms.ParseField(last_type_id, input)) {
- return false;
- }
- }
-
- break;
- }
-
- case WireFormatLite::kMessageSetItemEndTag: {
- return true;
- }
-
- default: {
- if (!ms.SkipField(tag, input)) return false;
- }
- }
- }
-}
-
-} // namespace internal
-} // namespace protobuf
-} // namespace google
-
-#include <google/protobuf/port_undef.inc>
-
-#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__
diff --git a/include/google/protobuf/wrappers.pb.h b/include/google/protobuf/wrappers.pb.h
deleted file mode 100644
index f629e5e8e2..0000000000
--- a/include/google/protobuf/wrappers.pb.h
+++ /dev/null
@@ -1,1741 +0,0 @@
-// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: google/protobuf/wrappers.proto
-
-#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fwrappers_2eproto
-#define GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fwrappers_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3021000
-#error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
-#error your headers.
-#endif
-#if 3021004 < PROTOBUF_MIN_PROTOC_VERSION
-#error This file was generated by an older version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please
-#error regenerate this file with a newer version of protoc.
-#endif
-
-#include <google/protobuf/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata_lite.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h> // IWYU pragma: export
-#include <google/protobuf/extension_set.h> // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2fwrappers_2eproto PROTOBUF_EXPORT
-PROTOBUF_NAMESPACE_OPEN
-namespace internal {
-class AnyMetadata;
-} // namespace internal
-PROTOBUF_NAMESPACE_CLOSE
-
-// Internal implementation detail -- do not use these members.
-struct PROTOBUF_EXPORT TableStruct_google_2fprotobuf_2fwrappers_2eproto {
- static const uint32_t offsets[];
-};
-PROTOBUF_EXPORT extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2fprotobuf_2fwrappers_2eproto;
-PROTOBUF_NAMESPACE_OPEN
-class BoolValue;
-struct BoolValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern BoolValueDefaultTypeInternal _BoolValue_default_instance_;
-class BytesValue;
-struct BytesValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern BytesValueDefaultTypeInternal _BytesValue_default_instance_;
-class DoubleValue;
-struct DoubleValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern DoubleValueDefaultTypeInternal _DoubleValue_default_instance_;
-class FloatValue;
-struct FloatValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern FloatValueDefaultTypeInternal _FloatValue_default_instance_;
-class Int32Value;
-struct Int32ValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern Int32ValueDefaultTypeInternal _Int32Value_default_instance_;
-class Int64Value;
-struct Int64ValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern Int64ValueDefaultTypeInternal _Int64Value_default_instance_;
-class StringValue;
-struct StringValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern StringValueDefaultTypeInternal _StringValue_default_instance_;
-class UInt32Value;
-struct UInt32ValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern UInt32ValueDefaultTypeInternal _UInt32Value_default_instance_;
-class UInt64Value;
-struct UInt64ValueDefaultTypeInternal;
-PROTOBUF_EXPORT extern UInt64ValueDefaultTypeInternal _UInt64Value_default_instance_;
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::BoolValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::BoolValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::BytesValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::BytesValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::DoubleValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::DoubleValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::FloatValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FloatValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Int32Value* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Int32Value>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::Int64Value* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::Int64Value>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::StringValue* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::StringValue>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::UInt32Value* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::UInt32Value>(Arena*);
-template<> PROTOBUF_EXPORT ::PROTOBUF_NAMESPACE_ID::UInt64Value* Arena::CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::UInt64Value>(Arena*);
-PROTOBUF_NAMESPACE_CLOSE
-PROTOBUF_NAMESPACE_OPEN
-
-// ===================================================================
-
-class PROTOBUF_EXPORT DoubleValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.DoubleValue) */ {
- public:
- inline DoubleValue() : DoubleValue(nullptr) {}
- ~DoubleValue() override;
- explicit PROTOBUF_CONSTEXPR DoubleValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- DoubleValue(const DoubleValue& from);
- DoubleValue(DoubleValue&& from) noexcept
- : DoubleValue() {
- *this = ::std::move(from);
- }
-
- inline DoubleValue& operator=(const DoubleValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline DoubleValue& operator=(DoubleValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const DoubleValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const DoubleValue* internal_default_instance() {
- return reinterpret_cast<const DoubleValue*>(
- &_DoubleValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 0;
-
- friend void swap(DoubleValue& a, DoubleValue& b) {
- a.Swap(&b);
- }
- inline void Swap(DoubleValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(DoubleValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- DoubleValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<DoubleValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const DoubleValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const DoubleValue& from) {
- DoubleValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(DoubleValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.DoubleValue";
- }
- protected:
- explicit DoubleValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // double value = 1;
- void clear_value();
- double value() const;
- void set_value(double value);
- private:
- double _internal_value() const;
- void _internal_set_value(double value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.DoubleValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- double value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT FloatValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.FloatValue) */ {
- public:
- inline FloatValue() : FloatValue(nullptr) {}
- ~FloatValue() override;
- explicit PROTOBUF_CONSTEXPR FloatValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- FloatValue(const FloatValue& from);
- FloatValue(FloatValue&& from) noexcept
- : FloatValue() {
- *this = ::std::move(from);
- }
-
- inline FloatValue& operator=(const FloatValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline FloatValue& operator=(FloatValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const FloatValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const FloatValue* internal_default_instance() {
- return reinterpret_cast<const FloatValue*>(
- &_FloatValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 1;
-
- friend void swap(FloatValue& a, FloatValue& b) {
- a.Swap(&b);
- }
- inline void Swap(FloatValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(FloatValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- FloatValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<FloatValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const FloatValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const FloatValue& from) {
- FloatValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(FloatValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.FloatValue";
- }
- protected:
- explicit FloatValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // float value = 1;
- void clear_value();
- float value() const;
- void set_value(float value);
- private:
- float _internal_value() const;
- void _internal_set_value(float value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.FloatValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- float value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Int64Value final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Int64Value) */ {
- public:
- inline Int64Value() : Int64Value(nullptr) {}
- ~Int64Value() override;
- explicit PROTOBUF_CONSTEXPR Int64Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Int64Value(const Int64Value& from);
- Int64Value(Int64Value&& from) noexcept
- : Int64Value() {
- *this = ::std::move(from);
- }
-
- inline Int64Value& operator=(const Int64Value& from) {
- CopyFrom(from);
- return *this;
- }
- inline Int64Value& operator=(Int64Value&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Int64Value& default_instance() {
- return *internal_default_instance();
- }
- static inline const Int64Value* internal_default_instance() {
- return reinterpret_cast<const Int64Value*>(
- &_Int64Value_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 2;
-
- friend void swap(Int64Value& a, Int64Value& b) {
- a.Swap(&b);
- }
- inline void Swap(Int64Value* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Int64Value* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Int64Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Int64Value>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Int64Value& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Int64Value& from) {
- Int64Value::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Int64Value* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Int64Value";
- }
- protected:
- explicit Int64Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // int64 value = 1;
- void clear_value();
- int64_t value() const;
- void set_value(int64_t value);
- private:
- int64_t _internal_value() const;
- void _internal_set_value(int64_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Int64Value)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- int64_t value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT UInt64Value final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.UInt64Value) */ {
- public:
- inline UInt64Value() : UInt64Value(nullptr) {}
- ~UInt64Value() override;
- explicit PROTOBUF_CONSTEXPR UInt64Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- UInt64Value(const UInt64Value& from);
- UInt64Value(UInt64Value&& from) noexcept
- : UInt64Value() {
- *this = ::std::move(from);
- }
-
- inline UInt64Value& operator=(const UInt64Value& from) {
- CopyFrom(from);
- return *this;
- }
- inline UInt64Value& operator=(UInt64Value&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const UInt64Value& default_instance() {
- return *internal_default_instance();
- }
- static inline const UInt64Value* internal_default_instance() {
- return reinterpret_cast<const UInt64Value*>(
- &_UInt64Value_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 3;
-
- friend void swap(UInt64Value& a, UInt64Value& b) {
- a.Swap(&b);
- }
- inline void Swap(UInt64Value* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(UInt64Value* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- UInt64Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<UInt64Value>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const UInt64Value& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const UInt64Value& from) {
- UInt64Value::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(UInt64Value* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.UInt64Value";
- }
- protected:
- explicit UInt64Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // uint64 value = 1;
- void clear_value();
- uint64_t value() const;
- void set_value(uint64_t value);
- private:
- uint64_t _internal_value() const;
- void _internal_set_value(uint64_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.UInt64Value)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- uint64_t value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT Int32Value final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.Int32Value) */ {
- public:
- inline Int32Value() : Int32Value(nullptr) {}
- ~Int32Value() override;
- explicit PROTOBUF_CONSTEXPR Int32Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- Int32Value(const Int32Value& from);
- Int32Value(Int32Value&& from) noexcept
- : Int32Value() {
- *this = ::std::move(from);
- }
-
- inline Int32Value& operator=(const Int32Value& from) {
- CopyFrom(from);
- return *this;
- }
- inline Int32Value& operator=(Int32Value&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const Int32Value& default_instance() {
- return *internal_default_instance();
- }
- static inline const Int32Value* internal_default_instance() {
- return reinterpret_cast<const Int32Value*>(
- &_Int32Value_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 4;
-
- friend void swap(Int32Value& a, Int32Value& b) {
- a.Swap(&b);
- }
- inline void Swap(Int32Value* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(Int32Value* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- Int32Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<Int32Value>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const Int32Value& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const Int32Value& from) {
- Int32Value::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(Int32Value* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.Int32Value";
- }
- protected:
- explicit Int32Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // int32 value = 1;
- void clear_value();
- int32_t value() const;
- void set_value(int32_t value);
- private:
- int32_t _internal_value() const;
- void _internal_set_value(int32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.Int32Value)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- int32_t value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT UInt32Value final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.UInt32Value) */ {
- public:
- inline UInt32Value() : UInt32Value(nullptr) {}
- ~UInt32Value() override;
- explicit PROTOBUF_CONSTEXPR UInt32Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- UInt32Value(const UInt32Value& from);
- UInt32Value(UInt32Value&& from) noexcept
- : UInt32Value() {
- *this = ::std::move(from);
- }
-
- inline UInt32Value& operator=(const UInt32Value& from) {
- CopyFrom(from);
- return *this;
- }
- inline UInt32Value& operator=(UInt32Value&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const UInt32Value& default_instance() {
- return *internal_default_instance();
- }
- static inline const UInt32Value* internal_default_instance() {
- return reinterpret_cast<const UInt32Value*>(
- &_UInt32Value_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 5;
-
- friend void swap(UInt32Value& a, UInt32Value& b) {
- a.Swap(&b);
- }
- inline void Swap(UInt32Value* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(UInt32Value* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- UInt32Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<UInt32Value>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const UInt32Value& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const UInt32Value& from) {
- UInt32Value::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(UInt32Value* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.UInt32Value";
- }
- protected:
- explicit UInt32Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // uint32 value = 1;
- void clear_value();
- uint32_t value() const;
- void set_value(uint32_t value);
- private:
- uint32_t _internal_value() const;
- void _internal_set_value(uint32_t value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.UInt32Value)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- uint32_t value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT BoolValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.BoolValue) */ {
- public:
- inline BoolValue() : BoolValue(nullptr) {}
- ~BoolValue() override;
- explicit PROTOBUF_CONSTEXPR BoolValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- BoolValue(const BoolValue& from);
- BoolValue(BoolValue&& from) noexcept
- : BoolValue() {
- *this = ::std::move(from);
- }
-
- inline BoolValue& operator=(const BoolValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline BoolValue& operator=(BoolValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const BoolValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const BoolValue* internal_default_instance() {
- return reinterpret_cast<const BoolValue*>(
- &_BoolValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 6;
-
- friend void swap(BoolValue& a, BoolValue& b) {
- a.Swap(&b);
- }
- inline void Swap(BoolValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(BoolValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- BoolValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<BoolValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const BoolValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const BoolValue& from) {
- BoolValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(BoolValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.BoolValue";
- }
- protected:
- explicit BoolValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // bool value = 1;
- void clear_value();
- bool value() const;
- void set_value(bool value);
- private:
- bool _internal_value() const;
- void _internal_set_value(bool value);
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.BoolValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- bool value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT StringValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.StringValue) */ {
- public:
- inline StringValue() : StringValue(nullptr) {}
- ~StringValue() override;
- explicit PROTOBUF_CONSTEXPR StringValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- StringValue(const StringValue& from);
- StringValue(StringValue&& from) noexcept
- : StringValue() {
- *this = ::std::move(from);
- }
-
- inline StringValue& operator=(const StringValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline StringValue& operator=(StringValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const StringValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const StringValue* internal_default_instance() {
- return reinterpret_cast<const StringValue*>(
- &_StringValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 7;
-
- friend void swap(StringValue& a, StringValue& b) {
- a.Swap(&b);
- }
- inline void Swap(StringValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(StringValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- StringValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<StringValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const StringValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const StringValue& from) {
- StringValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(StringValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.StringValue";
- }
- protected:
- explicit StringValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // string value = 1;
- void clear_value();
- const std::string& value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_value();
- PROTOBUF_NODISCARD std::string* release_value();
- void set_allocated_value(std::string* value);
- private:
- const std::string& _internal_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(const std::string& value);
- std::string* _internal_mutable_value();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.StringValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// -------------------------------------------------------------------
-
-class PROTOBUF_EXPORT BytesValue final :
- public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.protobuf.BytesValue) */ {
- public:
- inline BytesValue() : BytesValue(nullptr) {}
- ~BytesValue() override;
- explicit PROTOBUF_CONSTEXPR BytesValue(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
-
- BytesValue(const BytesValue& from);
- BytesValue(BytesValue&& from) noexcept
- : BytesValue() {
- *this = ::std::move(from);
- }
-
- inline BytesValue& operator=(const BytesValue& from) {
- CopyFrom(from);
- return *this;
- }
- inline BytesValue& operator=(BytesValue&& from) noexcept {
- if (this == &from) return *this;
- if (GetOwningArena() == from.GetOwningArena()
- #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
- && GetOwningArena() != nullptr
- #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
- ) {
- InternalSwap(&from);
- } else {
- CopyFrom(from);
- }
- return *this;
- }
-
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
- return GetDescriptor();
- }
- static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
- return default_instance().GetMetadata().descriptor;
- }
- static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
- return default_instance().GetMetadata().reflection;
- }
- static const BytesValue& default_instance() {
- return *internal_default_instance();
- }
- static inline const BytesValue* internal_default_instance() {
- return reinterpret_cast<const BytesValue*>(
- &_BytesValue_default_instance_);
- }
- static constexpr int kIndexInFileMessages =
- 8;
-
- friend void swap(BytesValue& a, BytesValue& b) {
- a.Swap(&b);
- }
- inline void Swap(BytesValue* other) {
- if (other == this) return;
- #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() != nullptr &&
- GetOwningArena() == other->GetOwningArena()) {
- #else // PROTOBUF_FORCE_COPY_IN_SWAP
- if (GetOwningArena() == other->GetOwningArena()) {
- #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
- InternalSwap(other);
- } else {
- ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
- }
- }
- void UnsafeArenaSwap(BytesValue* other) {
- if (other == this) return;
- GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
- InternalSwap(other);
- }
-
- // implements Message ----------------------------------------------
-
- BytesValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
- return CreateMaybeMessage<BytesValue>(arena);
- }
- using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
- void CopyFrom(const BytesValue& from);
- using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
- void MergeFrom( const BytesValue& from) {
- BytesValue::MergeImpl(*this, from);
- }
- private:
- static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
- public:
- PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
- bool IsInitialized() const final;
-
- size_t ByteSizeLong() const final;
- const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
- uint8_t* _InternalSerialize(
- uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
- int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
-
- private:
- void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
- void SharedDtor();
- void SetCachedSize(int size) const final;
- void InternalSwap(BytesValue* other);
-
- private:
- friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
- static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
- return "google.protobuf.BytesValue";
- }
- protected:
- explicit BytesValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
- bool is_message_owned = false);
- public:
-
- static const ClassData _class_data_;
- const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
-
- ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
-
- // nested types ----------------------------------------------------
-
- // accessors -------------------------------------------------------
-
- enum : int {
- kValueFieldNumber = 1,
- };
- // bytes value = 1;
- void clear_value();
- const std::string& value() const;
- template <typename ArgT0 = const std::string&, typename... ArgT>
- void set_value(ArgT0&& arg0, ArgT... args);
- std::string* mutable_value();
- PROTOBUF_NODISCARD std::string* release_value();
- void set_allocated_value(std::string* value);
- private:
- const std::string& _internal_value() const;
- inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(const std::string& value);
- std::string* _internal_mutable_value();
- public:
-
- // @@protoc_insertion_point(class_scope:google.protobuf.BytesValue)
- private:
- class _Internal;
-
- template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
- typedef void InternalArenaConstructable_;
- typedef void DestructorSkippable_;
- struct Impl_ {
- ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
- mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
- };
- union { Impl_ _impl_; };
- friend struct ::TableStruct_google_2fprotobuf_2fwrappers_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif // __GNUC__
-// DoubleValue
-
-// double value = 1;
-inline void DoubleValue::clear_value() {
- _impl_.value_ = 0;
-}
-inline double DoubleValue::_internal_value() const {
- return _impl_.value_;
-}
-inline double DoubleValue::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.DoubleValue.value)
- return _internal_value();
-}
-inline void DoubleValue::_internal_set_value(double value) {
-
- _impl_.value_ = value;
-}
-inline void DoubleValue::set_value(double value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.DoubleValue.value)
-}
-
-// -------------------------------------------------------------------
-
-// FloatValue
-
-// float value = 1;
-inline void FloatValue::clear_value() {
- _impl_.value_ = 0;
-}
-inline float FloatValue::_internal_value() const {
- return _impl_.value_;
-}
-inline float FloatValue::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.FloatValue.value)
- return _internal_value();
-}
-inline void FloatValue::_internal_set_value(float value) {
-
- _impl_.value_ = value;
-}
-inline void FloatValue::set_value(float value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.FloatValue.value)
-}
-
-// -------------------------------------------------------------------
-
-// Int64Value
-
-// int64 value = 1;
-inline void Int64Value::clear_value() {
- _impl_.value_ = int64_t{0};
-}
-inline int64_t Int64Value::_internal_value() const {
- return _impl_.value_;
-}
-inline int64_t Int64Value::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Int64Value.value)
- return _internal_value();
-}
-inline void Int64Value::_internal_set_value(int64_t value) {
-
- _impl_.value_ = value;
-}
-inline void Int64Value::set_value(int64_t value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Int64Value.value)
-}
-
-// -------------------------------------------------------------------
-
-// UInt64Value
-
-// uint64 value = 1;
-inline void UInt64Value::clear_value() {
- _impl_.value_ = uint64_t{0u};
-}
-inline uint64_t UInt64Value::_internal_value() const {
- return _impl_.value_;
-}
-inline uint64_t UInt64Value::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UInt64Value.value)
- return _internal_value();
-}
-inline void UInt64Value::_internal_set_value(uint64_t value) {
-
- _impl_.value_ = value;
-}
-inline void UInt64Value::set_value(uint64_t value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UInt64Value.value)
-}
-
-// -------------------------------------------------------------------
-
-// Int32Value
-
-// int32 value = 1;
-inline void Int32Value::clear_value() {
- _impl_.value_ = 0;
-}
-inline int32_t Int32Value::_internal_value() const {
- return _impl_.value_;
-}
-inline int32_t Int32Value::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.Int32Value.value)
- return _internal_value();
-}
-inline void Int32Value::_internal_set_value(int32_t value) {
-
- _impl_.value_ = value;
-}
-inline void Int32Value::set_value(int32_t value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.Int32Value.value)
-}
-
-// -------------------------------------------------------------------
-
-// UInt32Value
-
-// uint32 value = 1;
-inline void UInt32Value::clear_value() {
- _impl_.value_ = 0u;
-}
-inline uint32_t UInt32Value::_internal_value() const {
- return _impl_.value_;
-}
-inline uint32_t UInt32Value::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.UInt32Value.value)
- return _internal_value();
-}
-inline void UInt32Value::_internal_set_value(uint32_t value) {
-
- _impl_.value_ = value;
-}
-inline void UInt32Value::set_value(uint32_t value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.UInt32Value.value)
-}
-
-// -------------------------------------------------------------------
-
-// BoolValue
-
-// bool value = 1;
-inline void BoolValue::clear_value() {
- _impl_.value_ = false;
-}
-inline bool BoolValue::_internal_value() const {
- return _impl_.value_;
-}
-inline bool BoolValue::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.BoolValue.value)
- return _internal_value();
-}
-inline void BoolValue::_internal_set_value(bool value) {
-
- _impl_.value_ = value;
-}
-inline void BoolValue::set_value(bool value) {
- _internal_set_value(value);
- // @@protoc_insertion_point(field_set:google.protobuf.BoolValue.value)
-}
-
-// -------------------------------------------------------------------
-
-// StringValue
-
-// string value = 1;
-inline void StringValue::clear_value() {
- _impl_.value_.ClearToEmpty();
-}
-inline const std::string& StringValue::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.StringValue.value)
- return _internal_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void StringValue::set_value(ArgT0&& arg0, ArgT... args) {
-
- _impl_.value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.StringValue.value)
-}
-inline std::string* StringValue::mutable_value() {
- std::string* _s = _internal_mutable_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.StringValue.value)
- return _s;
-}
-inline const std::string& StringValue::_internal_value() const {
- return _impl_.value_.Get();
-}
-inline void StringValue::_internal_set_value(const std::string& value) {
-
- _impl_.value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* StringValue::_internal_mutable_value() {
-
- return _impl_.value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* StringValue::release_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.StringValue.value)
- return _impl_.value_.Release();
-}
-inline void StringValue::set_allocated_value(std::string* value) {
- if (value != nullptr) {
-
- } else {
-
- }
- _impl_.value_.SetAllocated(value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.value_.IsDefault()) {
- _impl_.value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.StringValue.value)
-}
-
-// -------------------------------------------------------------------
-
-// BytesValue
-
-// bytes value = 1;
-inline void BytesValue::clear_value() {
- _impl_.value_.ClearToEmpty();
-}
-inline const std::string& BytesValue::value() const {
- // @@protoc_insertion_point(field_get:google.protobuf.BytesValue.value)
- return _internal_value();
-}
-template <typename ArgT0, typename... ArgT>
-inline PROTOBUF_ALWAYS_INLINE
-void BytesValue::set_value(ArgT0&& arg0, ArgT... args) {
-
- _impl_.value_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
- // @@protoc_insertion_point(field_set:google.protobuf.BytesValue.value)
-}
-inline std::string* BytesValue::mutable_value() {
- std::string* _s = _internal_mutable_value();
- // @@protoc_insertion_point(field_mutable:google.protobuf.BytesValue.value)
- return _s;
-}
-inline const std::string& BytesValue::_internal_value() const {
- return _impl_.value_.Get();
-}
-inline void BytesValue::_internal_set_value(const std::string& value) {
-
- _impl_.value_.Set(value, GetArenaForAllocation());
-}
-inline std::string* BytesValue::_internal_mutable_value() {
-
- return _impl_.value_.Mutable(GetArenaForAllocation());
-}
-inline std::string* BytesValue::release_value() {
- // @@protoc_insertion_point(field_release:google.protobuf.BytesValue.value)
- return _impl_.value_.Release();
-}
-inline void BytesValue::set_allocated_value(std::string* value) {
- if (value != nullptr) {
-
- } else {
-
- }
- _impl_.value_.SetAllocated(value, GetArenaForAllocation());
-#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
- if (_impl_.value_.IsDefault()) {
- _impl_.value_.Set("", GetArenaForAllocation());
- }
-#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
- // @@protoc_insertion_point(field_set_allocated:google.protobuf.BytesValue.value)
-}
-
-#ifdef __GNUC__
- #pragma GCC diagnostic pop
-#endif // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-PROTOBUF_NAMESPACE_CLOSE
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2fprotobuf_2fwrappers_2eproto
diff --git a/include/google/protobuf/wrappers.proto b/include/google/protobuf/wrappers.proto
deleted file mode 100644
index d49dd53c8d..0000000000
--- a/include/google/protobuf/wrappers.proto
+++ /dev/null
@@ -1,123 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Wrappers for primitive (non-message) types. These types are useful
-// for embedding primitives in the `google.protobuf.Any` type and for places
-// where we need to distinguish between the absence of a primitive
-// typed field and its default value.
-//
-// These wrappers have no meaningful use within repeated fields as they lack
-// the ability to detect presence on individual elements.
-// These wrappers have no meaningful use within a map or a oneof since
-// individual entries of a map or fields of a oneof can already detect presence.
-
-syntax = "proto3";
-
-package google.protobuf;
-
-option csharp_namespace = "Google.Protobuf.WellKnownTypes";
-option cc_enable_arenas = true;
-option go_package = "google.golang.org/protobuf/types/known/wrapperspb";
-option java_package = "com.google.protobuf";
-option java_outer_classname = "WrappersProto";
-option java_multiple_files = true;
-option objc_class_prefix = "GPB";
-
-// Wrapper message for `double`.
-//
-// The JSON representation for `DoubleValue` is JSON number.
-message DoubleValue {
- // The double value.
- double value = 1;
-}
-
-// Wrapper message for `float`.
-//
-// The JSON representation for `FloatValue` is JSON number.
-message FloatValue {
- // The float value.
- float value = 1;
-}
-
-// Wrapper message for `int64`.
-//
-// The JSON representation for `Int64Value` is JSON string.
-message Int64Value {
- // The int64 value.
- int64 value = 1;
-}
-
-// Wrapper message for `uint64`.
-//
-// The JSON representation for `UInt64Value` is JSON string.
-message UInt64Value {
- // The uint64 value.
- uint64 value = 1;
-}
-
-// Wrapper message for `int32`.
-//
-// The JSON representation for `Int32Value` is JSON number.
-message Int32Value {
- // The int32 value.
- int32 value = 1;
-}
-
-// Wrapper message for `uint32`.
-//
-// The JSON representation for `UInt32Value` is JSON number.
-message UInt32Value {
- // The uint32 value.
- uint32 value = 1;
-}
-
-// Wrapper message for `bool`.
-//
-// The JSON representation for `BoolValue` is JSON `true` and `false`.
-message BoolValue {
- // The bool value.
- bool value = 1;
-}
-
-// Wrapper message for `string`.
-//
-// The JSON representation for `StringValue` is JSON string.
-message StringValue {
- // The string value.
- string value = 1;
-}
-
-// Wrapper message for `bytes`.
-//
-// The JSON representation for `BytesValue` is JSON string.
-message BytesValue {
- // The bytes value.
- bytes value = 1;
-}
diff --git a/libs/win32/libprotobuf.lib b/libs/win32/libprotobuf.lib
deleted file mode 100644
index c2eb732c82..0000000000
--- a/libs/win32/libprotobuf.lib
+++ /dev/null
Binary files differ
diff --git a/libs/win64/libprotobuf.lib b/libs/win64/libprotobuf.lib
deleted file mode 100644
index 79754b0990..0000000000
--- a/libs/win64/libprotobuf.lib
+++ /dev/null
Binary files differ