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

#ifndef PROTOBUF_C_concept_2eproto__INCLUDED
#define PROTOBUF_C_concept_2eproto__INCLUDED

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

PROTOBUF_C__BEGIN_DECLS

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

#include "vector.pb-c.h"
#include "spatial.pb-c.h"
#include "meta.pb-c.h"

typedef struct Messages__Variables Messages__Variables;
typedef struct Messages__Function Messages__Function;
typedef struct Messages__Command Messages__Command;
typedef struct Messages__Script Messages__Script;
typedef struct Messages__Model Messages__Model;
typedef struct Messages__Coupling Messages__Coupling;
typedef struct Messages__System Messages__System;


/* --- enums --- */


/* --- messages --- */

struct  Messages__Variables
{
  ProtobufCMessage base;
  /*
   *reserved
   */
  size_t n_int_names;
  char **int_names;
  size_t n_int_values;
  int32_t *int_values;
  size_t n_int_descriptions;
  char **int_descriptions;
  /*
   *reserved
   */
  size_t n_bool_names;
  char **bool_names;
  size_t n_bool_values;
  protobuf_c_boolean *bool_values;
  size_t n_bool_descriptions;
  char **bool_descriptions;
  /*
   *reserved
   */
  size_t n_double_names;
  char **double_names;
  size_t n_double_values;
  double *double_values;
  size_t n_double_descriptions;
  char **double_descriptions;
  /*
   *reserved
   */
  size_t n_string_names;
  char **string_names;
  size_t n_string_values;
  char **string_values;
  /*
   *reserved
   */
  size_t n_string_descriptions;
  char **string_descriptions;
};
#define MESSAGES__VARIABLES__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__variables__descriptor) \
    , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }


struct  Messages__Function
{
  ProtobufCMessage base;
  char *name;
  /*
   * argument object binding requirements:
   */
  /*
   * required types to operate (name of class or type)
   */
  size_t n_argument_types;
  char **argument_types;
  /*
   * matching argument descriptions (used by UI)
   */
  size_t n_argument_descriptions;
  char **argument_descriptions;
  /*
   * PK's required for algorithm inputs (user inputs)
   */
  size_t n_inputs;
  char **inputs;
  /*
   * PK's required for algorithm outputs
   */
  size_t n_outputs;
  char **outputs;
  /*
   * PK's for uniform values across all nodes
   */
  size_t n_constants;
  char **constants;
  /*
   * PK's for to be set by user in UI (end-user inputs)
   */
  size_t n_to_be_defined;
  char **to_be_defined;
  /*
   * local data relevant to this algorithm (coefficients, etc)
   */
  size_t n_data;
  Messages__Vector64 **data;
  /*
   *reserved  
   */
  protobuf_c_boolean cpu_capable;
  protobuf_c_boolean gpu_capable;
  protobuf_c_boolean include_as_preprocessor;
  protobuf_c_boolean omit_from_main_loop;
  protobuf_c_boolean include_as_postprocessor;
  protobuf_c_boolean mutually_exclusive;
  protobuf_c_boolean only_once;
  protobuf_c_boolean push_front;
  /*
   *reserved
   */
  protobuf_c_boolean dont_flatten;
};
#define MESSAGES__FUNCTION__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__function__descriptor) \
    , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0 }


struct  Messages__Command
{
  ProtobufCMessage base;
  Messages__Function *function;
  protobuf_c_boolean args_are_set;
  protobuf_c_boolean is_ready;
  uint64_t exec_count;
  uint64_t simd_size;
  uint64_t version;
  /*
   * unique runtime identifier (assigned and only valid within a server session)
   */
  int64_t id;
  uint64_t n_kernel;
  float progress;
  char *msg;
  /*
   *reserved  
   */
  Messages__Record64 *data;
  /*
   * optional, to be called from within bound function
   */
  size_t n_before;
  Messages__Command **before;
  /*
   * optional, to be called from within bound function
   */
  size_t n_after;
  Messages__Command **after;
  /*
   * if assigned, used to identify specific zones for conditions, etc
   */
  uint32_t region_type;
  /*
   * if assigned, used to identify specific zones for conditions, etc
   */
  int32_t region_id;
};
#define MESSAGES__COMMAND__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__command__descriptor) \
    , NULL, 0, 0, 0, 0, 0, 0, 0, 0, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0, 0 }


struct  Messages__Script
{
  ProtobufCMessage base;
  char *name;
  char *msg;
  char *source_code;
  /*
   * same as system uid, if assigned
   */
  int64_t uid;
  uint32_t device;
  uint32_t status;
  uint32_t order;
  float progress;
  /*
   *reserved
   */
  Messages__Variables *variables;
  /*
   *reserved  
   */
  size_t n_sequence;
  Messages__Command **sequence;
  /*
   *reserved
   */
  Messages__Script *before;
  Messages__Script *after;
};
#define MESSAGES__SCRIPT__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__script__descriptor) \
    , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, NULL, 0,NULL, NULL, NULL }


