Ignore:
File:
1 edited

Legend:

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

    raaa3f33a r70ce016  
    5656#define INT_MAP_DECLARE(name, type) \
    5757        typedef struct name name##_t; \
     58        typedef name##_t *name##_ref; \
    5859        typedef struct name##_item name##_item_t; \
     60        typedef name##_item_t *name##_item_ref; \
    5961        \
    6062        struct  name##_item { \
     
    6769                int size; \
    6870                int next; \
    69                 name##_item_t *items; \
     71                name##_item_ref items; \
    7072                int magic; \
    7173        }; \
    7274        \
    73         int name##_add(name##_t *, int, type *); \
    74         void name##_clear(name##_t *); \
    75         int name##_count(name##_t *); \
    76         void name##_destroy(name##_t *); \
    77         void name##_exclude(name##_t *, int); \
    78         void name##_exclude_index(name##_t *, int); \
    79         type *name##_find(name##_t *, int); \
    80         int name##_update(name##_t *, int, int); \
    81         type *name##_get_index(name##_t *, int); \
    82         int name##_initialize(name##_t *); \
    83         int name##_is_valid(name##_t *); \
    84         void name##_item_destroy(name##_item_t *); \
    85         int name##_item_is_valid(name##_item_t *);
     75        int name##_add(name##_ref, int, type *); \
     76        void name##_clear(name##_ref); \
     77        int name##_count(name##_ref); \
     78        void name##_destroy(name##_ref); \
     79        void name##_exclude(name##_ref, int); \
     80        void name##_exclude_index(name##_ref, int); \
     81        type *name##_find(name##_ref, int); \
     82        int name##_update(name##_ref, int, int); \
     83        type *name##_get_index(name##_ref, int); \
     84        int name##_initialize(name##_ref); \
     85        int name##_is_valid(name##_ref); \
     86        void name##_item_destroy(name##_item_ref); \
     87        int name##_item_is_valid(name##_item_ref);
    8688
    8789/** Integer to generic type map implementation.
     
    9395 */
    9496#define INT_MAP_IMPLEMENT(name, type) \
    95         int name##_add(name##_t *map, int key, type *value) \
     97        int name##_add(name##_ref map, int key, type *value) \
    9698        { \
    9799                if (name##_is_valid(map)) { \
    98100                        if (map->next == (map->size - 1)) { \
    99                                 name##_item_t *tmp; \
    100                                 tmp = (name##_item_t *) realloc(map->items, \
     101                                name##_item_ref tmp; \
     102                                tmp = (name##_item_ref) realloc(map->items, \
    101103                                    sizeof(name##_item_t) * 2 * map->size); \
    102104                                if (!tmp) \
     
    115117        } \
    116118        \
    117         void name##_clear(name##_t *map) \
     119        void name##_clear(name##_ref map) \
    118120        { \
    119121                if (name##_is_valid(map)) { \
     
    130132        } \
    131133        \
    132         int name##_count(name##_t *map) \
     134        int name##_count(name##_ref map) \
    133135        { \
    134136                return name##_is_valid(map) ? map->next : -1; \
    135137        } \
    136138        \
    137         void name##_destroy(name##_t *map) \
     139        void name##_destroy(name##_ref map) \
    138140        { \
    139141                if (name##_is_valid(map)) { \
     
    150152        } \
    151153        \
    152         void name##_exclude(name##_t *map, int key) \
     154        void name##_exclude(name##_ref map, int key) \
    153155        { \
    154156                if (name##_is_valid(map)) { \
     
    164166        } \
    165167        \
    166         void name##_exclude_index(name##_t *map, int index) \
     168        void name##_exclude_index(name##_ref map, int index) \
    167169        { \
    168170                if (name##_is_valid(map) && (index >= 0) && \
     
    173175        } \
    174176        \
    175         type *name##_find(name##_t *map, int key) \
     177        type *name##_find(name##_ref map, int key) \
    176178        { \
    177179                if (name##_is_valid(map)) { \
     
    187189        } \
    188190        \
    189         int name##_update(name##_t *map, int key, int new_key) \
     191        int name##_update(name##_ref map, int key, int new_key) \
    190192        { \
    191193                if (name##_is_valid(map)) { \
     
    206208        } \
    207209        \
    208         type *name##_get_index(name##_t *map, int index) \
     210        type *name##_get_index(name##_ref map, int index) \
    209211        { \
    210212                if (name##_is_valid(map) && (index >= 0) && \
     
    216218        } \
    217219        \
    218         int name##_initialize(name##_t *map) \
     220        int name##_initialize(name##_ref map) \
    219221        { \
    220222                if (!map) \
     
    222224                map->size = 2; \
    223225                map->next = 0; \
    224                 map->items = (name##_item_t *) malloc(sizeof(name##_item_t) * \
     226                map->items = (name##_item_ref) malloc(sizeof(name##_item_t) * \
    225227                    map->size); \
    226228                if (!map->items) \
     
    231233        } \
    232234        \
    233         int name##_is_valid(name##_t *map) \
     235        int name##_is_valid(name##_ref map) \
    234236        { \
    235237                return map && (map->magic == INT_MAP_MAGIC_VALUE); \
    236238        } \
    237239        \
    238         void name##_item_destroy(name##_item_t *item) \
     240        void name##_item_destroy(name##_item_ref item) \
    239241        { \
    240242                if (name##_item_is_valid(item)) { \
     
    247249        } \
    248250        \
    249         int name##_item_is_valid(name##_item_t *item) \
     251        int name##_item_is_valid(name##_item_ref item) \
    250252        { \
    251253                return item && (item->magic == INT_MAP_ITEM_MAGIC_VALUE); \
Note: See TracChangeset for help on using the changeset viewer.