annotate c/regexParser/bitVector.cc @ 115:ca30f8334741 pairPro

rename createRegexParser.cc to regexParser.cc
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 24 Nov 2015 14:38:26 +0900
parents a3adc5c24e19
children 66c633575b53
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"
115
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
5 #include "regexParser.h"
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
115
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
7 extern BitVectorListPtr allocateBitVectorList();
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
8 BitVectorListPtr createBitVector(NodePtr,BitVectorListPtr);
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
9 const BitVectorPtr allocateBitVector();
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
10 BitVectorPtr bitSet(int);
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
11 void bitPrint(BitVectorPtr);
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
12
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 int bitBlock = sizeof(unsigned long) * 8;
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
110
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
15 BitVectorListPtr createBitVector(NodePtr n,BitVectorListPtr bvl) {
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
16 BitVectorListPtr nextBvl = allocateBitVectorList();
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
17 nextBvl->bi = bitSet(n->nodeNumber);
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
18 return nextBvl;
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
19 }
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
20
115
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
21 const BitVectorPtr allocateBitVector() {
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
22
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
23 BitVectorPtr bi = (BitVectorPtr)malloc(sizeof(BitVector));
108
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
24 if (bi == NULL) {
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
25 fprintf(stderr, "Failed to allocate memory.\n");
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
26 exit(-1);
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
27 }
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
28
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
29 bi->bitContainer = (unsigned long*)malloc(sizeof(unsigned long)*bi->arrayNum);
108
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
30 if (bi->bitContainer == NULL) {
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
31 fprintf(stderr, "Failed to allocate memory.\n");
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
32 exit(-1);
70069d4647a0 implement malloc error checking
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 98
diff changeset
33 }
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
94
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
35 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
36 bi->bitContainer[i] = 0;
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
37 }
110
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
38
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
39 return bi;
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
40 }
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
41
115
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
42 BitVectorPtr bitSet(int bitSetPosition) {
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
43
ca30f8334741 rename createRegexParser.cc to regexParser.cc
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 110
diff changeset
44 BitVectorPtr bi = allocateBitVector();
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
110
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
46 bi->arrayNum = (bitSetPosition + bitBlock - 1) / bitBlock;
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
110
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
48 int arrayPosition = bitSetPosition / bitBlock;
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
49
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
50 unsigned long tmp = 1 << (bitSetPosition % bitBlock);
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 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
52
43b807f88961 implement bitvector (suspend)
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 86
diff changeset
53 return bi;
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 void bitPrint(BitVectorPtr bi) {
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 for (int i = 0; i < bi->arrayNum ; i++) {
110
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
58 unsigned long vec = bi->bitContainer[i];
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
59 for (int j = 0; j < bitBlock; j++) {
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
60 printf( "%lu", vec & 1 );
a3adc5c24e19 start branch
masa
parents: 108
diff changeset
61 vec >>= 1;
86
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 printf(" ");
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 puts("");
1d7ca366b199 add bitVector
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 }