From c58e7810549ea9b6cca2b3b3f8f56a5e7298f97e Mon Sep 17 00:00:00 2001 From: Sergey Yershov Date: Thu, 16 Apr 2015 03:00:23 +0300 Subject: Review fixes --- generator/generator_tests/osm_o5m_source_test.cpp | 264 +++++++++++----------- 1 file changed, 130 insertions(+), 134 deletions(-) (limited to 'generator/generator_tests') diff --git a/generator/generator_tests/osm_o5m_source_test.cpp b/generator/generator_tests/osm_o5m_source_test.cpp index ab9458a0dc..9fe94315d8 100644 --- a/generator/generator_tests/osm_o5m_source_test.cpp +++ b/generator/generator_tests/osm_o5m_source_test.cpp @@ -6,11 +6,11 @@ // #include "testing/testing.hpp" -#include "generator/osm_o5m_source.hpp" +#include "generator/osm_o5m_source.hpp" +#include "std/iterator.hpp" #include "std/set.hpp" - /* @@ -24,22 +24,23 @@ */ -/* begin binary data: node.o5m */ +// binary data: node.o5m uint8_t node_o5m_data[] = /* 92 */ -{0xFF,0xE0,0x04,0x6F,0x35,0x6D,0x32,0xFF,0x10,0x51,0xA1,0xAB,0x21,0x00,0xCD - ,0xE6,0xD7,0x80,0x0A,0xBE,0xCE,0x82,0xD1,0x04,0x00,0x6E,0x61,0x6D,0x65,0x00 - ,0xD0,0x9F,0xD1,0x80,0xD0,0xBE,0xD0,0xB4,0xD1,0x83,0xD0,0xBA,0xD1,0x82,0xD0 - ,0xBE,0xD0,0xB2,0xD1,0x8B,0xD0,0xB9,0x00,0x00,0x6F,0x70,0x65,0x6E,0x69,0x6E - ,0x67,0x5F,0x68,0x6F,0x75,0x72,0x73,0x00,0x32,0x34,0x2F,0x37,0x00,0x00,0x73 - ,0x68,0x6F,0x70,0x00,0x63,0x6F,0x6E,0x76,0x65,0x6E,0x69,0x65,0x6E,0x63,0x65 - ,0x00,0xFE}; -/* end binary data. size = 92 bytes */ - + {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x51, 0xA1, 0xAB, 0x21, 0x00, 0xCD, 0xE6, + 0xD7, 0x80, 0x0A, 0xBE, 0xCE, 0x82, 0xD1, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9F, + 0xD1, 0x80, 0xD0, 0xBE, 0xD0, 0xB4, 0xD1, 0x83, 0xD0, 0xBA, 0xD1, 0x82, 0xD0, 0xBE, 0xD0, 0xB2, + 0xD1, 0x8B, 0xD0, 0xB9, 0x00, 0x00, 0x6F, 0x70, 0x65, 0x6E, 0x69, 0x6E, 0x67, 0x5F, 0x68, 0x6F, + 0x75, 0x72, 0x73, 0x00, 0x32, 0x34, 0x2F, 0x37, 0x00, 0x00, 0x73, 0x68, 0x6F, 0x70, 0x00, 0x63, + 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 0x65, 0x00, 0xFE}; +static_assert(sizeof(node_o5m_data) == 92, "Size check failed"); /* - - - + + + @@ -47,17 +48,15 @@ uint8_t node_o5m_data[] = /* 92 */ */ -/* begin binary data: node2.o5m */ +// binary data: node2.o5m uint8_t node2_o5m_data[] = /* 93 */ -{0xFF,0xE0,0x04,0x6F,0x35,0x6D,0x32,0xFF,0x10,0x52,0x94,0xDD,0xF4,0xE9,0x03 - ,0x08,0xD6,0xBD,0xEF,0xFE,0x09,0xF0,0x87,0xC0,0x0B,0x00,0xBF,0x8E,0x18,0x00 - ,0x58,0x6D,0x79,0x70,0x62,0x6C,0x75,0x00,0xA0,0xCC,0xDA,0xF1,0x02,0xAC,0xEB - ,0xB3,0x8D,0x04,0x00,0x61,0x6D,0x65,0x6E,0x69,0x74,0x79,0x00,0x63,0x69,0x6E - ,0x65,0x6D,0x61,0x00,0x00,0x6E,0x61,0x6D,0x65,0x00,0xD0,0x9A,0xD0,0xA2,0x20 - ,0xD0,0x93,0xD0,0xBE,0xD1,0x80,0xD0,0xB8,0xD0,0xB7,0xD0,0xBE,0xD0,0xBD,0xD1 - ,0x82,0x00,0xFE}; -/* end binary data. size = 93 bytes */ - + {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x52, 0x94, 0xDD, 0xF4, 0xE9, 0x03, 0x08, + 0xD6, 0xBD, 0xEF, 0xFE, 0x09, 0xF0, 0x87, 0xC0, 0x0B, 0x00, 0xBF, 0x8E, 0x18, 0x00, 0x58, 0x6D, + 0x79, 0x70, 0x62, 0x6C, 0x75, 0x00, 0xA0, 0xCC, 0xDA, 0xF1, 0x02, 0xAC, 0xEB, 0xB3, 0x8D, 0x04, + 0x00, 0x61, 0x6D, 0x65, 0x6E, 0x69, 0x74, 0x79, 0x00, 0x63, 0x69, 0x6E, 0x65, 0x6D, 0x61, 0x00, + 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0xD0, 0x9A, 0xD0, 0xA2, 0x20, 0xD0, 0x93, 0xD0, 0xBE, 0xD1, + 0x80, 0xD0, 0xB8, 0xD0, 0xB7, 0xD0, 0xBE, 0xD0, 0xBD, 0xD1, 0x82, 0x00, 0xFE}; +static_assert(sizeof(node2_o5m_data) == 93, "Size check failed"); /* @@ -90,25 +89,23 @@ uint8_t node2_o5m_data[] = /* 93 */ */ -/* begin binary data: way.o5m */ +// binary data: way.o5m uint8_t way_o5m_data[] = /* 175 */ -{0xFF,0xE0,0x04,0x6F,0x35,0x6D,0x32,0xFF,0x10,0x0E,0xE9,0xAB,0x21,0x00,0xC5 - ,0x94,0x88,0x88,0x0A,0x8C,0xB1,0x9D,0xC3,0x04,0x10,0x08,0x04,0x00,0x9C,0x8F - ,0x0A,0x87,0xE7,0x05,0x10,0x07,0x04,0x00,0xF6,0x4A,0xFD,0x92,0x03,0x10,0x08 - ,0x04,0x00,0xF6,0xA1,0x04,0xF5,0x80,0x04,0x10,0x08,0x04,0x00,0xB4,0xB6,0x02 - ,0x89,0xBB,0x06,0x10,0x08,0x04,0x00,0xB4,0xEC,0x03,0xD9,0xCC,0x03,0x10,0x08 - ,0x04,0x00,0xD6,0xC0,0x01,0xB7,0x83,0x03,0x10,0x08,0x06,0x00,0xDB,0xAB,0x02 - ,0x9F,0xFE,0x02,0x10,0x08,0x02,0x00,0x87,0xAD,0x05,0xEB,0xA5,0x04,0xFF,0x11 - ,0x44,0xCD,0xAB,0x21,0x00,0x0B,0xC9,0xAB,0x21,0x01,0x05,0x03,0x03,0x03,0x03 - ,0x03,0x03,0x00,0x6E,0x61,0x6D,0x65,0x00,0x59,0x75,0x6B,0x6F,0x6E,0x20,0x52 - ,0x69,0x76,0x65,0x72,0x00,0x00,0x6E,0x61,0x6D,0x65,0x3A,0x72,0x75,0x00,0xD0 - ,0xAE,0xD0,0xBA,0xD0,0xBE,0xD0,0xBD,0x00,0x00,0x77,0x61,0x74,0x65,0x72,0x77 - ,0x61,0x79,0x00,0x72,0x69,0x76,0x65,0x72,0x00,0xFE}; -/* end binary data. size = 175 bytes */ - + {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x0E, 0xE9, 0xAB, 0x21, 0x00, 0xC5, 0x94, + 0x88, 0x88, 0x0A, 0x8C, 0xB1, 0x9D, 0xC3, 0x04, 0x10, 0x08, 0x04, 0x00, 0x9C, 0x8F, 0x0A, 0x87, + 0xE7, 0x05, 0x10, 0x07, 0x04, 0x00, 0xF6, 0x4A, 0xFD, 0x92, 0x03, 0x10, 0x08, 0x04, 0x00, 0xF6, + 0xA1, 0x04, 0xF5, 0x80, 0x04, 0x10, 0x08, 0x04, 0x00, 0xB4, 0xB6, 0x02, 0x89, 0xBB, 0x06, 0x10, + 0x08, 0x04, 0x00, 0xB4, 0xEC, 0x03, 0xD9, 0xCC, 0x03, 0x10, 0x08, 0x04, 0x00, 0xD6, 0xC0, 0x01, + 0xB7, 0x83, 0x03, 0x10, 0x08, 0x06, 0x00, 0xDB, 0xAB, 0x02, 0x9F, 0xFE, 0x02, 0x10, 0x08, 0x02, + 0x00, 0x87, 0xAD, 0x05, 0xEB, 0xA5, 0x04, 0xFF, 0x11, 0x44, 0xCD, 0xAB, 0x21, 0x00, 0x0B, 0xC9, + 0xAB, 0x21, 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, + 0x59, 0x75, 0x6B, 0x6F, 0x6E, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, 0x00, 0x00, 0x6E, 0x61, 0x6D, + 0x65, 0x3A, 0x72, 0x75, 0x00, 0xD0, 0xAE, 0xD0, 0xBA, 0xD0, 0xBE, 0xD0, 0xBD, 0x00, 0x00, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x77, 0x61, 0x79, 0x00, 0x72, 0x69, 0x76, 0x65, 0x72, 0x00, 0xFE}; +static_assert(sizeof(way_o5m_data) == 175, "Size check failed"); /* - + @@ -145,37 +142,37 @@ uint8_t way_o5m_data[] = /* 175 */ */ -/* begin binary data: relation.o5m*/ +// binary data: relation.o5m uint8_t relation_o5m_data[] = /* 224 */ -{0xFF,0xE0,0x04,0x6F,0x35,0x6D,0x32,0xFF,0x10,0x2B,0xD7,0xAC,0x21,0x00,0xAD - ,0xCF,0xFC,0x87,0x0A,0xA6,0xCE,0x88,0xC3,0x04,0x00,0x6E,0x61,0x6D,0x65,0x00 - ,0x57,0x68,0x69,0x74,0x65,0x68,0x6F,0x72,0x73,0x65,0x00,0x00,0x70,0x6C,0x61 - ,0x63,0x65,0x00,0x74,0x6F,0x77,0x6E,0x00,0x10,0x07,0x2C,0x00,0x9A,0x90,0x24 - ,0xD9,0x68,0x10,0x08,0x04,0x00,0xDE,0xCD,0x1E,0xF7,0xF6,0x15,0x10,0x08,0x04 - ,0x00,0x91,0xD3,0x2A,0xFB,0xCC,0x11,0x10,0x08,0x04,0x00,0xE7,0x95,0x60,0xFE - ,0x9A,0x02,0x10,0x08,0x04,0x00,0x97,0xDE,0x13,0xC0,0xA7,0x0F,0x10,0x08,0x04 - ,0x00,0xB6,0x9E,0x14,0xD2,0xC3,0x19,0x10,0x08,0x04,0x00,0xA6,0x8F,0x22,0xE0 - ,0xDD,0x16,0x10,0x07,0x02,0x00,0xA6,0xF6,0x19,0x9F,0x49,0xFF,0x11,0x10,0x95 - ,0xAC,0x21,0x00,0x0B,0x91,0xAC,0x21,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x1A - ,0xFF,0x12,0x46,0xB1,0xAC,0x21,0x00,0x11,0x95,0xAC,0x21,0x00,0x31,0x6F,0x75 - ,0x74,0x65,0x72,0x00,0xD7,0xAC,0x21,0x00,0x30,0x00,0x00,0x6E,0x61,0x6D,0x65 - ,0x00,0x57,0x68,0x69,0x74,0x65,0x68,0x6F,0x72,0x73,0x65,0x00,0x00,0x70,0x6C - ,0x61,0x63,0x65,0x00,0x74,0x6F,0x77,0x6E,0x00,0x00,0x74,0x79,0x70,0x65,0x00 - ,0x6D,0x75,0x6C,0x74,0x69,0x70,0x6F,0x6C,0x79,0x67,0x6F,0x6E,0x00,0xFE}; -/* end binary data. size = 224 bytes */ + {0xFF, 0xE0, 0x04, 0x6F, 0x35, 0x6D, 0x32, 0xFF, 0x10, 0x2B, 0xD7, 0xAC, 0x21, 0x00, 0xAD, + 0xCF, 0xFC, 0x87, 0x0A, 0xA6, 0xCE, 0x88, 0xC3, 0x04, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, 0x00, 0x70, 0x6C, 0x61, + 0x63, 0x65, 0x00, 0x74, 0x6F, 0x77, 0x6E, 0x00, 0x10, 0x07, 0x2C, 0x00, 0x9A, 0x90, 0x24, + 0xD9, 0x68, 0x10, 0x08, 0x04, 0x00, 0xDE, 0xCD, 0x1E, 0xF7, 0xF6, 0x15, 0x10, 0x08, 0x04, + 0x00, 0x91, 0xD3, 0x2A, 0xFB, 0xCC, 0x11, 0x10, 0x08, 0x04, 0x00, 0xE7, 0x95, 0x60, 0xFE, + 0x9A, 0x02, 0x10, 0x08, 0x04, 0x00, 0x97, 0xDE, 0x13, 0xC0, 0xA7, 0x0F, 0x10, 0x08, 0x04, + 0x00, 0xB6, 0x9E, 0x14, 0xD2, 0xC3, 0x19, 0x10, 0x08, 0x04, 0x00, 0xA6, 0x8F, 0x22, 0xE0, + 0xDD, 0x16, 0x10, 0x07, 0x02, 0x00, 0xA6, 0xF6, 0x19, 0x9F, 0x49, 0xFF, 0x11, 0x10, 0x95, + 0xAC, 0x21, 0x00, 0x0B, 0x91, 0xAC, 0x21, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x1A, + 0xFF, 0x12, 0x46, 0xB1, 0xAC, 0x21, 0x00, 0x11, 0x95, 0xAC, 0x21, 0x00, 0x31, 0x6F, 0x75, + 0x74, 0x65, 0x72, 0x00, 0xD7, 0xAC, 0x21, 0x00, 0x30, 0x00, 0x00, 0x6E, 0x61, 0x6D, 0x65, + 0x00, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6F, 0x72, 0x73, 0x65, 0x00, 0x00, 0x70, 0x6C, + 0x61, 0x63, 0x65, 0x00, 0x74, 0x6F, 0x77, 0x6E, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x00, + 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6F, 0x6C, 0x79, 0x67, 0x6F, 0x6E, 0x00, 0xFE}; +static_assert(sizeof(relation_o5m_data) == 224, "Size check failed"); UNIT_TEST(OSM_O5M_Source_Node_read_test) { - std::string data(std::begin(node2_o5m_data), std::end(node2_o5m_data)); - std::stringstream ss(data); + string data(begin(node2_o5m_data), end(node2_o5m_data)); + stringstream ss(data); osm::O5MSourceReader dataset([&ss](uint8_t * buffer, size_t size) { - return ss.read((char *)buffer, size).gcount(); + return ss.read(reinterpret_cast(buffer), size).gcount(); }); - osm::O5MSourceReader::iterator it = dataset.begin(); + osm::O5MSourceReader::Iterator it = dataset.begin(); osm::O5MSourceReader::Entity const & em = *it; CHECK_EQUAL(em.id, 513709898, ()); @@ -186,65 +183,63 @@ UNIT_TEST(OSM_O5M_Source_Node_read_test) CHECK_EQUAL(em.lon, 387666704, ()); CHECK_EQUAL(em.lat, 550927062, ()); - auto const & tags = em.tags(); - auto tag_iterator = tags.begin(); - auto const & tag = *tag_iterator; + auto const & tags = em.Tags(); + auto tagIterator = tags.begin(); + auto const & tag = *tagIterator; CHECK_EQUAL(tag.key, string("amenity"), ()); CHECK_EQUAL(tag.value, string("cinema"), ()); - tag_iterator++; + ++tagIterator; CHECK_EQUAL(tag.key, string("name"), ()); CHECK_EQUAL(tag.value, string("КТ Горизонт"), ()); - tag_iterator++; - CHECK(!(tag_iterator != tags.end()), ()); + ++tagIterator; + CHECK(!(tagIterator != tags.end()), ()); } UNIT_TEST(OSM_O5M_Source_Way_read_test) { - std::string data(std::begin(way_o5m_data), std::end(way_o5m_data)); - std::stringstream ss(data); + string data(begin(way_o5m_data), end(way_o5m_data)); + stringstream ss(data); osm::O5MSourceReader dataset([&ss](uint8_t * buffer, size_t size) { - return ss.read((char *)buffer, size).gcount(); + return ss.read(reinterpret_cast(buffer), size).gcount(); }); set nodes; - vector> valid_tags = { - {"name", "Yukon River"}, - {"name:ru", "Юкон"}, - {"waterway", "river"} - }; + vector> const validTags = { + {"name", "Yukon River"}, {"name:ru", "Юкон"}, {"waterway", "river"}}; for (auto const & em : dataset) { - switch (em.type) { - case osm::O5MSourceReader::O5M_CMD_NODE: + switch (em.type) + { + case osm::O5MSourceReader::EntityType::Node: { nodes.insert(em.id); - for (auto const & tag : em.tags()) + for (auto const & tag : em.Tags()) { - CHECK(false, ("Unexpected tag:", tag.key , tag.value)); + CHECK(false, ("Unexpected tag:", tag.key, tag.value)); } break; } - case osm::O5MSourceReader::O5M_CMD_WAY: + case osm::O5MSourceReader::EntityType::Way: { - size_t nd_count = 0; - size_t tag_count = 0; - for (auto const &nd : em.nodes()) + size_t ndCounter = 0; + size_t tagCounter = 0; + for (auto const & nd : em.Nodes()) { - nd_count++; + ndCounter++; CHECK(nodes.count(nd), ()); } - CHECK_EQUAL(nodes.size(), nd_count, ()); - for (auto const & tag : em.tags()) + CHECK_EQUAL(nodes.size(), ndCounter, ()); + for (auto const & tag : em.Tags()) { - CHECK_EQUAL(tag.key, valid_tags[tag_count].first, ()); - CHECK_EQUAL(tag.value, valid_tags[tag_count].second, ()); - tag_count++; + CHECK_EQUAL(tag.key, validTags[tagCounter].first, ()); + CHECK_EQUAL(tag.value, validTags[tagCounter].second, ()); + tagCounter++; } - CHECK_EQUAL(valid_tags.size(), tag_count, ()); + CHECK_EQUAL(validTags.size(), tagCounter, ()); break; } default: @@ -255,84 +250,85 @@ UNIT_TEST(OSM_O5M_Source_Way_read_test) UNIT_TEST(OSM_O5M_Source_Relation_read_test) { - std::string data(std::begin(relation_o5m_data), std::end(relation_o5m_data)); - std::stringstream ss(data); + string data(begin(relation_o5m_data), end(relation_o5m_data)); + stringstream ss(data); osm::O5MSourceReader dataset([&ss](uint8_t * buffer, size_t size) { - return ss.read((char *)buffer, size).gcount(); + return ss.read(reinterpret_cast(buffer), size).gcount(); }); set nodes; set entities; - vector> node_valid_tags = { - {"name", "Whitehorse"}, - {"place", "town"} - }; + vector> const validNodeTags = { + {"name", "Whitehorse"} + , {"place", "town"}}; - vector> relation_valid_tags = { - {"name", "Whitehorse"}, - {"place", "town"}, - {"type", "multipolygon"} - }; + vector> const validRelationTags = { + {"name", "Whitehorse"} + , {"place", "town"} + , {"type", "multipolygon"}}; - vector> relation_members = { - {osm::O5MSourceReader::O5M_CMD_WAY, "outer"}, - {osm::O5MSourceReader::O5M_CMD_NODE, ""} - }; + using TType = osm::O5MSourceReader::EntityType; + vector> const relationMembers = { + {TType::Way, "outer"} + , {TType::Node, ""}}; for (auto const & em : dataset) { entities.insert(em.id); - switch (em.type) { - case osm::O5MSourceReader::O5M_CMD_NODE: + switch (em.type) + { + case TType::Node: { nodes.insert(em.id); - size_t tag_count = 0; - for (auto const & tag : em.tags()) + size_t tagCounter = 0; + for (auto const & tag : em.Tags()) { - CHECK_EQUAL(tag.key, node_valid_tags[tag_count].first, ()); - CHECK_EQUAL(tag.value, node_valid_tags[tag_count].second, ()); - tag_count++; + CHECK_EQUAL(tag.key, validNodeTags[tagCounter].first, ()); + CHECK_EQUAL(tag.value, validNodeTags[tagCounter].second, ()); + tagCounter++; } break; } - case osm::O5MSourceReader::O5M_CMD_WAY: + case TType::Way: { - size_t nd_count = 0; - for (auto const &nd : em.nodes()) + size_t ndCounter = 0; + for (auto const & nd : em.Nodes()) { - nd_count++; + ndCounter++; CHECK(nodes.count(nd), ()); } - CHECK_EQUAL(nodes.size(), nd_count, ()); - for (auto const & tag : em.tags()) + CHECK_EQUAL(nodes.size(), ndCounter, ()); + for (auto const & tag : em.Tags()) { - CHECK(false, ("Unexpected tag:", tag.key , tag.value)); + CHECK(false, ("Unexpected tag:", tag.key, tag.value)); } break; } - case osm::O5MSourceReader::O5M_CMD_REL: + case TType::Relation: { - size_t member_count = 0; - size_t tag_count = 0; - for (auto const &member : em.members()) + size_t memberCounter = 0; + size_t tagCounter = 0; + for (auto const & member : em.Members()) { CHECK(entities.count(member.ref), ()); - CHECK_EQUAL(relation_members[member_count].first, member.type, ("Current member:", member_count)); - CHECK_EQUAL(relation_members[member_count].second, member.role, ("Current member:", member_count)); - member_count++; + CHECK_EQUAL(relationMembers[memberCounter].first, member.type, + ("Current member:", memberCounter)); + CHECK_EQUAL(relationMembers[memberCounter].second, member.role, + ("Current member:", memberCounter)); + memberCounter++; } - CHECK_EQUAL(member_count, 2, ()); - for (auto const & tag : em.tags()) + CHECK_EQUAL(memberCounter, 2, ()); + for (auto const & tag : em.Tags()) { - CHECK_EQUAL(tag.key, relation_valid_tags[tag_count].first, ()); - CHECK_EQUAL(tag.value, relation_valid_tags[tag_count].second, ()); - tag_count++; + CHECK_EQUAL(tag.key, validRelationTags[tagCounter].first, ()); + CHECK_EQUAL(tag.value, validRelationTags[tagCounter].second, ()); + tagCounter++; } - CHECK_EQUAL(relation_valid_tags.size(), tag_count, ()); + CHECK_EQUAL(validRelationTags.size(), tagCounter, ()); break; } default: -- cgit v1.2.3