/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: google/protobuf/type.proto */

#ifndef PROTOBUF_C_google_2fprotobuf_2ftype_2eproto__INCLUDED
#define PROTOBUF_C_google_2fprotobuf_2ftype_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1000000
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1002001 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
#endif

#include "google/protobuf/any.pb-c.h"
#include "google/protobuf/source_context.pb-c.h"

typedef struct _Google__Protobuf__Type Google__Protobuf__Type;
typedef struct _Google__Protobuf__Field Google__Protobuf__Field;
typedef struct _Google__Protobuf__Enum Google__Protobuf__Enum;
typedef struct _Google__Protobuf__EnumValue Google__Protobuf__EnumValue;
typedef struct _Google__Protobuf__Option Google__Protobuf__Option;


/* --- enums --- */

/*
 * Basic field types.
 */
typedef enum _Google__Protobuf__Field__Kind {
  /*
   * Field type unknown.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_UNKNOWN = 0,
  /*
   * Field type double.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_DOUBLE = 1,
  /*
   * Field type float.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_FLOAT = 2,
  /*
   * Field type int64.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_INT64 = 3,
  /*
   * Field type uint64.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_UINT64 = 4,
  /*
   * Field type int32.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_INT32 = 5,
  /*
   * Field type fixed64.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_FIXED64 = 6,
  /*
   * Field type fixed32.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_FIXED32 = 7,
  /*
   * Field type bool.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_BOOL = 8,
  /*
   * Field type string.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_STRING = 9,
  /*
   * Field type group. Proto2 syntax only, and deprecated.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_GROUP = 10,
  /*
   * Field type message.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_MESSAGE = 11,
  /*
   * Field type bytes.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_BYTES = 12,
  /*
   * Field type uint32.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_UINT32 = 13,
  /*
   * Field type enum.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_ENUM = 14,
  /*
   * Field type sfixed32.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_SFIXED32 = 15,
  /*
   * Field type sfixed64.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_SFIXED64 = 16,
  /*
   * Field type sint32.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_SINT32 = 17,
  /*
   * Field type sint64.
   */
  GOOGLE__PROTOBUF__FIELD__KIND__TYPE_SINT64 = 18
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GOOGLE__PROTOBUF__FIELD__KIND)
} Google__Protobuf__Field__Kind;
/*
 * Whether a field is optional, required, or repeated.
 */
typedef enum _Google__Protobuf__Field__Cardinality {
  /*
   * For fields with unknown cardinality.
   */
  GOOGLE__PROTOBUF__FIELD__CARDINALITY__CARDINALITY_UNKNOWN = 0,
  /*
   * For optional fields.
   */
  GOOGLE__PROTOBUF__FIELD__CARDINALITY__CARDINALITY_OPTIONAL = 1,
  /*
   * For required fields. Proto2 syntax only.
   */
  GOOGLE__PROTOBUF__FIELD__CARDINALITY__CARDINALITY_REQUIRED = 2,
  /*
   * For repeated fields.
   */
  GOOGLE__PROTOBUF__FIELD__CARDINALITY__CARDINALITY_REPEATED = 3
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GOOGLE__PROTOBUF__FIELD__CARDINALITY)
} Google__Protobuf__Field__Cardinality;
/*
 * The syntax in which a protocol buffer element is defined.
 */
typedef enum _Google__Protobuf__Syntax {
  /*
   * Syntax `proto2`.
   */
  GOOGLE__PROTOBUF__SYNTAX__SYNTAX_PROTO2 = 0,
  /*
   * Syntax `proto3`.
   */
  GOOGLE__PROTOBUF__SYNTAX__SYNTAX_PROTO3 = 1
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GOOGLE__PROTOBUF__SYNTAX)
} Google__Protobuf__Syntax;

/* --- messages --- */

/*
 * A protocol buffer message type.
 */
