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

#ifndef PROTOBUF_C_google_2fprotobuf_2fstruct_2eproto__INCLUDED
#define PROTOBUF_C_google_2fprotobuf_2fstruct_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


typedef struct _Google__Protobuf__Struct Google__Protobuf__Struct;
typedef struct _Google__Protobuf__Struct__FieldsEntry Google__Protobuf__Struct__FieldsEntry;
typedef struct _Google__Protobuf__Value Google__Protobuf__Value;
typedef struct _Google__Protobuf__ListValue Google__Protobuf__ListValue;


/* --- enums --- */

/*
 * `NullValue` is a singleton enumeration to represent the null value for the
 * `Value` type union.
 *  The JSON representation for `NullValue` is JSON `null`.
 */
typedef enum _Google__Protobuf__NullValue {
  /*
   * Null value.
   */
  GOOGLE__PROTOBUF__NULL_VALUE__NULL_VALUE = 0
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GOOGLE__PROTOBUF__NULL_VALUE)
} Google__Protobuf__NullValue;

/* --- messages --- */

struct  _Google__Protobuf__Struct__FieldsEntry
{
  ProtobufCMessage base;
  char *key;
  Google__Protobuf__Value *value;
};
#define GOOGLE__PROTOBUF__STRUCT__FIELDS_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__struct__fields_entry__descriptor) \
    , NULL, NULL }


/*
 * `Struct` represents a structured data value, consisting of fields
 * which map to dynamically typed values. In some languages, `Struct`
 * might be supported by a native representation. For example, in
 * scripting languages like JS a struct is represented as an
 * object. The details of that representation are described together
 * with the proto support for the language.
 * The JSON representation for `Struct` is JSON object.
 */
struct  _Google__Protobuf__Struct
{
  ProtobufCMessage base;
  /*
   * Unordered map of dynamically typed values.
   */
  size_t n_fields;
  Google__Protobuf__Struct__FieldsEntry **fields;
};
#define GOOGLE__PROTOBUF__STRUCT__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__struct__descriptor) \
    , 0,NULL }


typedef enum {
  GOOGLE__PROTOBUF__VALUE__KIND__NOT_SET = 0,
  GOOGLE__PROTOBUF__VALUE__KIND_NULL_VALUE = 1,
  GOOGLE__PROTOBUF__VALUE__KIND_NUMBER_VALUE = 2,
  GOOGLE__PROTOBUF__VALUE__KIND_STRING_VALUE = 3,
  GOOGLE__PROTOBUF__VALUE__KIND_BOOL_VALUE = 4,
  GOOGLE__PROTOBUF__VALUE__KIND_STRUCT_VALUE = 5,
  GOOGLE__PROTOBUF__VALUE__KIND_LIST_VALUE = 6,
} Google__Protobuf__Value__KindCase;

/*
 * `Value` represents a dynamically typed value which can be either
 * null, a number, a string, a boolean, a recursive struct value, or a
 * list of values. A producer of value is expected to set one of that
 * variants, absence of any variant indicates an error.
 * The JSON representation for `Value` is JSON value.
 */
struct  _Google__Protobuf__Value
{
  ProtobufCMessage base;
  Google__Protobuf__Value__KindCase kind_case;
  union {
    /*
     * Represents a null value.
     */
    Google__Protobuf__NullValue null_value;
    /*
     * Represents a double value.
     */
    double number_value;
    /*
     * Represents a string value.
     */
    char *string_value;
    /*
     * Represents a boolean value.
     */
    protobuf_c_boolean bool_value;
    /*
     * Represents a structured value.
     */
    Google__Protobuf__Struct *struct_value;
    /*
     * Represents a repeated `Value`.
     */
    Google__Protobuf__ListValue *list_value;
  };
};
#define GOOGLE__PROTOBUF__VALUE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__value__descriptor) \
    , GOOGLE__PROTOBUF__VALUE__KIND__NOT_SET, {0} }


/*
 * `ListValue` is a wrapper around a repeated field of values.
 * The JSON representation for `ListValue` is JSON array.
 */
struct  _Google__Protobuf__ListValue
{
  ProtobufCMessage base;
  /*
   * Repeated field of dynamically typed values.
   */
  size_t n_values;
  Google__Protobuf__Value **values;
};
#define GOOGLE__PROTOBUF__LIST_VALUE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__list_value__descriptor) \
    , 0,NULL }


/* Google__Protobuf__Struct__FieldsEntry methods */
void   google__protobuf__struct__fields_entry__init
                     (Google__Protobuf__Struct__FieldsEntry         *message);
/* Google__Protobuf__Struct methods */
void   google__protobuf__struct__init
                     (Google__Protobuf__Struct         *message);
size_t google__protobuf__struct__get_packed_size
                     (const Google__Protobuf__Struct   *message);
size_t google__protobuf__struct__pack
                     (const Google__Protobuf__Struct   *message,
                      uint8_t             *out);
size_t google__protobuf__struct__pack_to_buffer
                     (const Google__Protobuf__Struct   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Struct *
       google__protobuf__struct__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__struct__free_unpacked
                     (Google__Protobuf__Struct *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__Value methods */
void   google__protobuf__value__init
                     (Google__Protobuf__Value         *message);
size_t google__protobuf__value__get_packed_size
                     (const Google__Protobuf__Value   *message);
size_t google__protobuf__value__pack
                     (const Google__Protobuf__Value   *message,
                      uint8_t             *out);
size_t google__protobuf__value__pack_to_buffer
                     (const Google__Protobuf__Value   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Value *
       google__protobuf__value__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__value__free_unpacked
                     (Google__Protobuf__Value *message,
                      ProtobufCAllocator *allocator);
/* Google__Protobuf__ListValue methods */
void   google__protobuf__list_value__init
                     (Google__Protobuf__ListValue         *message);
size_t google__protobuf__list_value__get_packed_size
                     (const Google__Protobuf__ListValue   *message);
size_t google__protobuf__list_value__pack
                     (const Google__Protobuf__ListValue   *message,
                      uint8_t             *out);
size_t google__protobuf__list_value__pack_to_buffer
                     (const Google__Protobuf__ListValue   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__ListValue *
       google__protobuf__list_value__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__list_value__free_unpacked
                     (Google__Protobuf__ListValue *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*Google__Protobuf__Struct__FieldsEntry_Closure)
                 (const Google__Protobuf__Struct__FieldsEntry *message,
                  void *closure_data);
typedef void (*Google__Protobuf__Struct_Closure)
                 (const Google__Protobuf__Struct *message,
                  void *closure_data);
typedef void (*Google__Protobuf__Value_Closure)
                 (const Google__Protobuf__Value *message,
                  void *closure_data);
typedef void (*Google__Protobuf__ListValue_Closure)
                 (const Google__Protobuf__ListValue *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCEnumDescriptor    google__protobuf__null_value__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__struct__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__struct__fields_entry__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__value__descriptor;
extern const ProtobufCMessageDescriptor google__protobuf__list_value__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_google_2fprotobuf_2fstruct_2eproto__INCLUDED */
