Skip to content

Commit 7f7d8ce

Browse files
authored
Merge pull request #3362 from tautschnig/vs-no-no-op
Avoid default no-ops, force derived classes to override [blocks: #2310]
2 parents 902a9ea + 6461481 commit 7f7d8ce

File tree

2 files changed

+44
-17
lines changed

2 files changed

+44
-17
lines changed

src/util/cout_message.h

+16
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ class cerr_message_handlert:public stream_message_handlert
2929
class console_message_handlert : public message_handlert
3030
{
3131
public:
32+
void print(unsigned, const xmlt &) override
33+
{
34+
}
35+
36+
void print(unsigned, const jsont &) override
37+
{
38+
}
39+
3240
// level 4 and upwards go to cout, level 1-3 to cerr
3341
virtual void print(
3442
unsigned level,
@@ -57,6 +65,14 @@ class console_message_handlert : public message_handlert
5765
class gcc_message_handlert : public console_message_handlert
5866
{
5967
public:
68+
void print(unsigned, const xmlt &) override
69+
{
70+
}
71+
72+
void print(unsigned, const jsont &) override
73+
{
74+
}
75+
6076
// aims to imitate the messages gcc prints
6177
virtual void print(
6278
unsigned level,

src/util/message.h

+28-17
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,16 @@ class message_handlert
3030

3131
virtual void print(unsigned level, const std::string &message)=0;
3232

33-
virtual void print(unsigned level, const xmlt &xml)
34-
{
35-
// no-op by default
36-
}
33+
virtual void print(unsigned level, const xmlt &xml) = 0;
3734

38-
virtual void print(unsigned level, const jsont &json)
39-
{
40-
// no-op by default
41-
}
35+
virtual void print(unsigned level, const jsont &json) = 0;
4236

4337
virtual void print(
4438
unsigned level,
4539
const std::string &message,
4640
const source_locationt &location);
4741

48-
virtual void flush(unsigned level)
49-
{
50-
// no-op by default
51-
}
42+
virtual void flush(unsigned) = 0;
5243

5344
virtual ~message_handlert()
5445
{
@@ -80,18 +71,30 @@ class message_handlert
8071
class null_message_handlert:public message_handlert
8172
{
8273
public:
83-
virtual void print(unsigned level, const std::string &message)
74+
void print(unsigned level, const std::string &message) override
8475
{
8576
message_handlert::print(level, message);
8677
}
8778

88-
virtual void print(
79+
void print(unsigned, const xmlt &) override
80+
{
81+
}
82+
83+
void print(unsigned, const jsont &) override
84+
{
85+
}
86+
87+
void print(
8988
unsigned level,
9089
const std::string &message,
91-
const source_locationt &)
90+
const source_locationt &) override
9291
{
9392
print(level, message);
9493
}
94+
95+
void flush(unsigned) override
96+
{
97+
}
9598
};
9699

97100
class stream_message_handlert:public message_handlert
@@ -101,15 +104,23 @@ class stream_message_handlert:public message_handlert
101104
{
102105
}
103106

104-
virtual void print(unsigned level, const std::string &message)
107+
void print(unsigned level, const std::string &message) override
105108
{
106109
message_handlert::print(level, message);
107110

108111
if(verbosity>=level)
109112
out << message << '\n';
110113
}
111114

112-
virtual void flush(unsigned level)
115+
void print(unsigned, const xmlt &) override
116+
{
117+
}
118+
119+
void print(unsigned, const jsont &) override
120+
{
121+
}
122+
123+
void flush(unsigned) override
113124
{
114125
out << std::flush;
115126
}

0 commit comments

Comments
 (0)