064fc4a4bd2f6f959a4dd9e3adfe7383c14ef004
[platform/upstream/libsolv.git] / src / bitmap.c
1 /*
2  * Copyright (c) 2007, Novell Inc.
3  *
4  * This program is licensed under the BSD license, read LICENSE.BSD
5  * for further information
6  */
7
8 /*
9  * bitmap.c
10  * 
11  */
12
13 #include <stdlib.h>
14 #include <string.h>
15
16 #include "bitmap.h"
17 #include "util.h"
18
19 /* constructor */
20 void
21 map_init(Map *m, int n)
22 {
23   m->size = (n + 7) >> 3;
24   m->map = n ? sat_calloc(m->size, 1) : 0;
25 }
26
27 /* destructor */
28 void
29 map_free(Map *m)
30 {
31   m->map = sat_free(m->map);
32   m->size = 0;
33 }
34
35 /* copy constructor t <- s */
36 void
37 map_init_clone(Map *t, Map *s)
38 {
39   t->size = s->size;
40   t->map = sat_malloc(s->size);
41   memcpy(t->map, s->map, t->size);
42 }
43
44 /* grow a map */
45 void
46 map_grow(Map *m, int n)
47 {
48   n = (n + 7) >> 3;
49   if (m->size < n)
50     {
51       m->map = sat_realloc(m->map, n);
52       memset(m->map + m->size, 0, n - m->size);
53       m->size = n;
54     }
55 }
56
57 /* EOF */