changeset 86:1d7ca366b199

add bitVector
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 19 Oct 2015 18:04:05 +0900
parents 5072a44ed842
children aef2546cd130
files c/regexParser/bitVector.cc c/regexParser/bitVector.h
diffstat 2 files changed, 65 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#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;
+}
+*/
--- /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;