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

#ifndef PROTOBUF_C_framework_2eproto__INCLUDED
#define PROTOBUF_C_framework_2eproto__INCLUDED

#include "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 1003000 < 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 _PaddleMobile__Framework__Proto__OpDesc
    PaddleMobile__Framework__Proto__OpDesc;
typedef struct _PaddleMobile__Framework__Proto__OpDesc__Attr
    PaddleMobile__Framework__Proto__OpDesc__Attr;
typedef struct _PaddleMobile__Framework__Proto__OpDesc__Var
    PaddleMobile__Framework__Proto__OpDesc__Var;
typedef struct _PaddleMobile__Framework__Proto__OpProto
    PaddleMobile__Framework__Proto__OpProto;
typedef struct _PaddleMobile__Framework__Proto__OpProto__Var
    PaddleMobile__Framework__Proto__OpProto__Var;
typedef struct _PaddleMobile__Framework__Proto__OpProto__Attr
    PaddleMobile__Framework__Proto__OpProto__Attr;
typedef struct _PaddleMobile__Framework__Proto__VarType
    PaddleMobile__Framework__Proto__VarType;
typedef struct _PaddleMobile__Framework__Proto__VarType__TensorDesc
    PaddleMobile__Framework__Proto__VarType__TensorDesc;
typedef struct _PaddleMobile__Framework__Proto__VarType__LoDTensorDesc
    PaddleMobile__Framework__Proto__VarType__LoDTensorDesc;
typedef struct _PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc
    PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc;
typedef struct _PaddleMobile__Framework__Proto__VarType__ReaderDesc
    PaddleMobile__Framework__Proto__VarType__ReaderDesc;
typedef struct _PaddleMobile__Framework__Proto__VarType__ChannelDesc
    PaddleMobile__Framework__Proto__VarType__ChannelDesc;
typedef struct _PaddleMobile__Framework__Proto__VarType__Tuple
    PaddleMobile__Framework__Proto__VarType__Tuple;
typedef struct _PaddleMobile__Framework__Proto__VarDesc
    PaddleMobile__Framework__Proto__VarDesc;
typedef struct _PaddleMobile__Framework__Proto__BlockDesc
    PaddleMobile__Framework__Proto__BlockDesc;
typedef struct _PaddleMobile__Framework__Proto__ProgramDesc
    PaddleMobile__Framework__Proto__ProgramDesc;

/* --- enums --- */

typedef enum _PaddleMobile__Framework__Proto__VarType__Type {
  /*
   * Pod Types
   */
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__BOOL = 0,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__INT16 = 1,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__INT32 = 2,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__INT64 = 3,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__FP16 = 4,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__FP32 = 5,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__FP64 = 6,
  /*
   * Other types that may need additional descriptions
   */
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__LOD_TENSOR = 7,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__SELECTED_ROWS = 8,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__FEED_MINIBATCH = 9,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__FETCH_LIST = 10,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__STEP_SCOPES = 11,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__LOD_RANK_TABLE = 12,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__LOD_TENSOR_ARRAY = 13,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__PLACE_LIST = 14,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__READER = 15,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__CHANNEL = 16,
  /*
   * Any runtime decided variable type is raw
   * raw variables should manage their own allocations
   * in operators like nccl_op
   */
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__RAW = 17,
  PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__TUPLE =
      18 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(
          PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE)
} PaddleMobile__Framework__Proto__VarType__Type;
typedef enum _PaddleMobile__Framework__Proto__AttrType {
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__INT = 0,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__FLOAT = 1,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__STRING = 2,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__INTS = 3,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__FLOATS = 4,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__STRINGS = 5,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__BOOLEAN = 6,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__BOOLEANS = 7,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__BLOCK = 8,
  PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__LONG =
      9 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(
          PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE)
} PaddleMobile__Framework__Proto__AttrType;

/* --- messages --- */

