Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
0d43a4fb171acb4ed2f8bd8605c67356ce7e4dca
[simgrid.git] / src / gras / gs / type.h
1 /* gs_type.h */
2 #ifndef GS_TYPE_H
3 #define GS_TYPE_H
4
5
6 /*
7  * Set of categories
8  */
9 union u_gs_category {
10         void                             *undefined_data;
11         struct s_gs_cat_elemental        *elemental_data;
12         struct s_gs_cat_struct           *struct_data;
13         struct s_gs_cat_union            *union_data;
14         struct s_gs_cat_ref              *ref_data;
15         struct s_gs_cat_array            *array_data;
16         struct s_gs_cat_ignored          *ignored_data;
17 };
18
19
20 /*
21  * A type
22  */
23 struct s_gs_type {
24         int                               code;
25         char                             *name;
26
27         long int                          size;
28
29         long int                          alignment;
30         long int                          aligned_size;
31
32         enum  e_gs_type_category          category_code;
33         union u_gs_category               category;
34
35         void                             (*before_callback)(void                *vars,
36                                                             struct s_gs_type    *p_type,
37                                                             void                *data);
38
39         void                             (*after_callback)(void                 *vars,
40                                                            struct s_gs_type     *p_type,
41                                                            void                 *data);
42 };
43
44 #endif /* GS_TYPE_H */