Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add the trace library and fixed a few source of potential bugs in heap.
[simgrid.git] / include / xbt / dict.h
index ad95cc9..1837700 100644 (file)
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/* gras/dict.h -- api to a generic dictionary                               */
+/* xbt/dict.h -- api to a generic dictionary                               */
 
 /* Authors: Martin Quinson                                                  */
 /* Copyright (C) 2003 the OURAGAN project.                                  */
@@ -9,63 +9,64 @@
    under the terms of the license (GNU LGPL) which comes with this package. */
 
 
-#ifndef _GRAS_DICT_H
-#define _GRAS_DICT_H
+#ifndef _XBT_DICT_H
+#define _XBT_DICT_H
+
+#include "xbt/misc.h" /* BEGIN_DECL */
 
 #ifdef  __cplusplus
 extern "C" 
 #endif
 
 /*####[ Type definition ]####################################################*/
-typedef struct gras_dict_ gras_dict_t;
+typedef struct xbt_dict_ *xbt_dict_t;
 
 /*####[ Simple dict  functions ]#############################################*/
 
-gras_error_t gras_dict_new(gras_dict_t **dict);
-void         gras_dict_free(gras_dict_t **dict);
+xbt_dict_t xbt_dict_new(void);
+void xbt_dict_free(xbt_dict_t *dict);
 
 
-gras_error_t gras_dict_set    (gras_dict_t    *head,
-                              const char     *key,
-                              void           *data,
-                              void_f_pvoid_t *free_ctn);
-gras_error_t gras_dict_set_ext(gras_dict_t    *head,
-                              const char     *key,
-                              int             key_len,
-                              void           *data,
-                              void_f_pvoid_t *free_ctn);
+void xbt_dict_set    (xbt_dict_t     head,
+                      const char     *key,
+                      void           *data,
+                      void_f_pvoid_t *free_ctn);
+void xbt_dict_set_ext(xbt_dict_t     head,
+                      const char     *key,
+                      int             key_len,
+                      void           *data,
+                      void_f_pvoid_t *free_ctn);
 
