Branch data Line data Source code
1 : : /**
2 : : * @file MeasureBase.h
3 : : * @author Kai KRETSCHMANN
4 : : *
5 : : * @copyright SPDX-License-Identifier: MIT
6 : : *
7 : : * @brief Base class for doing measurements.
8 : : *
9 : : **/
10 : :
11 : : #include <iostream>
12 : : #include <fstream>
13 : : #include <cstring>
14 : : #include "spdlog/spdlog.h"
15 : :
16 : : #include "MeasureBase.h"
17 : :
18 : : using namespace std;
19 : :
20 : : namespace jastacry {
21 : :
22 : 17 : MeasureBase::MeasureBase(const string& filename) : _filename(filename) {
23 [ + - ]: 8 : spdlog::debug("CTOR MeasureBase normal");
24 [ + + ]: 8 : readFile();
25 : 7 : }
26 : :
27 : 2 : std::string& MeasureBase::getFilename() {
28 : 2 : return _filename;
29 : : }
30 : :
31 : 4 : size_t MeasureBase::getFilesize() {
32 : 4 : return _filesize;
33 : : }
34 : :
35 : 8 : bool MeasureBase::readFile() {
36 [ + - ]: 16 : ifstream file(_filename, ios::binary);
37 [ + - ][ + + ]: 8 : if (file.fail()) {
38 [ + - ]: 1 : spdlog::error("error reading '{}': {}", _filename, strerror(errno));
39 [ + - ]: 1 : throw std::invalid_argument(_filename);
40 : : }
41 : :
42 : : //seek to the end
43 [ + - ]: 7 : file.seekg(0, ios::end);
44 : :
45 : : //Get the file size
46 [ + - ]: 7 : _filesize = file.tellg();
47 [ + - ]: 7 : file.seekg(0, ios::beg);
48 : :
49 : : //Reduce the file size by any header bytes that might be present
50 [ + - ]: 7 : _filesize -= file.tellg();
51 : :
52 [ + - ]: 7 : _buffer.resize(_filesize);
53 [ + - ]: 7 : file.read((char *)&(_buffer[0]), _filesize);
54 [ + - ]: 7 : file.close();
55 : :
56 : 7 : return true;
57 : : }
58 : :
59 [ + - ][ + - ]: 4 : } /* namespace jastacry */
|