Ignore:
File:
1 edited

Legend:

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

    r5fe7692 raaa3f33a  
    4949#define INT_MAP_ITEM_MAGIC_VALUE        0x55667788
    5050
    51 /** Generic destructor function pointer. */
    52 #define DTOR_T(identifier) \
    53         void (*identifier)(const void *)
    54 
    5551/** Integer to generic type map declaration.
    5652 *
     
    7672        \
    7773        int name##_add(name##_t *, int, type *); \
    78         void name##_clear(name##_t *, DTOR_T()); \
     74        void name##_clear(name##_t *); \
    7975        int name##_count(name##_t *); \
    80         void name##_destroy(name##_t *, DTOR_T()); \
    81         void name##_exclude(name##_t *, int, DTOR_T()); \
    82         void name##_exclude_index(name##_t *, int, DTOR_T()); \
     76        void name##_destroy(name##_t *); \
     77        void name##_exclude(name##_t *, int); \
     78        void name##_exclude_index(name##_t *, int); \
    8379        type *name##_find(name##_t *, int); \
    8480        int name##_update(name##_t *, int, int); \
     
    8682        int name##_initialize(name##_t *); \
    8783        int name##_is_valid(name##_t *); \
    88         void name##_item_destroy(name##_item_t *, DTOR_T()); \
     84        void name##_item_destroy(name##_item_t *); \
    8985        int name##_item_is_valid(name##_item_t *);
    9086
     
    119115        } \
    120116        \
    121         void name##_clear(name##_t *map, DTOR_T(dtor)) \
     117        void name##_clear(name##_t *map) \
    122118        { \
    123119                if (name##_is_valid(map)) { \
     
    126122                                if (name##_item_is_valid(&map->items[index])) { \
    127123                                        name##_item_destroy( \
    128                                             &map->items[index], dtor); \
     124                                            &map->items[index]); \
    129125                                } \
    130126                        } \
     
    139135        } \
    140136        \
    141         void name##_destroy(name##_t *map, DTOR_T(dtor)) \
     137        void name##_destroy(name##_t *map) \
    142138        { \
    143139                if (name##_is_valid(map)) { \
     
    147143                                if (name##_item_is_valid(&map->items[index])) { \
    148144                                        name##_item_destroy( \
    149                                             &map->items[index], dtor); \
     145                                            &map->items[index]); \
    150146                                } \
    151147                        } \
     
    154150        } \
    155151        \
    156         void name##_exclude(name##_t *map, int key, DTOR_T(dtor)) \
     152        void name##_exclude(name##_t *map, int key) \
    157153        { \
    158154                if (name##_is_valid(map)) { \
     
    162158                                    (map->items[index].key == key)) { \
    163159                                        name##_item_destroy( \
    164                                             &map->items[index], dtor); \
    165                                 } \
    166                         } \
    167                 } \
    168         } \
    169         \
    170         void name##_exclude_index(name##_t *map, int index, DTOR_T(dtor)) \
     160                                            &map->items[index]); \
     161                                } \
     162                        } \
     163                } \
     164        } \
     165        \
     166        void name##_exclude_index(name##_t *map, int index) \
    171167        { \
    172168                if (name##_is_valid(map) && (index >= 0) && \
    173169                    (index < map->next) && \
    174170                    name##_item_is_valid(&map->items[index])) { \
    175                         name##_item_destroy(&map->items[index], dtor); \
     171                        name##_item_destroy(&map->items[index]); \
    176172                } \
    177173        } \
     
    240236        } \
    241237        \
    242         void name##_item_destroy(name##_item_t *item, DTOR_T(dtor)) \
     238        void name##_item_destroy(name##_item_t *item) \
    243239        { \
    244240                if (name##_item_is_valid(item)) { \
    245241                        item->magic = 0; \
    246242                        if (item->value) { \
    247                                 if (dtor) \
    248                                         free(item->value); \
     243                                free(item->value); \
    249244                                item->value = NULL; \
    250245                        } \
Note: See TracChangeset for help on using the changeset viewer.