File: ReverseCompressIndex.cpp

package info (click to toggle)
pbseqlib 0~20161219-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 5,924 kB
  • ctags: 5,123
  • sloc: cpp: 82,727; makefile: 305; python: 239; sh: 8
file content (41 lines) | stat: -rw-r--r-- 1,207 bytes parent folder | download | duplicates (3)
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
#include <iostream>
#include <fstream>
#include "utils.hpp"
#include "ReverseCompressIndex.hpp"

ReverseCompressIndex::ReverseCompressIndex() {
    index = NULL;
    indexLength = binSize = maxRun = 0;
}

ReverseCompressIndex::~ReverseCompressIndex() {
    ReverseCompressIndex::Free();
}

void ReverseCompressIndex::Free() {
    if (index) {delete [] index; index = NULL;}
    indexLength = binSize = maxRun = 0;
}

void ReverseCompressIndex::Write(std::ofstream &out) {
    out.write((char*) &indexLength, sizeof(int));
    out.write((char*) &binSize, sizeof(int));
    out.write((char*) &maxRun, sizeof(int));
    out.write((char*) index, sizeof(int) * indexLength);
}

void ReverseCompressIndex::Read(std::ifstream &in) {
    in.read((char*) &indexLength, sizeof(int));
    in.read((char*) &binSize, sizeof(int));
    in.read((char*) &maxRun, sizeof(int));
    index = ProtectedNew<int>(indexLength);
    in.read((char*) index, sizeof(int) *indexLength);
} 

void ReverseCompressIndex::ShallowCopy(ReverseCompressIndex &rhs) {
    ReverseCompressIndex::Free(); // Free before shallow copy.
    index = rhs.index;
    indexLength = rhs.indexLength;
    binSize = rhs.binSize;
    maxRun  = rhs.maxRun;
}