Skip to content

Commit cc67b10

Browse files
committed
ir_reader.cpp
1 parent 1cf9df9 commit cc67b10

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

data/compile/irlogs/ir_reader.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include "ir_reader.h"
2+
#include <filesystem>
3+
4+
#include <fstream>
5+
#include <iostream>
6+
7+
using namespace std;
8+
9+
namespace fs = filesystem;
10+
namespace ibcs :: ir
11+
{
12+
IRReader :: IRReader(const string &dir) : directory(dir){}
13+
14+
vector<IrLog> IRReader :: load_all()
15+
{
16+
vector<IrLog> logs;
17+
18+
for (auto &entry :fs ::directory_iterator(directory)){
19+
if (entry.path().extension() == ".ir"){
20+
ifstream in(entry.path());
21+
stringstream buf;
22+
buf << in.rdbuf();
23+
logs.push_back(IRSerializer :: deserialize(buf.str()));
24+
}
25+
}
26+
return logs;
27+
}
28+
} // namespace ibcs :: ir

data/compile/irlogs/ir_reader.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
#include "ir_serializer.h"
3+
4+
#include <string>
5+
#include <vector>
6+
7+
using namespace std ;
8+
9+
namespace ibcs :: ir
10+
{
11+
class IRReader
12+
{
13+
public:
14+
explicit IRReader(const string &dir);
15+
16+
vector<IrLog> load_all();
17+
18+
private:
19+
string directory;
20+
};
21+
}

0 commit comments

Comments
 (0)