Skip to content

Commit f06b563

Browse files
author
Daniel Kroening
committed
ui_message_handlert retains console_message_handlert object
1 parent f7e224b commit f06b563

File tree

2 files changed

+20
-35
lines changed

2 files changed

+20
-35
lines changed

src/util/ui_message.cpp

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ Author: Daniel Kroening, [email protected]
1111
#include <fstream>
1212
#include <iostream>
1313

14-
#include "xml.h"
14+
#include "cmdline.h"
1515
#include "json.h"
16-
#include "xml_expr.h"
1716
#include "json_expr.h"
1817
#include "json_stream.h"
19-
#include "cout_message.h"
20-
#include "cmdline.h"
18+
#include "make_unique.h"
19+
#include "xml.h"
20+
#include "xml_expr.h"
2121

2222
ui_message_handlert::ui_message_handlert(
23-
message_handlert *message_handler,
23+
message_handlert *_message_handler,
2424
uit __ui,
2525
const std::string &program,
2626
bool always_flush,
2727
timestampert::clockt clock_type)
28-
: message_handler(message_handler),
28+
: message_handler(_message_handler),
2929
_ui(__ui),
3030
always_flush(always_flush),
3131
time(timestampert::make(clock_type)),
@@ -80,6 +80,12 @@ ui_message_handlert::ui_message_handlert(
8080
: timestampert::clockt::NONE
8181
: timestampert::clockt::NONE)
8282
{
83+
if(get_ui() == uit::PLAIN)
84+
{
85+
console_message_handler =
86+
util_make_unique<console_message_handlert>(always_flush);
87+
message_handler = &*console_message_handler;
88+
}
8389
}
8490

8591
ui_message_handlert::ui_message_handlert(message_handlert &message_handler)
@@ -132,19 +138,9 @@ void ui_message_handlert::print(
132138
std::stringstream ss;
133139
const std::string timestamp = time->stamp();
134140
ss << timestamp << (timestamp.empty() ? "" : " ") << message;
135-
if(message_handler)
136-
{
137-
message_handler->print(level, ss.str());
138-
if(always_flush)
139-
message_handler->flush(level);
140-
}
141-
else
142-
{
143-
console_message_handlert msg(always_flush);
144-
msg.print(level, ss.str());
145-
if(always_flush)
146-
msg.flush(level);
147-
}
141+
message_handler->print(level, ss.str());
142+
if(always_flush)
143+
message_handler->flush(level);
148144
}
149145
break;
150146

@@ -306,24 +302,12 @@ void ui_message_handlert::flush(unsigned level)
306302
switch(get_ui())
307303
{
308304
case uit::PLAIN:
309-
{
310-
if(message_handler)
311-
{
312-
message_handler->flush(level);
313-
}
314-
else
315-
{
316-
console_message_handlert msg(always_flush);
317-
msg.flush(level);
318-
}
319-
}
320-
break;
305+
message_handler->flush(level);
306+
break;
321307

322308
case uit::XML_UI:
323309
case uit::JSON_UI:
324-
{
325310
out << std::flush;
326-
}
327-
break;
311+
break;
328312
}
329313
}

src/util/ui_message.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Author: Daniel Kroening, [email protected]
1212

1313
#include <memory>
1414

15-
#include "message.h"
15+
#include "cout_message.h"
1616
#include "json_stream.h"
1717
#include "timestamper.h"
1818

@@ -41,6 +41,7 @@ class ui_message_handlert : public message_handlert
4141
}
4242

4343
protected:
44+
std::unique_ptr<console_message_handlert> console_message_handler;
4445
message_handlert *message_handler;
4546
uit _ui;
4647
const bool always_flush;

0 commit comments

Comments
 (0)