From: mquinson Date: Sat, 11 Apr 2009 16:40:02 +0000 (+0000) Subject: gras_userdata_new expects the pointed type, not the pointer type. Fix tutorial, and... X-Git-Tag: v3.3~19 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/c226af4f5e4ed82d142b9065446658bde792072b gras_userdata_new expects the pointed type, not the pointer type. Fix tutorial, and add a bunch of warnings in the doc git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6227 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/doc/gtut-files/05-globals.c b/doc/gtut-files/05-globals.c index 9e71e02d64..aeb222308f 100644 --- a/doc/gtut-files/05-globals.c +++ b/doc/gtut-files/05-globals.c @@ -33,7 +33,7 @@ int server(int argc, char *argv[]) { gras_init(&argc,argv); - globals=gras_userdata_new(server_data_t*); + globals=gras_userdata_new(server_data_t); globals->killed=0; gras_msgtype_declare("hello", NULL); diff --git a/doc/gtut-tour-05-globals.doc b/doc/gtut-tour-05-globals.doc index b0bb570d82..b35c3f7c63 100644 --- a/doc/gtut-tour-05-globals.doc +++ b/doc/gtut-tour-05-globals.doc @@ -42,6 +42,11 @@ should pass it a pointer to your data you want to retrieve afterward. \skip userdata_new \until userdata_new +BEWARE, the gras_userdata_new expects the pointed type, not the +pointer type. As you can see, in our example, you should pass +server_data_t to the macro, even if the global variable is later +defined as being of type server_data_t*. + Once you declared a global that way, retriving this (for example in a callback) is really easy: \dontinclude 05-globals.c diff --git a/include/gras/process.h b/include/gras/process.h index 43ead0c104..00d1635831 100644 --- a/include/gras/process.h +++ b/include/gras/process.h @@ -34,6 +34,7 @@ void gras_agent_spawn(const char *name, void *data, xbt_main_func_t code, int ar * and use \ref gras_userdata_set yourself), and \ref gras_userdata_get to * retrieve a reference to it. * + * * For more info on this, you may want to check the relevant lesson of the GRAS tutorial: * \ref GRAS_tut_tour_globals */ @@ -51,7 +52,15 @@ XBT_PUBLIC(void*) gras_userdata_get(void); */ XBT_PUBLIC(void) gras_userdata_set(void *ud); -/** \brief Malloc and set the data associated with the current process. */ +/** \brief Malloc and set the data associated with the current process. + * + * @warnug gras_userdata_new() expects the pointed type, not the + * pointer type. We know it'a a bit troublesome, but it seems like + * the only solution since this macro has to compute the size to + * malloc and should thus know the pointed type. + * + * You'll find an example in the tutorial: \ref GRAS_tut_tour_globals + */ #define gras_userdata_new(type) (gras_userdata_set(xbt_new0(type,1)),gras_userdata_get()) /* @} */