11#include < algorithm>
22#include < cstring>
3+ #include < stdexcept>
34
45#include < boost/property_tree/json_parser.hpp>
56#include < osmium/osm.hpp>
@@ -85,9 +86,9 @@ void gazetteer_style_t::load_style(std::string const &filename)
8586
8687 pt::read_json (filename, root);
8788
88- for (auto &entry : root) {
89- for (auto &tag : entry.second .get_child (" keys" )) {
90- for (auto &value : entry.second .get_child (" values" )) {
89+ for (auto const &entry : root) {
90+ for (auto const &tag : entry.second .get_child (" keys" )) {
91+ for (auto const &value : entry.second .get_child (" values" )) {
9192 add_style_entry (tag.second .data (), value.first ,
9293 parse_flags (value.second .data ()));
9394 }
@@ -102,7 +103,7 @@ gazetteer_style_t::flag_t gazetteer_style_t::parse_flags(std::string const &str)
102103 std::string::size_type start = 0 ;
103104
104105 while (start != std::string::npos) {
105- auto end = str.find (' ,' , start);
106+ auto const end = str.find (' ,' , start);
106107
107108 std::string item;
108109
@@ -236,40 +237,42 @@ void gazetteer_style_t::add_style_entry(std::string const &key,
236237gazetteer_style_t ::flag_t gazetteer_style_t::find_flag (char const *k,
237238 char const *v) const
238239{
239- auto klen = std::strlen (k);
240- auto vlen = std::strlen (v);
240+ auto const klen = std::strlen (k);
241+ auto const vlen = std::strlen (v);
241242
242243 // full match
243- auto fulllen = klen + vlen + 1U ;
244+ auto const fulllen = klen + vlen + 1U ;
244245 for (auto const &e : m_matcher) {
245246 switch (e.type ) {
246247 case matcher_t ::MT_FULL:
247248 if (e.name .size () == fulllen &&
248249 std::strcmp (k, e.name .c_str ()) == 0 &&
249- memcmp (v, e.name .data () + klen + 1 , vlen) == 0 ) {
250+ std:: memcmp (v, e.name .data () + klen + 1 , vlen) == 0 ) {
250251 return e.flag ;
251252 }
252253 break ;
253254 case matcher_t ::MT_KEY:
254- if (e.name .size () == klen && memcmp (k, e.name .data (), klen) == 0 ) {
255+ if (e.name .size () == klen &&
256+ std::memcmp (k, e.name .data (), klen) == 0 ) {
255257 return e.flag ;
256258 }
257259 break ;
258260 case matcher_t ::MT_PREFIX:
259261 if (e.name .size () < klen &&
260- memcmp (k, e.name .data (), e.name .size ()) == 0 ) {
262+ std:: memcmp (k, e.name .data (), e.name .size ()) == 0 ) {
261263 return e.flag ;
262264 }
263265 break ;
264266 case matcher_t ::MT_SUFFIX:
265267 if (e.name .size () < klen &&
266- memcmp (k + klen - e.name .size (), e.name .data (),
267- e.name .size ()) == 0 ) {
268+ std:: memcmp (k + klen - e.name .size (), e.name .data (),
269+ e.name .size ()) == 0 ) {
268270 return e.flag ;
269271 }
270272 break ;
271273 case matcher_t ::MT_VALUE:
272- if (e.name .size () == vlen && memcmp (v, e.name .data (), vlen) == 0 ) {
274+ if (e.name .size () == vlen &&
275+ std::memcmp (v, e.name .data (), vlen) == 0 ) {
273276 return e.flag ;
274277 }
275278 break ;
@@ -294,11 +297,11 @@ void gazetteer_style_t::process_tags(osmium::OSMObject const &o)
294297 bool is_named = false ;
295298
296299 for (auto const &item : o.tags ()) {
297- char const *k = item.key ();
298- char const *v = item.value ();
300+ char const *const k = item.key ();
301+ char const *const v = item.value ();
299302
300303 if (std::strcmp (k, " admin_level" ) == 0 ) {
301- m_admin_level = atoi (v);
304+ m_admin_level = std:: atoi (v);
302305 if (m_admin_level <= 0 || m_admin_level > MAX_ADMINLEVEL) {
303306 m_admin_level = MAX_ADMINLEVEL;
304307 }
@@ -309,7 +312,7 @@ void gazetteer_style_t::process_tags(osmium::OSMObject const &o)
309312 m_operator = v;
310313 }
311314
312- flag_t flag = find_flag (k, v);
315+ flag_t const flag = find_flag (k, v);
313316
314317 if (flag == 0 ) {
315318 continue ;
@@ -348,7 +351,7 @@ void gazetteer_style_t::process_tags(osmium::OSMObject const &o)
348351 // country and postcode are handled specially, ignore them here
349352 if (std::strcmp (addr_key, " country" ) != 0 &&
350353 std::strcmp (addr_key, " postcode" ) != 0 ) {
351- bool first = std::none_of (
354+ bool const first = std::none_of (
352355 m_address.begin (), m_address.end (), [&](ptag_t const &t) {
353356 return std::strcmp (t.first , addr_key) == 0 ;
354357 });
@@ -413,7 +416,7 @@ void gazetteer_style_t::filter_main_tags(bool is_named,
413416 // first throw away unnamed mains
414417 auto mend =
415418 std::remove_if (m_main.begin (), m_main.end (), [&](pmaintag_t const &t) {
416- auto flags = std::get<2 >(t);
419+ auto const flags = std::get<2 >(t);
417420
418421 if (flags & SF_MAIN_NAMED) {
419422 return !is_named;
@@ -468,7 +471,7 @@ void gazetteer_style_t::copy_out(osmium::OSMObject const &o,
468471 DomainMatcher m{std::get<0 >(tag)};
469472 buffer.new_hash ();
470473 for (auto const &t : o.tags ()) {
471- char const *k = m (t);
474+ char const *const k = m (t);
472475 if (k) {
473476 buffer.add_hash_elem (k, t.value ());
474477 }
@@ -507,9 +510,10 @@ void gazetteer_style_t::copy_out(osmium::OSMObject const &o,
507510 for (auto const &a : m_address) {
508511 if (std::strcmp (a.first , " tiger:county" ) == 0 ) {
509512 std::string term;
510- auto * end = strchr (a.second , ' ,' );
513+ auto const * const end = std:: strchr (a.second , ' ,' );
511514 if (end) {
512- auto len = (std::string::size_type)(end - a.second );
515+ auto const len =
516+ (std::string::size_type)(end - a.second );
513517 term = std::string (a.second , len);
514518 } else {
515519 term = a.second ;
0 commit comments