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 : : #pragma once
12 : : #ifndef MEASUREBASE_H_
13 : : #define MEASUREBASE_H_
14 : :
15 : : #include <iostream>
16 : : #include <vector>
17 : : #include <memory>
18 : :
19 : : namespace jastacry {
20 : :
21 : : /**
22 : : * @brief MeasureBase class.
23 : : */
24 [ + - ]: 2 : class MeasureBase {
25 : : private:
26 : : /**
27 : : * @brief Main action to read the given file. Child classes then can measure values out of it.
28 : : * @return bool status of read action.
29 : : */
30 : : bool readFile();
31 : : std::string _filename;
32 : : size_t _filesize = 0;
33 : : protected:
34 : : std::vector<unsigned char> _buffer; /*!< Buffer to read file into */
35 : :
36 : : /**
37 : : * @brief Getter function for filename.
38 : : * @return String reference to file name.
39 : : */
40 : : std::string& getFilename();
41 : :
42 : : /**
43 : : * @brief Getter function for file size.
44 : : * @return size_t file size.
45 : : */
46 : : size_t getFilesize();
47 : :
48 : : public:
49 : : /**
50 : : * @brief Constructor for base class.
51 : : *
52 : : * @param filename [in] - String by reference of file to read.
53 : : *
54 : : */
55 : : explicit MeasureBase(const std::string& filename);
56 : :
57 : : /**
58 : : * @brief Destructor default implementation.
59 : : */
60 : 18 : virtual ~MeasureBase() = default;
61 : :
62 : : /**
63 : : * @brief Abstract base function.
64 : : */
65 : : virtual void measure() = 0;
66 : :
67 : : /**
68 : : * @brief Abstract base function.
69 : : */
70 : : virtual void printResult() = 0;
71 : :
72 : : /**
73 : : * @brief Abstract base function.
74 : : */
75 : : virtual double getResult() = 0;
76 : : };
77 : :
78 : : } /* namespace jastacry */
79 : :
80 : : #endif /* MEASUREBASE_H_ */
|