// protoc generate parameter
// clang-format off
// 
// =========================
#pragma once

// Generated by the protocol buffer compiler (struct_pb).  DO NOT EDIT!
// source: test_bad_identifiers.proto

#include <limits>
#include <string>
#include <type_traits>
#include <memory>
#include <map>
#include <variant>
#include <vector>
#include <optional>
#include "struct_pb/struct_pb.hpp"

namespace protobuf_unittest {
struct TestConflictingSymbolNames;
struct TestConflictingSymbolNamesExtension;
struct TestConflictingEnumNames;
struct DummyMessage;
struct NULL_;
struct Shutdown;
struct TableStruct;
enum class bool_: int {
  default_ = 0,
  NOT_EQ = 1,
  volatile_ = 2,
  return_ = 3,
};
struct TestConflictingSymbolNames {
  enum class TestEnum: int {
    FOO = 0,
  };
  struct BuildDescriptors {
  };
  struct TypeTraits {
  };
  struct Data1 {
    std::vector<int32_t> data; // int32, field number = 1
  };
  struct Data2 {
    std::vector<::protobuf_unittest::TestConflictingSymbolNames::TestEnum> data; // enum, field number = 1
  };
  struct Data3 {
    std::vector<std::string> data; // string, field number = 1
  };
  struct Data4 {
    std::vector<::protobuf_unittest::TestConflictingSymbolNames::Data4> data; // message, field number = 1
  };
  struct Data5 {
    std::vector<std::string> data; // string, field number = 1
  };
  struct Data6 {
    std::vector<std::string> data; // string, field number = 1
  };
  struct Cord {
  };
  struct StringPiece {
  };
  struct DO {
  };
  std::optional<int32_t> input; // int32, field number = 1
  std::optional<int32_t> output; // int32, field number = 2
  std::optional<std::string> length; // string, field number = 3
  std::vector<int32_t> i; // int32, field number = 4
  std::vector<std::string> new_element; // string, field number = 5
  std::optional<int32_t> total_size; // int32, field number = 6
  std::optional<int32_t> tag; // int32, field number = 7
  std::optional<int32_t> source; // int32, field number = 8
  std::optional<int32_t> value; // int32, field number = 9
  std::optional<int32_t> file; // int32, field number = 10
  std::optional<int32_t> from; // int32, field number = 11
  std::optional<int32_t> handle_uninterpreted; // int32, field number = 12
  std::vector<int32_t> index; // int32, field number = 13
  std::optional<int32_t> controller; // int32, field number = 14
  std::optional<int32_t> already_here; // int32, field number = 15
  std::optional<uint32_t> uint32; // uint32, field number = 16
  std::optional<uint32_t> uint32_t_; // uint32, field number = 41
  std::optional<uint64_t> uint64; // uint64, field number = 17
  std::optional<uint32_t> uint64_t_; // uint32, field number = 42
  std::optional<std::string> string; // string, field number = 18
  std::optional<int32_t> memset_; // int32, field number = 19
  std::optional<int32_t> int32; // int32, field number = 20
  std::optional<int32_t> int32_t_; // int32, field number = 43
  std::optional<int64_t> int64; // int64, field number = 21
  std::optional<int64_t> int64_t_; // int64, field number = 44
  std::optional<int64_t> size_t_; // int64, field number = 45
  std::optional<uint32_t> cached_size; // uint32, field number = 22
  std::optional<uint32_t> extensions; // uint32, field number = 23
  std::optional<uint32_t> bit; // uint32, field number = 24
  std::optional<uint32_t> bits; // uint32, field number = 25
  std::optional<uint32_t> offsets; // uint32, field number = 26
  std::optional<uint32_t> reflection; // uint32, field number = 27
  std::optional<std::string> some_cord; // string, field number = 28
  std::optional<std::string> some_string_piece; // string, field number = 29
  std::optional<uint32_t> int_; // uint32, field number = 30
  std::optional<uint32_t> friend_; // uint32, field number = 31
  std::optional<uint32_t> class_; // uint32, field number = 37
  std::optional<uint32_t> typedecl; // uint32, field number = 39
  std::optional<uint32_t> auto_; // uint32, field number = 40
  std::unique_ptr<::protobuf_unittest::TestConflictingSymbolNames::DO> do_; // message, field number = 32
  std::optional<int32_t> field_type; // int32, field number = 33
  std::optional<bool> is_packed; // bool, field number = 34
  std::optional<std::string> release_length; // string, field number = 35
  std::unique_ptr<::protobuf_unittest::TestConflictingSymbolNames::DO> release_do; // message, field number = 36
  std::optional<std::string> target; // string, field number = 38
};
struct TestConflictingSymbolNamesExtension {
};
struct TestConflictingEnumNames {
  enum class while_: int {
    default_ = 0,
    and_ = 1,
    class_ = 2,
    int_ = 3,
    typedef_ = 4,
    XOR = 5,
  };
  std::optional<::protobuf_unittest::TestConflictingEnumNames::while_> conflicting_enum; // enum, field number = 1
};
struct DummyMessage {
};
struct NULL_ {
  std::optional<int32_t> int_; // int32, field number = 1
};
struct Shutdown {
};
struct TableStruct {
};

} // namespace protobuf_unittest
namespace struct_pb {
namespace internal {
// ::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors>(const ::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors>(::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors>(::protobuf_unittest::TestConflictingSymbolNames::BuildDescriptors& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::TypeTraits
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::TypeTraits>(const ::protobuf_unittest::TestConflictingSymbolNames::TypeTraits& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::TypeTraits>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::TypeTraits& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::TypeTraits>(::protobuf_unittest::TestConflictingSymbolNames::TypeTraits& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::TypeTraits>(::protobuf_unittest::TestConflictingSymbolNames::TypeTraits& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data1
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data1>(const ::protobuf_unittest::TestConflictingSymbolNames::Data1& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data1>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data1& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data1>(::protobuf_unittest::TestConflictingSymbolNames::Data1& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data1>(::protobuf_unittest::TestConflictingSymbolNames::Data1& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data2
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data2>(const ::protobuf_unittest::TestConflictingSymbolNames::Data2& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data2>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data2& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data2>(::protobuf_unittest::TestConflictingSymbolNames::Data2& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data2>(::protobuf_unittest::TestConflictingSymbolNames::Data2& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data3
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data3>(const ::protobuf_unittest::TestConflictingSymbolNames::Data3& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data3>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data3& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data3>(::protobuf_unittest::TestConflictingSymbolNames::Data3& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data3>(::protobuf_unittest::TestConflictingSymbolNames::Data3& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data4
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data4>(const ::protobuf_unittest::TestConflictingSymbolNames::Data4& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data4>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data4& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data4>(::protobuf_unittest::TestConflictingSymbolNames::Data4& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data4>(::protobuf_unittest::TestConflictingSymbolNames::Data4& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data5
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data5>(const ::protobuf_unittest::TestConflictingSymbolNames::Data5& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data5>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data5& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data5>(::protobuf_unittest::TestConflictingSymbolNames::Data5& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data5>(::protobuf_unittest::TestConflictingSymbolNames::Data5& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Data6
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Data6>(const ::protobuf_unittest::TestConflictingSymbolNames::Data6& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data6>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Data6& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data6>(::protobuf_unittest::TestConflictingSymbolNames::Data6& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Data6>(::protobuf_unittest::TestConflictingSymbolNames::Data6& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::Cord
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::Cord>(const ::protobuf_unittest::TestConflictingSymbolNames::Cord& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::Cord>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::Cord& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Cord>(::protobuf_unittest::TestConflictingSymbolNames::Cord& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::Cord>(::protobuf_unittest::TestConflictingSymbolNames::Cord& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::StringPiece
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::StringPiece>(const ::protobuf_unittest::TestConflictingSymbolNames::StringPiece& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::StringPiece>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::StringPiece& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::StringPiece>(::protobuf_unittest::TestConflictingSymbolNames::StringPiece& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::StringPiece>(::protobuf_unittest::TestConflictingSymbolNames::StringPiece& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames::DO
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames::DO>(const ::protobuf_unittest::TestConflictingSymbolNames::DO& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames::DO>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames::DO& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::DO>(::protobuf_unittest::TestConflictingSymbolNames::DO& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames::DO>(::protobuf_unittest::TestConflictingSymbolNames::DO& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNames
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNames>(const ::protobuf_unittest::TestConflictingSymbolNames& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNames>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNames& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames>(::protobuf_unittest::TestConflictingSymbolNames& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNames>(::protobuf_unittest::TestConflictingSymbolNames& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingSymbolNamesExtension
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingSymbolNamesExtension>(const ::protobuf_unittest::TestConflictingSymbolNamesExtension& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingSymbolNamesExtension>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingSymbolNamesExtension& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNamesExtension>(::protobuf_unittest::TestConflictingSymbolNamesExtension& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingSymbolNamesExtension>(::protobuf_unittest::TestConflictingSymbolNamesExtension& t, const char* data, std::size_t size);

// ::protobuf_unittest::TestConflictingEnumNames
template<>
std::size_t get_needed_size<::protobuf_unittest::TestConflictingEnumNames>(const ::protobuf_unittest::TestConflictingEnumNames& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TestConflictingEnumNames>(char* data, std::size_t size, const ::protobuf_unittest::TestConflictingEnumNames& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingEnumNames>(::protobuf_unittest::TestConflictingEnumNames& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TestConflictingEnumNames>(::protobuf_unittest::TestConflictingEnumNames& t, const char* data, std::size_t size);

// ::protobuf_unittest::DummyMessage
template<>
std::size_t get_needed_size<::protobuf_unittest::DummyMessage>(const ::protobuf_unittest::DummyMessage& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::DummyMessage>(char* data, std::size_t size, const ::protobuf_unittest::DummyMessage& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::DummyMessage>(::protobuf_unittest::DummyMessage& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::DummyMessage>(::protobuf_unittest::DummyMessage& t, const char* data, std::size_t size);

// ::protobuf_unittest::NULL_
template<>
std::size_t get_needed_size<::protobuf_unittest::NULL_>(const ::protobuf_unittest::NULL_& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::NULL_>(char* data, std::size_t size, const ::protobuf_unittest::NULL_& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::NULL_>(::protobuf_unittest::NULL_& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::NULL_>(::protobuf_unittest::NULL_& t, const char* data, std::size_t size);

// ::protobuf_unittest::Shutdown
template<>
std::size_t get_needed_size<::protobuf_unittest::Shutdown>(const ::protobuf_unittest::Shutdown& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::Shutdown>(char* data, std::size_t size, const ::protobuf_unittest::Shutdown& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::Shutdown>(::protobuf_unittest::Shutdown& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::Shutdown>(::protobuf_unittest::Shutdown& t, const char* data, std::size_t size);

// ::protobuf_unittest::TableStruct
template<>
std::size_t get_needed_size<::protobuf_unittest::TableStruct>(const ::protobuf_unittest::TableStruct& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
void serialize_to<::protobuf_unittest::TableStruct>(char* data, std::size_t size, const ::protobuf_unittest::TableStruct& t, const ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TableStruct>(::protobuf_unittest::TableStruct& t, const char* data, std::size_t size, ::struct_pb::UnknownFields& unknown_fields);
template<>
bool deserialize_to<::protobuf_unittest::TableStruct>(::protobuf_unittest::TableStruct& t, const char* data, std::size_t size);

} // internal
} // struct_pb
// clang-format on
