From 6eb40f45f49f664ad67687236caf426efb86f74c Mon Sep 17 00:00:00 2001 From: mquinson Date: Mon, 29 Jun 2009 21:11:27 +0000 Subject: [PATCH] Add xbt_set_get_by_name_or_null() [Silas De Munck] git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6391 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- ChangeLog | 3 +++ include/xbt/set.h | 15 ++++++++------- src/xbt/set.c | 12 ++++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index c628e23e38..0b4b561be6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ SimGrid (3.3.2-svn) unstable; urgency=low SMPI: * Implement MPI_Waitany and MPI_Waitall + XBT: + * Add xbt_set_get_by_name_or_null() [Silas De Munck] + -- Da SimGrid team SimGrid (3.3.1) stable; urgency=low diff --git a/include/xbt/set.h b/include/xbt/set.h index db57ed89c6..9191f6ae0e 100644 --- a/include/xbt/set.h +++ b/include/xbt/set.h @@ -17,7 +17,7 @@ SG_BEGIN_DECL() /** @addtogroup XBT_set * @brief A data container consisting in \ref XBT_dict and \ref XBT_dynar - * + * * The elements stored in such a data structure can be retrieve both by * name and by ID. For this to work, the first fields of the structures * stored must begin with the following fields: @@ -25,22 +25,22 @@ SG_BEGIN_DECL() unsigned int ID; char *name; unsigned int name_len; - // my other fields, constituting the payload + // my other fields, constituting the payload } my_element_type_t; \endverbatim - * - * Since we are casting elements around, no protection is ensured by the - * compiler. It is thus safer to define the headers using the macro + * + * Since we are casting elements around, no protection is ensured by the + * compiler. It is thus safer to define the headers using the macro * defined to that extend: * \verbatim struct { XBT_SET_HEADERS; - // my other fields, constituting the payload + // my other fields, constituting the payload } my_element_type_t; \endverbatim * * It is now possible to remove an element from such a data structure. * * @todo - * Such a datastructure was necessary/useful to store the GRAS type + * Such a datastructure was necessary/useful to store the GRAS type * descriptions, but it should be reworked to become generic. * */ @@ -80,6 +80,7 @@ XBT_PUBLIC(void) xbt_set_add(xbt_set_t set, xbt_set_elm_t elm, void_f_pvoid_t free_func); XBT_PUBLIC(void) xbt_set_remove(xbt_set_t set, xbt_set_elm_t elm); XBT_PUBLIC(void) xbt_set_remove_by_name(xbt_set_t set, const char *key); +XBT_PUBLIC(xbt_set_elm_t) xbt_set_get_by_name_or_null(xbt_set_t set, const char *key); XBT_PUBLIC(void) xbt_set_remove_by_name_ext(xbt_set_t set, const char *key, int key_len); XBT_PUBLIC(void) xbt_set_remove_by_id(xbt_set_t set, int id); diff --git a/src/xbt/set.c b/src/xbt/set.c index 0e56152a8d..62250a248d 100644 --- a/src/xbt/set.c +++ b/src/xbt/set.c @@ -182,6 +182,18 @@ xbt_set_elm_t xbt_set_get_by_name(xbt_set_t set, const char *name) return xbt_dict_get(set->dict, name); } +/** @brief Retrieve data by providing its name. + * + * \param set + * \param name Name of the searched cell + * \returns the data you're looking for, returns NULL if not found + */ +xbt_set_elm_t xbt_set_get_by_name_or_null (xbt_set_t set, + const char *name) { + DEBUG1("Lookup key %s",name); + return xbt_dict_get_or_null(set->dict, name); +} + /** @brief Retrieve data by providing its name and the length of the name * * \param set -- 2.20.1