struct  _Google__Protobuf__Type
{
  ProtobufCMessage base;
  /*
   * The fully qualified message name.
   */
  char *name;
  /*
   * The list of fields.
   */
  size_t n_fields;
  Google__Protobuf__Field **fields;
  /*
   * The list of types appearing in `oneof` definitions in this type.
   */
  size_t n_oneofs;
  char **oneofs;
  /*
   * The protocol buffer options.
   */
  size_t n_options;
  Google__Protobuf__Option **options;
  /*
   * The source context.
   */
  Google__Protobuf__SourceContext *source_context;
  /*
   * The source syntax.
   */
  protobuf_c_boolean has_syntax;
  Google__Protobuf__Syntax syntax;
};
#define GOOGLE__PROTOBUF__TYPE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__type__descriptor) \
    , NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,0 }


/*
 * A single field of a message type.
 */
struct  _Google__Protobuf__Field
{
  ProtobufCMessage base;
  /*
   * The field type.
   */
  protobuf_c_boolean has_kind;
  Google__Protobuf__Field__Kind kind;
  /*
   * The field cardinality.
   */
  protobuf_c_boolean has_cardinality;
  Google__Protobuf__Field__Cardinality cardinality;
  /*
   * The field number.
   */
  protobuf_c_boolean has_number;
  int32_t number;
  /*
   * The field name.
   */
  char *name;
  /*
   * The field type URL, without the scheme, for message or enumeration
   * types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
   */
  char *type_url;
  /*
   * The index of the field type in `Type.oneofs`, for message or enumeration
   * types. The first type has index 1; zero means the type is not in the list.
   */
  protobuf_c_boolean has_oneof_index;
  int32_t oneof_index;
  /*
   * Whether to use alternative packed wire representation.
   */
  protobuf_c_boolean has_packed;
  protobuf_c_boolean packed;
  /*
   * The protocol buffer options.
   */
  size_t n_options;
  Google__Protobuf__Option **options;
  /*
   * The field JSON name.
   */
  char *json_name;
  /*
   * The string value of the default value of this field. Proto2 syntax only.
   */
  char *default_value;
};
#define GOOGLE__PROTOBUF__FIELD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__field__descriptor) \
    , 0,0, 0,0, 0,0, NULL, NULL, 0,0, 0,0, 0,NULL, NULL, NULL }


/*
 * Enum type definition.
 */
struct  _Google__Protobuf__Enum
{
  ProtobufCMessage base;
  /*
   * Enum type name.
   */
  char *name;
  /*
   * Enum value definitions.
   */
  size_t n_enumvalue;
  Google__Protobuf__EnumValue **enumvalue;
  /*
   * Protocol buffer options.
   */
  size_t n_options;
  Google__Protobuf__Option **options;
  /*
   * The source context.
   */
  Google__Protobuf__SourceContext *source_context;
  /*
   * The source syntax.
   */
  protobuf_c_boolean has_syntax;
  Google__Protobuf__Syntax syntax;
};
#define GOOGLE__PROTOBUF__ENUM__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__enum__descriptor) \
    , NULL, 0,NULL, 0,NULL, NULL, 0,0 }


/*
 * Enum value definition.
 */
struct  _Google__Protobuf__EnumValue
{
  ProtobufCMessage base;
  /*
   * Enum value name.
   */
  char *name;
  /*
   * Enum value number.
   */
  protobuf_c_boolean has_number;
  int32_t number;
  /*
   * Protocol buffer options.
   */
  size_t n_options;
  Google__Protobuf__Option **options;
};
#define GOOGLE__PROTOBUF__ENUM_VALUE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__enum_value__descriptor) \
    , NULL, 0,0, 0,NULL }


/*
 * A protocol buffer option, which can be attached to a message, field,
 * enumeration, etc.
 */
struct  _Google__Protobuf__Option
{
  ProtobufCMessage base;
  /*
   * The option's name. For example, `"java_package"`.
   */
  char *name;
  /*
   * The option's value. For example, `"com.google.protobuf"`.
   */
  Google__Protobuf__Any *value;
};
#define GOOGLE__PROTOBUF__OPTION__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__option__descriptor) \
    , NULL, NULL }


