Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
open a frame on cbps creation, and close one on deletion
[simgrid.git] / src / gras / DataDesc / cbps.c
index 1c801fcd276fa7093de34313986b9ba809f387e3..0ae01390027bf00e9520dbaf772699acbf52713d 100644 (file)
@@ -34,6 +34,7 @@ gras_dd_cbps_new(gras_dd_cbps_t **dst) {
   TRY(gras_dynar_new(&(res->stack), sizeof(gras_dynar_t*), NULL));
   TRY(gras_dynar_new(&(res->globals), sizeof(char*), NULL));
 
+  gras_dd_cbps_block_begin(res);
   *dst = res;
   return no_error;
 }
@@ -41,6 +42,7 @@ gras_dd_cbps_new(gras_dd_cbps_t **dst) {
 void
 gras_dd_cbps_free(gras_dd_cbps_t **state) {
 
+  gras_dd_cbps_block_end(*state);
   gras_dict_free ( &( (*state)->space   ) );
   gras_dynar_free(    (*state)->stack     );
   gras_dynar_free(    (*state)->globals   );
@@ -65,11 +67,11 @@ gras_dd_cbps_push(gras_dd_cbps_t        *ps,
   gras_dynar_t            *p_dynar        = NULL;
   gras_dd_cbps_elm_t      *p_var          = NULL;
  
-  gras_dict_retrieve(ps->space, name, (void **)&p_dynar);
+  gras_dict_get(ps->space, name, (void **)&p_dynar);
  
   if (!p_dynar) {
     gras_dynar_new(&p_dynar, sizeof (gras_dd_cbps_elm_t *), NULL);
-    gras_dict_insert(ps->space, name, (void **)p_dynar, NULL);
+    gras_dict_set(ps->space, name, (void **)p_dynar, NULL);
     /* FIXME: leaking on dynar. Insert in dict with a way to free it */
   }
  
@@ -80,7 +82,7 @@ gras_dd_cbps_push(gras_dd_cbps_t        *ps,
   gras_dynar_push(p_dynar, &p_var);
   
   gras_dynar_pop(ps->stack, &p_dynar);
-  gras_dynar_push(p_dynar, &name);
+  gras_dynar_push(p_dynar, strdup(name));
   gras_dynar_push(ps->stack, &p_dynar); 
 }
 
@@ -100,7 +102,7 @@ gras_dd_cbps_pop (gras_dd_cbps_t        *ps,
   void                    *data           = NULL;
 
   /* FIXME: Error handling */
-  gras_dict_retrieve(ps->space, name, (void **)&p_dynar);
+  gras_dict_get(ps->space, name, (void **)&p_dynar);
   gras_dynar_pop(p_dynar, &p_elm);
   
   if (!gras_dynar_length(p_dynar)) {
@@ -158,11 +160,11 @@ gras_dd_cbps_set (gras_dd_cbps_t        *ps,
   gras_dynar_t            *p_dynar        = NULL;
   gras_dd_cbps_elm_t      *p_elm          = NULL;
   
-  gras_dict_retrieve(ps->space, name, (void **)&p_dynar);
+  gras_dict_get(ps->space, name, (void **)&p_dynar);
   
   if (!p_dynar) {
     gras_dynar_new(&p_dynar, sizeof (gras_dd_cbps_elm_t *), NULL);
-    gras_dict_insert(ps->space, name, (void **)p_dynar, NULL);
+    gras_dict_set(ps->space, name, (void **)p_dynar, NULL);
     
     p_elm   = calloc(1, sizeof(gras_dd_cbps_elm_t));
     gras_dynar_push(ps->globals, &name);
@@ -196,7 +198,7 @@ gras_dd_cbps_get (gras_dd_cbps_t        *ps,
   gras_dd_cbps_elm_t      *p_elm          = NULL;
   
   /* FIXME: Error handling */
-  gras_dict_retrieve(ps->space, name, (void **)&p_dynar);
+  gras_dict_get(ps->space, name, (void **)&p_dynar);
   gras_dynar_pop(p_dynar, &p_elm);
   gras_dynar_push(p_dynar, &p_elm);
   
@@ -250,7 +252,7 @@ gras_dd_cbps_block_end(gras_dd_cbps_t *ps) {
     gras_dynar_t            *p_dynar_elm    = NULL;
     gras_dd_cbps_elm_t      *p_elm          = NULL;
  
-    gras_dict_retrieve(ps->space, name, (void **)&p_dynar_elm);
+    gras_dict_get(ps->space, name, (void **)&p_dynar_elm);
     gras_dynar_pop(p_dynar_elm, &p_elm);
  
     if (!gras_dynar_length(p_dynar_elm)) {