Changes in uspace/lib/c/include/adt/int_map.h [aaa3f33a:70ce016] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/adt/int_map.h
raaa3f33a r70ce016 56 56 #define INT_MAP_DECLARE(name, type) \ 57 57 typedef struct name name##_t; \ 58 typedef name##_t *name##_ref; \ 58 59 typedef struct name##_item name##_item_t; \ 60 typedef name##_item_t *name##_item_ref; \ 59 61 \ 60 62 struct name##_item { \ … … 67 69 int size; \ 68 70 int next; \ 69 name##_item_ t *items; \71 name##_item_ref items; \ 70 72 int magic; \ 71 73 }; \ 72 74 \ 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); 86 88 87 89 /** Integer to generic type map implementation. … … 93 95 */ 94 96 #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) \ 96 98 { \ 97 99 if (name##_is_valid(map)) { \ 98 100 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, \ 101 103 sizeof(name##_item_t) * 2 * map->size); \ 102 104 if (!tmp) \ … … 115 117 } \ 116 118 \ 117 void name##_clear(name##_ t *map) \119 void name##_clear(name##_ref map) \ 118 120 { \ 119 121 if (name##_is_valid(map)) { \ … … 130 132 } \ 131 133 \ 132 int name##_count(name##_ t *map) \134 int name##_count(name##_ref map) \ 133 135 { \ 134 136 return name##_is_valid(map) ? map->next : -1; \ 135 137 } \ 136 138 \ 137 void name##_destroy(name##_ t *map) \139 void name##_destroy(name##_ref map) \ 138 140 { \ 139 141 if (name##_is_valid(map)) { \ … … 150 152 } \ 151 153 \ 152 void name##_exclude(name##_ t *map, int key) \154 void name##_exclude(name##_ref map, int key) \ 153 155 { \ 154 156 if (name##_is_valid(map)) { \ … … 164 166 } \ 165 167 \ 166 void name##_exclude_index(name##_ t *map, int index) \168 void name##_exclude_index(name##_ref map, int index) \ 167 169 { \ 168 170 if (name##_is_valid(map) && (index >= 0) && \ … … 173 175 } \ 174 176 \ 175 type *name##_find(name##_ t *map, int key) \177 type *name##_find(name##_ref map, int key) \ 176 178 { \ 177 179 if (name##_is_valid(map)) { \ … … 187 189 } \ 188 190 \ 189 int name##_update(name##_ t *map, int key, int new_key) \191 int name##_update(name##_ref map, int key, int new_key) \ 190 192 { \ 191 193 if (name##_is_valid(map)) { \ … … 206 208 } \ 207 209 \ 208 type *name##_get_index(name##_ t *map, int index) \210 type *name##_get_index(name##_ref map, int index) \ 209 211 { \ 210 212 if (name##_is_valid(map) && (index >= 0) && \ … … 216 218 } \ 217 219 \ 218 int name##_initialize(name##_ t *map) \220 int name##_initialize(name##_ref map) \ 219 221 { \ 220 222 if (!map) \ … … 222 224 map->size = 2; \ 223 225 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) * \ 225 227 map->size); \ 226 228 if (!map->items) \ … … 231 233 } \ 232 234 \ 233 int name##_is_valid(name##_ t *map) \235 int name##_is_valid(name##_ref map) \ 234 236 { \ 235 237 return map && (map->magic == INT_MAP_MAGIC_VALUE); \ 236 238 } \ 237 239 \ 238 void name##_item_destroy(name##_item_ t *item) \240 void name##_item_destroy(name##_item_ref item) \ 239 241 { \ 240 242 if (name##_item_is_valid(item)) { \ … … 247 249 } \ 248 250 \ 249 int name##_item_is_valid(name##_item_ t *item) \251 int name##_item_is_valid(name##_item_ref item) \ 250 252 { \ 251 253 return item && (item->magic == INT_MAP_ITEM_MAGIC_VALUE); \
Note:
See TracChangeset
for help on using the changeset viewer.