/* Google__Protobuf__Type methods */
void   google__protobuf__type__init
                     (Google__Protobuf__Type         *message);
size_t google__protobuf__type__get_packed_size
                     (const Google__Protobuf__Type   *message);
size_t google__protobuf__type__pack
                     (const Google__Protobuf__Type   *message,
                      uint8_t             *out);
size_t google__protobuf__type__pack_to_buffer
                     (const Google__Protobuf__Type   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Type *
       google__protobuf__type__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__type__free_unpacked
                     (Google__Protobuf__Type *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__Field methods */
void   google__protobuf__field__init
                     (Google__Protobuf__Field         *message);
size_t google__protobuf__field__get_packed_size
                     (const Google__Protobuf__Field   *message);
size_t google__protobuf__field__pack
                     (const Google__Protobuf__Field   *message,
                      uint8_t             *out);
size_t google__protobuf__field__pack_to_buffer
                     (const Google__Protobuf__Field   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Field *
       google__protobuf__field__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__field__free_unpacked
                     (Google__Protobuf__Field *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__Enum methods */
void   google__protobuf__enum__init
                     (Google__Protobuf__Enum         *message);
size_t google__protobuf__enum__get_packed_size
                     (const Google__Protobuf__Enum   *message);
size_t google__protobuf__enum__pack
                     (const Google__Protobuf__Enum   *message,
                      uint8_t             *out);
size_t google__protobuf__enum__pack_to_buffer
                     (const Google__Protobuf__Enum   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Enum *
       google__protobuf__enum__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__enum__free_unpacked
                     (Google__Protobuf__Enum *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__EnumValue methods */
void   google__protobuf__enum_value__init
                     (Google__Protobuf__EnumValue         *message);
size_t google__protobuf__enum_value__get_packed_size
                     (const Google__Protobuf__EnumValue   *message);
size_t google__protobuf__enum_value__pack
                     (const Google__Protobuf__EnumValue   *message,
                      uint8_t             *out);
size_t google__protobuf__enum_value__pack_to_buffer
                     (const Google__Protobuf__EnumValue   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__EnumValue *
       google__protobuf__enum_value__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__enum_value__free_unpacked
                     (Google__Protobuf__EnumValue *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__Option methods */
void   google__protobuf__option__init
                     (Google__Protobuf__Option         *message);
size_t google__protobuf__option__get_packed_size
                     (const Google__Protobuf__Option   *message);
size_t google__protobuf__option__pack
                     (const Google__Protobuf__Option   *message,
                      uint8_t             *out);
size_t google__protobuf__option__pack_to_buffer
                     (const Google__Protobuf__Option   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Option *
       google__protobuf__option__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__option__free_unpacked
                     (Google__Protobuf__Option *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*Google__Protobuf__Type_Closure)
                 (const Google__Protobuf__Type *message,
                  void *closure_data);
typedef void (*Google__Protobuf__Field_Closure)
                 (const Google__Protobuf__Field *message,
                  void *closure_data);
typedef void (*Google__Protobuf__Enum_Closure)
                 (const Google__Protobuf__Enum *message,
                  void *closure_data);
typedef void (*Google__Protobuf__EnumValue_Closure)
                 (const Google__Protobuf__EnumValue *message,
                  void *closure_data);
typedef void (*Google__Protobuf__Option_Closure)
                 (const Google__Protobuf__Option *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCEnumDescriptor    google__protobuf__syntax__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__type__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__field__descriptor;
extern const ProtobufCEnumDescriptor    google__protobuf__field__kind__descriptor;
extern const ProtobufCEnumDescriptor    google__protobuf__field__cardinality__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__enum__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__enum_value__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__option__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_google_2fprotobuf_2ftype_2eproto__INCLUDED */
