Added simple WCSA
[SXSI/TextCollection.git] / swcsa / utils / kBitArray.c
1  #include "kBitArray.h"\r
2  \r
3 /*-----------------------------------------------------------------\r
4  Initilization of the kBitArray\r
5  ---------------------------------------------------------------- */ \r
6  t_kBitArray create_kBitArray (uint size, uint elemSize) {\r
7         uint bitsNeeded; \r
8         t_kBitArray      V;\r
9         \r
10         V = (t_kBitArray) malloc (sizeof(struct akbitArr));\r
11         bitsNeeded = size * elemSize;\r
12         V->totalInts = ((bitsNeeded+W-1)/W);\r
13         V->data = (uint *) malloc((V->totalInts) * sizeof(uint));\r
14         V->data[V->totalInts-1]=0000; /** avoids valgrind to blame*/\r
15         V->size = size;\r
16         V->elemSize= elemSize;\r
17         printf("\nKbitVector[0,%d), of elemSize = %u initialized\n",V->size,V->elemSize);\r
18         printf("\ntotalInts = %u, size = %u  elemSize = %u\n",V->totalInts,V->size,V->elemSize);\r
19         return V;\r
20 }\r
21 \r
22 uint getKBitArray(t_kBitArray V, register uint i) {\r
23         register uint eSize = V->elemSize;\r
24         register uint answ;\r
25         register uint pos = i * eSize;\r
26         mybitread(answ, V->data, pos, eSize);\r
27         return (answ);\r
28         //return ( bitread(V->data,i * eSize,eSize)); \r
29 }\r
30 \r
31 uint getKBitArraySinMacro(t_kBitArray V, register uint i) {\r
32         register uint eSize = V->elemSize;\r
33         return ( bitread(V->data,i * eSize,eSize)); \r
34 }\r
35 \r
36 void setKBitArray(t_kBitArray V, uint i, uint value){\r
37         register uint eSize = V->elemSize;      \r
38         register uint pos = i * eSize;\r
39         mybitwrite(V->data, pos, eSize, value);\r
40 }\r
41 \r
42 void setKBitArraySinMacro(t_kBitArray V, uint i, uint value){\r
43         register uint eSize = V->elemSize;\r
44         bitwrite(V->data,i *eSize, eSize, value);\r
45 }\r
46 \r
47 /*-----------------------------------------------------------------\r
48  freeing resources\r
49  ---------------------------------------------------------------- */ \r
50 void destroy_kBitArray (t_kBitArray kBitArray) {\r
51         uint total;\r
52         total = (kBitArray->totalInts) * sizeof(uint);\r
53         \r
54         free(kBitArray->data);\r
55         free(kBitArray);        \r
56         printf("\n[destroying a Kbit array of size table]...Freed %u bytes... RAM", total);             \r
57 }\r
58 \r
59 \r