/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.0-dev */

#ifndef PB_ALLTYPES_LEGACY_H_INCLUDED
#define PB_ALLTYPES_LEGACY_H_INCLUDED
#include <pb.h>

/* @@protoc_insertion_point(includes) */
#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif

#ifdef __cplusplus
extern "C" {
#endif

/* Enum definitions */
typedef enum _HugeEnum {
    HugeEnum_Negative = -2147483647,
    HugeEnum_Positive = 2147483647
} HugeEnum;
#define _HugeEnum_MIN HugeEnum_Negative
#define _HugeEnum_MAX HugeEnum_Positive
#define _HugeEnum_ARRAYSIZE ((HugeEnum)(HugeEnum_Positive+1))

typedef enum _MyEnum {
    MyEnum_Zero = 0,
    MyEnum_First = 1,
    MyEnum_Second = 2,
    MyEnum_Truth = 42
} MyEnum;
#define _MyEnum_MIN MyEnum_Zero
#define _MyEnum_MAX MyEnum_Truth
#define _MyEnum_ARRAYSIZE ((MyEnum)(MyEnum_Truth+1))

/* Struct definitions */
typedef struct _EmptyMessage {
    char dummy_field;
/* @@protoc_insertion_point(struct:EmptyMessage) */
} EmptyMessage;


typedef struct _Limits {
    int32_t int32_min;
    int32_t int32_max;
    uint32_t uint32_min;
    uint32_t uint32_max;
    int64_t int64_min;
    int64_t int64_max;
    uint64_t uint64_min;
    uint64_t uint64_max;
    HugeEnum enum_min;
    HugeEnum enum_max;
/* @@protoc_insertion_point(struct:Limits) */
} Limits;


typedef struct _SubMessage {
    char substuff1[16];
    int32_t substuff2;
    bool has_substuff3;
    uint32_t substuff3;
/* @@protoc_insertion_point(struct:SubMessage) */
} SubMessage;


typedef PB_BYTES_ARRAY_T(16) AllTypes_req_bytes_t;
typedef PB_BYTES_ARRAY_T(16) AllTypes_rep_bytes_t;
typedef PB_BYTES_ARRAY_T(16) AllTypes_opt_bytes_t;
typedef struct _AllTypes {
    int32_t req_int32;
    int64_t req_int64;
    uint32_t req_uint32;
    uint64_t req_uint64;
    int32_t req_sint32;
    int64_t req_sint64;
    bool req_bool;
    uint32_t req_fixed32;
    int32_t req_sfixed32;
    float req_float;
    uint64_t req_fixed64;
    int64_t req_sfixed64;
    double req_double;
    char req_string[16];
    AllTypes_req_bytes_t req_bytes;
    SubMessage req_submsg;
    MyEnum req_enum;
    pb_size_t rep_int32_count;
    int32_t rep_int32[5];
    pb_size_t rep_int64_count;
    int64_t rep_int64[5];
    pb_size_t rep_uint32_count;
    uint32_t rep_uint32[5];
    pb_size_t rep_uint64_count;
    uint64_t rep_uint64[5];
    pb_size_t rep_sint32_count;
    int32_t rep_sint32[5];
    pb_size_t rep_sint64_count;
    int64_t rep_sint64[5];
    pb_size_t rep_bool_count;
    bool rep_bool[5];
    pb_size_t rep_fixed32_count;
    uint32_t rep_fixed32[5];
    pb_size_t rep_sfixed32_count;
    int32_t rep_sfixed32[5];
    pb_size_t rep_float_count;
    float rep_float[5];
    pb_size_t rep_fixed64_count;
    uint64_t rep_fixed64[5];
    pb_size_t rep_sfixed64_count;
    int64_t rep_sfixed64[5];
    pb_size_t rep_double_count;
    double rep_double[5];
    pb_size_t rep_string_count;
    char rep_string[5][16];
    pb_size_t rep_bytes_count;
    AllTypes_rep_bytes_t rep_bytes[5];
    pb_size_t rep_submsg_count;
    SubMessage rep_submsg[5];
    pb_size_t rep_enum_count;
    MyEnum rep_enum[5];
    bool has_opt_int32;
    int32_t opt_int32;
    bool has_opt_int64;
    int64_t opt_int64;
    bool has_opt_uint32;
    uint32_t opt_uint32;
    bool has_opt_uint64;
    uint64_t opt_uint64;
    bool has_opt_sint32;
    int32_t opt_sint32;
    bool has_opt_sint64;
    int64_t opt_sint64;
    bool has_opt_bool;
    bool opt_bool;
    bool has_opt_fixed32;
    uint32_t opt_fixed32;
    bool has_opt_sfixed32;
    int32_t opt_sfixed32;
    bool has_opt_float;
    float opt_float;
    bool has_opt_fixed64;
    uint64_t opt_fixed64;
    bool has_opt_sfixed64;
    int64_t opt_sfixed64;
    bool has_opt_double;
    double opt_double;
    bool has_opt_string;
    char opt_string[16];
    bool has_opt_bytes;
    AllTypes_opt_bytes_t opt_bytes;
    bool has_opt_submsg;
    SubMessage opt_submsg;
    bool has_opt_enum;
    MyEnum opt_enum;
    int32_t end;
    pb_extension_t *extensions;
/* @@protoc_insertion_point(struct:AllTypes) */
} AllTypes;


/* Initializer values for message structs */
#define SubMessage_init_default                  {"1", 2, false, 3u}
#define EmptyMessage_init_default                {0}
#define Limits_init_default                      {2147483647, -2147483647, 4294967295u, 0u, 9223372036854775807ll, -9223372036854775807ll, 18446744073709551615ull, 0ull, HugeEnum_Positive, HugeEnum_Negative}
#define AllTypes_init_default                    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", {0, {0}}, SubMessage_init_default, _MyEnum_MIN, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {"", "", "", "", ""}, 0, {{0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}}, 0, {SubMessage_init_default, SubMessage_init_default, SubMessage_init_default, SubMessage_init_default, SubMessage_init_default}, 0, {_MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN}, false, 4041, false, 4042ll, false, 4043u, false, 4044ull, false, 4045, false, 4046, false, false, false, 4048u, false, 4049, false, 4050, false, 4051ull, false, 4052ll, false, 4053, false, "4054", false, {4, {0x34,0x30,0x35,0x35}}, false, SubMessage_init_default, false, MyEnum_Second, 0, NULL}
#define SubMessage_init_zero                     {"", 0, false, 0}
#define EmptyMessage_init_zero                   {0}
#define Limits_init_zero                         {0, 0, 0, 0, 0, 0, 0, 0, _HugeEnum_MIN, _HugeEnum_MIN}
#define AllTypes_init_zero                       {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", {0, {0}}, SubMessage_init_zero, _MyEnum_MIN, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0}, 0, {"", "", "", "", ""}, 0, {{0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}}, 0, {SubMessage_init_zero, SubMessage_init_zero, SubMessage_init_zero, SubMessage_init_zero, SubMessage_init_zero}, 0, {_MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN, _MyEnum_MIN}, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, 0, false, "", false, {0, {0}}, false, SubMessage_init_zero, false, _MyEnum_MIN, 0, NULL}

/* Field tags (for use in manual encoding/decoding) */
#define Limits_int32_min_tag                     1
#define Limits_int32_max_tag                     2
#define Limits_uint32_min_tag                    3
#define Limits_uint32_max_tag                    4
#define Limits_int64_min_tag                     5
#define Limits_int64_max_tag                     6
#define Limits_uint64_min_tag                    7
#define Limits_uint64_max_tag                    8
#define Limits_enum_min_tag                      9
#define Limits_enum_max_tag                      10
#define SubMessage_substuff1_tag                 1
#define SubMessage_substuff2_tag                 2
#define SubMessage_substuff3_tag                 3
#define AllTypes_req_int32_tag                   1
#define AllTypes_req_int64_tag                   2
#define AllTypes_req_uint32_tag                  3
#define AllTypes_req_uint64_tag                  4
#define AllTypes_req_sint32_tag                  5
#define AllTypes_req_sint64_tag                  6
#define AllTypes_req_bool_tag                    7
#define AllTypes_req_fixed32_tag                 8
#define AllTypes_req_sfixed32_tag                9
#define AllTypes_req_float_tag                   10
#define AllTypes_req_fixed64_tag                 11
#define AllTypes_req_sfixed64_tag                12
#define AllTypes_req_double_tag                  13
#define AllTypes_req_string_tag                  14
#define AllTypes_req_bytes_tag                   15
#define AllTypes_req_submsg_tag                  16
#define AllTypes_req_enum_tag                    17
#define AllTypes_rep_int32_tag                   21
#define AllTypes_rep_int64_tag                   22
#define AllTypes_rep_uint32_tag                  23
#define AllTypes_rep_uint64_tag                  24
#define AllTypes_rep_sint32_tag                  25
#define AllTypes_rep_sint64_tag                  26
#define AllTypes_rep_bool_tag                    27
#define AllTypes_rep_fixed32_tag                 28
#define AllTypes_rep_sfixed32_tag                29
#define AllTypes_rep_float_tag                   30
#define AllTypes_rep_fixed64_tag                 31
#define AllTypes_rep_sfixed64_tag                32
#define AllTypes_rep_double_tag                  33
#define AllTypes_rep_string_tag                  34
#define AllTypes_rep_bytes_tag                   35
#define AllTypes_rep_submsg_tag                  36
#define AllTypes_rep_enum_tag                    37
#define AllTypes_opt_int32_tag                   41
#define AllTypes_opt_int64_tag                   42
#define AllTypes_opt_uint32_tag                  43
#define AllTypes_opt_uint64_tag                  44
#define AllTypes_opt_sint32_tag                  45
#define AllTypes_opt_sint64_tag                  46
#define AllTypes_opt_bool_tag                    47
#define AllTypes_opt_fixed32_tag                 48
#define AllTypes_opt_sfixed32_tag                49
#define AllTypes_opt_float_tag                   50
#define AllTypes_opt_fixed64_tag                 51
#define AllTypes_opt_sfixed64_tag                52
#define AllTypes_opt_double_tag                  53
#define AllTypes_opt_string_tag                  54
#define AllTypes_opt_bytes_tag                   55
#define AllTypes_opt_submsg_tag                  56
#define AllTypes_opt_enum_tag                    57
#define AllTypes_end_tag                         99

/* Struct field encoding specification for nanopb */
#define SubMessage_FIELDLIST(X, a) \
X(a, STATIC, REQUIRED, STRING, substuff1, 1) \
X(a, STATIC, REQUIRED, INT32, substuff2, 2) \
X(a, STATIC, OPTIONAL, FIXED32, substuff3, 3)
#define SubMessage_CALLBACK NULL

#define EmptyMessage_FIELDLIST(X, a) \

#define EmptyMessage_CALLBACK NULL

#define Limits_FIELDLIST(X, a) \
X(a, STATIC, REQUIRED, INT32, int32_min, 1) \
X(a, STATIC, REQUIRED, INT32, int32_max, 2) \
X(a, STATIC, REQUIRED, UINT32, uint32_min, 3) \
X(a, STATIC, REQUIRED, UINT32, uint32_max, 4) \
X(a, STATIC, REQUIRED, INT64, int64_min, 5) \
X(a, STATIC, REQUIRED, INT64, int64_max, 6) \
X(a, STATIC, REQUIRED, UINT64, uint64_min, 7) \
X(a, STATIC, REQUIRED, UINT64, uint64_max, 8) \
X(a, STATIC, REQUIRED, ENUM, enum_min, 9) \
X(a, STATIC, REQUIRED, ENUM, enum_max, 10)
#define Limits_CALLBACK NULL

#define AllTypes_FIELDLIST(X, a) \
X(a, STATIC, REQUIRED, INT32, req_int32, 1) \
X(a, STATIC, REQUIRED, INT64, req_int64, 2) \
X(a, STATIC, REQUIRED, UINT32, req_uint32, 3) \
X(a, STATIC, REQUIRED, UINT64, req_uint64, 4) \
X(a, STATIC, REQUIRED, SINT32, req_sint32, 5) \
X(a, STATIC, REQUIRED, SINT64, req_sint64, 6) \
X(a, STATIC, REQUIRED, BOOL, req_bool, 7) \
X(a, STATIC, REQUIRED, FIXED32, req_fixed32, 8) \
X(a, STATIC, REQUIRED, SFIXED32, req_sfixed32, 9) \
X(a, STATIC, REQUIRED, FLOAT, req_float, 10) \
X(a, STATIC, REQUIRED, FIXED64, req_fixed64, 11) \
X(a, STATIC, REQUIRED, SFIXED64, req_sfixed64, 12) \
X(a, STATIC, REQUIRED, DOUBLE, req_double, 13) \
X(a, STATIC, REQUIRED, STRING, req_string, 14) \
X(a, STATIC, REQUIRED, BYTES, req_bytes, 15) \
X(a, STATIC, REQUIRED, MESSAGE, req_submsg, 16) \
X(a, STATIC, REQUIRED, UENUM, req_enum, 17) \
X(a, STATIC, REPEATED, INT32, rep_int32, 21) \
X(a, STATIC, REPEATED, INT64, rep_int64, 22) \
X(a, STATIC, REPEATED, UINT32, rep_uint32, 23) \
X(a, STATIC, REPEATED, UINT64, rep_uint64, 24) \
X(a, STATIC, REPEATED, SINT32, rep_sint32, 25) \
X(a, STATIC, REPEATED, SINT64, rep_sint64, 26) \
X(a, STATIC, REPEATED, BOOL, rep_bool, 27) \
X(a, STATIC, REPEATED, FIXED32, rep_fixed32, 28) \
X(a, STATIC, REPEATED, SFIXED32, rep_sfixed32, 29) \
X(a, STATIC, REPEATED, FLOAT, rep_float, 30) \
X(a, STATIC, REPEATED, FIXED64, rep_fixed64, 31) \
X(a, STATIC, REPEATED, SFIXED64, rep_sfixed64, 32) \
X(a, STATIC, REPEATED, DOUBLE, rep_double, 33) \
X(a, STATIC, REPEATED, STRING, rep_string, 34) \
X(a, STATIC, REPEATED, BYTES, rep_bytes, 35) \
X(a, STATIC, REPEATED, MESSAGE, rep_submsg, 36) \
X(a, STATIC, REPEATED, UENUM, rep_enum, 37) \
X(a, STATIC, OPTIONAL, INT32, opt_int32, 41) \
X(a, STATIC, OPTIONAL, INT64, opt_int64, 42) \
X(a, STATIC, OPTIONAL, UINT32, opt_uint32, 43) \
X(a, STATIC, OPTIONAL, UINT64, opt_uint64, 44) \
X(a, STATIC, OPTIONAL, SINT32, opt_sint32, 45) \
X(a, STATIC, OPTIONAL, SINT64, opt_sint64, 46) \
X(a, STATIC, OPTIONAL, BOOL, opt_bool, 47) \
X(a, STATIC, OPTIONAL, FIXED32, opt_fixed32, 48) \
X(a, STATIC, OPTIONAL, SFIXED32, opt_sfixed32, 49) \
X(a, STATIC, OPTIONAL, FLOAT, opt_float, 50) \
X(a, STATIC, OPTIONAL, FIXED64, opt_fixed64, 51) \
X(a, STATIC, OPTIONAL, SFIXED64, opt_sfixed64, 52) \
X(a, STATIC, OPTIONAL, DOUBLE, opt_double, 53) \
X(a, STATIC, OPTIONAL, STRING, opt_string, 54) \
X(a, STATIC, OPTIONAL, BYTES, opt_bytes, 55) \
X(a, STATIC, OPTIONAL, MESSAGE, opt_submsg, 56) \
X(a, STATIC, OPTIONAL, UENUM, opt_enum, 57) \
X(a, STATIC, REQUIRED, INT32, end, 99) \
X(a, CALLBACK, OPTIONAL, EXTENSION, extensions, 200)
#define AllTypes_CALLBACK pb_default_field_callback
#define AllTypes_req_submsg_MSGTYPE SubMessage
#define AllTypes_rep_submsg_MSGTYPE SubMessage
#define AllTypes_opt_submsg_MSGTYPE SubMessage

extern const pb_msgdesc_t SubMessage_msg;
extern pb_byte_t SubMessage_default[];
extern const pb_msgdesc_t EmptyMessage_msg;
extern pb_byte_t EmptyMessage_default[];
extern const pb_msgdesc_t Limits_msg;
extern pb_byte_t Limits_default[];
extern const pb_msgdesc_t AllTypes_msg;
extern pb_byte_t AllTypes_default[];

/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define SubMessage_fields &SubMessage_msg
#define EmptyMessage_fields &EmptyMessage_msg
#define Limits_fields &Limits_msg
#define AllTypes_fields &AllTypes_msg

/* Maximum encoded size of messages (where known) */
#define SubMessage_size                          33
#define EmptyMessage_size                        0
#define Limits_size                              100
#define AllTypes_size                            1320

#ifdef __cplusplus
} /* extern "C" */
#endif
/* @@protoc_insertion_point(eof) */

#endif
