summaryrefslogtreecommitdiff
path: root/tools/standalone_miri/debug.cpp
blob: 415bc5d502345a48944cedaee4c72b84688d532b (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
#include "debug.hpp"

unsigned DebugSink::s_indent = 0;

DebugSink::DebugSink(::std::ostream& inner):
    m_inner(inner)
{
}
DebugSink::~DebugSink()
{
    m_inner << "\n";
}
bool DebugSink::enabled(const char* fcn_name)
{
    return true;
}
DebugSink DebugSink::get(const char* fcn_name, const char* file, unsigned line, DebugLevel lvl)
{
    for(size_t i = s_indent; i--;)
        ::std::cout << " ";
    switch(lvl)
    {
    case DebugLevel::Trace:
        ::std::cout << "Trace: " << file << ":" << line << ": ";
        break;
    case DebugLevel::Debug:
        ::std::cout << "DEBUG: " << fcn_name << ": ";
        break;
    case DebugLevel::Notice:
        ::std::cout << "NOTE: ";
        break;
    case DebugLevel::Warn:
        ::std::cout << "WARN: ";
        break;
    case DebugLevel::Error:
        ::std::cout << "ERROR: ";
        break;
    case DebugLevel::Fatal:
        ::std::cout << "FATAL: ";
        break;
    case DebugLevel::Bug:
        ::std::cout << "BUG: " << file << ":" << line << ": ";
        break;
    }
    return DebugSink(::std::cout);
}
void DebugSink::inc_indent()
{
    s_indent ++;
}
void DebugSink::dec_indent()
{
    s_indent --;
}