-/*----[ gras_dict_get ]------------------------------------------------------*/
+/*----[ xbt_dict_get ]------------------------------------------------------*/
 /* Search the given #key#. data=NULL when not found.                         */
 /* Returns true if anything went ok, and false on internal error.            */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_dict_get(gras_dict_t *head,const char *key,
+xbt_error_t xbt_dict_get(xbt_dict_t head,const char *key,
                           /* OUT */void **data);
-gras_error_t gras_dict_get_ext(gras_dict_t *head,const char *key,
+xbt_error_t xbt_dict_get_ext(xbt_dict_t head,const char *key,
                               int key_len,
                               /* OUT */void **data);
-/*----[ gras_dict_remove ]---------------------------------------------------*/
+/*----[ xbt_dict_remove ]---------------------------------------------------*/
 /* Remove the entry associated with the given #key#.                         */
 /* Returns if ok. Removing a non-existant key is ok.                         */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_dict_remove(gras_dict_t *head,const char *key);
+xbt_error_t xbt_dict_remove(xbt_dict_t head,const char *key);
 
-gras_error_t gras_dict_remove_ext(gras_dict_t *head,const char *key,
-                                  int key_len);
+xbt_error_t xbt_dict_remove_ext(xbt_dict_t head,
+                                 const char *key, int key_len);
 
-/*----[ gras_dict_dump ]-----------------------------------------------------*/
+/*----[ xbt_dict_dump ]-----------------------------------------------------*/
 /* Outputs the content of the structure. (for debuging purpose)              */
 /* #output# is a function to output the data.If NULL, data won't be displayed*/
-/* Returns if it was ok or not                                               */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_dict_dump(gras_dict_t *head,
-                           void (*output)(void*));
-/*----[ gras_dict_print ]----------------------------------------------------*/
+void xbt_dict_dump(xbt_dict_t head,
+                   void (*output)(void*));
+/*----[ xbt_dict_print ]----------------------------------------------------*/
 /* To dump multicache, this function dump a cache                            */
 /*---------------------------------------------------------------------------*/
-void gras_dict_print(void *data);
+void xbt_dict_print(void *data);
 /* To dump multicache, this one dumps a string                               */
-void gras_dict_prints(void *data);
+void xbt_dict_prints(void *data);
 
 
 /*####[ Multi cache functions ]##############################################*/
@@ -73,79 +74,77 @@ void gras_dict_prints(void *data);
 /*  than their simple cache counterpart.                                     */
 /*###############################"###########################################*/
 
-/*----[ gras_multidict_free ]------------------------------------------------*/
-/* This function does not exist. Use gras_dict_free instead.                 */
+/*----[ xbt_multidict_free ]------------------------------------------------*/
+/* This function does not exist. Use xbt_dict_free instead.                 */
 /*---------------------------------------------------------------------------*/
 
-/*----[ gras_multidict_set ]-------------------------------------------------*/
+/*----[ xbt_multidict_set ]-------------------------------------------------*/
 /* Insert the data in the structure under the #keycount# #key#s.             */
 /* The key are destroyed in the process. Think to strdup it before.          */
 /* Returns if it was ok or not                                               */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_multidict_set(gras_dict_t **head,
+xbt_error_t xbt_multidict_set(xbt_dict_t *head,
                                int keycount,char **key,
                                void *data,void (*free_ctn)(void*));
 
-gras_error_t gras_multidict_set_ext(gras_dict_t **head,
+xbt_error_t xbt_multidict_set_ext(xbt_dict_t *head,
                                    int keycount,char **key,int *key_len,
                                    void *data,void_f_pvoid_t *free_ctn);
 
-/*----[ gras_multidict_get ]-------------------------------------------------*/
+/*----[ xbt_multidict_get ]-------------------------------------------------*/
 /* Search the given #key#. data=NULL when not found.                         */
 /* Returns true if anything went ok, and false on internal error.            */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_multidict_get(gras_dict_t *head,
+xbt_error_t xbt_multidict_get(xbt_dict_t head,
                                int keycount,const char **key,
                                /* OUT */void **data);
 
-gras_error_t gras_multidict_get_ext(gras_dict_t *head,
+xbt_error_t xbt_multidict_get_ext(xbt_dict_t head,
                                    int keycount,const char **key,int *key_len,
                                    /* OUT */void **data);
 
-/*----[ gras_multidict_remove ]----------------------------------------------*/
+/*----[ xbt_multidict_remove ]----------------------------------------------*/
 /* Remove the entry associated with the given #key#.                         */
 /* Returns if ok. Removing a non-existant key is ok.                         */
 /*---------------------------------------------------------------------------*/
-gras_error_t gras_multidict_remove(gras_dict_t *head,
+xbt_error_t xbt_multidict_remove(xbt_dict_t head,
                                   int keycount,const char **key);
 
-gras_error_t gras_multidict_remove_ext(gras_dict_t *head,
+xbt_error_t xbt_multidict_remove_ext(xbt_dict_t head,
                                        int keycount,const char **key,int *key_len);
 
 /*####[ Cache cursor functions ]#############################################*/
 /* To traverse (simple) caches                                               */
 /* Don't add or remove entries to the cache while traversing !!!             */
 /*###########################################################################*/
-typedef struct gras_dict_cursor_ gras_dict_cursor_t;
+typedef struct xbt_dict_cursor_ *xbt_dict_cursor_t;
 /* creator/destructor */
-gras_error_t gras_dict_cursor_new(const gras_dict_t *head,
-                                 /*OUT*/gras_dict_cursor_t **cursor);
-void         gras_dict_cursor_free(gras_dict_cursor_t *cursor);
+xbt_dict_cursor_t xbt_dict_cursor_new(const xbt_dict_t head);
+void               xbt_dict_cursor_free(xbt_dict_cursor_t *cursor);
 
 /* back to first element 
    it is not enough to reinit the cache after an add/remove in cache*/
-gras_error_t gras_dict_cursor_rewind(gras_dict_cursor_t *cursor);
+void xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor);
 
 
-gras_error_t gras_dict_cursor_get_key     (gras_dict_cursor_t *cursor,
+xbt_error_t xbt_dict_cursor_get_key     (xbt_dict_cursor_t cursor,
                                           /*OUT*/char **key);
-gras_error_t gras_dict_cursor_get_data    (gras_dict_cursor_t *cursor,
+xbt_error_t xbt_dict_cursor_get_data    (xbt_dict_cursor_t cursor,
                                           /*OUT*/void **data);
 
-
-void         gras_dict_cursor_first       (const gras_dict_t   *dict,
-                                          gras_dict_cursor_t **cursor);
-void         gras_dict_cursor_step        (gras_dict_cursor_t  *cursor);
-int          gras_dict_cursor_get_or_free (gras_dict_cursor_t **cursor,
-                                          char               **key,
-                                          void               **data);
-#define gras_dict_foreach(dict,cursor,key,data)                        \
-  for (cursor=NULL, gras_dict_cursor_first((dict),&(cursor)) ;         \
-       gras_dict_cursor_get_or_free(&(cursor),&(key),(void**)(&data)); \
-       gras_dict_cursor_step(cursor) )
+void xbt_dict_cursor_first (const xbt_dict_t   dict,
+                            xbt_dict_cursor_t *cursor);
+void         xbt_dict_cursor_step        (xbt_dict_cursor_t  cursor);
+int          xbt_dict_cursor_get_or_free (xbt_dict_cursor_t *cursor,
+                                          char              **key,
+                                          void              **data);
+#define xbt_dict_foreach(dict,cursor,key,data)                       \
+  for (cursor=NULL, xbt_dict_cursor_first((dict),&(cursor)) ;        \
+       xbt_dict_cursor_get_or_free(&(cursor),&(key),(void**)(&data));\
+       xbt_dict_cursor_step(cursor) )
 
 #ifdef  __cplusplus
 }
 #endif
 
-#endif /* _GRAS_DICT_H */
+#endif /* _XBT_DICT_H */