X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dff9e15c44ab6340d27215957c56fa72fad246a2..aee58827f69b637a767d51db4c5a0f14aefce3b9:/include/xbt/set.h diff --git a/include/xbt/set.h b/include/xbt/set.h index db57ed89c6..1d87320332 100644 --- a/include/xbt/set.h +++ b/include/xbt/set.h @@ -1,8 +1,7 @@ -/* $Id$ */ - /* xbt/set.h -- api to a generic dictionary */ -/* Copyright (c) 2004 Martin Quinson. All rights reserved. */ +/* Copyright (c) 2004-2007, 2009-2010, 2012-2014. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -17,30 +16,35 @@ 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: - * \verbatim struct { - unsigned int ID; - char *name; - unsigned int name_len; - // 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 +\verbatim + struct { + unsigned int ID; + char *name; + unsigned int name_len; + // 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 * defined to that extend: - * \verbatim struct { + * +\verbatim +struct { XBT_SET_HEADERS; - // my other fields, constituting the payload -} my_element_type_t; \endverbatim + // 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. * */ @@ -50,7 +54,7 @@ SG_BEGIN_DECL() * @{ */ /** \brief Opaque type representing a set */ - typedef struct xbt_set_ *xbt_set_t; +typedef struct xbt_set_ *xbt_set_t; #define XBT_SET_HEADERS \ unsigned int ID; \ @@ -58,12 +62,12 @@ SG_BEGIN_DECL() unsigned int name_len /** \brief It must be possible to cast set elements to this type */ - typedef struct xbt_set_elm_ { - unsigned int ID; /**< Identificator (system assigned) */ - char *name; /**< Name (user assigned) */ - unsigned int name_len; +typedef struct xbt_set_elm_ { + unsigned int ID; /**< Identificator (system assigned) */ + char *name; /**< Name (user assigned) */ + unsigned int name_len; /**< Length of the name */ - } s_xbt_set_elm_t, *xbt_set_elm_t; +} s_xbt_set_elm_t, *xbt_set_elm_t; /*####[ Functions ]##########################################################*/ XBT_PUBLIC(xbt_set_t) xbt_set_new(void); @@ -80,11 +84,14 @@ 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); -XBT_PUBLIC(xbt_set_elm_t) xbt_set_get_by_name(xbt_set_t set, const char *key); +XBT_PUBLIC(xbt_set_elm_t) xbt_set_get_by_name(xbt_set_t set, + const char *key); XBT_PUBLIC(xbt_set_elm_t) xbt_set_get_by_name_ext(xbt_set_t set, const char *key, int key_len); @@ -103,7 +110,7 @@ XBT_PUBLIC(unsigned long) xbt_set_length(const xbt_set_t set); */ /** @brief Cursor type */ - typedef struct xbt_set_cursor_ *xbt_set_cursor_t; +typedef struct xbt_set_cursor_ *xbt_set_cursor_t; XBT_PUBLIC(void) xbt_set_cursor_first(xbt_set_t set, xbt_set_cursor_t * cursor); @@ -121,4 +128,4 @@ XBT_PUBLIC(int) xbt_set_cursor_get_or_free(xbt_set_cursor_t * cursor, /* @} */ SG_END_DECL() -#endif /* _XBT_SET_H */ +#endif /* _XBT_SET_H */