X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50dfd47984333c254d1ff7d482ee8bb1ced712b5..98fcf9f030a152fb946c3860abc7b7d748d6f1a5:/src/gras/DataDesc/datadesc.c?ds=sidebyside diff --git a/src/gras/DataDesc/datadesc.c b/src/gras/DataDesc/datadesc.c index f5a41d8a74..c2e538822e 100644 --- a/src/gras/DataDesc/datadesc.c +++ b/src/gras/DataDesc/datadesc.c @@ -8,18 +8,16 @@ /* This program is free software; you can redistribute it and/or modify it under the terms of the license (GNU LGPL) which comes with this package. */ -#include "DataDesc/datadesc_private.h" +#include "gras/DataDesc/datadesc_private.h" -GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(DataDesc,GRAS); +GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(datadesc,gras,"Data description"); /* FIXME: make this host-dependent using a trick such as UserData*/ gras_set_t *gras_datadesc_set_local=NULL; /* callback for array size when sending strings */ static int -_strlen_cb(void *vars, - gras_datadesc_type_t *type, - void *data) { +_strlen_cb(gras_cbps_t *vars, void *data) { return 1+(long int)strlen(data); } @@ -45,95 +43,95 @@ gras_datadesc_init(void) { TRYFAIL(gras_set_new(&gras_datadesc_set_local)); - TRYFAIL(gras_datadesc_declare_scalar("signed char", - gras_ddt_scalar_char, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("char", - gras_ddt_scalar_char, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("unsigned char", - gras_ddt_scalar_char, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("signed char", + gras_ddt_scalar_char, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("char", + gras_ddt_scalar_char, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("unsigned char", + gras_ddt_scalar_char, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("signed short int", - gras_ddt_scalar_short, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("short int", - gras_ddt_scalar_short, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("unsigned short int", - gras_ddt_scalar_short, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("signed short int", + gras_ddt_scalar_short, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("short int", + gras_ddt_scalar_short, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("unsigned short int", + gras_ddt_scalar_short, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("signed int", - gras_ddt_scalar_int, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("int", - gras_ddt_scalar_int, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("unsigned int", - gras_ddt_scalar_int, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("signed int", + gras_ddt_scalar_int, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("int", + gras_ddt_scalar_int, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("unsigned int", + gras_ddt_scalar_int, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("signed long int", - gras_ddt_scalar_long, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("long int", - gras_ddt_scalar_long, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("unsigned long int", - gras_ddt_scalar_long, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("signed long int", + gras_ddt_scalar_long, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("long int", + gras_ddt_scalar_long, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("unsigned long int", + gras_ddt_scalar_long, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("signed long long int", - gras_ddt_scalar_long_long, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("long long int", - gras_ddt_scalar_long_long, - e_gras_dd_scalar_encoding_sint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("unsigned long long int", - gras_ddt_scalar_long_long, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("signed long long int", + gras_ddt_scalar_long_long, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("long long int", + gras_ddt_scalar_long_long, + e_gras_dd_scalar_encoding_sint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("unsigned long long int", + gras_ddt_scalar_long_long, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("data pointer", - gras_ddt_scalar_pdata, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("function pointer", - gras_ddt_scalar_pfunc, - e_gras_dd_scalar_encoding_uint, - NULL, &ddt)); + TRYFAIL(gras_datadesc_scalar("data pointer", + gras_ddt_scalar_pdata, + e_gras_dd_scalar_encoding_uint, + &ddt)); + TRYFAIL(gras_datadesc_scalar("function pointer", + gras_ddt_scalar_pfunc, + e_gras_dd_scalar_encoding_uint, + &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("float", - gras_ddt_scalar_float, - e_gras_dd_scalar_encoding_float, - NULL, &ddt)); - TRYFAIL(gras_datadesc_declare_scalar("double", - gras_ddt_scalar_float, - e_gras_dd_scalar_encoding_float, - NULL,&ddt)); - - TRYFAIL(gras_datadesc_declare_array_dyn("char[]", - gras_datadesc_by_name("char"), - _strlen_cb,&ddt)); - TRYFAIL(gras_datadesc_declare_ref("string", - gras_datadesc_by_name("char[]"), - &ddt)); + TRYFAIL(gras_datadesc_scalar("float", + gras_ddt_scalar_float, + e_gras_dd_scalar_encoding_float, + &ddt)); + TRYFAIL(gras_datadesc_scalar("double", + gras_ddt_scalar_double, + e_gras_dd_scalar_encoding_float, + &ddt)); + + TRYFAIL(gras_datadesc_array_dyn("char[]", + gras_datadesc_by_name("char"), + _strlen_cb,&ddt)); + TRYFAIL(gras_datadesc_ref("string", + gras_datadesc_by_name("char[]"), + &ddt)); } @@ -185,7 +183,7 @@ int gras_datadesc_size(gras_datadesc_type_t *type) { * For debugging purpose */ void gras_datadesc_type_dump(const gras_datadesc_type_t *ddt){ - int i; + int cpt; printf("DataDesc dump:"); if(!ddt) { @@ -193,37 +191,48 @@ void gras_datadesc_type_dump(const gras_datadesc_type_t *ddt){ return; } printf ("%s (ID:%d)\n",ddt->name,ddt->code); - printf (" refcounter=%d\n",ddt->refcounter); printf (" category: %s\n",gras_datadesc_cat_names[ddt->category_code]); printf (" size["); - for (i=0; i0?", ":"", - i == GRAS_THISARCH ? "*":"", - ddt->size[i], - i == GRAS_THISARCH ? "*":""); + cpt>0?", ":"", + cpt == GRAS_THISARCH ? ">":"", + ddt->size[cpt], + cpt == GRAS_THISARCH ? "<":""); } printf ("]\n"); printf (" alignment["); - for (i=0; i0?", ":"", - i == GRAS_THISARCH ? "*":"", - ddt->alignment[i], - i == GRAS_THISARCH ? "*":""); + cpt>0?", ":"", + cpt == GRAS_THISARCH ? ">":"", + ddt->alignment[cpt], + cpt == GRAS_THISARCH ? "<":""); } printf ("]\n"); printf (" aligned_size["); - for (i=0; i0?", ":"", - i == GRAS_THISARCH ? "*":"", - ddt->aligned_size[i], - i == GRAS_THISARCH ? "*":""); + cpt>0?", ":"", + cpt == GRAS_THISARCH ? ">":"", + ddt->aligned_size[cpt], + cpt == GRAS_THISARCH ? "<":""); } printf ("]\n"); - + if (ddt->category_code == e_gras_datadesc_type_cat_struct) { + gras_dd_cat_struct_t struct_data; + gras_dd_cat_field_t *field; + + struct_data = ddt->category.struct_data; + gras_dynar_foreach(struct_data.fields, cpt, field) { + printf(">>> Dump field #%d (%s) (offset=%ld)\n", + cpt,field->name,field->offset[GRAS_THISARCH]); + gras_datadesc_type_dump(field->type); + printf("<<< end dump field #%d (%s)\n",cpt,field->name); + } + } + fflush(stdout); }