# HG changeset patch # User Masataka Kohagura # Date 1445245445 -32400 # Node ID 1d7ca366b1998e3c02f55c09cf63ec9904f1e988 # Parent 5072a44ed84286593e149cc2cba1549d23f79cbc add bitVector diff -r 5072a44ed842 -r 1d7ca366b199 c/regexParser/bitVector.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c/regexParser/bitVector.cc Mon Oct 19 18:04:05 2015 +0900 @@ -0,0 +1,56 @@ +#include +#include +#include +#include "bitVector.h" + +int bitBlock = sizeof(unsigned long) * 8; + +void bitSet(BitVectorPtr bi, int bitSetPosition) { + + unsigned long tmp = 1; + int arrayPosition = 0; + + arrayPosition = bitSetPosition / bitBlock; + bitSetPosition = bitSetPosition % bitBlock; + + tmp = tmp << (bitBlock - 1 - bitSetPosition); + bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; +} + +void bitPrint(BitVectorPtr bi) { + for (int i = 0; i < bi->arrayNum ; i++) { + for (int j = bitBlock - 1; j >= 0; j--) { + printf( "%lu", ( bi->bitContainer[i] >> j ) & 1 ); + } + printf(" "); + } + puts(""); +} +/* +int main(int argc, char **argv) { + + BitVectorPtr bi = (BitVectorPtr)malloc(sizeof(BitVector)); + int bitSetPosition = 0; + + for (int i = 1; i < argc ; i++) { + if (strcmp(argv[i],"-n") == 0) { + bitSetPosition = atoi(argv[i+1]); + } + } + + bi->arrayNum = (bitSetPosition + 1) / bitBlock; + if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; + + printf("Array Num : %d\n",bi->arrayNum); + + unsigned long bitContainer[bi->arrayNum]; + for (int i = 0; i < bi->arrayNum; i++) { + bitContainer[i] = 0; + } + + bi->bitContainer = bitContainer; + bitSet(bi,bitSetPosition); + bitPrint(bi); + return 0; +} +*/ diff -r 5072a44ed842 -r 1d7ca366b199 c/regexParser/bitVector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c/regexParser/bitVector.h Mon Oct 19 18:04:05 2015 +0900 @@ -0,0 +1,9 @@ +typedef struct bitVector { + int arrayNum; + unsigned long *bitContainer; +}BitVector,*BitVectorPtr; + +typedef struct bitVectorList { + BitVector bi; + BitVectorPtr next[256]; +}BitVectorList, *BitVectorListPtr;