Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a new function: MSG_task_get_with_timeout. That should be very convenient to...
[simgrid.git] / include / gras / datadesc.h
index 39f1d72..d91cd28 100644 (file)
@@ -11,6 +11,7 @@
 #define GRAS_DATADESC_H
 
 #include "xbt/misc.h" /* BEGIN_DECL */
+#include "xbt/dynar.h" /* void_f_pvoid_t */
 
 BEGIN_DECL()
 
@@ -33,7 +34,7 @@ BEGIN_DECL()
  *   -# Callback Persistant State: Simple push/pop mechanism
  *   -# Callback Persistant State: Full featured mechanism
  */
-/*@{*/
+/* @{*/
 
 /** @name 1. basic operations
  *
@@ -99,7 +100,7 @@ gras_datadesc_type_t gras_datadesc_by_name(const char *name);
  *  (comma separates macro args). 
  * 
  *  For example, change \verbatim int a, b;\endverbatim to \verbatim int a;
- int b:\endverbatim
+ int b;\endverbatim
  */
 /** @{ */
 
@@ -125,7 +126,7 @@ gras_datadesc_type_t gras_datadesc_by_name(const char *name);
  */
 #define GRAS_ANNOTE(key,val)
 
-/*@}*/
+/* @} */
 
 gras_datadesc_type_t 
 gras_datadesc_parse(const char *name, const char *C_statement);
@@ -164,7 +165,7 @@ gras_datadesc_parse(const char *name, const char *C_statement);
   
   [Use my_type to send pointers to mystruct data]\endverbatim
  */
-/*@{*/
+/* @{ */
 
 
 /** \brief Opaque type describing a type description callback persistant state. */
@@ -172,11 +173,11 @@ typedef struct s_gras_cbps *gras_cbps_t;
 
 /* callbacks prototypes */
 /** \brief Prototype of type callbacks returning nothing. */
-typedef void (*gras_datadesc_type_cb_void_t)(gras_cbps_t vars, void *data);
+typedef void (*gras_datadesc_type_cb_void_t)(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
 /** \brief Prototype of type callbacks returning an int. */
-typedef int (*gras_datadesc_type_cb_int_t)(gras_cbps_t vars, void *data);
+typedef int (*gras_datadesc_type_cb_int_t)(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
 /** \brief Prototype of type callbacks selecting a type. */
-typedef gras_datadesc_type_t (*gras_datadesc_selector_t)(gras_cbps_t vars, void *data);
+typedef gras_datadesc_type_t (*gras_datadesc_selector_t)(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
 
 
 /******************************************
@@ -216,6 +217,10 @@ gras_datadesc_type_t
 gras_datadesc_type_t 
   gras_datadesc_ref_pop_arr(gras_datadesc_type_t  element_type);
 
+gras_datadesc_type_t 
+  gras_datadesc_dynar(gras_datadesc_type_t elm_t,
+                     void_f_pvoid_t *free_func);
+
 /*********************************
  * Change stuff within datadescs *
  *********************************/
@@ -246,11 +251,11 @@ void gras_datadesc_cb_field_push (gras_datadesc_type_t   type,
  * Get stuff within datadescs *
  ******************************/
 /** \brief Returns the name of a datadescription */
-char * gras_datadesc_get_name(gras_datadesc_type_t ddt);
+const char * gras_datadesc_get_name(gras_datadesc_type_t ddt);
 /** \brief Returns the identifier of a datadescription */
 int gras_datadesc_get_id(gras_datadesc_type_t ddt);
 
-/*@}*/
+/* @} */
 
 /** @name 4. Callback Persistant State: Simple push/pop mechanism
  * 
@@ -273,21 +278,21 @@ gras_datadesc_struct_close(my_type);
 \endverbatim
 
  */
-/*@{*/
+/* @{ */
 
 void
 gras_cbps_i_push(gras_cbps_t ps, int val);
 int 
 gras_cbps_i_pop(gras_cbps_t ps);
 
-int gras_datadesc_cb_pop(gras_cbps_t vars, void *data);
-void gras_datadesc_cb_push_int(gras_cbps_t vars, void *data);
-void gras_datadesc_cb_push_uint(gras_cbps_t vars, void *data);
-void gras_datadesc_cb_push_lint(gras_cbps_t vars, void *data);
-void gras_datadesc_cb_push_ulint(gras_cbps_t vars, void *data);
+int gras_datadesc_cb_pop(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
+void gras_datadesc_cb_push_int(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
+void gras_datadesc_cb_push_uint(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
+void gras_datadesc_cb_push_lint(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
+void gras_datadesc_cb_push_ulint(gras_datadesc_type_t typedesc, gras_cbps_t vars, void *data);
 
 
-/*@}*/
+/* @} */
 
 /** @name 5. Callback Persistant State: Full featured mechanism
  * 
@@ -295,7 +300,7 @@ void gras_datadesc_cb_push_ulint(gras_cbps_t vars, void *data);
  * introduced in previous section isn't enough, you can always use this full featured one.
  */
 
-/*@{*/
+/* @{ */
 
 xbt_error_t
   gras_cbps_v_pop (gras_cbps_t            ps, 
@@ -324,7 +329,7 @@ void
 gras_cbps_block_end(gras_cbps_t ps);
 
 /* @} */
-/*@}*/
+/* @} */
 
 
 /*******************************