#define GRAS_DATADESC_PRIVATE_H
#include "gras_private.h"
-#include "DataDesc/datadesc_interface.h"
+#include "gras/DataDesc/datadesc_interface.h"
/**
* aligned:
* Descriptions of all known architectures *
*******************************************/
-#define gras_arch_count 4
+#define gras_arch_count 5
typedef enum {
gras_ddt_scalar_char = 0,
gras_ddt_scalar_short = 1,
int endian;
- int sizeof_scalars[9]; /* char,short,int,long,long_long,
- pdata,pfunc,
- float,double */
-
- int struct_boundary;
+ int sizeofs[9]; /* char,short,int,long,long_long,
+ pdata,pfunc,
+ float,double */
+ int boundaries[9]; /* idem */
} 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;
/**
* 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;
+ /* element_count == 0 means dynamically defined */
+ unsigned long int fixed_size;
/* callback used to return the dynamic length */
gras_datadesc_type_cb_int_t dynamic_size;
char *name;
unsigned int name_len;
- unsigned int refcounter;
-
/* payload */
- long int size[gras_arch_count];
+ unsigned long int size[gras_arch_count];
- long int alignment[gras_arch_count];
- long int aligned_size[gras_arch_count];
+ unsigned long int alignment[gras_arch_count];
+ unsigned long int aligned_size[gras_arch_count];
enum e_gras_datadesc_type_category category_code;
union u_gras_datadesc_category category;
};
/***************************
- * Type creation functions *
+ * constructor/desctructor *
***************************/
+void gras_datadesc_free(gras_datadesc_type_t *type);
+
gras_error_t
gras_datadesc_scalar(const char *name,
gras_ddt_scalar_type_t type,