hello.pb.h

./code/hello.pb.h
   1// Generated by the protocol buffer compiler.  DO NOT EDIT!
   2// source: hello.proto
   3
   4#ifndef GOOGLE_PROTOBUF_INCLUDED_hello_2eproto
   5#define GOOGLE_PROTOBUF_INCLUDED_hello_2eproto
   6
   7#include <limits>
   8#include <string>
   9
  10#include <google/protobuf/port_def.inc>
  11#if PROTOBUF_VERSION < 3020000
  12#error This file was generated by a newer version of protoc which is
  13#error incompatible with your Protocol Buffer headers. Please update
  14#error your headers.
  15#endif
  16#if 3020001 < PROTOBUF_MIN_PROTOC_VERSION
  17#error This file was generated by an older version of protoc which is
  18#error incompatible with your Protocol Buffer headers. Please
  19#error regenerate this file with a newer version of protoc.
  20#endif
  21
  22#include <google/protobuf/port_undef.inc>
  23#include <google/protobuf/io/coded_stream.h>
  24#include <google/protobuf/arena.h>
  25#include <google/protobuf/arenastring.h>
  26#include <google/protobuf/generated_message_util.h>
  27#include <google/protobuf/metadata_lite.h>
  28#include <google/protobuf/generated_message_reflection.h>
  29#include <google/protobuf/message.h>
  30#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  31#include <google/protobuf/extension_set.h>  // IWYU pragma: export
  32#include <google/protobuf/generated_enum_reflection.h>
  33#include <google/protobuf/unknown_field_set.h>
  34// @@protoc_insertion_point(includes)
  35#include <google/protobuf/port_def.inc>
  36#define PROTOBUF_INTERNAL_EXPORT_hello_2eproto
  37PROTOBUF_NAMESPACE_OPEN
  38namespace internal {
  39class AnyMetadata;
  40}  // namespace internal
  41PROTOBUF_NAMESPACE_CLOSE
  42
  43// Internal implementation detail -- do not use these members.
  44struct TableStruct_hello_2eproto {
  45  static const uint32_t offsets[];
  46};
  47extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_hello_2eproto;
  48namespace tutorial {
  49class AddressBook;
  50struct AddressBookDefaultTypeInternal;
  51extern AddressBookDefaultTypeInternal _AddressBook_default_instance_;
  52class Person;
  53struct PersonDefaultTypeInternal;
  54extern PersonDefaultTypeInternal _Person_default_instance_;
  55class Person_PhoneNumber;
  56struct Person_PhoneNumberDefaultTypeInternal;
  57extern Person_PhoneNumberDefaultTypeInternal _Person_PhoneNumber_default_instance_;
  58}  // namespace tutorial
  59PROTOBUF_NAMESPACE_OPEN
  60template<> ::tutorial::AddressBook* Arena::CreateMaybeMessage<::tutorial::AddressBook>(Arena*);
  61template<> ::tutorial::Person* Arena::CreateMaybeMessage<::tutorial::Person>(Arena*);
  62template<> ::tutorial::Person_PhoneNumber* Arena::CreateMaybeMessage<::tutorial::Person_PhoneNumber>(Arena*);
  63PROTOBUF_NAMESPACE_CLOSE
  64namespace tutorial {
  65
  66enum Person_PhoneType : int {
  67  Person_PhoneType_MOBILE = 0,
  68  Person_PhoneType_HOME = 1,
  69  Person_PhoneType_WORK = 2
  70};
  71bool Person_PhoneType_IsValid(int value);
  72constexpr Person_PhoneType Person_PhoneType_PhoneType_MIN = Person_PhoneType_MOBILE;
  73constexpr Person_PhoneType Person_PhoneType_PhoneType_MAX = Person_PhoneType_WORK;
  74constexpr int Person_PhoneType_PhoneType_ARRAYSIZE = Person_PhoneType_PhoneType_MAX + 1;
  75
  76const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Person_PhoneType_descriptor();
  77template<typename T>
  78inline const std::string& Person_PhoneType_Name(T enum_t_value) {
  79  static_assert(::std::is_same<T, Person_PhoneType>::value ||
  80    ::std::is_integral<T>::value,
  81    "Incorrect type passed to function Person_PhoneType_Name.");
  82  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
  83    Person_PhoneType_descriptor(), enum_t_value);
  84}
  85inline bool Person_PhoneType_Parse(
  86    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Person_PhoneType* value) {
  87  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Person_PhoneType>(
  88    Person_PhoneType_descriptor(), name, value);
  89}
  90// ===================================================================
  91
  92class Person_PhoneNumber final :
  93    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tutorial.Person.PhoneNumber) */ {
  94 public:
  95  inline Person_PhoneNumber() : Person_PhoneNumber(nullptr) {}
  96  ~Person_PhoneNumber() override;
  97  explicit PROTOBUF_CONSTEXPR Person_PhoneNumber(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  98
  99  Person_PhoneNumber(const Person_PhoneNumber& from);
 100  Person_PhoneNumber(Person_PhoneNumber&& from) noexcept
 101    : Person_PhoneNumber() {
 102    *this = ::std::move(from);
 103  }
 104
 105  inline Person_PhoneNumber& operator=(const Person_PhoneNumber& from) {
 106    CopyFrom(from);
 107    return *this;
 108  }
 109  inline Person_PhoneNumber& operator=(Person_PhoneNumber&& from) noexcept {
 110    if (this == &from) return *this;
 111    if (GetOwningArena() == from.GetOwningArena()
 112  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 113        && GetOwningArena() != nullptr
 114  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 115    ) {
 116      InternalSwap(&from);
 117    } else {
 118      CopyFrom(from);
 119    }
 120    return *this;
 121  }
 122
 123  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
 124    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
 125  }
 126  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
 127    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 128  }
 129
 130  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
 131    return GetDescriptor();
 132  }
 133  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
 134    return default_instance().GetMetadata().descriptor;
 135  }
 136  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
 137    return default_instance().GetMetadata().reflection;
 138  }
 139  static const Person_PhoneNumber& default_instance() {
 140    return *internal_default_instance();
 141  }
 142  static inline const Person_PhoneNumber* internal_default_instance() {
 143    return reinterpret_cast<const Person_PhoneNumber*>(
 144               &_Person_PhoneNumber_default_instance_);
 145  }
 146  static constexpr int kIndexInFileMessages =
 147    0;
 148
 149  friend void swap(Person_PhoneNumber& a, Person_PhoneNumber& b) {
 150    a.Swap(&b);
 151  }
 152  inline void Swap(Person_PhoneNumber* other) {
 153    if (other == this) return;
 154  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
 155    if (GetOwningArena() != nullptr &&
 156        GetOwningArena() == other->GetOwningArena()) {
 157   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
 158    if (GetOwningArena() == other->GetOwningArena()) {
 159  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
 160      InternalSwap(other);
 161    } else {
 162      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
 163    }
 164  }
 165  void UnsafeArenaSwap(Person_PhoneNumber* other) {
 166    if (other == this) return;
 167    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
 168    InternalSwap(other);
 169  }
 170
 171  // implements Message ----------------------------------------------
 172
 173  Person_PhoneNumber* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 174    return CreateMaybeMessage<Person_PhoneNumber>(arena);
 175  }
 176  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
 177  void CopyFrom(const Person_PhoneNumber& from);
 178  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
 179  void MergeFrom(const Person_PhoneNumber& from);
 180  private:
 181  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
 182  public:
 183  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
 184  bool IsInitialized() const final;
 185
 186  size_t ByteSizeLong() const final;
 187  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
 188  uint8_t* _InternalSerialize(
 189      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
 190  int GetCachedSize() const final { return _cached_size_.Get(); }
 191
 192  private:
 193  void SharedCtor();
 194  void SharedDtor();
 195  void SetCachedSize(int size) const final;
 196  void InternalSwap(Person_PhoneNumber* other);
 197
 198  private:
 199  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
 200  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
 201    return "tutorial.Person.PhoneNumber";
 202  }
 203  protected:
 204  explicit Person_PhoneNumber(::PROTOBUF_NAMESPACE_ID::Arena* arena,
 205                       bool is_message_owned = false);
 206  public:
 207
 208  static const ClassData _class_data_;
 209  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
 210
 211  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
 212
 213  // nested types ----------------------------------------------------
 214
 215  // accessors -------------------------------------------------------
 216
 217  enum : int {
 218    kNumberFieldNumber = 1,
 219    kTypeFieldNumber = 2,
 220  };
 221  // optional string number = 1;
 222  bool has_number() const;
 223  private:
 224  bool _internal_has_number() const;
 225  public:
 226  void clear_number();
 227  const std::string& number() const;
 228  template <typename ArgT0 = const std::string&, typename... ArgT>
 229  void set_number(ArgT0&& arg0, ArgT... args);
 230  std::string* mutable_number();
 231  PROTOBUF_NODISCARD std::string* release_number();
 232  void set_allocated_number(std::string* number);
 233  private:
 234  const std::string& _internal_number() const;
 235  inline PROTOBUF_ALWAYS_INLINE void _internal_set_number(const std::string& value);
 236  std::string* _internal_mutable_number();
 237  public:
 238
 239  // optional .tutorial.Person.PhoneType type = 2 [default = HOME];
 240  bool has_type() const;
 241  private:
 242  bool _internal_has_type() const;
 243  public:
 244  void clear_type();
 245  ::tutorial::Person_PhoneType type() const;
 246  void set_type(::tutorial::Person_PhoneType value);
 247  private:
 248  ::tutorial::Person_PhoneType _internal_type() const;
 249  void _internal_set_type(::tutorial::Person_PhoneType value);
 250  public:
 251
 252  // @@protoc_insertion_point(class_scope:tutorial.Person.PhoneNumber)
 253 private:
 254  class _Internal;
 255
 256  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
 257  typedef void InternalArenaConstructable_;
 258  typedef void DestructorSkippable_;
 259  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
 260  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
 261  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr number_;
 262  int type_;
 263  friend struct ::TableStruct_hello_2eproto;
 264};
 265// -------------------------------------------------------------------
 266
 267class Person final :
 268    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tutorial.Person) */ {
 269 public:
 270  inline Person() : Person(nullptr) {}
 271  ~Person() override;
 272  explicit PROTOBUF_CONSTEXPR Person(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
 273
 274  Person(const Person& from);
 275  Person(Person&& from) noexcept
 276    : Person() {
 277    *this = ::std::move(from);
 278  }
 279
 280  inline Person& operator=(const Person& from) {
 281    CopyFrom(from);
 282    return *this;
 283  }
 284  inline Person& operator=(Person&& from) noexcept {
 285    if (this == &from) return *this;
 286    if (GetOwningArena() == from.GetOwningArena()
 287  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 288        && GetOwningArena() != nullptr
 289  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 290    ) {
 291      InternalSwap(&from);
 292    } else {
 293      CopyFrom(from);
 294    }
 295    return *this;
 296  }
 297
 298  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
 299    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
 300  }
 301  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
 302    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 303  }
 304
 305  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
 306    return GetDescriptor();
 307  }
 308  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
 309    return default_instance().GetMetadata().descriptor;
 310  }
 311  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
 312    return default_instance().GetMetadata().reflection;
 313  }
 314  static const Person& default_instance() {
 315    return *internal_default_instance();
 316  }
 317  static inline const Person* internal_default_instance() {
 318    return reinterpret_cast<const Person*>(
 319               &_Person_default_instance_);
 320  }
 321  static constexpr int kIndexInFileMessages =
 322    1;
 323
 324  friend void swap(Person& a, Person& b) {
 325    a.Swap(&b);
 326  }
 327  inline void Swap(Person* other) {
 328    if (other == this) return;
 329  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
 330    if (GetOwningArena() != nullptr &&
 331        GetOwningArena() == other->GetOwningArena()) {
 332   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
 333    if (GetOwningArena() == other->GetOwningArena()) {
 334  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
 335      InternalSwap(other);
 336    } else {
 337      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
 338    }
 339  }
 340  void UnsafeArenaSwap(Person* other) {
 341    if (other == this) return;
 342    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
 343    InternalSwap(other);
 344  }
 345
 346  // implements Message ----------------------------------------------
 347
 348  Person* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 349    return CreateMaybeMessage<Person>(arena);
 350  }
 351  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
 352  void CopyFrom(const Person& from);
 353  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
 354  void MergeFrom(const Person& from);
 355  private:
 356  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
 357  public:
 358  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
 359  bool IsInitialized() const final;
 360
 361  size_t ByteSizeLong() const final;
 362  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
 363  uint8_t* _InternalSerialize(
 364      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
 365  int GetCachedSize() const final { return _cached_size_.Get(); }
 366
 367  private:
 368  void SharedCtor();
 369  void SharedDtor();
 370  void SetCachedSize(int size) const final;
 371  void InternalSwap(Person* other);
 372
 373  private:
 374  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
 375  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
 376    return "tutorial.Person";
 377  }
 378  protected:
 379  explicit Person(::PROTOBUF_NAMESPACE_ID::Arena* arena,
 380                       bool is_message_owned = false);
 381  public:
 382
 383  static const ClassData _class_data_;
 384  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
 385
 386  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
 387
 388  // nested types ----------------------------------------------------
 389
 390  typedef Person_PhoneNumber PhoneNumber;
 391
 392  typedef Person_PhoneType PhoneType;
 393  static constexpr PhoneType MOBILE =
 394    Person_PhoneType_MOBILE;
 395  static constexpr PhoneType HOME =
 396    Person_PhoneType_HOME;
 397  static constexpr PhoneType WORK =
 398    Person_PhoneType_WORK;
 399  static inline bool PhoneType_IsValid(int value) {
 400    return Person_PhoneType_IsValid(value);
 401  }
 402  static constexpr PhoneType PhoneType_MIN =
 403    Person_PhoneType_PhoneType_MIN;
 404  static constexpr PhoneType PhoneType_MAX =
 405    Person_PhoneType_PhoneType_MAX;
 406  static constexpr int PhoneType_ARRAYSIZE =
 407    Person_PhoneType_PhoneType_ARRAYSIZE;
 408  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
 409  PhoneType_descriptor() {
 410    return Person_PhoneType_descriptor();
 411  }
 412  template<typename T>
 413  static inline const std::string& PhoneType_Name(T enum_t_value) {
 414    static_assert(::std::is_same<T, PhoneType>::value ||
 415      ::std::is_integral<T>::value,
 416      "Incorrect type passed to function PhoneType_Name.");
 417    return Person_PhoneType_Name(enum_t_value);
 418  }
 419  static inline bool PhoneType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
 420      PhoneType* value) {
 421    return Person_PhoneType_Parse(name, value);
 422  }
 423
 424  // accessors -------------------------------------------------------
 425
 426  enum : int {
 427    kPhonesFieldNumber = 4,
 428    kNameFieldNumber = 1,
 429    kEmailFieldNumber = 3,
 430    kIdFieldNumber = 2,
 431  };
 432  // repeated .tutorial.Person.PhoneNumber phones = 4;
 433  int phones_size() const;
 434  private:
 435  int _internal_phones_size() const;
 436  public:
 437  void clear_phones();
 438  ::tutorial::Person_PhoneNumber* mutable_phones(int index);
 439  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person_PhoneNumber >*
 440      mutable_phones();
 441  private:
 442  const ::tutorial::Person_PhoneNumber& _internal_phones(int index) const;
 443  ::tutorial::Person_PhoneNumber* _internal_add_phones();
 444  public:
 445  const ::tutorial::Person_PhoneNumber& phones(int index) const;
 446  ::tutorial::Person_PhoneNumber* add_phones();
 447  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person_PhoneNumber >&
 448      phones() const;
 449
 450  // optional string name = 1;
 451  bool has_name() const;
 452  private:
 453  bool _internal_has_name() const;
 454  public:
 455  void clear_name();
 456  const std::string& name() const;
 457  template <typename ArgT0 = const std::string&, typename... ArgT>
 458  void set_name(ArgT0&& arg0, ArgT... args);
 459  std::string* mutable_name();
 460  PROTOBUF_NODISCARD std::string* release_name();
 461  void set_allocated_name(std::string* name);
 462  private:
 463  const std::string& _internal_name() const;
 464  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
 465  std::string* _internal_mutable_name();
 466  public:
 467
 468  // optional string email = 3;
 469  bool has_email() const;
 470  private:
 471  bool _internal_has_email() const;
 472  public:
 473  void clear_email();
 474  const std::string& email() const;
 475  template <typename ArgT0 = const std::string&, typename... ArgT>
 476  void set_email(ArgT0&& arg0, ArgT... args);
 477  std::string* mutable_email();
 478  PROTOBUF_NODISCARD std::string* release_email();
 479  void set_allocated_email(std::string* email);
 480  private:
 481  const std::string& _internal_email() const;
 482  inline PROTOBUF_ALWAYS_INLINE void _internal_set_email(const std::string& value);
 483  std::string* _internal_mutable_email();
 484  public:
 485
 486  // optional int32 id = 2;
 487  bool has_id() const;
 488  private:
 489  bool _internal_has_id() const;
 490  public:
 491  void clear_id();
 492  int32_t id() const;
 493  void set_id(int32_t value);
 494  private:
 495  int32_t _internal_id() const;
 496  void _internal_set_id(int32_t value);
 497  public:
 498
 499  // @@protoc_insertion_point(class_scope:tutorial.Person)
 500 private:
 501  class _Internal;
 502
 503  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
 504  typedef void InternalArenaConstructable_;
 505  typedef void DestructorSkippable_;
 506  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
 507  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
 508  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person_PhoneNumber > phones_;
 509  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
 510  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr email_;
 511  int32_t id_;
 512  friend struct ::TableStruct_hello_2eproto;
 513};
 514// -------------------------------------------------------------------
 515
 516class AddressBook final :
 517    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tutorial.AddressBook) */ {
 518 public:
 519  inline AddressBook() : AddressBook(nullptr) {}
 520  ~AddressBook() override;
 521  explicit PROTOBUF_CONSTEXPR AddressBook(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
 522
 523  AddressBook(const AddressBook& from);
 524  AddressBook(AddressBook&& from) noexcept
 525    : AddressBook() {
 526    *this = ::std::move(from);
 527  }
 528
 529  inline AddressBook& operator=(const AddressBook& from) {
 530    CopyFrom(from);
 531    return *this;
 532  }
 533  inline AddressBook& operator=(AddressBook&& from) noexcept {
 534    if (this == &from) return *this;
 535    if (GetOwningArena() == from.GetOwningArena()
 536  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 537        && GetOwningArena() != nullptr
 538  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 539    ) {
 540      InternalSwap(&from);
 541    } else {
 542      CopyFrom(from);
 543    }
 544    return *this;
 545  }
 546
 547  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
 548    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
 549  }
 550  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
 551    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 552  }
 553
 554  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
 555    return GetDescriptor();
 556  }
 557  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
 558    return default_instance().GetMetadata().descriptor;
 559  }
 560  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
 561    return default_instance().GetMetadata().reflection;
 562  }
 563  static const AddressBook& default_instance() {
 564    return *internal_default_instance();
 565  }
 566  static inline const AddressBook* internal_default_instance() {
 567    return reinterpret_cast<const AddressBook*>(
 568               &_AddressBook_default_instance_);
 569  }
 570  static constexpr int kIndexInFileMessages =
 571    2;
 572
 573  friend void swap(AddressBook& a, AddressBook& b) {
 574    a.Swap(&b);
 575  }
 576  inline void Swap(AddressBook* other) {
 577    if (other == this) return;
 578  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
 579    if (GetOwningArena() != nullptr &&
 580        GetOwningArena() == other->GetOwningArena()) {
 581   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
 582    if (GetOwningArena() == other->GetOwningArena()) {
 583  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
 584      InternalSwap(other);
 585    } else {
 586      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
 587    }
 588  }
 589  void UnsafeArenaSwap(AddressBook* other) {
 590    if (other == this) return;
 591    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
 592    InternalSwap(other);
 593  }
 594
 595  // implements Message ----------------------------------------------
 596
 597  AddressBook* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 598    return CreateMaybeMessage<AddressBook>(arena);
 599  }
 600  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
 601  void CopyFrom(const AddressBook& from);
 602  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
 603  void MergeFrom(const AddressBook& from);
 604  private:
 605  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
 606  public:
 607  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
 608  bool IsInitialized() const final;
 609
 610  size_t ByteSizeLong() const final;
 611  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
 612  uint8_t* _InternalSerialize(
 613      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
 614  int GetCachedSize() const final { return _cached_size_.Get(); }
 615
 616  private:
 617  void SharedCtor();
 618  void SharedDtor();
 619  void SetCachedSize(int size) const final;
 620  void InternalSwap(AddressBook* other);
 621
 622  private:
 623  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
 624  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
 625    return "tutorial.AddressBook";
 626  }
 627  protected:
 628  explicit AddressBook(::PROTOBUF_NAMESPACE_ID::Arena* arena,
 629                       bool is_message_owned = false);
 630  public:
 631
 632  static const ClassData _class_data_;
 633  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
 634
 635  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
 636
 637  // nested types ----------------------------------------------------
 638
 639  // accessors -------------------------------------------------------
 640
 641  enum : int {
 642    kPeopleFieldNumber = 1,
 643  };
 644  // repeated .tutorial.Person people = 1;
 645  int people_size() const;
 646  private:
 647  int _internal_people_size() const;
 648  public:
 649  void clear_people();
 650  ::tutorial::Person* mutable_people(int index);
 651  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person >*
 652      mutable_people();
 653  private:
 654  const ::tutorial::Person& _internal_people(int index) const;
 655  ::tutorial::Person* _internal_add_people();
 656  public:
 657  const ::tutorial::Person& people(int index) const;
 658  ::tutorial::Person* add_people();
 659  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person >&
 660      people() const;
 661
 662  // @@protoc_insertion_point(class_scope:tutorial.AddressBook)
 663 private:
 664  class _Internal;
 665
 666  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
 667  typedef void InternalArenaConstructable_;
 668  typedef void DestructorSkippable_;
 669  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person > people_;
 670  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
 671  friend struct ::TableStruct_hello_2eproto;
 672};
 673// ===================================================================
 674
 675
 676// ===================================================================
 677
 678#ifdef __GNUC__
 679  #pragma GCC diagnostic push
 680  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
 681#endif  // __GNUC__
 682// Person_PhoneNumber
 683
 684// optional string number = 1;
 685inline bool Person_PhoneNumber::_internal_has_number() const {
 686  bool value = (_has_bits_[0] & 0x00000001u) != 0;
 687  return value;
 688}
 689inline bool Person_PhoneNumber::has_number() const {
 690  return _internal_has_number();
 691}
 692inline void Person_PhoneNumber::clear_number() {
 693  number_.ClearToEmpty();
 694  _has_bits_[0] &= ~0x00000001u;
 695}
 696inline const std::string& Person_PhoneNumber::number() const {
 697  // @@protoc_insertion_point(field_get:tutorial.Person.PhoneNumber.number)
 698  return _internal_number();
 699}
 700template <typename ArgT0, typename... ArgT>
 701inline PROTOBUF_ALWAYS_INLINE
 702void Person_PhoneNumber::set_number(ArgT0&& arg0, ArgT... args) {
 703 _has_bits_[0] |= 0x00000001u;
 704 number_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
 705  // @@protoc_insertion_point(field_set:tutorial.Person.PhoneNumber.number)
 706}
 707inline std::string* Person_PhoneNumber::mutable_number() {
 708  std::string* _s = _internal_mutable_number();
 709  // @@protoc_insertion_point(field_mutable:tutorial.Person.PhoneNumber.number)
 710  return _s;
 711}
 712inline const std::string& Person_PhoneNumber::_internal_number() const {
 713  return number_.Get();
 714}
 715inline void Person_PhoneNumber::_internal_set_number(const std::string& value) {
 716  _has_bits_[0] |= 0x00000001u;
 717  number_.Set(value, GetArenaForAllocation());
 718}
 719inline std::string* Person_PhoneNumber::_internal_mutable_number() {
 720  _has_bits_[0] |= 0x00000001u;
 721  return number_.Mutable(GetArenaForAllocation());
 722}
 723inline std::string* Person_PhoneNumber::release_number() {
 724  // @@protoc_insertion_point(field_release:tutorial.Person.PhoneNumber.number)
 725  if (!_internal_has_number()) {
 726    return nullptr;
 727  }
 728  _has_bits_[0] &= ~0x00000001u;
 729  auto* p = number_.Release();
 730#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 731  if (number_.IsDefault()) {
 732    number_.Set("", GetArenaForAllocation());
 733  }
 734#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 735  return p;
 736}
 737inline void Person_PhoneNumber::set_allocated_number(std::string* number) {
 738  if (number != nullptr) {
 739    _has_bits_[0] |= 0x00000001u;
 740  } else {
 741    _has_bits_[0] &= ~0x00000001u;
 742  }
 743  number_.SetAllocated(number, GetArenaForAllocation());
 744#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 745  if (number_.IsDefault()) {
 746    number_.Set("", GetArenaForAllocation());
 747  }
 748#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 749  // @@protoc_insertion_point(field_set_allocated:tutorial.Person.PhoneNumber.number)
 750}
 751
 752// optional .tutorial.Person.PhoneType type = 2 [default = HOME];
 753inline bool Person_PhoneNumber::_internal_has_type() const {
 754  bool value = (_has_bits_[0] & 0x00000002u) != 0;
 755  return value;
 756}
 757inline bool Person_PhoneNumber::has_type() const {
 758  return _internal_has_type();
 759}
 760inline void Person_PhoneNumber::clear_type() {
 761  type_ = 1;
 762  _has_bits_[0] &= ~0x00000002u;
 763}
 764inline ::tutorial::Person_PhoneType Person_PhoneNumber::_internal_type() const {
 765  return static_cast< ::tutorial::Person_PhoneType >(type_);
 766}
 767inline ::tutorial::Person_PhoneType Person_PhoneNumber::type() const {
 768  // @@protoc_insertion_point(field_get:tutorial.Person.PhoneNumber.type)
 769  return _internal_type();
 770}
 771inline void Person_PhoneNumber::_internal_set_type(::tutorial::Person_PhoneType value) {
 772  assert(::tutorial::Person_PhoneType_IsValid(value));
 773  _has_bits_[0] |= 0x00000002u;
 774  type_ = value;
 775}
 776inline void Person_PhoneNumber::set_type(::tutorial::Person_PhoneType value) {
 777  _internal_set_type(value);
 778  // @@protoc_insertion_point(field_set:tutorial.Person.PhoneNumber.type)
 779}
 780
 781// -------------------------------------------------------------------
 782
 783// Person
 784
 785// optional string name = 1;
 786inline bool Person::_internal_has_name() const {
 787  bool value = (_has_bits_[0] & 0x00000001u) != 0;
 788  return value;
 789}
 790inline bool Person::has_name() const {
 791  return _internal_has_name();
 792}
 793inline void Person::clear_name() {
 794  name_.ClearToEmpty();
 795  _has_bits_[0] &= ~0x00000001u;
 796}
 797inline const std::string& Person::name() const {
 798  // @@protoc_insertion_point(field_get:tutorial.Person.name)
 799  return _internal_name();
 800}
 801template <typename ArgT0, typename... ArgT>
 802inline PROTOBUF_ALWAYS_INLINE
 803void Person::set_name(ArgT0&& arg0, ArgT... args) {
 804 _has_bits_[0] |= 0x00000001u;
 805 name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
 806  // @@protoc_insertion_point(field_set:tutorial.Person.name)
 807}
 808inline std::string* Person::mutable_name() {
 809  std::string* _s = _internal_mutable_name();
 810  // @@protoc_insertion_point(field_mutable:tutorial.Person.name)
 811  return _s;
 812}
 813inline const std::string& Person::_internal_name() const {
 814  return name_.Get();
 815}
 816inline void Person::_internal_set_name(const std::string& value) {
 817  _has_bits_[0] |= 0x00000001u;
 818  name_.Set(value, GetArenaForAllocation());
 819}
 820inline std::string* Person::_internal_mutable_name() {
 821  _has_bits_[0] |= 0x00000001u;
 822  return name_.Mutable(GetArenaForAllocation());
 823}
 824inline std::string* Person::release_name() {
 825  // @@protoc_insertion_point(field_release:tutorial.Person.name)
 826  if (!_internal_has_name()) {
 827    return nullptr;
 828  }
 829  _has_bits_[0] &= ~0x00000001u;
 830  auto* p = name_.Release();
 831#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 832  if (name_.IsDefault()) {
 833    name_.Set("", GetArenaForAllocation());
 834  }
 835#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 836  return p;
 837}
 838inline void Person::set_allocated_name(std::string* name) {
 839  if (name != nullptr) {
 840    _has_bits_[0] |= 0x00000001u;
 841  } else {
 842    _has_bits_[0] &= ~0x00000001u;
 843  }
 844  name_.SetAllocated(name, GetArenaForAllocation());
 845#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 846  if (name_.IsDefault()) {
 847    name_.Set("", GetArenaForAllocation());
 848  }
 849#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 850  // @@protoc_insertion_point(field_set_allocated:tutorial.Person.name)
 851}
 852
 853// optional int32 id = 2;
 854inline bool Person::_internal_has_id() const {
 855  bool value = (_has_bits_[0] & 0x00000004u) != 0;
 856  return value;
 857}
 858inline bool Person::has_id() const {
 859  return _internal_has_id();
 860}
 861inline void Person::clear_id() {
 862  id_ = 0;
 863  _has_bits_[0] &= ~0x00000004u;
 864}
 865inline int32_t Person::_internal_id() const {
 866  return id_;
 867}
 868inline int32_t Person::id() const {
 869  // @@protoc_insertion_point(field_get:tutorial.Person.id)
 870  return _internal_id();
 871}
 872inline void Person::_internal_set_id(int32_t value) {
 873  _has_bits_[0] |= 0x00000004u;
 874  id_ = value;
 875}
 876inline void Person::set_id(int32_t value) {
 877  _internal_set_id(value);
 878  // @@protoc_insertion_point(field_set:tutorial.Person.id)
 879}
 880
 881// optional string email = 3;
 882inline bool Person::_internal_has_email() const {
 883  bool value = (_has_bits_[0] & 0x00000002u) != 0;
 884  return value;
 885}
 886inline bool Person::has_email() const {
 887  return _internal_has_email();
 888}
 889inline void Person::clear_email() {
 890  email_.ClearToEmpty();
 891  _has_bits_[0] &= ~0x00000002u;
 892}
 893inline const std::string& Person::email() const {
 894  // @@protoc_insertion_point(field_get:tutorial.Person.email)
 895  return _internal_email();
 896}
 897template <typename ArgT0, typename... ArgT>
 898inline PROTOBUF_ALWAYS_INLINE
 899void Person::set_email(ArgT0&& arg0, ArgT... args) {
 900 _has_bits_[0] |= 0x00000002u;
 901 email_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
 902  // @@protoc_insertion_point(field_set:tutorial.Person.email)
 903}
 904inline std::string* Person::mutable_email() {
 905  std::string* _s = _internal_mutable_email();
 906  // @@protoc_insertion_point(field_mutable:tutorial.Person.email)
 907  return _s;
 908}
 909inline const std::string& Person::_internal_email() const {
 910  return email_.Get();
 911}
 912inline void Person::_internal_set_email(const std::string& value) {
 913  _has_bits_[0] |= 0x00000002u;
 914  email_.Set(value, GetArenaForAllocation());
 915}
 916inline std::string* Person::_internal_mutable_email() {
 917  _has_bits_[0] |= 0x00000002u;
 918  return email_.Mutable(GetArenaForAllocation());
 919}
 920inline std::string* Person::release_email() {
 921  // @@protoc_insertion_point(field_release:tutorial.Person.email)
 922  if (!_internal_has_email()) {
 923    return nullptr;
 924  }
 925  _has_bits_[0] &= ~0x00000002u;
 926  auto* p = email_.Release();
 927#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 928  if (email_.IsDefault()) {
 929    email_.Set("", GetArenaForAllocation());
 930  }
 931#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 932  return p;
 933}
 934inline void Person::set_allocated_email(std::string* email) {
 935  if (email != nullptr) {
 936    _has_bits_[0] |= 0x00000002u;
 937  } else {
 938    _has_bits_[0] &= ~0x00000002u;
 939  }
 940  email_.SetAllocated(email, GetArenaForAllocation());
 941#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 942  if (email_.IsDefault()) {
 943    email_.Set("", GetArenaForAllocation());
 944  }
 945#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 946  // @@protoc_insertion_point(field_set_allocated:tutorial.Person.email)
 947}
 948
 949// repeated .tutorial.Person.PhoneNumber phones = 4;
 950inline int Person::_internal_phones_size() const {
 951  return phones_.size();
 952}
 953inline int Person::phones_size() const {
 954  return _internal_phones_size();
 955}
 956inline void Person::clear_phones() {
 957  phones_.Clear();
 958}
 959inline ::tutorial::Person_PhoneNumber* Person::mutable_phones(int index) {
 960  // @@protoc_insertion_point(field_mutable:tutorial.Person.phones)
 961  return phones_.Mutable(index);
 962}
 963inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person_PhoneNumber >*
 964Person::mutable_phones() {
 965  // @@protoc_insertion_point(field_mutable_list:tutorial.Person.phones)
 966  return &phones_;
 967}
 968inline const ::tutorial::Person_PhoneNumber& Person::_internal_phones(int index) const {
 969  return phones_.Get(index);
 970}
 971inline const ::tutorial::Person_PhoneNumber& Person::phones(int index) const {
 972  // @@protoc_insertion_point(field_get:tutorial.Person.phones)
 973  return _internal_phones(index);
 974}
 975inline ::tutorial::Person_PhoneNumber* Person::_internal_add_phones() {
 976  return phones_.Add();
 977}
 978inline ::tutorial::Person_PhoneNumber* Person::add_phones() {
 979  ::tutorial::Person_PhoneNumber* _add = _internal_add_phones();
 980  // @@protoc_insertion_point(field_add:tutorial.Person.phones)
 981  return _add;
 982}
 983inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person_PhoneNumber >&
 984Person::phones() const {
 985  // @@protoc_insertion_point(field_list:tutorial.Person.phones)
 986  return phones_;
 987}
 988
 989// -------------------------------------------------------------------
 990
 991// AddressBook
 992
 993// repeated .tutorial.Person people = 1;
 994inline int AddressBook::_internal_people_size() const {
 995  return people_.size();
 996}
 997inline int AddressBook::people_size() const {
 998  return _internal_people_size();
 999}
