User Guide
blame.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <memory>
4
#include <string>
5
6
namespace
nmodl
{
7
namespace
utils {
8
9
class
Blame
{
10
public
:
11
Blame
(
size_t
blame_line
)
12
:
blame_line
(
blame_line
) {}
13
14
virtual
~Blame
() =
default
;
15
16
template
<
class
OStream>
17
void
operator()
(OStream& os,
size_t
current_line)
const
{
18
if
(
blame_line
== current_line) {
19
os << this->
format
();
20
}
21
}
22
23
protected
:
24
virtual
std::string
format
()
const
= 0;
25
26
private
:
27
size_t
blame_line
= 0;
28
};
29
30
enum class
BlameLevel
{
Short
,
Detailed
};
31
32
std::unique_ptr<Blame>
make_blame
(
size_t
blame_line,
BlameLevel
=
BlameLevel::Short
);
33
34
}
// namespace utils
35
}
// namespace nmodl
nmodl::utils::Blame::Blame
Blame(size_t blame_line)
Definition:
blame.hpp:11
nmodl
encapsulates code generation backend implementations
Definition:
ast_common.hpp:26
nmodl::utils::Blame::blame_line
size_t blame_line
Definition:
blame.hpp:27
nmodl::utils::Blame::~Blame
virtual ~Blame()=default
nmodl::utils::Blame
Definition:
blame.hpp:9
nmodl::utils::Blame::operator()
void operator()(OStream &os, size_t current_line) const
Definition:
blame.hpp:17
nmodl::utils::make_blame
std::unique_ptr< Blame > make_blame(size_t blame_line, BlameLevel blame_level)
Definition:
blame.cpp:128
nmodl::utils::BlameLevel::Short
@ Short
nmodl::utils::Blame::format
virtual std::string format() const =0
nmodl::utils::BlameLevel::Detailed
@ Detailed
nmodl::utils::BlameLevel
BlameLevel
Definition:
blame.hpp:30
src
utils
blame.hpp