19
19
20
20
#include " goto_model.h"
21
21
22
- void show_symbol_table_xml_ui ()
22
+ void show_symbol_table_xml_ui (formattert & )
23
23
{
24
24
}
25
25
26
26
void show_symbol_table_brief_plain (
27
27
const symbol_tablet &symbol_table,
28
- std::ostream &out)
28
+ std::ostream &out,
29
+ formattert &formatter)
29
30
{
30
31
// we want to sort alphabetically
31
32
std::set<std::string> symbols;
@@ -41,29 +42,17 @@ void show_symbol_table_brief_plain(
41
42
{
42
43
const symbolt &symbol=ns.lookup (id);
43
44
44
- std::unique_ptr<languaget> ptr;
45
-
46
- if (symbol.mode ==" " )
47
- ptr=get_default_language ();
48
- else
49
- {
50
- ptr=get_language_from_mode (symbol.mode );
51
- if (ptr==nullptr )
52
- throw " symbol " +id2string (symbol.name )+" has unknown mode" ;
53
- }
54
-
55
- std::string type_str;
56
-
57
45
if (symbol.type .is_not_nil ())
58
- ptr-> from_type (symbol.type , type_str, ns) ;
59
-
60
- out << symbol.name << " " << type_str << ' \n ' ;
46
+ out << symbol. name << " " << formatter (symbol.type ) << ' \n ' ;
47
+ else
48
+ out << symbol.name << ' \n ' ;
61
49
}
62
50
}
63
51
64
52
void show_symbol_table_plain (
65
53
const symbol_tablet &symbol_table,
66
- std::ostream &out)
54
+ std::ostream &out,
55
+ formattert &formatter)
67
56
{
68
57
out << ' \n ' << " Symbols:" << ' \n ' << ' \n ' ;
69
58
@@ -81,35 +70,15 @@ void show_symbol_table_plain(
81
70
{
82
71
const symbolt &symbol=ns.lookup (id);
83
72
84
- std::unique_ptr<languaget> ptr;
85
-
86
- if (symbol.mode ==" " )
87
- {
88
- ptr=get_default_language ();
89
- }
90
- else
91
- {
92
- ptr=get_language_from_mode (symbol.mode );
93
- }
94
-
95
- if (!ptr)
96
- throw " symbol " +id2string (symbol.name )+" has unknown mode" ;
97
-
98
73
std::string type_str, value_str;
99
74
100
- if (symbol.type .is_not_nil ())
101
- ptr->from_type (symbol.type , type_str, ns);
102
-
103
- if (symbol.value .is_not_nil ())
104
- ptr->from_expr (symbol.value , value_str, ns);
105
-
106
75
out << " Symbol......: " << symbol.name << ' \n ' << std::flush;
107
76
out << " Pretty name.: " << symbol.pretty_name << ' \n ' ;
108
77
out << " Module......: " << symbol.module << ' \n ' ;
109
78
out << " Base name...: " << symbol.base_name << ' \n ' ;
110
79
out << " Mode........: " << symbol.mode << ' \n ' ;
111
- out << " Type........: " << type_str << ' \n ' ;
112
- out << " Value.......: " << value_str << ' \n ' ;
80
+ out << " Type........: " << formatter (symbol. type ) << ' \n ' ;
81
+ out << " Value.......: " << formatter (symbol. value ) << ' \n ' ;
113
82
out << " Flags.......:" ;
114
83
115
84
if (symbol.is_lvalue )
@@ -146,24 +115,25 @@ void show_symbol_table_plain(
146
115
out << " volatile" ;
147
116
148
117
out << ' \n ' ;
149
- out << " Location....: " << symbol.location << ' \n ' ;
118
+ out << " Location....: " << formatter ( symbol.location ) << ' \n ' ;
150
119
151
120
out << ' \n ' << std::flush;
152
121
}
153
122
}
154
123
155
124
void show_symbol_table (
156
125
const symbol_tablet &symbol_table,
157
- ui_message_handlert::uit ui)
126
+ ui_message_handlert::uit ui,
127
+ formattert &formatter)
158
128
{
159
129
switch (ui)
160
130
{
161
131
case ui_message_handlert::uit::PLAIN:
162
- show_symbol_table_plain (symbol_table, std::cout);
132
+ show_symbol_table_plain (symbol_table, std::cout, formatter );
163
133
break ;
164
134
165
135
case ui_message_handlert::uit::XML_UI:
166
- show_symbol_table_xml_ui ();
136
+ show_symbol_table_xml_ui (formatter );
167
137
break ;
168
138
169
139
default :
@@ -173,23 +143,25 @@ void show_symbol_table(
173
143
174
144
void show_symbol_table (
175
145
const goto_modelt &goto_model,
176
- ui_message_handlert::uit ui)
146
+ ui_message_handlert::uit ui,
147
+ formattert &formatter)
177
148
{
178
- show_symbol_table (goto_model.symbol_table , ui);
149
+ show_symbol_table (goto_model.symbol_table , ui, formatter );
179
150
}
180
151
181
152
void show_symbol_table_brief (
182
153
const symbol_tablet &symbol_table,
183
- ui_message_handlert::uit ui)
154
+ ui_message_handlert::uit ui,
155
+ formattert &formatter)
184
156
{
185
157
switch (ui)
186
158
{
187
159
case ui_message_handlert::uit::PLAIN:
188
- show_symbol_table_brief_plain (symbol_table, std::cout);
160
+ show_symbol_table_brief_plain (symbol_table, std::cout, formatter );
189
161
break ;
190
162
191
163
case ui_message_handlert::uit::XML_UI:
192
- show_symbol_table_xml_ui ();
164
+ show_symbol_table_xml_ui (formatter );
193
165
break ;
194
166
195
167
default :
@@ -199,7 +171,8 @@ void show_symbol_table_brief(
199
171
200
172
void show_symbol_table_brief (
201
173
const goto_modelt &goto_model,
202
- ui_message_handlert::uit ui)
174
+ ui_message_handlert::uit ui,
175
+ formattert &formatter)
203
176
{
204
- show_symbol_table_brief (goto_model.symbol_table , ui);
177
+ show_symbol_table_brief (goto_model.symbol_table , ui, formatter );
205
178
}
0 commit comments