MCPcopy Create free account
hub / github.com/davidgiven/fluxengine / LogRendererImpl

Class LogRendererImpl

lib/core/logrenderer.cc:7–89  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5namespace
6{
7 class LogRendererImpl : public LogRenderer
8 {
9 public:
10 LogRendererImpl(std::ostream& stream): _stream(stream) {}
11
12 private:
13 void indent()
14 {
15 _stream << " ";
16 _lineLen = 7;
17 _space = true;
18 }
19
20 public:
21 LogRenderer& add(const std::string& m) override
22 {
23 if (_newline && !_header)
24 indent();
25
26 if (!_space)
27 {
28 _stream << ' ';
29 _lineLen++;
30 }
31
32 _newline = false;
33 _header = false;
34
35 _lineLen += m.size();
36 if (_lineLen >= 80)
37 {
38 _stream << '\n';
39 indent();
40 }
41 _stream << m;
42 _space = !m.empty() && isspace(m[m.size() - 1]);
43 return *this;
44 }
45
46 LogRenderer& header(const std::string& m) override
47 {
48 if (!_newline)
49 _stream << '\n';
50 _stream << m;
51 _lineLen = m.size();
52 _header = true;
53 _newline = true;
54 _space = !m.empty() && isspace(m[m.size() - 1]);
55 return *this;
56 }
57
58 LogRenderer& comma() override
59 {
60 if (!_newline || _header)
61 {
62 _stream << ';';
63 _space = false;
64 }

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected