Skip to content

Commit 48a2996

Browse files
committed
use format() for --show-symbol-table
1 parent 090a2c9 commit 48a2996

File tree

1 file changed

+28
-84
lines changed

1 file changed

+28
-84
lines changed

src/goto-programs/show_symbol_table.cpp

Lines changed: 28 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@ Author: Daniel Kroening, [email protected]
1313

1414
#include <algorithm>
1515
#include <iostream>
16-
#include <memory>
17-
18-
#include <langapi/language.h>
19-
#include <langapi/mode.h>
16+
#include <sstream>
2017

18+
#include <util/format_expr.h>
19+
#include <util/format_type.h>
2120
#include <util/json_irep.h>
2221

2322
#include "goto_model.h"
@@ -44,23 +43,12 @@ void show_symbol_table_brief_plain(
4443
{
4544
const symbolt &symbol=ns.lookup(id);
4645

47-
std::unique_ptr<languaget> ptr;
48-
49-
if(symbol.mode=="")
50-
ptr=get_default_language();
51-
else
52-
{
53-
ptr=get_language_from_mode(symbol.mode);
54-
if(ptr==nullptr)
55-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
56-
}
57-
58-
std::string type_str;
46+
out << symbol.name;
5947

6048
if(symbol.type.is_not_nil())
61-
ptr->from_type(symbol.type, type_str, ns);
49+
out << ' ' << format(symbol.type);
6250

63-
out << symbol.name << " " << type_str << '\n';
51+
out << '\n';
6452
}
6553
}
6654

@@ -84,35 +72,19 @@ void show_symbol_table_plain(
8472
{
8573
const symbolt &symbol=ns.lookup(id);
8674

87-
std::unique_ptr<languaget> ptr;
88-
89-
if(symbol.mode=="")
90-
{
91-
ptr=get_default_language();
92-
}
93-
else
94-
{
95-
ptr=get_language_from_mode(symbol.mode);
96-
}
97-
98-
if(!ptr)
99-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
100-
101-
std::string type_str, value_str;
102-
103-
if(symbol.type.is_not_nil())
104-
ptr->from_type(symbol.type, type_str, ns);
105-
106-
if(symbol.value.is_not_nil())
107-
ptr->from_expr(symbol.value, value_str, ns);
108-
10975
out << "Symbol......: " << symbol.name << '\n' << std::flush;
11076
out << "Pretty name.: " << symbol.pretty_name << '\n';
11177
out << "Module......: " << symbol.module << '\n';
11278
out << "Base name...: " << symbol.base_name << '\n';
11379
out << "Mode........: " << symbol.mode << '\n';
114-
out << "Type........: " << type_str << '\n';
115-
out << "Value.......: " << value_str << '\n';
80+
out << "Type........: ";
81+
if(symbol.type.is_not_nil())
82+
out << format(symbol.type);
83+
out << '\n';
84+
out << "Value.......: ";
85+
if(symbol.value.is_not_nil())
86+
out << format(symbol.value);
87+
out << '\n';
11688
out << "Flags.......:";
11789

11890
if(symbol.is_lvalue)
@@ -172,36 +144,22 @@ static void show_symbol_table_json_ui(
172144
{
173145
const symbolt &symbol = id_and_symbol.second;
174146

175-
std::unique_ptr<languaget> ptr;
176-
177-
if(symbol.mode=="")
178-
{
179-
ptr=get_default_language();
180-
}
181-
else
182-
{
183-
ptr=get_language_from_mode(symbol.mode);
184-
}
185-
186-
if(!ptr)
187-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
188-
189-
std::string type_str, value_str;
190-
191-
if(symbol.type.is_not_nil())
192-
ptr->from_type(symbol.type, type_str, ns);
193-
194-
if(symbol.value.is_not_nil())
195-
ptr->from_expr(symbol.value, value_str, ns);
196-
197147
json_objectt symbol_json;
198148
symbol_json["prettyName"] = json_stringt(symbol.pretty_name);
199149
symbol_json["baseName"] = json_stringt(symbol.base_name);
200150
symbol_json["mode"] = json_stringt(symbol.mode);
201151
symbol_json["module"] = json_stringt(symbol.module);
202152

203-
symbol_json["prettyType"] = json_stringt(type_str);
204-
symbol_json["prettyValue"] = json_stringt(value_str);
153+
std::ostringstream type_str, value_str;
154+
155+
if(symbol.type.is_not_nil())
156+
type_str << format(symbol.type);
157+
158+
if(symbol.value.is_not_nil())
159+
value_str << format(symbol.value);
160+
161+
symbol_json["prettyType"] = json_stringt(type_str.str());
162+
symbol_json["prettyValue"] = json_stringt(value_str.str());
205163

206164
symbol_json["type"] = irep_converter.convert_from_irep(symbol.type);
207165
symbol_json["value"] = irep_converter.convert_from_irep(symbol.value);
@@ -247,35 +205,21 @@ static void show_symbol_table_brief_json_ui(
247205
{
248206
const symbolt &symbol = id_and_symbol.second;
249207

250-
std::unique_ptr<languaget> ptr;
251-
252-
if(symbol.mode=="")
253-
{
254-
ptr=get_default_language();
255-
}
256-
else
257-
{
258-
ptr=get_language_from_mode(symbol.mode);
259-
}
260-
261-
if(!ptr)
262-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
263-
264-
std::string type_str, value_str;
208+
std::ostringstream type_str, value_str;
265209

266210
if(symbol.type.is_not_nil())
267-
ptr->from_type(symbol.type, type_str, ns);
211+
type_str << format(symbol.type);
268212

269213
if(symbol.value.is_not_nil())
270-
ptr->from_expr(symbol.value, value_str, ns);
214+
value_str << format(symbol.value);
271215

272216
json_objectt symbol_json;
273217
symbol_json["prettyName"] = json_stringt(symbol.pretty_name);
274218
symbol_json["baseName"] = json_stringt(symbol.base_name);
275219
symbol_json["mode"] = json_stringt(symbol.mode);
276220
symbol_json["module"] = json_stringt(symbol.module);
277221

278-
symbol_json["prettyType"] = json_stringt(type_str);
222+
symbol_json["prettyType"] = json_stringt(type_str.str());
279223

280224
symbol_json["type"] = irep_converter.convert_from_irep(symbol.type);
281225

0 commit comments

Comments
 (0)