cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
show_goto_functions.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Show goto functions
4
5
Author: Peter Schrammel
6
7
\*******************************************************************/
8
11
12
#include "
show_goto_functions.h
"
13
14
#include <
util/ui_message.h
>
15
16
#include "
goto_model.h
"
17
#include "
show_goto_functions_json.h
"
18
#include "
show_goto_functions_xml.h
"
19
20
void
show_goto_functions
(
21
const
namespacet
&ns,
22
ui_message_handlert
&ui_message_handler,
23
const
goto_functionst
&goto_functions,
24
bool
list_only)
25
{
26
ui_message_handlert::uit
ui = ui_message_handler.
get_ui
();
27
messaget
msg(ui_message_handler);
28
switch
(ui)
29
{
30
case
ui_message_handlert::uit::XML_UI
:
31
{
32
show_goto_functions_xmlt
xml_show_functions(list_only);
33
msg.
status
() << xml_show_functions.
convert
(goto_functions);
34
}
35
break
;
36
37
case
ui_message_handlert::uit::JSON_UI
:
38
{
39
show_goto_functions_jsont
json_show_functions(list_only);
40
msg.
status
() << json_show_functions.
convert
(goto_functions);
41
}
42
break
;
43
44
case
ui_message_handlert::uit::PLAIN
:
45
{
46
// sort alphabetically
47
const
auto
sorted = goto_functions.
sorted
();
48
49
for
(
const
auto
&fun : sorted)
50
{
51
const
symbolt
&symbol = ns.
lookup
(fun->first);
52
const
bool
has_body = fun->second.body_available();
53
54
if
(list_only)
55
{
56
msg.
status
() <<
'\n'
57
<< symbol.
display_name
() <<
" /* "
<< symbol.
name
58
<< (has_body ?
""
:
", body not available"
) <<
" */"
;
59
msg.
status
() <<
messaget::eom
;
60
}
61
else
if
(has_body)
62
{
63
msg.
status
() <<
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"
;
64
65
msg.
status
() <<
messaget::bold
<< symbol.
display_name
()
66
<<
messaget::reset
<<
" /* "
<< symbol.
name
<<
" */\n"
;
67
fun->second.body.output(msg.
status
());
68
msg.
status
() <<
messaget::eom
;
69
}
70
}
71
}
72
73
break
;
74
}
75
}
76
77
void
show_goto_functions
(
78
const
goto_modelt
&goto_model,
79
ui_message_handlert
&ui_message_handler,
80
bool
list_only)
81
{
82
const
namespacet
ns(goto_model.
symbol_table
);
83
show_goto_functions
(
84
ns, ui_message_handler, goto_model.
goto_functions
, list_only);
85
}
goto_functionst
A collection of goto functions.
Definition
goto_functions.h:25
goto_functionst::sorted
std::vector< function_mapt::const_iterator > sorted() const
returns a vector of the iterators in alphabetical order
Definition
goto_functions.cpp:66
goto_modelt
Definition
goto_model.h:27
goto_modelt::symbol_table
symbol_tablet symbol_table
Symbol table.
Definition
goto_model.h:31
goto_modelt::goto_functions
goto_functionst goto_functions
GOTO functions.
Definition
goto_model.h:34
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition
message.h:154
messaget::reset
static const commandt reset
return to default formatting, as defined by the terminal
Definition
message.h:335
messaget::bold
static const commandt bold
render text with bold font
Definition
message.h:374
messaget::eom
static eomt eom
Definition
message.h:289
messaget::status
mstreamt & status() const
Definition
message.h:406
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
namespacet::lookup
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
Definition
namespace.cpp:134
show_goto_functions_jsont
Definition
show_goto_functions_json.h:20
show_goto_functions_jsont::convert
json_objectt convert(const goto_functionst &goto_functions)
Walks through all of the functions in the program and returns a JSON object representing all their fu...
Definition
show_goto_functions_json.cpp:28
show_goto_functions_xmlt
Definition
show_goto_functions_xml.h:20
show_goto_functions_xmlt::convert
xmlt convert(const goto_functionst &goto_functions)
Walks through all of the functions in the program and returns an xml object representing all their fu...
Definition
show_goto_functions_xml.cpp:34
symbolt
Symbol table entry.
Definition
symbol.h:28
symbolt::name
irep_idt name
The unique identifier.
Definition
symbol.h:40
symbolt::display_name
const irep_idt & display_name() const
Return language specific display name if present.
Definition
symbol.h:55
ui_message_handlert
Definition
ui_message.h:22
ui_message_handlert::get_ui
virtual uit get_ui() const
Definition
ui_message.h:33
ui_message_handlert::uit
uit
Definition
ui_message.h:24
ui_message_handlert::uit::JSON_UI
@ JSON_UI
Definition
ui_message.h:24
ui_message_handlert::uit::XML_UI
@ XML_UI
Definition
ui_message.h:24
ui_message_handlert::uit::PLAIN
@ PLAIN
Definition
ui_message.h:24
goto_model.h
Symbol Table + CFG.
show_goto_functions
void show_goto_functions(const namespacet &ns, ui_message_handlert &ui_message_handler, const goto_functionst &goto_functions, bool list_only)
Definition
show_goto_functions.cpp:20
show_goto_functions.h
Show the goto functions.
show_goto_functions_json.h
Goto Program.
show_goto_functions_xml.h
Goto Program.
ui_message.h
goto-programs
show_goto_functions.cpp
Generated by
1.17.0