Skip to content

Commit 2431331

Browse files
committed
Change two enums to enum class
1 parent 972d3ff commit 2431331

12 files changed

+95
-117
lines changed

include/cgimap/output_formatter.hpp

+28-10
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,38 @@
2525
/**
2626
* What type of element the formatter is starting to write.
2727
*/
28-
enum element_type {
29-
element_type_changeset,
30-
element_type_node,
31-
element_type_way,
32-
element_type_relation
28+
enum class element_type {
29+
changeset,
30+
node,
31+
way,
32+
relation
3333
};
3434

35-
// TODO: document me.
36-
enum action_type {
37-
action_type_create,
38-
action_type_modify,
39-
action_type_delete
35+
enum class action_type {
36+
create,
37+
modify,
38+
del // delete is a reserved keyword
4039
};
4140

41+
namespace {
42+
43+
const char* element_type_name(element_type elt) {
44+
45+
switch (elt) {
46+
case element_type::node:
47+
return "node";
48+
case element_type::way:
49+
return "way";
50+
case element_type::relation:
51+
return "relation";
52+
case element_type::changeset:
53+
return "changeset";
54+
}
55+
return "";
56+
}
57+
58+
} // anonymous namespace
59+
4260
struct element_info {
4361

4462
element_info() = default;

src/backend/apidb/common_pgsql_selection.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,17 @@ element_type type_from_name(const char *name) {
109109
switch (name[0]) {
110110
case 'N':
111111
case 'n':
112-
type = element_type_node;
112+
type = element_type::node;
113113
break;
114114

115115
case 'W':
116116
case 'w':
117-
type = element_type_way;
117+
type = element_type::way;
118118
break;
119119

120120
case 'R':
121121
case 'r':
122-
type = element_type_relation;
122+
type = element_type::relation;
123123
break;
124124

125125
default:

src/backend/staticxml/staticxml.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,11 @@ struct xml_parser {
203203
member_info m;
204204
auto member_type = get_attribute<std::string>("type", attributes);
205205
if (member_type == "node") {
206-
m.type = element_type_node;
206+
m.type = element_type::node;
207207
} else if (member_type == "way") {
208-
m.type = element_type_way;
208+
m.type = element_type::way;
209209
} else if (member_type == "relation") {
210-
m.type = element_type_relation;
210+
m.type = element_type::relation;
211211
} else {
212212
throw std::runtime_error(fmt::format("Unknown member type `{}'.", member_type));
213213
}
@@ -399,7 +399,7 @@ struct static_data_selection : public data_selection {
399399
auto r = find_current<relation>(id);
400400
if (r) {
401401
for (const member_info &m : r->get().m_members) {
402-
if (m.type == element_type_node) {
402+
if (m.type == element_type::node) {
403403
m_nodes.insert(m.ref);
404404
}
405405
}
@@ -430,7 +430,7 @@ struct static_data_selection : public data_selection {
430430
auto r = find_current<relation>(id);
431431
if (r) {
432432
for (const member_info &m : r->get().m_members) {
433-
if (m.type == element_type_way) {
433+
if (m.type == element_type::way) {
434434
m_ways.insert(m.ref);
435435
}
436436
}
@@ -447,7 +447,7 @@ struct static_data_selection : public data_selection {
447447
const relation &r = itr->second;
448448
if (next == end || next->second.m_info.id != r.m_info.id) {
449449
for (const member_info &m : r.m_members) {
450-
if ((m.type == element_type_way) && (m_ways.count(m.ref) > 0)) {
450+
if ((m.type == element_type::way) && (m_ways.count(m.ref) > 0)) {
451451
m_relations.insert(r.m_info.id);
452452
break;
453453
}
@@ -468,7 +468,7 @@ struct static_data_selection : public data_selection {
468468
void select_relations_from_nodes() override {
469469
for (auto const & [_, r] : m_db.m_relations) {
470470
for (const member_info &m : r.m_members) {
471-
if ((m.type == element_type_node) && (m_nodes.count(m.ref) > 0)) {
471+
if ((m.type == element_type::node) && (m_nodes.count(m.ref) > 0)) {
472472
m_relations.insert(r.m_info.id);
473473
break;
474474
}
@@ -480,7 +480,7 @@ struct static_data_selection : public data_selection {
480480
std::set<osm_nwr_id_t> tmp_relations;
481481
for (auto const & [_, r] : m_db.m_relations) {
482482
for (const member_info &m : r.m_members) {
483-
if ((m.type == element_type_relation) &&
483+
if ((m.type == element_type::relation) &&
484484
(m_relations.count(m.ref) > 0)) {
485485
tmp_relations.insert(r.m_info.id);
486486
break;
@@ -497,7 +497,7 @@ struct static_data_selection : public data_selection {
497497
auto r = find_current<relation>(id);
498498
if (r) {
499499
for (const member_info &m : r->get().m_members) {
500-
if (m.type == element_type_relation) {
500+
if (m.type == element_type::relation) {
501501
m_relations.insert(m.ref);
502502
}
503503
}

src/json_formatter.cpp

-20
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,6 @@
1111

1212
#include <chrono>
1313

14-
namespace {
15-
16-
const std::string &element_type_name(element_type elt) {
17-
static std::string name_node("node"), name_way("way"),
18-
name_relation("relation");
19-
20-
switch (elt) {
21-
case element_type_node:
22-
return name_node;
23-
case element_type_way:
24-
return name_way;
25-
case element_type_relation:
26-
return name_relation;
27-
default:
28-
throw std::runtime_error("Unknown element type in element_type_name().");
29-
}
30-
}
31-
32-
} // anonymous namespace
33-
3414
json_formatter::json_formatter(std::unique_ptr<json_writer> w) : writer(std::move(w)) {}
3515

3616
json_formatter::~json_formatter() = default;

src/osm_current_responder.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,24 @@ void osm_current_responder::write(output_formatter& fmt,
3535
}
3636

3737
// write all selected changesets
38-
fmt.start_element_type(element_type_changeset);
38+
fmt.start_element_type(element_type::changeset);
3939
sel.write_changesets(fmt, now);
40-
fmt.end_element_type(element_type_changeset);
40+
fmt.end_element_type(element_type::changeset);
4141

4242
// write all selected nodes
43-
fmt.start_element_type(element_type_node);
43+
fmt.start_element_type(element_type::node);
4444
sel.write_nodes(fmt);
45-
fmt.end_element_type(element_type_node);
45+
fmt.end_element_type(element_type::node);
4646

4747
// all selected ways
48-
fmt.start_element_type(element_type_way);
48+
fmt.start_element_type(element_type::way);
4949
sel.write_ways(fmt);
50-
fmt.end_element_type(element_type_way);
50+
fmt.end_element_type(element_type::way);
5151

5252
// all selected relations
53-
fmt.start_element_type(element_type_relation);
53+
fmt.start_element_type(element_type::relation);
5454
sel.write_relations(fmt);
55-
fmt.end_element_type(element_type_relation);
55+
fmt.end_element_type(element_type::relation);
5656

5757
} catch (const std::exception &e) {
5858
logger::message(fmt::format("Caught error in osm_current_responder: {}",

src/osm_diffresult_responder.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ namespace {
2222
switch (o) {
2323

2424
case object_type::node:
25-
return element_type_node;
25+
return element_type::node;
2626
case object_type::way:
27-
return element_type_way;
27+
return element_type::way;
2828
case object_type::relation:
29-
return element_type_relation;
29+
return element_type::relation;
3030

3131
}
3232

src/osmchange_responder.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ struct sorting_formatter : public output_formatter {
102102
const tags_t &tags) override {
103103

104104
element node{
105-
element_type_node, elem, tags, element::lonlat{lon, lat},
105+
element_type::node, elem, tags, element::lonlat{lon, lat},
106106
nodes_t(), members_t()};
107107

108108
m_elements.emplace_back(std::move(node));
@@ -114,7 +114,7 @@ struct sorting_formatter : public output_formatter {
114114
const tags_t &tags) override {
115115

116116
element way{
117-
element_type_way, elem, tags, element::lonlat{},
117+
element_type::way, elem, tags, element::lonlat{},
118118
nodes, members_t()};
119119

120120
m_elements.emplace_back(std::move(way));
@@ -126,7 +126,7 @@ struct sorting_formatter : public output_formatter {
126126
const tags_t &tags) override {
127127

128128
element rel{
129-
element_type_relation, elem, tags, element::lonlat{},
129+
element_type::relation, elem, tags, element::lonlat{},
130130
nodes_t(), members};
131131

132132
m_elements.emplace_back(std::move(rel));
@@ -181,19 +181,19 @@ struct sorting_formatter : public output_formatter {
181181
std::sort(m_elements.begin(), m_elements.end());
182182
for (const auto &e : m_elements) {
183183
if (e.m_info.version == 1) {
184-
fmt.start_action(action_type_create);
184+
fmt.start_action(action_type::create);
185185
write_element(e, fmt);
186-
fmt.end_action(action_type_create);
186+
fmt.end_action(action_type::create);
187187

188188
} else if (e.m_info.visible) {
189-
fmt.start_action(action_type_modify);
189+
fmt.start_action(action_type::modify);
190190
write_element(e, fmt);
191-
fmt.end_action(action_type_modify);
191+
fmt.end_action(action_type::modify);
192192

193193
} else {
194-
fmt.start_action(action_type_delete);
194+
fmt.start_action(action_type::del);
195195
write_element(e, fmt);
196-
fmt.end_action(action_type_delete);
196+
fmt.end_action(action_type::del);
197197
}
198198
}
199199
}
@@ -203,16 +203,16 @@ struct sorting_formatter : public output_formatter {
203203

204204
void write_element(const element &e, output_formatter &fmt) {
205205
switch (e.m_type) {
206-
case element_type_node:
206+
case element_type::node:
207207
fmt.write_node(e.m_info, e.m_lonlat.m_lon, e.m_lonlat.m_lat, e.m_tags);
208208
break;
209-
case element_type_way:
209+
case element_type::way:
210210
fmt.write_way(e.m_info, e.m_nds, e.m_tags);
211211
break;
212-
case element_type_relation:
212+
case element_type::relation:
213213
fmt.write_relation(e.m_info, e.m_members, e.m_tags);
214214
break;
215-
case element_type_changeset:
215+
case element_type::changeset:
216216
break;
217217
}
218218
}

src/xml_formatter.cpp

+6-26
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,6 @@
1414
using std::string;
1515
using std::transform;
1616

17-
namespace {
18-
19-
const std::string &element_type_name(element_type elt) {
20-
static std::string name_node("node"), name_way("way"),
21-
name_relation("relation");
22-
23-
switch (elt) {
24-
case element_type_node:
25-
return name_node;
26-
case element_type_way:
27-
return name_way;
28-
case element_type_relation:
29-
return name_relation;
30-
default:
31-
// in case the switch isn't exhaustive?
32-
throw std::runtime_error("Unhandled element type in element_type_name().");
33-
}
34-
}
35-
36-
} // anonymous namespace
3717

3818
xml_formatter::xml_formatter(std::unique_ptr<xml_writer> w) : writer(std::move(w)) {}
3919

@@ -74,23 +54,23 @@ void xml_formatter::end_element_type(element_type) {
7454

7555
void xml_formatter::start_action(action_type type) {
7656
switch (type) {
77-
case action_type_create:
57+
case action_type::create:
7858
writer->start("create");
7959
break;
80-
case action_type_modify:
60+
case action_type::modify:
8161
writer->start("modify");
8262
break;
83-
case action_type_delete:
63+
case action_type::del:
8464
writer->start("delete");
8565
break;
8666
}
8767
}
8868

8969
void xml_formatter::end_action(action_type type) {
9070
switch (type) {
91-
case action_type_create:
92-
case action_type_modify:
93-
case action_type_delete:
71+
case action_type::create:
72+
case action_type::modify:
73+
case action_type::del:
9474
writer->end();
9575
break;
9676
}

test/test_apidb_backend_changeset_downloads.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ TEST_CASE_METHOD( DatabaseTestsFixture, "test_changeset_select_relation", "[chan
222222
REQUIRE(
223223
test_formatter::relation_t(
224224
element_info(1, 1, 2, "2017-03-19T20:15:00Z", 1, std::string("user_1"), true),
225-
members_t{member_info(element_type_node, 1, "foo")},
225+
members_t{member_info(element_type::node, 1, "foo")},
226226
tags_t()) == f.m_relations.front()); // relation 1, version 1 in changeset 1
227227
}
228228
}

0 commit comments

Comments
 (0)