История изменений
Исправление beastie, (текущая версия) :
Пожалуйтса, реализация в одном файле:
#include <assert.h>
#include <stdlib.h>
static void **map;
static size_t size;
void
init(size_t n)
{
size = n;
map = calloc(size, sizeof(void *));
assert(map);
}
void
set(size_t pos, void *val)
{
assert(pos < size);
map[pos] = val;
}
void *
get(size_t pos)
{
assert(pos < size);
return map[pos];
}
void
del(size_t pos)
{
set(pos, NULL);
}
int
has(size_t pos)
{
assert(pos < size);
return map[pos] != NULL;
}
void
kill(void)
{
free(map);
}
#if 0
int
main()
{
int *p, i;
init(100);
set(10, &i);
p = get(10);
assert(p == &i);
del(10);
kill();
return 0;
}
#endif
Исходная версия beastie, :
Пожалуйтса, реализация в одном файле:
#include <assert.h>
#include <stdlib.h>
static void **map;
static size_t size;
void
init(size_t n)
{
size = n;
map = calloc(size, sizeof(void *));
assert(map);
}
void
set(size_t pos, void *val)
{
assert(pos < size);
map[pos] = val;
}
void *
get(size_t pos)
{
return map[pos];
}
void
del(size_t pos)
{
set(pos, NULL);
}
void
kill(void)
{
free(map);
}
#if 0
int
main()
{
int *p, i;
init(100);
set(10, &i);
p = get(10);
assert(p == &i);
del(10);
kill();
return 0;
}
#endif