text: /*
   * Copyright 2018 Google
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: firestore/local/maybe_document.proto
  
  #ifndef PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED
  #define PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED
  
  #include <string>
  
  #include <google/protobuf/stubs/common.h>
  
  #if GOOGLE_PROTOBUF_VERSION < 3005000
  #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 3005001 < GOOGLE_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/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/metadata.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/firestore/v1beta1/document.pb.h"
  #include <google/protobuf/timestamp.pb.h>
  // @@protoc_insertion_point(includes)
  
  namespace protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto {
  // Internal implementation detail -- do not use these members.
  struct TableStruct {
    static const ::google::protobuf::internal::ParseTableField entries[];
    static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
    static const ::google::protobuf::internal::ParseTable schema[2];
    static const ::google::protobuf::internal::FieldMetadata field_metadata[];
    static const ::google::protobuf::internal::SerializationTable serialization_table[];
    static const ::google::protobuf::uint32 offsets[];
  };
  void AddDescriptors();
  void InitDefaultsNoDocumentImpl();
  void InitDefaultsNoDocument();
  void InitDefaultsMaybeDocumentImpl();
  void InitDefaultsMaybeDocument();
  inline void InitDefaults() {
    InitDefaultsNoDocument();
    InitDefaultsMaybeDocument();
  }
  }  // namespace protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto
  namespace firestore {
  namespace client {
  class MaybeDocument;
  class MaybeDocumentDefaultTypeInternal;
  extern MaybeDocumentDefaultTypeInternal _MaybeDocument_default_instance_;
  class NoDocument;
  class NoDocumentDefaultTypeInternal;
  extern NoDocumentDefaultTypeInternal _NoDocument_default_instance_;
  }  // namespace client
  }  // namespace firestore
  namespace firestore {
  namespace client {
  
  // ===================================================================
  
  class NoDocument : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:firestore.client.NoDocument) */ {
   public:
    NoDocument();
    virtual ~NoDocument();
  
    NoDocument(const NoDocument& from);
  
    inline NoDocument& operator=(const NoDocument& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    NoDocument(NoDocument&& from) noexcept
      : NoDocument() {
      *this = ::std::move(from);
    }
  
    inline NoDocument& operator=(NoDocument&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    static const ::google::protobuf::Descriptor* descriptor();
    static const NoDocument& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const NoDocument* internal_default_instance() {
      return reinterpret_cast<const NoDocument*>(
                 &_NoDocument_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      0;
  
    void Swap(NoDocument* other);
    friend void swap(NoDocument& a, NoDocument& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline NoDocument* New() const PROTOBUF_FINAL { return New(NULL); }
  
    NoDocument* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const NoDocument& from);
    void MergeFrom(const NoDocument& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(NoDocument* other);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return NULL;
    }
    inline void* MaybeArenaPtr() const {
      return NULL;
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    // string name = 1;
    void clear_name();
    static const int kNameFieldNumber = 1;
    const ::std::string& name() const;
    void set_name(const ::std::string& value);
    #if LANG_CXX11
    void set_name(::std::string&& value);
    #endif
    void set_name(const char* value);
    void set_name(const char* value, size_t size);
    ::std::string* mutable_name();
    ::std::string* release_name();
    void set_allocated_name(::std::string* name);
  
    // .google.protobuf.Timestamp read_time = 2;
    bool has_read_time() const;
    void clear_read_time();
    static const int kReadTimeFieldNumber = 2;
    const ::google::protobuf::Timestamp& read_time() const;
    ::google::protobuf::Timestamp* release_read_time();
    ::google::protobuf::Timestamp* mutable_read_time();
    void set_allocated_read_time(::google::protobuf::Timestamp* read_time);
  
    // @@protoc_insertion_point(class_scope:firestore.client.NoDocument)
   private:
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::Timestamp* read_time_;
    mutable int _cached_size_;
    friend struct ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::TableStruct;
    friend void ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::InitDefaultsNoDocumentImpl();
  };
  // -------------------------------------------------------------------
  
  class MaybeDocument : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:firestore.client.MaybeDocument) */ {
   public:
    MaybeDocument();
    virtual ~MaybeDocument();
  
    MaybeDocument(const MaybeDocument& from);
  
    inline MaybeDocument& operator=(const MaybeDocument& from) {
      CopyFrom(from);
      return *this;
    }
    #if LANG_CXX11
    MaybeDocument(MaybeDocument&& from) noexcept
      : MaybeDocument() {
      *this = ::std::move(from);
    }
  
    inline MaybeDocument& operator=(MaybeDocument&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
    #endif
    static const ::google::protobuf::Descriptor* descriptor();
    static const MaybeDocument& default_instance();
  
    enum DocumentTypeCase {
      kNoDocument = 1,
      kDocument = 2,
      DOCUMENT_TYPE_NOT_SET = 0,
    };
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const MaybeDocument* internal_default_instance() {
      return reinterpret_cast<const MaybeDocument*>(
                 &_MaybeDocument_default_instance_);
    }
    static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
      1;
  
    void Swap(MaybeDocument* other);
    friend void swap(MaybeDocument& a, MaybeDocument& b) {
      a.Swap(&b);
    }
  
    // implements Message ----------------------------------------------
  
    inline MaybeDocument* New() const PROTOBUF_FINAL { return New(NULL); }
  
    MaybeDocument* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
    void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
    void CopyFrom(const MaybeDocument& from);
    void MergeFrom(const MaybeDocument& from);
    void Clear() PROTOBUF_FINAL;
    bool IsInitialized() const PROTOBUF_FINAL;
  
    size_t ByteSizeLong() const PROTOBUF_FINAL;
    bool MergePartialFromCodedStream(
        ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
    void SerializeWithCachedSizes(
        ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
    ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
        bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
    int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const PROTOBUF_FINAL;
    void InternalSwap(MaybeDocument* other);
    private:
    inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
      return NULL;
    }
    inline void* MaybeArenaPtr() const {
      return NULL;
    }
    public:
  
    ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    // .firestore.client.NoDocument no_document = 1;
    bool has_no_document() const;
    void clear_no_document();
    static const int kNoDocumentFieldNumber = 1;
    const ::firestore::client::NoDocument& no_document() const;
    ::firestore::client::NoDocument* release_no_document();
    ::firestore::client::NoDocument* mutable_no_document();
    void set_allocated_no_document(::firestore::client::NoDocument* no_document);
  
    // .google.firestore.v1beta1.Document document = 2;
    bool has_document() const;
    void clear_document();
    static const int kDocumentFieldNumber = 2;
    const ::google::firestore::v1beta1::Document& document() const;
    ::google::firestore::v1beta1::Document* release_document();
    ::google::firestore::v1beta1::Document* mutable_document();
    void set_allocated_document(::google::firestore::v1beta1::Document* document);
  
    DocumentTypeCase document_type_case() const;
    // @@protoc_insertion_point(class_scope:firestore.client.MaybeDocument)
   private:
    void set_has_no_document();
    void set_has_document();
  
    inline bool has_document_type() const;
    void clear_document_type();
    inline void clear_has_document_type();
  
    ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
    union DocumentTypeUnion {
      DocumentTypeUnion() {}
      ::firestore::client::NoDocument* no_document_;
      ::google::firestore::v1beta1::Document* document_;
    } document_type_;
    mutable int _cached_size_;
    ::google::protobuf::uint32 _oneof_case_[1];
  
    friend struct ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::TableStruct;
    friend void ::protobuf_firestore_2flocal_2fmaybe_5fdocument_2eproto::InitDefaultsMaybeDocumentImpl();
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // NoDocument
  
  // string name = 1;
  inline void NoDocument::clear_name() {
    name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  inline const ::std::string& NoDocument::name() const {
    // @@protoc_insertion_point(field_get:firestore.client.NoDocument.name)
    return name_.GetNoArena();
  }
  inline void NoDocument::set_name(const ::std::string& value) {
    
    name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
    // @@protoc_insertion_point(field_set:firestore.client.NoDocument.name)
  }
  #if LANG_CXX11
  inline void NoDocument::set_name(::std::string&& value) {
    
    name_.SetNoArena(
      &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:firestore.client.NoDocument.name)
  }
  #endif
  inline void NoDocument::set_name(const char* value) {
    GOOGLE_DCHECK(value != NULL);
    
    name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:firestore.client.NoDocument.name)
  }
  inline void NoDocument::set_name(const char* value, size_t size) {
    
    name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:firestore.client.NoDocument.name)
  }
  inline ::std::string* NoDocument::mutable_name() {
    
    // @@protoc_insertion_point(field_mutable:firestore.client.NoDocument.name)
    return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  inline ::std::string* NoDocument::release_name() {
    // @@protoc_insertion_point(field_release:firestore.client.NoDocument.name)
    
    return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  inline void NoDocument::set_allocated_name(::std::string* name) {
    if (name != NULL) {
      
    } else {
      
    }
    name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
    // @@protoc_insertion_point(field_set_allocated:firestore.client.NoDocument.name)
  }
  
  // .google.protobuf.Timestamp read_time = 2;
  inline bool NoDocument::has_read_time() const {
    return this != internal_default_instance() && read_time_ != NULL;
  }
  inline const ::google::protobuf::Timestamp& NoDocument::read_time() const {
    const ::google::protobuf::Timestamp* p = read_time_;
    // @@protoc_insertion_point(field_get:firestore.client.NoDocument.read_time)
    return p != NULL ? *p : *reinterpret_cast<const ::google::protobuf::Timestamp*>(
        &::google::protobuf::_Timestamp_default_instance_);
  }
  inline ::google::protobuf::Timestamp* NoDocument::release_read_time() {
    // @@protoc_insertion_point(field_release:firestore.client.NoDocument.read_time)
    
    ::google::protobuf::Timestamp* temp = read_time_;
    read_time_ = NULL;
    return temp;
  }
  inline ::google::protobuf::Timestamp* NoDocument::mutable_read_time() {
    
    if (read_time_ == NULL) {
      read_time_ = new ::google::protobuf::Timestamp;
    }
    // @@protoc_insertion_point(field_mutable:firestore.client.NoDocument.read_time)
    return read_time_;
  }
  inline void NoDocument::set_allocated_read_time(::google::protobuf::Timestamp* read_time) {
    ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == NULL) {
      delete reinterpret_cast< ::google::protobuf::MessageLite*>(read_time_);
    }
    if (read_time) {
      ::google::protobuf::Arena* submessage_arena =
        reinterpret_cast< ::google::protobuf::MessageLite*>(read_time)->GetArena();
      if (message_arena != submessage_arena) {
        read_time = ::google::protobuf::internal::GetOwnedMessage(
            message_arena, read_time, submessage_arena);
      }
      
    } else {
      
    }
    read_time_ = read_time;
    // @@protoc_insertion_point(field_set_allocated:firestore.client.NoDocument.read_time)
  }
  
  // -------------------------------------------------------------------
  
  // MaybeDocument
  
  // .firestore.client.NoDocument no_document = 1;
  inline bool MaybeDocument::has_no_document() const {
    return document_type_case() == kNoDocument;
  }
  inline void MaybeDocument::set_has_no_document() {
    _oneof_case_[0] = kNoDocument;
  }
  inline void MaybeDocument::clear_no_document() {
    if (has_no_document()) {
      delete document_type_.no_document_;
      clear_has_document_type();
    }
  }
  inline ::firestore::client::NoDocument* MaybeDocument::release_no_document() {
    // @@protoc_insertion_point(field_release:firestore.client.MaybeDocument.no_document)
    if (has_no_document()) {
      clear_has_document_type();
        ::firestore::client::NoDocument* temp = document_type_.no_document_;
      document_type_.no_document_ = NULL;
      return temp;
    } else {
      return NULL;
    }
  }
  inline const ::firestore::client::NoDocument& MaybeDocument::no_document() const {
    // @@protoc_insertion_point(field_get:firestore.client.MaybeDocument.no_document)
    return has_no_document()
        ? *document_type_.no_document_
        : *reinterpret_cast< ::firestore::client::NoDocument*>(&::firestore::client::_NoDocument_default_instance_);
  }
  inline ::firestore::client::NoDocument* MaybeDocument::mutable_no_document() {
    if (!has_no_document()) {
      clear_document_type();
      set_has_no_document();
      document_type_.no_document_ = new ::firestore::client::NoDocument;
    }
    // @@protoc_insertion_point(field_mutable:firestore.client.MaybeDocument.no_document)
    return document_type_.no_document_;
  }
  
  // .google.firestore.v1beta1.Document document = 2;
  inline bool MaybeDocument::has_document() const {
    return document_type_case() == kDocument;
  }
  inline void MaybeDocument::set_has_document() {
    _oneof_case_[0] = kDocument;
  }
  inline ::google::firestore::v1beta1::Document* MaybeDocument::release_document() {
    // @@protoc_insertion_point(field_release:firestore.client.MaybeDocument.document)
    if (has_document()) {
      clear_has_document_type();
        ::google::firestore::v1beta1::Document* temp = document_type_.document_;
      document_type_.document_ = NULL;
      return temp;
    } else {
      return NULL;
    }
  }
  inline const ::google::firestore::v1beta1::Document& MaybeDocument::document() const {
    // @@protoc_insertion_point(field_get:firestore.client.MaybeDocument.document)
    return has_document()
        ? *document_type_.document_
        : *reinterpret_cast< ::google::firestore::v1beta1::Document*>(&::google::firestore::v1beta1::_Document_default_instance_);
  }
  inline ::google::firestore::v1beta1::Document* MaybeDocument::mutable_document() {
    if (!has_document()) {
      clear_document_type();
      set_has_document();
      document_type_.document_ = new ::google::firestore::v1beta1::Document;
    }
    // @@protoc_insertion_point(field_mutable:firestore.client.MaybeDocument.document)
    return document_type_.document_;
  }
  
  inline bool MaybeDocument::has_document_type() const {
    return document_type_case() != DOCUMENT_TYPE_NOT_SET;
  }
  inline void MaybeDocument::clear_has_document_type() {
    _oneof_case_[0] = DOCUMENT_TYPE_NOT_SET;
  }
  inline MaybeDocument::DocumentTypeCase MaybeDocument::document_type_case() const {
    return MaybeDocument::DocumentTypeCase(_oneof_case_[0]);
  }
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace client
  }  // namespace firestore
  
  // @@protoc_insertion_point(global_scope)
  
  #endif  // PROTOBUF_firestore_2flocal_2fmaybe_5fdocument_2eproto__INCLUDED
  