struct  Messages__Model
{
  ProtobufCMessage base;
  char *name;
  /*
   *reserved
   */
  size_t n_dofs;
  char **dofs;
  /*
   * ordered algorithms (by name)
   */
  size_t n_algorithms;
  char **algorithms;
  /*
   * serialized property-keys
   */
  size_t n_available_outputs;
  char **available_outputs;
  /*
   * some pk's are not recorded by default as an optimization. they can be added
   */
  size_t n_extra_properties;
  char **extra_properties;
  /*
   * relevant algorithm/function names that are applied to one ore more regions or initialize
   */
  size_t n_compatible_conditions;
  char **compatible_conditions;
  /*
   *reserved
   */
  size_t n_sub_models;
  Messages__Model **sub_models;
  /*
   * default constants, unless otherwise specified (by region)
   */
  Messages__Record64 *default_data;
  /*
   * how each PK can be calculated (by algorithm name)
   */
  size_t n_rules;
  Messages__Rule **rules;
  size_t n_mutex_stack;
  Messages__Rule **mutex_stack;
  /*
   *reserved
   */
  Messages__SparseMatrix *markov_matrix;
};
#define MESSAGES__MODEL__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__model__descriptor) \
    , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0,NULL, NULL }


struct  Messages__Coupling
{
  ProtobufCMessage base;
  /*
   * s---
   */
  char *source_system;
  /*
   * ---t
   */
  char *target_system;
  /*
   * uid is only valid within a given session
   */
  int64_t source_uid;
  /*
   * uid is only valid within a given session
   */
  int64_t target_uid;
  /*
   * s---
   */
  Messages__Zone *source_region;
  /*
   * ---t
   */
  Messages__Zone *target_region;
  /*
   *reserved
   */
  /*
   * enum(0:8): default, 1:1, nearest, distance, least-square, projected, view-factor, immersed
   */
  uint32_t sampling_mode;
  char *name;
  /*
   * s---wo---w1---w2---t
   */
  size_t n_dofs;
  char **dofs;
  Messages__Representation *representation;
  /*
   * s----Z Z----t
   */
  protobuf_c_boolean enabled;
  /*
   * s---------->t
   */
  protobuf_c_boolean forward;
  /*
   * s<----------t
   */
  protobuf_c_boolean reverse;
};
#define MESSAGES__COUPLING__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__coupling__descriptor) \
    , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0, NULL, NULL, 0, (char *)protobuf_c_empty_string, 0,NULL, NULL, 0, 0, 0 }


struct  Messages__System
{
  ProtobufCMessage base;
  /*
   * name and other basic info, some of which is non-persistent 
   */
  Messages__Meta *meta;
  /*
   * serialized solver defined by a sequence of instructions
   */
  size_t n_script;
  Messages__Script **script;
  /*
   * double16 (glm::dmat4) local transformation matrix
   */
  size_t n_local_transform;
  double *local_transform;
  /*
   * double16 (glm::dmat4) local transformation matrix
   */
  size_t n_local_rate;
  double *local_rate;
  /*
   * double16 (glm::dmat4) local transformation matrix
   */
  size_t n_local_accel;
  double *local_accel;
  /*
   * sub-system names (exact matches)
   */
  size_t n_children;
  char **children;
  /*
   * external file references, such as *.xcg geometry (Messages::Topology)
   */
  size_t n_referenced_files;
  char **referenced_files;
  /*
   * files such as symbol and supporting documentation
   */
  size_t n_embedded_files;
  Messages__File **embedded_files;
  size_t n_notes;
  char **notes;
  /*
   * links and contacts between regions
   */
  size_t n_couplings;
  Messages__Coupling **couplings;
  /*
   * physical / mathematical models (groups of algorithms)
   */
  size_t n_models;
  Messages__Model **models;
  /*
   * physics.data and system requirements
   */
  Messages__Record64 *physical_constants;
  /*
   * special algorithm commands applied as constraints and conditions
   */
  size_t n_conditions;
  Messages__Command **conditions;
};
#define MESSAGES__SYSTEM__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&messages__system__descriptor) \
    , NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL }


/* Messages__Variables methods */
void   messages__variables__init
                     (Messages__Variables         *message);
size_t messages__variables__get_packed_size
                     (const Messages__Variables   *message);
size_t messages__variables__pack
                     (const Messages__Variables   *message,
                      uint8_t             *out);
