testing
[SXSI/XMLTree.git] / libcds / tests / make_bitmap.cpp
1
2 #include <iostream>
3 #include <cstring>
4 #include <cstdlib>
5 #include <basics.h>
6 #include <cmath>
7
8 using namespace std;
9
10 int main(int argc, char ** argv) {
11         if(argc!=4) {
12                 cout << "usage: " << argv[0] << " <bitmap> <length> <ones>" << endl;
13                 return 0;
14         }
15         char * fname = argv[1];
16         uint len = atoi(argv[2]);
17         uint ones = atoi(argv[3]);
18         uint * bm = new uint[uint_len(len,1)];
19         for(uint i=0;i<uint_len(len,1);i++)
20                 bm[i] = 0;
21         for(uint i=0;i<ones;i++) {
22                 while(true) {
23                         uint p = rand()%len;
24                         if(!bitget(bm,p)) {
25                                 bitset(bm,p);
26                                 break;
27                         }
28                 }
29         }
30         FILE * fp = fopen(fname,"w");
31         uint l = fwrite(&len,sizeof(uint),1,fp);
32         l += fwrite(bm,sizeof(uint),uint_len(len,1),fp);
33         fclose(fp);
34         delete [] bm;
35         return 0;
36 }
37