blob: 10d0e920a568aa419b3718cc11c6c66a398e611a (
plain)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#pragma once
#include <vector>
#include <cstdio>
struct FIG
{
int type;
int ext;
int len;
};
class FIGalyser
{
public:
FIGalyser()
{
clear();
}
void set_fib(int fib)
{
m_fib = fib;
}
void push_back(int type, int ext, int len)
{
struct FIG fig = {
.type = type,
.ext = ext,
.len = len };
m_figs[m_fib].push_back(fig);
}
void analyse(int mid)
{
printf("FIC ");
for (size_t fib = 0; fib < (mid==3?4:3); fib++) {
int consumed = 7;
int fic_size = 0;
printf("[%1zu ", fib);
for (size_t i = 0; i < m_figs[fib].size(); i++) {
FIG &f = m_figs[fib][i];
printf("%01d/%02d (%2d) ", f.type, f.ext, f.len);
consumed += 10;
fic_size += f.len;
}
printf(" ");
int align = 60 - consumed;
if (align > 0) {
while (align--) {
printf(" ");
}
}
printf("|");
for (int i = 0; i < 15; i++) {
if (2*i < fic_size) {
printf("#");
}
else {
printf("-");
}
}
printf("| ] ");
}
printf("\n");
}
void clear()
{
m_figs.clear();
m_figs.resize(4);
}
private:
int m_fib;
std::vector<std::vector<FIG> > m_figs;
};
|