int sizeof_scalars[9]; /* char,short,int,long,long_long,
pdata,pfunc,
float,double */
+
+ int struct_boundary;
} gras_arch_desc_t;
extern const gras_arch_desc_t gras_arches[gras_arch_count];
char *name;
long int offset[gras_arch_count];
- int code;
+ gras_datadesc_type_t *type;
gras_datadesc_type_cb_void_t pre;
gras_datadesc_type_cb_void_t post;
};
typedef struct s_gras_dd_cat_scalar {
enum e_gras_dd_scalar_encoding encoding;
+ gras_ddt_scalar_type_t type; /* to check easily that redefinition matches*/
} gras_dd_cat_scalar_t;
/**
*/
typedef struct s_gras_dd_cat_struct {
gras_dynar_t *fields; /* elm type = gras_dd_cat_field_t */
- int remaining; /**/
int closed; /* gras_datadesc_declare_struct_close() was called */
} gras_dd_cat_struct_t;
* Specific fields of a reference
*/
typedef struct s_gras_dd_cat_ref {
- int code;
+ gras_datadesc_type_t *type;
/* callback used to return the referenced type number */
- gras_datadesc_type_cb_int_t selector;
+ gras_datadesc_selector_t selector;
} gras_dd_cat_ref_t;
* Specific fields of an array
*/
typedef struct s_gras_dd_cat_array {
- int code;
+ gras_datadesc_type_t *type;
/* element_count < 0 means dynamically defined */
long int fixed_size;
char *name;
unsigned int name_len;
- unsigned int refcounter;
-
/* payload */
long int size[gras_arch_count];
enum e_gras_datadesc_type_category category_code;
union u_gras_datadesc_category category;
- gras_datadesc_type_cb_void_t pre;
- gras_datadesc_type_cb_void_t post;
+ gras_datadesc_type_cb_void_t send;
+ gras_datadesc_type_cb_void_t recv;
};
/***************************
- * Type creation functions *
+ * constructor/desctructor *
***************************/
+void gras_datadesc_free(gras_datadesc_type_t *type);
+
gras_error_t
-gras_datadesc_declare_scalar(const char *name,
- gras_ddt_scalar_type_t type,
- enum e_gras_dd_scalar_encoding encoding,
- gras_datadesc_type_cb_void_t cb,
- gras_datadesc_type_t **dst);
+gras_datadesc_scalar(const char *name,
+ gras_ddt_scalar_type_t type,
+ enum e_gras_dd_scalar_encoding encoding,
+ gras_datadesc_type_t **dst);
/****************************************************
* Callback persistant state constructor/destructor *
****************************************************/
gras_error_t
-gras_dd_cbps_new(gras_dd_cbps_t **dst);
+gras_cbps_new(gras_cbps_t **dst);
void
-gras_dd_cbps_free(gras_dd_cbps_t **state);
+gras_cbps_free(gras_cbps_t **state);
/***************
* Convertions *