Skip to content

Commit 455e8af

Browse files
committed
Deduplicate code for getting language for showing symbol table
So that the reader can more easily see that each of the functions in this file get the language in the same way and so that any future changes to this functionality only need to be made in one place.
1 parent be17ef4 commit 455e8af

File tree

1 file changed

+26
-49
lines changed

1 file changed

+26
-49
lines changed

src/goto-programs/show_symbol_table.cpp

Lines changed: 26 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,28 @@ Author: Daniel Kroening, [email protected]
2424

2525
#include "goto_model.h"
2626

27+
/// \brief Gets the language which should be used for showing the type and value
28+
/// of the supplied \p symbol.
29+
static std::unique_ptr<languaget>
30+
get_show_symbol_language(const symbolt &symbol)
31+
{
32+
std::unique_ptr<languaget> ptr;
33+
34+
if(symbol.mode.empty())
35+
{
36+
ptr=get_default_language();
37+
}
38+
else
39+
{
40+
ptr=get_language_from_mode(symbol.mode);
41+
}
42+
43+
if(!ptr)
44+
throw "symbol "+id2string(symbol.name)+" has unknown mode";
45+
46+
return ptr;
47+
}
48+
2749
void show_symbol_table_xml_ui()
2850
{
2951
}
@@ -39,16 +61,7 @@ void show_symbol_table_brief_plain(
3961
{
4062
const symbolt &symbol=ns.lookup(id);
4163

42-
std::unique_ptr<languaget> ptr;
43-
44-
if(symbol.mode.empty())
45-
ptr=get_default_language();
46-
else
47-
{
48-
ptr=get_language_from_mode(symbol.mode);
49-
if(ptr==nullptr)
50-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
51-
}
64+
const std::unique_ptr<languaget> ptr = get_show_symbol_language(symbol);
5265

5366
std::string type_str;
5467

@@ -72,19 +85,7 @@ void show_symbol_table_plain(
7285
{
7386
const symbolt &symbol=ns.lookup(id);
7487

75-
std::unique_ptr<languaget> ptr;
76-
77-
if(symbol.mode.empty())
78-
{
79-
ptr=get_default_language();
80-
}
81-
else
82-
{
83-
ptr=get_language_from_mode(symbol.mode);
84-
}
85-
86-
if(!ptr)
87-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
88+
const std::unique_ptr<languaget> ptr = get_show_symbol_language(symbol);
8889

8990
std::string type_str, value_str;
9091

@@ -160,19 +161,7 @@ static void show_symbol_table_json_ui(
160161
{
161162
const symbolt &symbol = id_and_symbol.second;
162163

163-
std::unique_ptr<languaget> ptr;
164-
165-
if(symbol.mode.empty())
166-
{
167-
ptr=get_default_language();
168-
}
169-
else
170-
{
171-
ptr=get_language_from_mode(symbol.mode);
172-
}
173-
174-
if(!ptr)
175-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
164+
const std::unique_ptr<languaget> ptr = get_show_symbol_language(symbol);
176165

177166
std::string type_str, value_str;
178167

@@ -234,19 +223,7 @@ static void show_symbol_table_brief_json_ui(
234223
{
235224
const symbolt &symbol = id_and_symbol.second;
236225

237-
std::unique_ptr<languaget> ptr;
238-
239-
if(symbol.mode.empty())
240-
{
241-
ptr=get_default_language();
242-
}
243-
else
244-
{
245-
ptr=get_language_from_mode(symbol.mode);
246-
}
247-
248-
if(!ptr)
249-
throw "symbol "+id2string(symbol.name)+" has unknown mode";
226+
const std::unique_ptr<languaget> ptr = get_show_symbol_language(symbol);
250227

251228
std::string type_str, value_str;
252229

0 commit comments

Comments
 (0)