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