struct _PaddleMobile__Framework__Proto__OpDesc__Attr {
  ProtobufCMessage base;
  char *name;
  PaddleMobile__Framework__Proto__AttrType type;
  protobuf_c_boolean has_i;
  int32_t i;
  protobuf_c_boolean has_f;
  float f;
  char *s;
  size_t n_ints;
  int32_t *ints;
  size_t n_floats;
  float *floats;
  size_t n_strings;
  char **strings;
  protobuf_c_boolean has_b;
  protobuf_c_boolean b;
  size_t n_bools;
  protobuf_c_boolean *bools;
  protobuf_c_boolean has_block_idx;
  int32_t block_idx;
  protobuf_c_boolean has_l;
  int64_t l;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_DESC__ATTR__INIT                   \
  {                                                                            \
    PROTOBUF_C_MESSAGE_INIT(                                                   \
        &paddle_mobile__framework__proto__op_desc__attr__descriptor)           \
    , NULL, PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__INT, 0, 0, 0, 0, NULL, \
        0, NULL, 0, NULL, 0, NULL, 0, 0, 0, NULL, 0, 0, 0, 0                   \
  }

struct _PaddleMobile__Framework__Proto__OpDesc__Var {
  ProtobufCMessage base;
  char *parameter;
  size_t n_arguments;
  char **arguments;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_DESC__VAR__INIT         \
  {                                                                 \
    PROTOBUF_C_MESSAGE_INIT(                                        \
        &paddle_mobile__framework__proto__op_desc__var__descriptor) \
    , NULL, 0, NULL                                                 \
  }

/*
 * OpDesc describes an instance of a C++ framework::OperatorBase
 * derived class type.
 */
struct _PaddleMobile__Framework__Proto__OpDesc {
  ProtobufCMessage base;
  char *type;
  size_t n_inputs;
  PaddleMobile__Framework__Proto__OpDesc__Var **inputs;
  size_t n_outputs;
  PaddleMobile__Framework__Proto__OpDesc__Var **outputs;
  size_t n_attrs;
  PaddleMobile__Framework__Proto__OpDesc__Attr **attrs;
  protobuf_c_boolean has_is_target;
  protobuf_c_boolean is_target;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_DESC__INIT         \
  {                                                            \
    PROTOBUF_C_MESSAGE_INIT(                                   \
        &paddle_mobile__framework__proto__op_desc__descriptor) \
    , NULL, 0, NULL, 0, NULL, 0, NULL, 0, 0                    \
  }

/*
 * VarProto describes the C++ type framework::Variable.
 */
struct _PaddleMobile__Framework__Proto__OpProto__Var {
  ProtobufCMessage base;
  char *name;
  char *comment;
  protobuf_c_boolean has_duplicable;
  protobuf_c_boolean duplicable;
  protobuf_c_boolean has_intermediate;
  protobuf_c_boolean intermediate;
  protobuf_c_boolean has_dispensable;
  protobuf_c_boolean dispensable;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_PROTO__VAR__INIT         \
  {                                                                  \
    PROTOBUF_C_MESSAGE_INIT(                                         \
        &paddle_mobile__framework__proto__op_proto__var__descriptor) \
    , NULL, NULL, 0, 0, 0, 0, 0, 0                                   \
  }

/*
 * AttrProto describes the C++ type Attribute.
 */
struct _PaddleMobile__Framework__Proto__OpProto__Attr {
  ProtobufCMessage base;
  char *name;
  PaddleMobile__Framework__Proto__AttrType type;
  char *comment;
  /*
   * If that attribute is generated, it means the Paddle third
   * language binding has responsibility to fill that
   * attribute. End-User should not set that attribute.
   */
  protobuf_c_boolean has_generated;
  protobuf_c_boolean generated;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_PROTO__ATTR__INIT           \
  {                                                                     \
    PROTOBUF_C_MESSAGE_INIT(                                            \
        &paddle_mobile__framework__proto__op_proto__attr__descriptor)   \
    , NULL, PADDLE_MOBILE__FRAMEWORK__PROTO__ATTR_TYPE__INT, NULL, 0, 0 \
  }

/*
 * OpProto describes a C++ framework::OperatorBase derived class.
 */
struct _PaddleMobile__Framework__Proto__OpProto {
  ProtobufCMessage base;
  char *type;
  size_t n_inputs;
  PaddleMobile__Framework__Proto__OpProto__Var **inputs;
  size_t n_outputs;
  PaddleMobile__Framework__Proto__OpProto__Var **outputs;
  size_t n_attrs;
  PaddleMobile__Framework__Proto__OpProto__Attr **attrs;
  char *comment;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__OP_PROTO__INIT         \
  {                                                             \
    PROTOBUF_C_MESSAGE_INIT(                                    \
        &paddle_mobile__framework__proto__op_proto__descriptor) \
    , NULL, 0, NULL, 0, NULL, 0, NULL, NULL                     \
  }

struct _PaddleMobile__Framework__Proto__VarType__TensorDesc {
  ProtobufCMessage base;
  /*
   * Should only be PODType. Is enforced in C++
   */
  PaddleMobile__Framework__Proto__VarType__Type data_type;
  /*
   * [UNK, 640, 480] is saved as [-1, 640, 480]
   */
  size_t n_dims;
  int64_t *dims;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TENSOR_DESC__INIT         \
  {                                                                          \
    PROTOBUF_C_MESSAGE_INIT(                                                 \
        &paddle_mobile__framework__proto__var_type__tensor_desc__descriptor) \
    , PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__BOOL, 0, NULL         \
  }

struct _PaddleMobile__Framework__Proto__VarType__LoDTensorDesc {
  ProtobufCMessage base;
  PaddleMobile__Framework__Proto__VarType__TensorDesc *tensor;
  protobuf_c_boolean has_lod_level;
  int32_t lod_level;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__LO_DTENSOR_DESC__INIT         \
  {                                                                              \
    PROTOBUF_C_MESSAGE_INIT(                                                     \
        &paddle_mobile__framework__proto__var_type__lo_dtensor_desc__descriptor) \
    , NULL, 0, 0                                                                 \
  }

struct _PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc {
  ProtobufCMessage base;
  PaddleMobile__Framework__Proto__VarType__TensorDesc *tensor;
  protobuf_c_boolean has_lod_level;
  int32_t lod_level;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__LO_DTENSOR_ARRAY_DESC__INIT         \
  {                                                                                    \
    PROTOBUF_C_MESSAGE_INIT(                                                           \
        &paddle_mobile__framework__proto__var_type__lo_dtensor_array_desc__descriptor) \
    , NULL, 0, 0                                                                       \
  }

struct _PaddleMobile__Framework__Proto__VarType__ReaderDesc {
  ProtobufCMessage base;
  size_t n_lod_tensor;
  PaddleMobile__Framework__Proto__VarType__LoDTensorDesc **lod_tensor;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__READER_DESC__INIT         \
  {                                                                          \
    PROTOBUF_C_MESSAGE_INIT(                                                 \
        &paddle_mobile__framework__proto__var_type__reader_desc__descriptor) \
    , 0, NULL                                                                \
  }

struct _PaddleMobile__Framework__Proto__VarType__ChannelDesc {
  ProtobufCMessage base;
  PaddleMobile__Framework__Proto__VarType__Type data_type;
  int64_t capacity;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__CHANNEL_DESC__INIT         \
  {                                                                           \
    PROTOBUF_C_MESSAGE_INIT(                                                  \
        &paddle_mobile__framework__proto__var_type__channel_desc__descriptor) \
    , PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__BOOL, 0                \
  }

struct _PaddleMobile__Framework__Proto__VarType__Tuple {
  ProtobufCMessage base;
  size_t n_element_type;
  PaddleMobile__Framework__Proto__VarType__Type *element_type;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TUPLE__INIT         \
  {                                                                    \
    PROTOBUF_C_MESSAGE_INIT(                                           \
        &paddle_mobile__framework__proto__var_type__tuple__descriptor) \
    , 0, NULL                                                          \
  }

struct _PaddleMobile__Framework__Proto__VarType {
  ProtobufCMessage base;
  PaddleMobile__Framework__Proto__VarType__Type type;
  PaddleMobile__Framework__Proto__VarType__TensorDesc *selected_rows;
  PaddleMobile__Framework__Proto__VarType__LoDTensorDesc *lod_tensor;
  PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc *tensor_array;
  PaddleMobile__Framework__Proto__VarType__ReaderDesc *reader;
  PaddleMobile__Framework__Proto__VarType__ChannelDesc *channel;
  PaddleMobile__Framework__Proto__VarType__Tuple *tuple;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__INIT                        \
  {                                                                            \
    PROTOBUF_C_MESSAGE_INIT(                                                   \
        &paddle_mobile__framework__proto__var_type__descriptor)                \
    , PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_TYPE__TYPE__BOOL, NULL, NULL, NULL, \
        NULL, NULL, NULL                                                       \
  }

struct _PaddleMobile__Framework__Proto__VarDesc {
  ProtobufCMessage base;
  char *name;
  PaddleMobile__Framework__Proto__VarType *type;
  protobuf_c_boolean has_persistable;
  protobuf_c_boolean persistable;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__VAR_DESC__INIT         \
  {                                                             \
    PROTOBUF_C_MESSAGE_INIT(                                    \
        &paddle_mobile__framework__proto__var_desc__descriptor) \
    , NULL, NULL, 0, 0                                          \
  }

struct _PaddleMobile__Framework__Proto__BlockDesc {
  ProtobufCMessage base;
  int32_t idx;
  int32_t parent_idx;
  size_t n_vars;
  PaddleMobile__Framework__Proto__VarDesc **vars;
  size_t n_ops;
  PaddleMobile__Framework__Proto__OpDesc **ops;
  protobuf_c_boolean has_forward_block_idx;
  int32_t forward_block_idx;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__BLOCK_DESC__INIT         \
  {                                                               \
    PROTOBUF_C_MESSAGE_INIT(                                      \
        &paddle_mobile__framework__proto__block_desc__descriptor) \
    , 0, 0, 0, NULL, 0, NULL, 0, -1                               \
  }

/*
 * Please refer to
 * https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/program.md
 * for more details.
 * TODO(panyx0718): A model can have multiple programs. Need a
 * way to distinguish them. Maybe ID or name?
 */
struct _PaddleMobile__Framework__Proto__ProgramDesc {
  ProtobufCMessage base;
  size_t n_blocks;
  PaddleMobile__Framework__Proto__BlockDesc **blocks;
};
#define PADDLE_MOBILE__FRAMEWORK__PROTO__PROGRAM_DESC__INIT         \
  {                                                                 \
    PROTOBUF_C_MESSAGE_INIT(                                        \
        &paddle_mobile__framework__proto__program_desc__descriptor) \
    , 0, NULL                                                       \
  }

/* PaddleMobile__Framework__Proto__OpDesc__Attr methods */
void paddle_mobile__framework__proto__op_desc__attr__init(
    PaddleMobile__Framework__Proto__OpDesc__Attr *message);
/* PaddleMobile__Framework__Proto__OpDesc__Var methods */
void paddle_mobile__framework__proto__op_desc__var__init(
    PaddleMobile__Framework__Proto__OpDesc__Var *message);
/* PaddleMobile__Framework__Proto__OpDesc methods */
void paddle_mobile__framework__proto__op_desc__init(
    PaddleMobile__Framework__Proto__OpDesc *message);

size_t paddle_mobile__framework__proto__op_desc__get_packed_size(
    const PaddleMobile__Framework__Proto__OpDesc *message);

PaddleMobile__Framework__Proto__OpDesc *
paddle_mobile__framework__proto__op_desc__unpack(ProtobufCAllocator *allocator,
                                                 size_t len,
                                                 const uint8_t *data);
void paddle_mobile__framework__proto__op_desc__free_unpacked(
    PaddleMobile__Framework__Proto__OpDesc *message,
    ProtobufCAllocator *allocator);
/* PaddleMobile__Framework__Proto__OpProto__Var methods */
void paddle_mobile__framework__proto__op_proto__var__init(
    PaddleMobile__Framework__Proto__OpProto__Var *message);
/* PaddleMobile__Framework__Proto__OpProto__Attr methods */
void paddle_mobile__framework__proto__op_proto__attr__init(
    PaddleMobile__Framework__Proto__OpProto__Attr *message);
/* PaddleMobile__Framework__Proto__OpProto methods */
void paddle_mobile__framework__proto__op_proto__init(
    PaddleMobile__Framework__Proto__OpProto *message);
size_t paddle_mobile__framework__proto__op_proto__get_packed_size(
    const PaddleMobile__Framework__Proto__OpProto *message);
PaddleMobile__Framework__Proto__OpProto *
paddle_mobile__framework__proto__op_proto__unpack(ProtobufCAllocator *allocator,
                                                  size_t len,
                                                  const uint8_t *data);
void paddle_mobile__framework__proto__op_proto__free_unpacked(
    PaddleMobile__Framework__Proto__OpProto *message,
    ProtobufCAllocator *allocator);
/* PaddleMobile__Framework__Proto__VarType__TensorDesc methods */
void paddle_mobile__framework__proto__var_type__tensor_desc__init(
    PaddleMobile__Framework__Proto__VarType__TensorDesc *message);
/* PaddleMobile__Framework__Proto__VarType__LoDTensorDesc methods */
void paddle_mobile__framework__proto__var_type__lo_dtensor_desc__init(
    PaddleMobile__Framework__Proto__VarType__LoDTensorDesc *message);
/* PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc methods */
void paddle_mobile__framework__proto__var_type__lo_dtensor_array_desc__init(
    PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc *message);
/* PaddleMobile__Framework__Proto__VarType__ReaderDesc methods */
void paddle_mobile__framework__proto__var_type__reader_desc__init(
    PaddleMobile__Framework__Proto__VarType__ReaderDesc *message);
/* PaddleMobile__Framework__Proto__VarType__ChannelDesc methods */
void paddle_mobile__framework__proto__var_type__channel_desc__init(
    PaddleMobile__Framework__Proto__VarType__ChannelDesc *message);
/* PaddleMobile__Framework__Proto__VarType__Tuple methods */
void paddle_mobile__framework__proto__var_type__tuple__init(
    PaddleMobile__Framework__Proto__VarType__Tuple *message);
/* PaddleMobile__Framework__Proto__VarType methods */
void paddle_mobile__framework__proto__var_type__init(
    PaddleMobile__Framework__Proto__VarType *message);
size_t paddle_mobile__framework__proto__var_type__get_packed_size(
    const PaddleMobile__Framework__Proto__VarType *message);
PaddleMobile__Framework__Proto__VarType *
paddle_mobile__framework__proto__var_type__unpack(ProtobufCAllocator *allocator,
                                                  size_t len,
                                                  const uint8_t *data);
void paddle_mobile__framework__proto__var_type__free_unpacked(
    PaddleMobile__Framework__Proto__VarType *message,
    ProtobufCAllocator *allocator);
/* PaddleMobile__Framework__Proto__VarDesc methods */
void paddle_mobile__framework__proto__var_desc__init(
    PaddleMobile__Framework__Proto__VarDesc *message);
size_t paddle_mobile__framework__proto__var_desc__get_packed_size(
    const PaddleMobile__Framework__Proto__VarDesc *message);
PaddleMobile__Framework__Proto__VarDesc *
paddle_mobile__framework__proto__var_desc__unpack(ProtobufCAllocator *allocator,
                                                  size_t len,
                                                  const uint8_t *data);
void paddle_mobile__framework__proto__var_desc__free_unpacked(
    PaddleMobile__Framework__Proto__VarDesc *message,
    ProtobufCAllocator *allocator);
/* PaddleMobile__Framework__Proto__BlockDesc methods */
void paddle_mobile__framework__proto__block_desc__init(
    PaddleMobile__Framework__Proto__BlockDesc *message);
size_t paddle_mobile__framework__proto__block_desc__get_packed_size(
    const PaddleMobile__Framework__Proto__BlockDesc *message);
PaddleMobile__Framework__Proto__BlockDesc *
paddle_mobile__framework__proto__block_desc__unpack(
    ProtobufCAllocator *allocator, size_t len, const uint8_t *data);
void paddle_mobile__framework__proto__block_desc__free_unpacked(
    PaddleMobile__Framework__Proto__BlockDesc *message,
    ProtobufCAllocator *allocator);
/* PaddleMobile__Framework__Proto__ProgramDesc methods */
void paddle_mobile__framework__proto__program_desc__init(
    PaddleMobile__Framework__Proto__ProgramDesc *message);
size_t paddle_mobile__framework__proto__program_desc__get_packed_size(
    const PaddleMobile__Framework__Proto__ProgramDesc *message);
PaddleMobile__Framework__Proto__ProgramDesc *
paddle_mobile__framework__proto__program_desc__unpack(
    ProtobufCAllocator *allocator, size_t len, const uint8_t *data);
void paddle_mobile__framework__proto__program_desc__free_unpacked(
    PaddleMobile__Framework__Proto__ProgramDesc *message,
    ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*PaddleMobile__Framework__Proto__OpDesc__Attr_Closure)(
    const PaddleMobile__Framework__Proto__OpDesc__Attr *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__OpDesc__Var_Closure)(
    const PaddleMobile__Framework__Proto__OpDesc__Var *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__OpDesc_Closure)(
    const PaddleMobile__Framework__Proto__OpDesc *message, void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__OpProto__Var_Closure)(
    const PaddleMobile__Framework__Proto__OpProto__Var *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__OpProto__Attr_Closure)(
    const PaddleMobile__Framework__Proto__OpProto__Attr *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__OpProto_Closure)(
    const PaddleMobile__Framework__Proto__OpProto *message, void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType__TensorDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarType__TensorDesc *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType__LoDTensorDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarType__LoDTensorDesc *message,
    void *closure_data);
typedef void (
    *PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarType__LoDTensorArrayDesc *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType__ReaderDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarType__ReaderDesc *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType__ChannelDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarType__ChannelDesc *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType__Tuple_Closure)(
    const PaddleMobile__Framework__Proto__VarType__Tuple *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarType_Closure)(
    const PaddleMobile__Framework__Proto__VarType *message, void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__VarDesc_Closure)(
    const PaddleMobile__Framework__Proto__VarDesc *message, void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__BlockDesc_Closure)(
    const PaddleMobile__Framework__Proto__BlockDesc *message,
    void *closure_data);
typedef void (*PaddleMobile__Framework__Proto__ProgramDesc_Closure)(
    const PaddleMobile__Framework__Proto__ProgramDesc *message,
    void *closure_data);

/* --- services --- */

/* --- descriptors --- */

extern const ProtobufCEnumDescriptor
    paddle_mobile__framework__proto__attr_type__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_desc__attr__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_desc__var__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_proto__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_proto__var__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__op_proto__attr__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__tensor_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__lo_dtensor_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__lo_dtensor_array_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__reader_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__channel_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_type__tuple__descriptor;
extern const ProtobufCEnumDescriptor
    paddle_mobile__framework__proto__var_type__type__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__var_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__block_desc__descriptor;
extern const ProtobufCMessageDescriptor
    paddle_mobile__framework__proto__program_desc__descriptor;

PROTOBUF_C__END_DECLS

#endif /* PROTOBUF_C_framework_2eproto__INCLUDED */