1000inline void AddressBook::clear_people() {
1001  people_.Clear();
1002}
1003inline ::tutorial::Person* AddressBook::mutable_people(int index) {
1004  // @@protoc_insertion_point(field_mutable:tutorial.AddressBook.people)
1005  return people_.Mutable(index);
1006}
1007inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person >*
1008AddressBook::mutable_people() {
1009  // @@protoc_insertion_point(field_mutable_list:tutorial.AddressBook.people)
1010  return &people_;
1011}
1012inline const ::tutorial::Person& AddressBook::_internal_people(int index) const {
1013  return people_.Get(index);
1014}
1015inline const ::tutorial::Person& AddressBook::people(int index) const {
1016  // @@protoc_insertion_point(field_get:tutorial.AddressBook.people)
1017  return _internal_people(index);
1018}
1019inline ::tutorial::Person* AddressBook::_internal_add_people() {
1020  return people_.Add();
1021}
1022inline ::tutorial::Person* AddressBook::add_people() {
1023  ::tutorial::Person* _add = _internal_add_people();
1024  // @@protoc_insertion_point(field_add:tutorial.AddressBook.people)
1025  return _add;
1026}
1027inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::tutorial::Person >&
1028AddressBook::people() const {
1029  // @@protoc_insertion_point(field_list:tutorial.AddressBook.people)
1030  return people_;
1031}
1032
1033#ifdef __GNUC__
1034  #pragma GCC diagnostic pop
1035#endif  // __GNUC__
1036// -------------------------------------------------------------------
1037
1038// -------------------------------------------------------------------
1039
1040
1041// @@protoc_insertion_point(namespace_scope)
1042
1043}  // namespace tutorial
1044
1045PROTOBUF_NAMESPACE_OPEN
1046
1047template <> struct is_proto_enum< ::tutorial::Person_PhoneType> : ::std::true_type {};
1048template <>
1049inline const EnumDescriptor* GetEnumDescriptor< ::tutorial::Person_PhoneType>() {
1050  return ::tutorial::Person_PhoneType_descriptor();
1051}
1052
1053PROTOBUF_NAMESPACE_CLOSE
1054
1055// @@protoc_insertion_point(global_scope)
1056
1057#include <google/protobuf/port_undef.inc>
1058#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_hello_2eproto