X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f1068773bda2a9c50385808a643a04e4a1fc2c7a..509304ee1435b62cd49eb9071995fab468f68f58:/include/xbt/dict.h diff --git a/include/xbt/dict.h b/include/xbt/dict.h index ad95cc9004..1837700c75 100644 --- a/include/xbt/dict.h +++ b/include/xbt/dict.h @@ -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 */