cprover
ui_message.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_UTIL_UI_MESSAGE_H
11 #define CPROVER_UTIL_UI_MESSAGE_H
12 
13 #include <memory>
14 
15 #include "cout_message.h"
16 #include "json_stream.h"
17 #include "timestamper.h"
18 
20 {
21 public:
22  enum class uit { PLAIN, XML_UI, JSON_UI };
23 
24  ui_message_handlert(const class cmdlinet &, const std::string &program);
25 
28 
29  virtual ~ui_message_handlert();
30 
31  virtual uit get_ui() const
32  {
33  return _ui;
34  }
35 
36  virtual void flush(unsigned level) override;
37 
39  {
40  PRECONDITION(json_stream!=nullptr);
41  return *json_stream;
42  }
43  void print(unsigned level, const structured_datat &data) override;
44 
45 protected:
46  std::unique_ptr<console_message_handlert> console_message_handler;
49  const bool always_flush;
50  std::unique_ptr<const timestampert> time;
51  std::ostream &out;
52  std::unique_ptr<json_stream_arrayt> json_stream;
53 
56  uit,
57  const std::string &program,
58  const bool always_flush,
59  timestampert::clockt clock_type);
60 
61  virtual void print(
62  unsigned level,
63  const std::string &message) override;
64 
65  virtual void print(
66  unsigned level,
67  const std::string &message,
68  const source_locationt &location) override;
69 
70  virtual void print(
71  unsigned level,
72  const xmlt &data) override;
73 
74  virtual void print(
75  unsigned level,
76  const jsont &data) override;
77 
78  virtual void xml_ui_msg(
79  const std::string &type,
80  const std::string &msg,
81  const source_locationt &location);
82 
83  virtual void json_ui_msg(
84  const std::string &type,
85  const std::string &msg,
86  const source_locationt &location);
87 
88  virtual void ui_msg(
89  const std::string &type,
90  const std::string &msg,
91  const source_locationt &location);
92 
93  const char *level_string(unsigned level);
94 
95  std::string command(unsigned c) const override
96  {
97  if(message_handler)
98  return message_handler->command(c);
99  else
100  return std::string();
101  }
102 };
103 
104 #define OPT_FLUSH "(flush)"
105 
106 #define HELP_FLUSH " --flush flush every line of output\n"
107 
108 #endif // CPROVER_UTIL_UI_MESSAGE_H
message_handlert::command
virtual std::string command(unsigned) const
Create an ECMA-48 SGR (Select Graphic Rendition) command.
Definition: message.h:66
ui_message_handlert
Definition: ui_message.h:20
ui_message_handlert::always_flush
const bool always_flush
Definition: ui_message.h:49
ui_message_handlert::uit::XML_UI
@ XML_UI
ui_message_handlert::_ui
uit _ui
Definition: ui_message.h:48
ui_message_handlert::ui_msg
virtual void ui_msg(const std::string &type, const std::string &msg, const source_locationt &location)
Definition: ui_message.cpp:240
timestampert::clockt
clockt
Derived types of timestampert.
Definition: timestamper.h:46
json_stream.h
data
Definition: kdev_t.h:24
ui_message_handlert::~ui_message_handlert
virtual ~ui_message_handlert()
Definition: ui_message.cpp:98
ui_message_handlert::ui_message_handlert
ui_message_handlert(ui_message_handlert &&)=default
jsont
Definition: json.h:27
ui_message_handlert::get_ui
virtual uit get_ui() const
Definition: ui_message.h:31
ui_message_handlert::uit
uit
Definition: ui_message.h:22
message
static const char * message(const static_verifier_resultt::statust &status)
Makes a status message string from a status.
Definition: static_verifier.cpp:74
ui_message_handlert::get_json_stream
virtual json_stream_arrayt & get_json_stream()
Definition: ui_message.h:38
cmdlinet
Definition: cmdline.h:21
ui_message_handlert::json_stream
std::unique_ptr< json_stream_arrayt > json_stream
Definition: ui_message.h:52
ui_message_handlert::json_ui_msg
virtual void json_ui_msg(const std::string &type, const std::string &msg, const source_locationt &location)
Definition: ui_message.cpp:282
ui_message_handlert::time
std::unique_ptr< const timestampert > time
Definition: ui_message.h:50
ui_message_handlert::uit::JSON_UI
@ JSON_UI
PRECONDITION
#define PRECONDITION(CONDITION)
Definition: invariant.h:464
ui_message_handlert::out
std::ostream & out
Definition: ui_message.h:51
cout_message.h
json_stream_arrayt
Provides methods for streaming JSON arrays.
Definition: json_stream.h:93
message_handlert
Definition: message.h:28
xmlt
Definition: xml.h:21
structured_datat
A way of representing nested key/value data.
Definition: structured_data.h:74
ui_message_handlert::console_message_handler
std::unique_ptr< console_message_handlert > console_message_handler
Definition: ui_message.h:46
source_locationt
Definition: source_location.h:20
ui_message_handlert::uit::PLAIN
@ PLAIN
ui_message_handlert::level_string
const char * level_string(unsigned level)
Definition: ui_message.cpp:119
ui_message_handlert::xml_ui_msg
virtual void xml_ui_msg(const std::string &type, const std::string &msg, const source_locationt &location)
Definition: ui_message.cpp:260
ui_message_handlert::command
std::string command(unsigned c) const override
Create an ECMA-48 SGR (Select Graphic Rendition) command.
Definition: ui_message.h:95
timestamper.h
Emit timestamps.
ui_message_handlert::flush
virtual void flush(unsigned level) override
Definition: ui_message.cpp:301
ui_message_handlert::ui_message_handlert
ui_message_handlert(const class cmdlinet &, const std::string &program)
Definition: ui_message.cpp:65
ui_message_handlert::print
void print(unsigned level, const structured_datat &data) override
Definition: ui_message.cpp:315
ui_message_handlert::message_handler
message_handlert * message_handler
Definition: ui_message.h:47