-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsample_file_util.h
More file actions
50 lines (39 loc) · 1.32 KB
/
sample_file_util.h
File metadata and controls
50 lines (39 loc) · 1.32 KB
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
#ifndef SAMPLE_FILE_UTIL_H
#define SAMPLE_FILE_UTIL_H
#include <fstream>
#include <string>
#include <google/protobuf/io/zero_copy_stream_impl.h>
#include "memory_samples.pb.h"
#include "protobuf_util.h"
sample_file::Sample make_sample(unsigned window_id, const sample_file::MemoryAccess& begin, const sample_file::MemoryAccess& end);
sample_file::Sample make_dangling_sample(unsigned window_id, const sample_file::MemoryAccess& begin);
void print_memoryaccess(const sample_file::MemoryAccess& access);
void print_sample(const sample_file::Sample& sample);
class SampleWriter
{
bool finalized;
std::string filename;
std::ofstream ofs;
google::protobuf::io::OstreamOutputStream* oos;
public:
SampleWriter(const std::string& filename);
SampleWriter(const SampleWriter&) = delete;
SampleWriter& operator=(const SampleWriter&) = delete;
void write_sample(const sample_file::Sample& sample);
void finalize(void);
~SampleWriter();
};
class SampleReader
{
bool finalized;
std::string filename;
std::ifstream ifs;
google::protobuf::io::IstreamInputStream* iis;
public:
SampleReader(const std::string& filename);
SampleReader(const SampleReader&) = delete;
SampleReader& operator=(const SampleReader&) = delete;
bool read_sample(sample_file::Sample&);
~SampleReader();
};
#endif