annotate c/regexParser/bitVector.cc @ 98:d0d2262d4edf impl-bitvector

implement if (NodeChar == '+')
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 10 Nov 2015 18:08:53 +0900
parents 43b807f88961
children 70069d4647a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdlib.h>
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <string.h>
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include "bitVector.h"
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
6 void bitPrint(BitVectorPtr bi);
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
7
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 int bitBlock = sizeof(unsigned long) * 8;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
10 BitVectorPtr bitSet(int bitSetPosition) {
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
11
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
12 BitVectorPtr bi = (BitVectorPtr)malloc(sizeof(BitVector));
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
13 bi->bitContainer = (unsigned long*)malloc(sizeof(unsigned long)*bi->arrayNum);
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
15 bi->arrayNum = (bitSetPosition + 1) / bitBlock;
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
16 if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++;
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
17
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
18 for (int i = 0; i < bi->arrayNum; i++) {
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
19 bi->bitContainer[i] = 0;
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
20 }
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 unsigned long tmp = 1;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 int arrayPosition = 0;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 arrayPosition = bitSetPosition / bitBlock;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 bitSetPosition = bitSetPosition % bitBlock;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 tmp = tmp << (bitBlock - 1 - bitSetPosition);
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp;
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
29
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
30 return bi;
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 void bitPrint(BitVectorPtr bi) {
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 for (int i = 0; i < bi->arrayNum ; i++) {
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 for (int j = bitBlock - 1; j >= 0; j--) {
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 printf( "%lu", ( bi->bitContainer[i] >> j ) & 1 );
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 printf(" ");
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 puts("");
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 }