Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/adt/generic_char_map.h

    r5fe7692 r61bfc370  
    4747#define GENERIC_CHAR_MAP_MAGIC_VALUE    0x12345622
    4848
    49 /** Generic destructor function pointer. */
    50 #define DTOR_T(identifier) \
    51         void (*identifier)(const void *)
    52 
    5349/** Character string to generic type map declaration.
    5450 *  @param[in] name     Name of the map.
     
    6864        int name##_add(name##_t *, const uint8_t *, const size_t, type *); \
    6965        int name##_count(name##_t *); \
    70         void name##_destroy(name##_t *, DTOR_T()); \
    71         void name##_exclude(name##_t *, const uint8_t *, const size_t, DTOR_T()); \
     66        void name##_destroy(name##_t *); \
     67        void name##_exclude(name##_t *, const uint8_t *, const size_t); \
    7268        type *name##_find(name##_t *, const uint8_t *, const size_t); \
    7369        int name##_initialize(name##_t *); \
     
    8884             type *value) \
    8985        { \
     86                int rc; \
    9087                int index; \
    9188                if (!name##_is_valid(map)) \
     
    9491                if (index < 0) \
    9592                        return index; \
    96                 return char_map_add(&map->names, name, length, index); \
     93                rc = char_map_add(&map->names, name, length, index); \
     94                if (rc != EOK) { \
     95                        name##_items_exclude_index(&map->values, index); \
     96                        return rc; \
     97                } \
     98                return EOK; \
    9799        } \
    98100        \
     
    103105        } \
    104106        \
    105         void name##_destroy(name##_t *map, DTOR_T(dtor)) \
     107        void name##_destroy(name##_t *map) \
    106108        { \
    107109                if (name##_is_valid(map)) { \
    108110                        char_map_destroy(&map->names); \
    109                         name##_items_destroy(&map->values, dtor); \
     111                        name##_items_destroy(&map->values); \
    110112                } \
    111113        } \
    112114        \
    113115        void name##_exclude(name##_t *map, const uint8_t *name, \
    114             const size_t length, DTOR_T(dtor)) \
     116            const size_t length) \
    115117        { \
    116118                if (name##_is_valid(map)) { \
     
    119121                        if (index != CHAR_MAP_NULL) \
    120122                                name##_items_exclude_index(&map->values, \
    121                                      index, dtor); \
     123                                     index); \
    122124                } \
    123125        } \
Note: See TracChangeset for help on using the changeset viewer.