File: BooleanVector.cpp

package info (click to toggle)
mapsembler2 2.1.6%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 4,116 kB
  • ctags: 3,391
  • sloc: cpp: 27,549; ansic: 2,662; asm: 271; sh: 226; makefile: 153
file content (66 lines) | stat: -rw-r--r-- 1,504 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//
//  BooleanVector.cpp
//  kissreads_g
//
//  Created by Pierre Peterlongo on 02/01/13.
//  Copyright (c) 2013 Pierre Peterlongo. All rights reserved.
//

#include "BooleanVector.h"
#include "commons.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


BooleanVector::BooleanVector (long size){
    boolean_vector_size=size;
//    printf("init bv with size %ld\n", size);
    boolean_vector = (char*)malloc(boolean_vector_size/8+1);
    test_alloc(boolean_vector);
    memset(boolean_vector, 0, boolean_vector_size/8+1);
    mask[0]=1;  //00000001
    mask[1]=2;  //00000010
    mask[2]=4;  //00000100
    mask[3]=8;  //00001000
    mask[4]=16; //00010000
    mask[5]=32; //00100000
    mask[6]=64; //01000000
    mask[7]=128;//10000000
}


bool BooleanVector::is_boolean_vector_visited (long i){
    return (boolean_vector[i/8]&mask[i%8])==0?false:true;
}

void BooleanVector::set_boolean_vector_visited(long i){
    boolean_vector[i/8]|=mask[i%8];
}

BooleanVector::~BooleanVector(){
    free(boolean_vector);
}

void BooleanVector::reinit(){
    memset(boolean_vector, 0, boolean_vector_size/8);
}

/*int main(int argc, char **argv) {
 uint64_t size = 2296000000;
 init_boolean_vector(size);
 
 int number=0;
 while(1){
 number++;
 uint64_t r = random()%size;
 printf("%llu %d-", r,is_boolean_vector_visited(r));
 if(is_boolean_vector_visited(r)) break;
 set_boolean_vector_visited(r);
 printf("%d\n", is_boolean_vector_visited(r));
 }
 printf("\n%d done\n", number);
 return 1;
 
 
 }*/