size_t messages__variables__pack_to_buffer
                     (const Messages__Variables   *message,
                      ProtobufCBuffer     *buffer);
Messages__Variables *
       messages__variables__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__variables__free_unpacked
                     (Messages__Variables *message,
                      ProtobufCAllocator *allocator);
/* Messages__Function methods */
void   messages__function__init
                     (Messages__Function         *message);
size_t messages__function__get_packed_size
                     (const Messages__Function   *message);
size_t messages__function__pack
                     (const Messages__Function   *message,
                      uint8_t             *out);
size_t messages__function__pack_to_buffer
                     (const Messages__Function   *message,
                      ProtobufCBuffer     *buffer);
Messages__Function *
       messages__function__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__function__free_unpacked
                     (Messages__Function *message,
                      ProtobufCAllocator *allocator);
/* Messages__Command methods */
void   messages__command__init
                     (Messages__Command         *message);
size_t messages__command__get_packed_size
                     (const Messages__Command   *message);
size_t messages__command__pack
                     (const Messages__Command   *message,
                      uint8_t             *out);
size_t messages__command__pack_to_buffer
                     (const Messages__Command   *message,
                      ProtobufCBuffer     *buffer);
Messages__Command *
       messages__command__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__command__free_unpacked
                     (Messages__Command *message,
                      ProtobufCAllocator *allocator);
/* Messages__Script methods */
void   messages__script__init
                     (Messages__Script         *message);
size_t messages__script__get_packed_size
                     (const Messages__Script   *message);
size_t messages__script__pack
                     (const Messages__Script   *message,
                      uint8_t             *out);
size_t messages__script__pack_to_buffer
                     (const Messages__Script   *message,
                      ProtobufCBuffer     *buffer);
Messages__Script *
       messages__script__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__script__free_unpacked
                     (Messages__Script *message,
                      ProtobufCAllocator *allocator);
/* Messages__Model methods */
void   messages__model__init
                     (Messages__Model         *message);
size_t messages__model__get_packed_size
                     (const Messages__Model   *message);
size_t messages__model__pack
                     (const Messages__Model   *message,
                      uint8_t             *out);
size_t messages__model__pack_to_buffer
                     (const Messages__Model   *message,
                      ProtobufCBuffer     *buffer);
Messages__Model *
       messages__model__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__model__free_unpacked
                     (Messages__Model *message,
                      ProtobufCAllocator *allocator);
/* Messages__Coupling methods */
void   messages__coupling__init
                     (Messages__Coupling         *message);
size_t messages__coupling__get_packed_size
                     (const Messages__Coupling   *message);
size_t messages__coupling__pack
                     (const Messages__Coupling   *message,
                      uint8_t             *out);
size_t messages__coupling__pack_to_buffer
                     (const Messages__Coupling   *message,
                      ProtobufCBuffer     *buffer);
Messages__Coupling *
       messages__coupling__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__coupling__free_unpacked
                     (Messages__Coupling *message,
                      ProtobufCAllocator *allocator);
/* Messages__System methods */
void   messages__system__init
                     (Messages__System         *message);
size_t messages__system__get_packed_size
                     (const Messages__System   *message);
size_t messages__system__pack
                     (const Messages__System   *message,
                      uint8_t             *out);
size_t messages__system__pack_to_buffer
                     (const Messages__System   *message,
                      ProtobufCBuffer     *buffer);
Messages__System *
       messages__system__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   messages__system__free_unpacked
                     (Messages__System *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*Messages__Variables_Closure)
                 (const Messages__Variables *message,
                  void *closure_data);
typedef void (*Messages__Function_Closure)
                 (const Messages__Function *message,
                  void *closure_data);
typedef void (*Messages__Command_Closure)
                 (const Messages__Command *message,
                  void *closure_data);
typedef void (*Messages__Script_Closure)
                 (const Messages__Script *message,
                  void *closure_data);
typedef void (*Messages__Model_Closure)
                 (const Messages__Model *message,
                  void *closure_data);
typedef void (*Messages__Coupling_Closure)
                 (const Messages__Coupling *message,
                  void *closure_data);
typedef void (*Messages__System_Closure)
                 (const Messages__System *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor messages__variables__descriptor;
extern const ProtobufCMessageDescriptor messages__function__descriptor;
extern const ProtobufCMessageDescriptor messages__command__descriptor;
extern const ProtobufCMessageDescriptor messages__script__descriptor;
extern const ProtobufCMessageDescriptor messages__model__descriptor;
extern const ProtobufCMessageDescriptor messages__coupling__descriptor;
extern const ProtobufCMessageDescriptor messages__system__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_concept_2eproto__INCLUDED */
