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,24 @@ 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
+
81
+ out << " Type........: " ;
82
+ if (symbol.type .is_not_nil ())
83
+ out << formatter (symbol.type );
84
+ out << ' \n ' ;
85
+
86
+ out << " Value.......: " ;
87
+ if (symbol.value .is_not_nil ())
88
+ out << formatter (symbol.value );
89
+ out << ' \n ' ;
90
+
113
91
out << " Flags.......:" ;
114
92
115
93
if (symbol.is_lvalue )
@@ -146,24 +124,25 @@ void show_symbol_table_plain(
146
124
out << " volatile" ;
147
125
148
126
out << ' \n ' ;
149
- out << " Location....: " << symbol.location << ' \n ' ;
127
+ out << " Location....: " << formatter ( symbol.location ) << ' \n ' ;
150
128
151
129
out << ' \n ' << std::flush;
152
130
}
153
131
}
154
132
155
133
void show_symbol_table (
156
134
const symbol_tablet &symbol_table,
157
- ui_message_handlert::uit ui)
135
+ ui_message_handlert::uit ui,
136
+ formattert &formatter)
158
137
{
159
138
switch (ui)
160
139
{
161
140
case ui_message_handlert::uit::PLAIN:
162
- show_symbol_table_plain (symbol_table, std::cout);
141
+ show_symbol_table_plain (symbol_table, std::cout, formatter );
163
142
break ;
164
143
165
144
case ui_message_handlert::uit::XML_UI:
166
- show_symbol_table_xml_ui ();
145
+ show_symbol_table_xml_ui (formatter );
167
146
break ;
168
147
169
148
default :
@@ -173,23 +152,25 @@ void show_symbol_table(
173
152
174
153
void show_symbol_table (
175
154
const goto_modelt &goto_model,
176
- ui_message_handlert::uit ui)
155
+ ui_message_handlert::uit ui,
156
+ formattert &formatter)
177
157
{
178
- show_symbol_table (goto_model.symbol_table , ui);
158
+ show_symbol_table (goto_model.symbol_table , ui, formatter );
179
159
}
180
160
181
161
void show_symbol_table_brief (
182
162
const symbol_tablet &symbol_table,
183
- ui_message_handlert::uit ui)
163
+ ui_message_handlert::uit ui,
164
+ formattert &formatter)
184
165
{
185
166
switch (ui)
186
167
{
187
168
case ui_message_handlert::uit::PLAIN:
188
- show_symbol_table_brief_plain (symbol_table, std::cout);
169
+ show_symbol_table_brief_plain (symbol_table, std::cout, formatter );
189
170
break ;
190
171
191
172
case ui_message_handlert::uit::XML_UI:
192
- show_symbol_table_xml_ui ();
173
+ show_symbol_table_xml_ui (formatter );
193
174
break ;
194
175
195
176
default :
@@ -199,7 +180,8 @@ void show_symbol_table_brief(
199
180
200
181
void show_symbol_table_brief (
201
182
const goto_modelt &goto_model,
202
- ui_message_handlert::uit ui)
183
+ ui_message_handlert::uit ui,
184
+ formattert &formatter)
203
185
{
204
- show_symbol_table_brief (goto_model.symbol_table , ui);
186
+ show_symbol_table_brief (goto_model.symbol_table , ui, formatter );
205
187
}
0 commit comments