From bfffa1fff48ddecb48d6b7adc90fff34c451a6b9 Mon Sep 17 00:00:00 2001 From: Konstantin Pastbin Date: Sun, 17 Aug 2025 14:32:37 +0700 Subject: [PATCH] Format all C++ and Java code via clang-format Signed-off-by: Konstantin Pastbin --- .../DownloadResourcesLegacyActivity.java | 12 +- .../java/app/organicmaps/MapFragment.java | 36 +- .../java/app/organicmaps/MwmActivity.java | 106 +- .../backup/LocalBackupManager.java | 54 +- .../bookmarks/BookmarkCategoriesAdapter.java | 158 +- .../bookmarks/BookmarkListAdapter.java | 62 +- .../bookmarks/BookmarksListFragment.java | 66 +- .../bookmarks/BookmarksSharingHelper.java | 42 +- .../ChooseBookmarksSortingTypeFragment.java | 8 +- .../car/screens/search/SearchUiHelpers.java | 46 +- .../app/organicmaps/car/util/IntentUtils.java | 58 +- .../app/organicmaps/car/util/UiHelpers.java | 28 +- .../organicmaps/downloader/BottomPanel.java | 36 +- .../downloader/CountrySuggestFragment.java | 4 +- .../downloader/DownloaderAdapter.java | 130 +- .../downloader/DownloaderFragment.java | 10 +- .../organicmaps/editor/EditorFragment.java | 22 +- .../editor/EditorHostFragment.java | 100 +- .../editor/FeatureCategoryAdapter.java | 27 +- .../editor/FeatureCategoryFragment.java | 56 +- .../editor/SimpleTimetableAdapter.java | 2 +- .../editor/TimetableContainerFragment.java | 4 +- .../app/organicmaps/help/FaqFragment.java | 4 +- .../java/app/organicmaps/intent/Factory.java | 108 +- .../maplayer/LayerBottomSheetItem.java | 40 +- .../maplayer/MapButtonsController.java | 30 +- .../routing/ManageRouteAdapter.java | 38 +- .../routing/ResultCodesHelper.java | 136 +- .../routing/RoutingBottomMenuController.java | 9 +- .../routing/RoutingErrorDialogFragment.java | 2 +- .../sdk/location/SensorHelper.java | 20 +- .../sdk/routing/RoutePointInfo.java | 8 +- .../organicmaps/sdk/util/LocationUtils.java | 14 +- .../app/organicmaps/sdk/util/log/Logger.java | 10 +- .../app/organicmaps/search/SearchAdapter.java | 56 +- .../search/SearchHistoryAdapter.java | 46 +- .../VoiceInstructionsSettingsFragment.java | 8 +- .../app/organicmaps/widget/menu/NavMenu.java | 6 +- .../placepage/EditBookmarkFragment.java | 86 +- .../widget/placepage/PlacePageController.java | 18 +- .../widget/placepage/PlacePageView.java | 5 +- .../sdk/DownloadResourcesLegacyActivity.cpp | 260 +- .../cpp/app/organicmaps/sdk/Framework.cpp | 553 +- .../cpp/app/organicmaps/sdk/Framework.hpp | 295 +- .../cpp/app/organicmaps/sdk/LocationState.cpp | 40 +- .../src/main/cpp/app/organicmaps/sdk/Map.cpp | 105 +- .../cpp/app/organicmaps/sdk/MapManager.cpp | 204 +- .../cpp/app/organicmaps/sdk/OrganicMaps.cpp | 17 +- .../cpp/app/organicmaps/sdk/TrackRecorder.cpp | 96 +- .../cpp/app/organicmaps/sdk/TrafficState.cpp | 27 +- .../app/organicmaps/sdk/UserMarkHelper.cpp | 180 +- .../app/organicmaps/sdk/UserMarkHelper.hpp | 2 +- .../sdk/bookmarks/data/BookmarkManager.cpp | 592 +- .../organicmaps/sdk/core/ScopedLocalRef.hpp | 3 +- .../app/organicmaps/sdk/core/jni_helper.cpp | 74 +- .../app/organicmaps/sdk/core/jni_helper.hpp | 20 +- .../organicmaps/sdk/core/jni_java_methods.cpp | 2 +- .../organicmaps/sdk/core/jni_java_methods.hpp | 10 +- .../cpp/app/organicmaps/sdk/core/logging.cpp | 20 +- .../cpp/app/organicmaps/sdk/core/logging.hpp | 8 +- .../organicmaps/sdk/core/render_context.cpp | 18 +- .../organicmaps/sdk/core/render_context.hpp | 15 +- .../cpp/app/organicmaps/sdk/editor/Editor.cpp | 247 +- .../organicmaps/sdk/editor/OpeningHours.cpp | 143 +- .../app/organicmaps/sdk/editor/OsmOAuth.cpp | 41 +- .../sdk/isolines/IsolinesManager.cpp | 27 +- .../sdk/opengl/android_gl_utils.cpp | 47 +- .../sdk/opengl/android_gl_utils.hpp | 15 +- .../sdk/opengl/androidoglcontext.cpp | 12 +- .../sdk/opengl/androidoglcontext.hpp | 3 +- .../sdk/opengl/androidoglcontextfactory.cpp | 60 +- .../sdk/opengl/androidoglcontextfactory.hpp | 4 +- .../app/organicmaps/sdk/opengl/gl3stub.cpp | 600 +- .../sdk/platform/AndroidPlatform.cpp | 87 +- .../sdk/platform/AndroidPlatform.hpp | 5 +- .../organicmaps/sdk/platform/HttpThread.cpp | 58 +- .../app/organicmaps/sdk/platform/Language.cpp | 29 +- .../organicmaps/sdk/platform/Localization.cpp | 12 +- .../organicmaps/sdk/platform/SocketImpl.cpp | 16 +- .../organicmaps/sdk/routing/JunctionInfo.hpp | 9 +- .../organicmaps/sdk/routing/RouteMarkData.hpp | 24 +- .../organicmaps/sdk/routing/RoutingInfo.hpp | 18 +- .../sdk/routing/SingleLaneInfo.hpp | 2 +- .../sdk/routing/TransitRouteInfo.hpp | 10 +- .../sdk/routing/TransitStepInfo.hpp | 22 +- .../sdk/search/DisplayedCategories.cpp | 5 +- .../organicmaps/sdk/search/SearchEngine.cpp | 317 +- .../sdk/settings/MapLanguageCode.cpp | 7 +- .../organicmaps/sdk/settings/UnitLocale.cpp | 28 +- .../cpp/app/organicmaps/sdk/sound/tts.cpp | 18 +- .../organicmaps/sdk/subway/SubwayManager.cpp | 17 +- .../cpp/app/organicmaps/sdk/util/Config.cpp | 198 +- .../cpp/app/organicmaps/sdk/util/Distance.hpp | 6 +- .../cpp/app/organicmaps/sdk/util/GeoUtils.cpp | 5 +- .../app/organicmaps/sdk/util/HttpClient.cpp | 65 +- .../cpp/app/organicmaps/sdk/util/Language.cpp | 4 +- .../app/organicmaps/sdk/util/LogsManager.cpp | 9 +- .../organicmaps/sdk/util/NetworkPolicy.cpp | 5 +- .../organicmaps/sdk/util/NetworkPolicy.hpp | 2 +- .../app/organicmaps/sdk/util/StringUtils.cpp | 38 +- .../cpp/app/organicmaps/sdk/util/UiThread.cpp | 4 +- .../vulkan/android_vulkan_context_factory.cpp | 3 +- dev_sandbox/imgui_renderer.cpp | 34 +- dev_sandbox/imgui_renderer.hpp | 3 +- dev_sandbox/main.cpp | 126 +- dev_sandbox/main_linux.cpp | 101 +- generator/address_enricher.cpp | 33 +- generator/address_enricher.hpp | 10 +- .../address_parser_tests/parser_tests.cpp | 47 +- generator/address_parser/parser_tool.cpp | 5 +- generator/address_parser/processor.cpp | 6 +- generator/address_parser/processor.hpp | 2 +- generator/address_parser/tiger_parser.cpp | 30 +- generator/address_parser/tiger_parser.hpp | 4 +- generator/addresses_collector.cpp | 14 +- generator/addresses_collector.hpp | 4 +- generator/affiliation.cpp | 83 +- generator/affiliation.hpp | 1 - generator/altitude_generator.cpp | 20 +- generator/borders.cpp | 14 +- generator/borders.hpp | 32 +- generator/boundary_postcodes_enricher.cpp | 3 +- generator/brands_loader.cpp | 5 +- generator/camera_info_collector.cpp | 42 +- generator/camera_info_collector.hpp | 9 +- generator/cells_merger.cpp | 72 +- generator/cells_merger.hpp | 3 +- generator/centers_table_builder.cpp | 5 +- generator/check_model.cpp | 4 +- generator/cities_boundaries_builder.hpp | 3 +- generator/cities_boundaries_checker.cpp | 3 +- generator/cities_ids_builder.cpp | 15 +- generator/city_roads_generator.cpp | 10 +- generator/cluster_finder.hpp | 15 +- generator/coastlines_generator.cpp | 79 +- generator/coastlines_generator.hpp | 4 +- generator/collection_base.hpp | 18 +- generator/collector_boundary_postcode.cpp | 3 +- generator/collector_building_parts.cpp | 39 +- generator/collector_camera.cpp | 13 +- generator/collector_camera.hpp | 4 +- generator/collector_collection.hpp | 4 +- generator/collector_interface.hpp | 8 +- generator/collector_mini_roundabout.cpp | 9 +- generator/collector_mini_roundabout.hpp | 2 - .../collector_routing_city_boundaries.cpp | 28 +- .../collector_routing_city_boundaries.hpp | 9 +- generator/collector_tag.cpp | 8 +- generator/collector_tag.hpp | 3 +- .../complex_generator/complex_generator.cpp | 21 +- generator/complex_loader.cpp | 16 +- generator/complex_loader.hpp | 7 +- generator/composite_id.cpp | 11 +- generator/composite_id.hpp | 5 +- generator/cross_mwm_osm_ways_collector.cpp | 36 +- generator/cross_mwm_osm_ways_collector.hpp | 7 +- generator/descriptions_section_builder.cpp | 32 +- generator/descriptions_section_builder.hpp | 10 +- generator/dumper.cpp | 280 +- generator/dumper.hpp | 22 +- generator/factory_utils.hpp | 6 +- generator/feature_builder.cpp | 71 +- generator/feature_builder.hpp | 47 +- generator/feature_emitter_iface.hpp | 3 +- generator/feature_generator.cpp | 18 +- generator/feature_generator.hpp | 3 +- generator/feature_helpers.cpp | 4 +- generator/feature_helpers.hpp | 8 +- generator/feature_maker.cpp | 18 +- generator/feature_maker.hpp | 3 +- generator/feature_maker_base.cpp | 12 +- generator/feature_merger.cpp | 80 +- generator/feature_merger.hpp | 42 +- generator/feature_processing_layers.cpp | 56 +- generator/feature_processing_layers.hpp | 4 +- .../feature_segments_checker.cpp | 33 +- generator/feature_sorter.cpp | 34 +- generator/features_processing_helpers.hpp | 9 +- generator/filter_collection.cpp | 4 +- generator/filter_collection.hpp | 4 +- generator/filter_elements.cpp | 17 +- generator/filter_elements.hpp | 2 +- generator/filter_world.cpp | 4 +- generator/final_processor_cities.cpp | 13 +- generator/final_processor_cities.hpp | 6 +- generator/final_processor_coastline.cpp | 13 +- generator/final_processor_coastline.hpp | 3 +- generator/final_processor_complex.cpp | 38 +- generator/final_processor_complex.hpp | 6 +- generator/final_processor_country.cpp | 33 +- generator/final_processor_country.hpp | 41 +- generator/final_processor_interface.hpp | 10 +- generator/final_processor_utils.cpp | 11 +- generator/final_processor_utils.hpp | 12 +- generator/final_processor_world.cpp | 6 +- generator/final_processor_world.hpp | 5 +- generator/gen_mwm_info.cpp | 9 +- generator/generate_info.hpp | 9 +- .../features_tests.cpp | 163 +- .../mwm_playground.cpp | 9 +- .../towns_tests.cpp | 7 +- .../generator_tests/affiliation_tests.cpp | 68 +- generator/generator_tests/altitude_test.cpp | 15 +- .../generator_tests/brands_loader_test.cpp | 32 +- .../camera_collector_tests.cpp | 40 +- .../generator_tests/cells_merger_tests.cpp | 42 +- .../cities_boundaries_checker_tests.cpp | 17 +- .../generator_tests/cities_ids_tests.cpp | 8 +- .../generator_tests/city_roads_tests.cpp | 50 +- .../generator_tests/cluster_finder_tests.cpp | 55 +- generator/generator_tests/coasts_test.cpp | 13 +- .../collector_boundary_postcode_tests.cpp | 53 +- .../collector_building_parts_tests.cpp | 27 +- ...ollector_routing_city_boundaries_tests.cpp | 51 +- .../generator_tests/complex_loader_tests.cpp | 6 +- .../cross_mwm_osm_ways_collector_tests.cpp | 60 +- .../descriptions_section_builder_tests.cpp | 75 +- .../generator_tests/feature_builder_test.cpp | 59 +- .../generator_tests/feature_merger_test.cpp | 72 +- .../generator_tests/filter_elements_tests.cpp | 16 +- .../generator_tests/gen_mwm_info_tests.cpp | 13 +- .../generator_tests/hierarchy_entry_tests.cpp | 21 +- generator/generator_tests/hierarchy_tests.cpp | 30 +- .../intermediate_data_test.cpp | 5 +- generator/generator_tests/maxspeeds_tests.cpp | 85 +- .../merge_collectors_tests.cpp | 18 +- .../generator_tests/metadata_parser_test.cpp | 44 +- generator/generator_tests/metalines_tests.cpp | 48 +- .../generator_tests/mini_roundabout_tests.cpp | 77 +- generator/generator_tests/node_mixer_test.cpp | 24 +- .../generator_tests/osm_o5m_source_test.cpp | 163 +- generator/generator_tests/osm_type_test.cpp | 2913 ++-- .../generator_tests/place_processor_tests.cpp | 156 +- .../generator_tests/raw_generator_test.cpp | 146 +- .../generator_tests/relation_tags_tests.cpp | 29 +- .../restriction_collector_test.cpp | 70 +- .../generator_tests/restriction_test.cpp | 99 +- .../generator_tests/road_access_test.cpp | 173 +- generator/generator_tests/source_data.cpp | 86 +- .../source_to_element_test.cpp | 22 +- .../generator_tests/speed_cameras_test.cpp | 30 +- .../generator_tests/srtm_parser_test.cpp | 105 +- .../generator_tests/tag_admixer_test.cpp | 13 +- generator/generator_tests/tesselator_test.cpp | 20 +- .../triangles_tree_coding_test.cpp | 12 +- generator/generator_tests/types_helper.hpp | 2 +- .../routing_helpers.cpp | 13 +- .../routing_helpers.hpp | 12 +- .../generator_tests_support/test_feature.cpp | 120 +- .../generator_tests_support/test_feature.hpp | 33 +- .../test_generator.cpp | 17 +- .../test_generator.hpp | 15 +- .../test_mwm_builder.cpp | 30 +- .../test_mwm_builder.hpp | 5 +- .../test_with_custom_mwms.cpp | 14 +- .../test_with_custom_mwms.hpp | 3 +- generator/generator_tool/generator_tool.cpp | 113 +- generator/geometry_holder.hpp | 14 +- generator/hierarchy.cpp | 75 +- generator/hierarchy_entry.cpp | 16 +- generator/holes.cpp | 33 +- generator/holes.hpp | 11 +- generator/intermediate_data.cpp | 123 +- generator/intermediate_data.hpp | 40 +- generator/intermediate_elements.hpp | 7 +- generator/isolines_generator.cpp | 21 +- generator/maxspeeds_builder.cpp | 91 +- generator/maxspeeds_builder.hpp | 5 +- generator/maxspeeds_collector.cpp | 16 +- generator/maxspeeds_parser.cpp | 16 +- generator/metalines_builder.cpp | 15 +- generator/metalines_builder.hpp | 4 +- generator/mini_roundabout_info.cpp | 9 +- generator/mini_roundabout_info.hpp | 5 +- generator/mini_roundabout_transformer.cpp | 71 +- generator/mini_roundabout_transformer.hpp | 25 +- generator/osm2meta.cpp | 48 +- generator/osm2meta.hpp | 46 +- generator/osm2type.cpp | 518 +- generator/osm2type.hpp | 6 +- generator/osm_element.cpp | 97 +- generator/osm_element.hpp | 35 +- generator/osm_element_helpers.cpp | 4 +- generator/osm_o5m_source.hpp | 232 +- generator/osm_source.cpp | 46 +- generator/osm_source.hpp | 4 +- generator/osm_xml_source.hpp | 20 +- generator/place_processor.cpp | 54 +- generator/place_processor.hpp | 2 +- generator/popular_places_section_builder.cpp | 13 +- generator/popular_places_section_builder.hpp | 4 +- generator/postcode_points_builder.cpp | 45 +- generator/postcode_points_builder.hpp | 10 +- generator/processor_booking.hpp | 9 +- generator/processor_coastline.cpp | 11 +- generator/processor_complex.cpp | 11 +- generator/processor_complex.hpp | 4 +- generator/processor_country.cpp | 9 +- generator/processor_country.hpp | 2 +- generator/processor_factory.hpp | 17 +- generator/processor_noop.hpp | 5 +- generator/processor_simple.cpp | 21 +- generator/processor_simple.hpp | 6 +- generator/processor_world.cpp | 11 +- generator/processor_world.hpp | 3 +- generator/pygen/pygen.cpp | 106 +- generator/raw_generator.cpp | 64 +- generator/raw_generator.hpp | 13 +- generator/raw_generator_writer.cpp | 19 +- generator/raw_generator_writer.hpp | 6 +- generator/relation_tags.cpp | 21 +- generator/relation_tags.hpp | 9 +- generator/relation_tags_enricher.cpp | 3 +- generator/restriction_collector.cpp | 55 +- generator/restriction_collector.hpp | 6 +- generator/restriction_generator.cpp | 30 +- generator/restriction_generator.hpp | 9 +- generator/restriction_writer.cpp | 63 +- generator/restriction_writer.hpp | 2 - generator/road_access_generator.cpp | 109 +- generator/road_access_generator.hpp | 29 +- .../routing_city_boundaries_processor.cpp | 5 +- .../routing_city_boundaries_processor.hpp | 2 +- generator/routing_helpers.cpp | 34 +- generator/routing_helpers.hpp | 22 +- generator/routing_index_generator.cpp | 219 +- generator/routing_index_generator.hpp | 15 +- generator/routing_world_roads_generator.cpp | 6 +- generator/search_index_builder.cpp | 90 +- generator/search_index_builder.hpp | 11 +- .../srtm_coverage_checker.cpp | 16 +- generator/srtm_parser.cpp | 10 +- generator/srtm_parser.hpp | 11 +- generator/statistics.cpp | 578 +- generator/statistics.hpp | 124 +- generator/tag_admixer.hpp | 12 +- generator/tesselator.cpp | 346 +- generator/tesselator.hpp | 288 +- generator/towns_dumper.cpp | 30 +- generator/towns_dumper.hpp | 8 +- generator/traffic_generator.cpp | 2 +- generator/transit_generator.cpp | 58 +- generator/transit_generator.hpp | 3 +- generator/transit_generator_experimental.cpp | 43 +- generator/transit_generator_experimental.hpp | 3 +- generator/translator.cpp | 19 +- generator/translator.hpp | 8 +- generator/translator_coastline.cpp | 19 +- generator/translator_collection.hpp | 5 +- generator/translator_complex.cpp | 21 +- generator/translator_country.cpp | 44 +- generator/translator_country.hpp | 4 +- generator/translator_factory.hpp | 9 +- generator/translator_interface.hpp | 8 +- generator/translator_world.cpp | 24 +- generator/translator_world.hpp | 3 +- generator/translators_pool.cpp | 6 +- generator/translators_pool.hpp | 3 +- generator/unpack_mwm.cpp | 2 +- generator/unpack_mwm.hpp | 1 - generator/utils.cpp | 28 +- generator/utils.hpp | 10 +- generator/water_boundary_checker.hpp | 1 - generator/way_nodes_mapper.hpp | 60 +- generator/ways_merger.cpp | 5 +- generator/ways_merger.hpp | 5 +- generator/wiki_url_dumper.cpp | 33 +- generator/world_map_generator.hpp | 27 +- .../world_roads_builder.cpp | 18 +- .../world_roads_builder.hpp | 14 +- .../world_roads_builder_tool.cpp | 22 +- libs/base/array_adapters.hpp | 75 +- libs/base/assert.hpp | 145 +- libs/base/base.cpp | 5 +- libs/base/base.hpp | 10 +- libs/base/base_tests/assert_test.cpp | 13 +- libs/base/base_tests/beam_tests.cpp | 6 +- libs/base/base_tests/bits_test.cpp | 23 +- libs/base/base_tests/buffer_vector_test.cpp | 66 +- libs/base/base_tests/cache_test.cpp | 48 +- libs/base/base_tests/cancellable_tests.cpp | 6 +- libs/base/base_tests/clustering_map_tests.cpp | 24 +- libs/base/base_tests/collection_cast_test.cpp | 8 +- libs/base/base_tests/control_flow_tests.cpp | 3 +- libs/base/base_tests/exception_tests.cpp | 161 +- libs/base/base_tests/fifo_cache_test.cpp | 8 +- .../base/base_tests/file_name_utils_tests.cpp | 2 +- libs/base/base_tests/geo_object_id_tests.cpp | 10 +- libs/base/base_tests/levenshtein_dfa_test.cpp | 40 +- libs/base/base_tests/logging_test.cpp | 29 +- libs/base/base_tests/lru_cache_tests.cpp | 16 +- libs/base/base_tests/math_test.cpp | 20 +- libs/base/base_tests/matrix_test.cpp | 13 +- libs/base/base_tests/mem_trie_test.cpp | 3 +- libs/base/base_tests/range_iterator_test.cpp | 3 +- libs/base/base_tests/regexp_test.cpp | 3 +- libs/base/base_tests/rolling_hash_test.cpp | 58 +- libs/base/base_tests/scope_guard_test.cpp | 28 +- libs/base/base_tests/small_set_test.cpp | 63 +- libs/base/base_tests/stl_helpers_tests.cpp | 113 +- libs/base/base_tests/string_utils_test.cpp | 153 +- libs/base/base_tests/suffix_array_tests.cpp | 7 +- .../thread_pool_computational_tests.cpp | 15 +- .../base_tests/thread_pool_delayed_tests.cpp | 22 +- libs/base/base_tests/thread_pool_tests.cpp | 105 +- .../base_tests/thread_safe_queue_tests.cpp | 26 +- libs/base/base_tests/threaded_list_test.cpp | 12 +- libs/base/base_tests/threads_test.cpp | 16 +- libs/base/base_tests/timer_test.cpp | 5 +- libs/base/beam.hpp | 5 +- libs/base/bidirectional_map.hpp | 6 +- libs/base/bits.hpp | 35 +- libs/base/buffer_vector.hpp | 55 +- libs/base/cache.hpp | 255 +- libs/base/cancellable.cpp | 5 +- libs/base/clustering_map.hpp | 10 +- libs/base/collection_cast.hpp | 2 +- libs/base/control_flow.hpp | 10 +- libs/base/exception.cpp | 2 - libs/base/exception.hpp | 25 +- libs/base/fast_math.cpp | 2 +- libs/base/fifo_cache.hpp | 10 +- libs/base/file_name_utils.cpp | 6 +- libs/base/file_name_utils.hpp | 5 +- libs/base/geo_object_id.cpp | 14 +- libs/base/internal/message.hpp | 80 +- libs/base/levenshtein_dfa.cpp | 60 +- libs/base/levenshtein_dfa.hpp | 4 +- libs/base/limited_priority_queue.hpp | 10 +- libs/base/linked_map.hpp | 25 +- libs/base/logging.cpp | 4 +- libs/base/logging.hpp | 24 +- libs/base/lower_case.cpp | 904 +- libs/base/lru_cache.hpp | 17 +- libs/base/macros.hpp | 55 +- libs/base/math.hpp | 17 +- libs/base/matrix.hpp | 340 +- libs/base/mem_trie.hpp | 81 +- libs/base/newtype.hpp | 7 +- libs/base/non_intersecting_intervals.hpp | 9 +- libs/base/normalize_unicode.cpp | 9471 ++++++------- libs/base/random.hpp | 5 +- libs/base/range_iterator.hpp | 20 +- libs/base/rolling_hash.hpp | 17 +- libs/base/scope_guard.hpp | 67 +- libs/base/set_operations.hpp | 44 +- libs/base/shared_buffer_manager.hpp | 2 +- libs/base/small_map.hpp | 39 +- libs/base/small_set.hpp | 4 +- libs/base/src_point.cpp | 3 +- libs/base/src_point.hpp | 5 +- libs/base/stats.hpp | 13 +- libs/base/std_serialization.hpp | 29 +- libs/base/stl_helpers.hpp | 65 +- libs/base/stl_iterator.hpp | 11 +- libs/base/string_utils.cpp | 38 +- libs/base/string_utils.hpp | 135 +- libs/base/suffix_array.cpp | 19 +- libs/base/sunrise_sunset.cpp | 25 +- libs/base/thread.cpp | 19 +- libs/base/thread.hpp | 8 +- libs/base/thread_checker.cpp | 5 +- libs/base/thread_checker.hpp | 12 +- libs/base/thread_pool.cpp | 25 +- libs/base/thread_pool.hpp | 6 +- libs/base/thread_pool_computational.hpp | 9 +- libs/base/thread_pool_delayed.cpp | 27 +- libs/base/thread_pool_delayed.hpp | 16 +- libs/base/thread_safe_queue.hpp | 3 +- libs/base/thread_utils.hpp | 10 +- libs/base/threaded_list.hpp | 1 - libs/base/timegm.cpp | 12 +- libs/base/timegm.hpp | 2 +- libs/base/timer.cpp | 17 +- libs/base/timer.hpp | 10 +- libs/base/waiter.hpp | 7 +- libs/coding/base64.cpp | 2 +- libs/coding/bit_streams.hpp | 14 +- libs/coding/buffer_reader.hpp | 10 +- libs/coding/buffered_file_writer.cpp | 3 +- libs/coding/buffered_file_writer.hpp | 3 +- libs/coding/byte_stream.hpp | 22 +- libs/coding/coding_tests/base64_test.cpp | 8 +- libs/coding/coding_tests/bit_streams_test.cpp | 2 - .../compressed_bit_vector_test.cpp | 65 +- libs/coding/coding_tests/csv_reader_test.cpp | 9 +- libs/coding/coding_tests/diff_test.cpp | 55 +- libs/coding/coding_tests/elias_coder_test.cpp | 10 +- libs/coding/coding_tests/endianness_test.cpp | 33 +- libs/coding/coding_tests/file_data_test.cpp | 49 +- libs/coding/coding_tests/file_sort_test.cpp | 40 +- .../coding_tests/files_container_tests.cpp | 76 +- .../coding_tests/fixed_bits_ddvector_test.cpp | 5 +- .../coding_tests/geometry_coding_test.cpp | 18 +- .../geometry_serialization_test.cpp | 4 +- libs/coding/coding_tests/hex_test.cpp | 3 +- libs/coding/coding_tests/huffman_test.cpp | 6 +- .../coding_tests/map_uint32_to_val_tests.cpp | 6 +- .../coding_tests/mem_file_reader_test.cpp | 2 +- .../coding_tests/mem_file_writer_test.cpp | 4 +- libs/coding/coding_tests/png_decoder_test.cpp | 29 +- .../coding_tests/point_coding_tests.cpp | 13 +- .../coding/coding_tests/reader_cache_test.cpp | 31 +- libs/coding/coding_tests/reader_test.cpp | 7 +- libs/coding/coding_tests/reader_test.hpp | 27 +- .../coding_tests/reader_writer_ops_test.cpp | 87 +- libs/coding/coding_tests/serdes_json_test.cpp | 60 +- libs/coding/coding_tests/sha1_test.cpp | 54 +- .../coding_tests/simple_dense_coding_test.cpp | 2 +- .../coding_tests/sparse_vector_tests.cpp | 4 +- .../string_utf8_multilang_tests.cpp | 26 +- libs/coding/coding_tests/succinct_ef_test.cpp | 11 +- libs/coding/coding_tests/test_polylines.cpp | 564 +- libs/coding/coding_tests/traffic_test.cpp | 19 +- libs/coding/coding_tests/url_tests.cpp | 69 +- .../coding_tests/value_opt_string_test.cpp | 10 +- .../coding_tests/var_record_reader_test.cpp | 43 +- .../coding_tests/var_serial_vector_test.cpp | 11 +- libs/coding/coding_tests/varint_test.cpp | 70 +- libs/coding/coding_tests/writer_test.cpp | 71 +- libs/coding/coding_tests/xml_parser_tests.cpp | 40 +- libs/coding/coding_tests/zip_creator_test.cpp | 24 +- libs/coding/coding_tests/zip_reader_test.cpp | 99 +- libs/coding/coding_tests/zlib_test.cpp | 24 +- libs/coding/compressed_bit_vector.cpp | 81 +- libs/coding/compressed_bit_vector.hpp | 16 +- libs/coding/constants.hpp | 4 +- libs/coding/csv_reader.cpp | 66 +- libs/coding/dd_vector.hpp | 34 +- libs/coding/diff.hpp | 66 +- libs/coding/file_reader.cpp | 38 +- libs/coding/file_reader.hpp | 3 +- libs/coding/file_sort.hpp | 15 +- libs/coding/file_writer.cpp | 3 +- libs/coding/file_writer.hpp | 13 +- libs/coding/files_container.cpp | 89 +- libs/coding/files_container.hpp | 60 +- libs/coding/fixed_bits_ddvector.hpp | 36 +- libs/coding/geometry_coding.cpp | 128 +- libs/coding/geometry_coding.hpp | 111 +- libs/coding/hex.cpp | 77 +- libs/coding/hex.hpp | 11 +- libs/coding/huffman.hpp | 12 +- libs/coding/internal/file64_api.hpp | 30 +- libs/coding/internal/file_data.cpp | 23 +- libs/coding/internal/file_data.hpp | 15 +- libs/coding/internal/xmlparser.hpp | 11 +- libs/coding/map_uint32_to_val.hpp | 9 +- libs/coding/memory_region.hpp | 4 +- libs/coding/mmap_reader.cpp | 39 +- libs/coding/parse_xml.hpp | 7 +- libs/coding/point_coding.cpp | 22 +- libs/coding/read_write_utils.hpp | 296 +- libs/coding/reader.hpp | 58 +- libs/coding/reader_cache.hpp | 12 +- libs/coding/reader_streambuf.cpp | 8 +- libs/coding/reader_streambuf.hpp | 1 - libs/coding/reader_wrapper.hpp | 16 +- libs/coding/reader_writer_ops.hpp | 8 +- libs/coding/serdes_binary_header.hpp | 7 +- libs/coding/serdes_json.hpp | 65 +- libs/coding/sha1.cpp | 4 +- libs/coding/sha1.hpp | 2 +- libs/coding/simple_dense_coding.cpp | 12 +- libs/coding/simple_dense_coding.hpp | 15 +- libs/coding/sparse_vector.hpp | 27 +- libs/coding/streams.hpp | 146 +- libs/coding/streams_common.hpp | 2 +- libs/coding/streams_sink.hpp | 128 +- libs/coding/string_utf8_multilang.cpp | 34 +- libs/coding/string_utf8_multilang.hpp | 5 +- libs/coding/succinct_mapper.hpp | 39 +- libs/coding/text_storage.hpp | 26 +- libs/coding/traffic.hpp | 74 +- libs/coding/transliteration.cpp | 12 +- libs/coding/transliteration.hpp | 3 +- libs/coding/url.cpp | 7 +- libs/coding/url.hpp | 3 +- libs/coding/value_opt_string.hpp | 17 +- libs/coding/var_record_reader.hpp | 3 +- libs/coding/var_serial_vector.hpp | 39 +- libs/coding/varint.hpp | 51 +- libs/coding/write_to_sink.hpp | 17 +- libs/coding/writer.hpp | 24 +- libs/coding/zip_creator.cpp | 12 +- libs/coding/zip_creator.hpp | 3 +- libs/coding/zip_reader.cpp | 25 +- libs/coding/zip_reader.hpp | 6 +- libs/coding/zlib.cpp | 12 +- libs/coding/zlib.hpp | 3 +- libs/cppjansson/cppjansson.cpp | 10 +- libs/cppjansson/cppjansson.hpp | 76 +- libs/cppjansson/jansson_handle.hpp | 37 +- .../descriptions_tests/descriptions_tests.cpp | 338 +- libs/descriptions/serdes.hpp | 10 +- libs/drape/attribute_buffer_mutator.hpp | 6 +- libs/drape/attribute_provider.cpp | 21 +- libs/drape/attribute_provider.hpp | 6 +- libs/drape/batcher.cpp | 79 +- libs/drape/batcher.hpp | 37 +- libs/drape/batcher_helpers.cpp | 91 +- libs/drape/batcher_helpers.hpp | 17 +- libs/drape/binding_info.cpp | 14 +- libs/drape/buffer_base.cpp | 5 +- libs/drape/color.hpp | 6 +- libs/drape/constants.hpp | 2 +- libs/drape/cpu_buffer.cpp | 5 +- libs/drape/cpu_buffer.hpp | 1 + libs/drape/data_buffer.cpp | 40 +- libs/drape/data_buffer.hpp | 24 +- libs/drape/data_buffer_impl.hpp | 27 +- libs/drape/debug_renderer.hpp | 4 +- libs/drape/drape_diagnostics.hpp | 40 +- libs/drape/drape_global.hpp | 10 +- libs/drape/drape_routine.hpp | 35 +- .../drape_tests/attribute_provides_tests.cpp | 10 +- libs/drape/drape_tests/batcher_tests.cpp | 112 +- libs/drape/drape_tests/buffer_tests.cpp | 15 +- libs/drape/drape_tests/dummy_texture.hpp | 5 +- libs/drape/drape_tests/font_texture_tests.cpp | 2 +- libs/drape/drape_tests/gl_functions.cpp | 42 +- libs/drape/drape_tests/gl_mock_functions.cpp | 2 +- libs/drape/drape_tests/gl_mock_functions.hpp | 11 +- libs/drape/drape_tests/glyph_mng_tests.cpp | 68 +- libs/drape/drape_tests/glyph_packer_test.cpp | 4 +- .../drape_tests/harfbuzz_shaping_test.cpp | 18 +- libs/drape/drape_tests/img.hpp | 2 +- libs/drape/drape_tests/memory_comparer.hpp | 9 +- libs/drape/drape_tests/pointers_tests.cpp | 6 +- .../drape_tests/static_texture_tests.cpp | 12 +- libs/drape/drape_tests/stipple_pen_tests.cpp | 22 +- .../drape_tests/testing_graphics_context.hpp | 5 +- .../drape_tests/texture_of_colors_tests.cpp | 226 +- .../drape/drape_tests/uniform_value_tests.cpp | 62 +- .../drape/drape_tests/vertex_buffer_tests.cpp | 14 +- libs/drape/dynamic_texture.hpp | 50 +- libs/drape/font_texture.cpp | 32 +- libs/drape/font_texture.hpp | 13 +- libs/drape/fonts_tool/fonts_tool.cpp | 4 +- libs/drape/framebuffer.cpp | 9 +- libs/drape/framebuffer.hpp | 3 +- libs/drape/gl_constants.cpp | 360 +- libs/drape/gl_constants.hpp | 288 +- libs/drape/gl_extensions_list.hpp | 1 - libs/drape/gl_functions.cpp | 109 +- libs/drape/gl_functions.hpp | 46 +- libs/drape/gl_gpu_program.cpp | 14 +- libs/drape/gl_gpu_program.hpp | 3 +- libs/drape/gl_includes.hpp | 44 +- libs/drape/glsl_func.hpp | 8 +- libs/drape/glsl_types.hpp | 12 +- libs/drape/glyph.hpp | 13 +- libs/drape/glyph_manager.cpp | 1162 +- libs/drape/glyph_manager.hpp | 16 +- libs/drape/gpu_buffer.cpp | 26 +- libs/drape/gpu_buffer.hpp | 3 +- libs/drape/gpu_program.hpp | 4 +- libs/drape/graphics_context.hpp | 6 +- libs/drape/graphics_context_factory.cpp | 11 +- libs/drape/graphics_context_factory.hpp | 7 +- libs/drape/harfbuzz_shaping.cpp | 17 +- libs/drape/harfbuzz_shaping.hpp | 8 +- libs/drape/hw_texture.cpp | 34 +- libs/drape/hw_texture.hpp | 17 +- libs/drape/hw_texture_ios.hpp | 14 +- libs/drape/index_buffer.cpp | 4 +- libs/drape/index_buffer_mutator.cpp | 2 +- libs/drape/index_storage.cpp | 4 +- libs/drape/mesh_object.cpp | 58 +- libs/drape/mesh_object.hpp | 47 +- libs/drape/metal/metal_base_context.hpp | 38 +- libs/drape/metal/metal_cleaner.hpp | 21 +- libs/drape/metal/metal_gpu_buffer_impl.hpp | 44 +- libs/drape/metal/metal_gpu_program.hpp | 18 +- libs/drape/metal/metal_states.hpp | 30 +- libs/drape/metal/metal_texture.hpp | 9 +- libs/drape/object_pool.hpp | 8 +- libs/drape/oglcontext.cpp | 20 +- libs/drape/oglcontext.hpp | 2 +- libs/drape/overlay_handle.cpp | 30 +- libs/drape/overlay_handle.hpp | 63 +- libs/drape/overlay_tree.cpp | 37 +- libs/drape/overlay_tree.hpp | 23 +- libs/drape/pointers.cpp | 3 +- libs/drape/pointers.hpp | 21 +- libs/drape/render_bucket.cpp | 8 +- libs/drape/render_state.cpp | 31 +- libs/drape/render_state.hpp | 28 +- libs/drape/shader.cpp | 3 +- libs/drape/shader.hpp | 3 +- libs/drape/static_texture.cpp | 36 +- libs/drape/static_texture.hpp | 9 +- libs/drape/stipple_pen_resource.cpp | 19 +- libs/drape/stipple_pen_resource.hpp | 25 +- libs/drape/support_manager.cpp | 58 +- libs/drape/support_manager.hpp | 4 +- libs/drape/symbols_texture.cpp | 50 +- libs/drape/symbols_texture.hpp | 7 +- libs/drape/texture.cpp | 17 +- libs/drape/texture.hpp | 10 +- libs/drape/texture_manager.cpp | 96 +- libs/drape/texture_manager.hpp | 40 +- libs/drape/texture_of_colors.cpp | 23 +- libs/drape/texture_of_colors.hpp | 8 +- libs/drape/tm_read_resources.hpp | 2 +- libs/drape/uniform_value.cpp | 38 +- libs/drape/utils/glyph_usage_tracker.cpp | 4 +- libs/drape/utils/glyph_usage_tracker.hpp | 4 +- libs/drape/utils/profiler.hpp | 13 +- libs/drape/utils/projection.cpp | 3 +- libs/drape/utils/projection.hpp | 3 +- libs/drape/utils/vertex_decl.cpp | 120 +- libs/drape/utils/vertex_decl.hpp | 32 +- libs/drape/vertex_array_buffer.cpp | 66 +- libs/drape/vertex_array_buffer.hpp | 13 +- libs/drape/viewport.cpp | 25 +- libs/drape/visual_scale.hpp | 2 +- libs/drape/vulkan/vulkan_base_context.cpp | 171 +- libs/drape/vulkan/vulkan_base_context.hpp | 12 +- libs/drape/vulkan/vulkan_context_factory.cpp | 84 +- libs/drape/vulkan/vulkan_context_factory.hpp | 6 +- libs/drape/vulkan/vulkan_gpu_buffer_impl.cpp | 40 +- libs/drape/vulkan/vulkan_gpu_buffer_impl.hpp | 34 +- libs/drape/vulkan/vulkan_gpu_program.hpp | 14 +- libs/drape/vulkan/vulkan_layers.cpp | 136 +- libs/drape/vulkan/vulkan_layers.hpp | 2 +- libs/drape/vulkan/vulkan_memory_manager.cpp | 79 +- libs/drape/vulkan/vulkan_memory_manager.hpp | 13 +- libs/drape/vulkan/vulkan_mesh_object_impl.cpp | 67 +- libs/drape/vulkan/vulkan_object_manager.cpp | 66 +- libs/drape/vulkan/vulkan_object_manager.hpp | 8 +- libs/drape/vulkan/vulkan_param_descriptor.cpp | 3 +- libs/drape/vulkan/vulkan_param_descriptor.hpp | 3 +- libs/drape/vulkan/vulkan_pipeline.cpp | 70 +- libs/drape/vulkan/vulkan_pipeline.hpp | 6 +- libs/drape/vulkan/vulkan_staging_buffer.cpp | 9 +- libs/drape/vulkan/vulkan_staging_buffer.hpp | 3 +- libs/drape/vulkan/vulkan_texture.cpp | 109 +- libs/drape/vulkan/vulkan_texture.hpp | 14 +- libs/drape/vulkan/vulkan_utils.cpp | 28 +- libs/drape/vulkan/vulkan_utils.hpp | 61 +- .../vulkan_vertex_array_buffer_impl.cpp | 32 +- libs/drape_frontend/animation/animation.cpp | 10 +- libs/drape_frontend/animation/animation.hpp | 42 +- .../animation/arrow_animation.cpp | 21 +- .../animation/arrow_animation.hpp | 6 +- .../animation/follow_animation.cpp | 19 +- .../animation/follow_animation.hpp | 19 +- .../animation/interpolation_holder.cpp | 2 +- .../animation/interpolations.cpp | 2 +- .../animation/interpolations.hpp | 4 +- .../animation/interpolators.cpp | 32 +- .../animation/interpolators.hpp | 28 +- .../animation/linear_animation.cpp | 30 +- .../animation/linear_animation.hpp | 13 +- .../animation/opacity_animation.cpp | 8 +- .../animation/parallel_animation.cpp | 12 +- .../animation/parallel_animation.hpp | 8 +- .../animation/scale_animation.cpp | 8 +- .../animation/scale_animation.hpp | 17 +- .../animation/sequence_animation.cpp | 19 +- .../animation/sequence_animation.hpp | 7 +- .../animation/show_hide_animation.cpp | 20 +- .../animation/value_mapping.hpp | 3 +- libs/drape_frontend/animation_constants.hpp | 4 +- libs/drape_frontend/animation_system.cpp | 45 +- libs/drape_frontend/animation_system.hpp | 21 +- libs/drape_frontend/animation_utils.cpp | 2 +- libs/drape_frontend/animation_utils.hpp | 2 +- .../drape_frontend/apply_feature_functors.cpp | 186 +- .../drape_frontend/apply_feature_functors.hpp | 46 +- libs/drape_frontend/area_shape.cpp | 8 +- libs/drape_frontend/area_shape.hpp | 23 +- libs/drape_frontend/arrow3d.cpp | 256 +- libs/drape_frontend/arrow3d.hpp | 17 +- libs/drape_frontend/backend_renderer.cpp | 877 +- libs/drape_frontend/backend_renderer.hpp | 9 +- libs/drape_frontend/base_renderer.cpp | 11 +- libs/drape_frontend/base_renderer.hpp | 10 +- libs/drape_frontend/batchers_pool.hpp | 9 +- libs/drape_frontend/circles_pack_shape.cpp | 29 +- libs/drape_frontend/circles_pack_shape.hpp | 6 +- libs/drape_frontend/color_constants.cpp | 7 +- libs/drape_frontend/color_constants.hpp | 2 +- libs/drape_frontend/colored_symbol_shape.cpp | 38 +- libs/drape_frontend/colored_symbol_shape.hpp | 8 +- .../custom_features_context.hpp | 6 +- libs/drape_frontend/debug_rect_renderer.cpp | 3 +- libs/drape_frontend/debug_rect_renderer.hpp | 13 +- libs/drape_frontend/drape_api.cpp | 12 +- libs/drape_frontend/drape_api.hpp | 5 +- libs/drape_frontend/drape_api_builder.cpp | 27 +- libs/drape_frontend/drape_api_builder.hpp | 3 +- libs/drape_frontend/drape_api_renderer.cpp | 11 +- libs/drape_frontend/drape_engine.cpp | 303 +- libs/drape_frontend/drape_engine.hpp | 48 +- libs/drape_frontend/drape_engine_safe_ptr.hpp | 19 +- .../frame_values_tests.cpp | 12 +- .../drape_frontend_tests/navigator_test.cpp | 38 +- .../drape_frontend_tests/path_text_test.cpp | 4 +- .../drape_frontend_tests/stylist_tests.cpp | 2 +- .../user_event_stream_tests.cpp | 17 +- libs/drape_frontend/drape_measurer.cpp | 44 +- libs/drape_frontend/drape_measurer.hpp | 6 +- libs/drape_frontend/drape_notifier.cpp | 12 +- libs/drape_frontend/drape_notifier.hpp | 8 +- libs/drape_frontend/engine_context.cpp | 16 +- libs/drape_frontend/engine_context.hpp | 14 +- libs/drape_frontend/frame_values.hpp | 39 +- libs/drape_frontend/frontend_renderer.cpp | 1503 +-- libs/drape_frontend/frontend_renderer.hpp | 46 +- libs/drape_frontend/gps_track_renderer.cpp | 59 +- libs/drape_frontend/gps_track_renderer.hpp | 11 +- .../gui/choose_position_mark.cpp | 22 +- .../gui/choose_position_mark.hpp | 3 +- libs/drape_frontend/gui/compass.cpp | 23 +- libs/drape_frontend/gui/compass.hpp | 3 +- libs/drape_frontend/gui/copyright_label.cpp | 26 +- libs/drape_frontend/gui/debug_label.cpp | 16 +- libs/drape_frontend/gui/debug_label.hpp | 6 +- libs/drape_frontend/gui/drape_gui.cpp | 6 +- libs/drape_frontend/gui/gui_text.cpp | 66 +- libs/drape_frontend/gui/gui_text.hpp | 25 +- libs/drape_frontend/gui/layer_render.cpp | 51 +- libs/drape_frontend/gui/layer_render.hpp | 23 +- libs/drape_frontend/gui/ruler.cpp | 51 +- libs/drape_frontend/gui/ruler.hpp | 12 +- libs/drape_frontend/gui/ruler_helper.cpp | 82 +- libs/drape_frontend/gui/scale_fps_helper.hpp | 5 +- libs/drape_frontend/gui/shape.cpp | 24 +- libs/drape_frontend/gui/shape.hpp | 10 +- libs/drape_frontend/gui/skin.cpp | 66 +- libs/drape_frontend/gui/skin.hpp | 15 +- libs/drape_frontend/kinetic_scroller.cpp | 24 +- libs/drape_frontend/line_shape.cpp | 153 +- libs/drape_frontend/line_shape.hpp | 8 +- libs/drape_frontend/line_shape_helper.cpp | 67 +- libs/drape_frontend/line_shape_helper.hpp | 18 +- libs/drape_frontend/map_data_provider.cpp | 9 +- libs/drape_frontend/map_data_provider.hpp | 17 +- libs/drape_frontend/map_shape.hpp | 7 +- libs/drape_frontend/message_acceptor.cpp | 4 +- libs/drape_frontend/message_acceptor.hpp | 2 +- libs/drape_frontend/message_queue.cpp | 70 +- libs/drape_frontend/message_subclasses.hpp | 259 +- libs/drape_frontend/metaline_manager.cpp | 6 +- libs/drape_frontend/metaline_manager.hpp | 3 +- libs/drape_frontend/my_position.cpp | 45 +- libs/drape_frontend/my_position.hpp | 12 +- .../drape_frontend/my_position_controller.cpp | 120 +- .../drape_frontend/my_position_controller.hpp | 22 +- libs/drape_frontend/navigator.cpp | 36 +- libs/drape_frontend/navigator.hpp | 10 +- libs/drape_frontend/overlay_batcher.cpp | 7 +- libs/drape_frontend/overlay_batcher.hpp | 12 +- libs/drape_frontend/overlays_tracker.cpp | 9 +- libs/drape_frontend/overlays_tracker.hpp | 6 +- libs/drape_frontend/path_symbol_shape.cpp | 13 +- libs/drape_frontend/path_text_handle.cpp | 37 +- libs/drape_frontend/path_text_handle.hpp | 7 +- libs/drape_frontend/path_text_shape.cpp | 37 +- libs/drape_frontend/path_text_shape.hpp | 13 +- libs/drape_frontend/poi_symbol_shape.cpp | 64 +- libs/drape_frontend/poi_symbol_shape.hpp | 5 +- libs/drape_frontend/postprocess_renderer.cpp | 115 +- libs/drape_frontend/postprocess_renderer.hpp | 1 + libs/drape_frontend/read_manager.cpp | 73 +- libs/drape_frontend/read_manager.hpp | 10 +- libs/drape_frontend/read_metaline_task.cpp | 9 +- libs/drape_frontend/read_mwm_task.cpp | 3 +- libs/drape_frontend/read_mwm_task.hpp | 9 +- libs/drape_frontend/render_group.cpp | 18 +- libs/drape_frontend/render_group.hpp | 22 +- libs/drape_frontend/render_node.hpp | 12 +- .../drape_frontend/render_state_extension.cpp | 19 +- libs/drape_frontend/requested_tiles.cpp | 8 +- libs/drape_frontend/requested_tiles.hpp | 7 +- libs/drape_frontend/route_builder.cpp | 14 +- libs/drape_frontend/route_builder.hpp | 7 +- libs/drape_frontend/route_renderer.cpp | 121 +- libs/drape_frontend/route_renderer.hpp | 26 +- libs/drape_frontend/route_shape.cpp | 261 +- libs/drape_frontend/route_shape.hpp | 64 +- libs/drape_frontend/rule_drawer.cpp | 88 +- libs/drape_frontend/rule_drawer.hpp | 3 +- libs/drape_frontend/scenario_manager.cpp | 38 +- libs/drape_frontend/scenario_manager.hpp | 14 +- libs/drape_frontend/screen_animations.cpp | 37 +- libs/drape_frontend/screen_animations.hpp | 17 +- libs/drape_frontend/screen_operations.cpp | 17 +- libs/drape_frontend/screen_operations.hpp | 9 +- libs/drape_frontend/screen_quad_renderer.cpp | 21 +- libs/drape_frontend/screen_quad_renderer.hpp | 1 + libs/drape_frontend/selection_shape.cpp | 16 +- libs/drape_frontend/selection_shape.hpp | 4 +- .../selection_shape_generator.cpp | 71 +- .../selection_shape_generator.hpp | 5 +- libs/drape_frontend/shape_view_params.hpp | 4 +- libs/drape_frontend/stylist.cpp | 39 +- libs/drape_frontend/stylist.hpp | 10 +- libs/drape_frontend/text_handle.cpp | 10 +- libs/drape_frontend/text_handle.hpp | 14 +- libs/drape_frontend/text_layout.cpp | 49 +- libs/drape_frontend/text_layout.hpp | 26 +- libs/drape_frontend/text_shape.cpp | 107 +- libs/drape_frontend/text_shape.hpp | 28 +- libs/drape_frontend/threads_commutator.cpp | 3 +- libs/drape_frontend/threads_commutator.hpp | 2 +- libs/drape_frontend/tile_info.cpp | 10 +- libs/drape_frontend/tile_info.hpp | 2 +- libs/drape_frontend/tile_key.cpp | 39 +- libs/drape_frontend/tile_key.hpp | 9 +- libs/drape_frontend/tile_utils.cpp | 6 +- libs/drape_frontend/traffic_generator.cpp | 150 +- libs/drape_frontend/traffic_generator.hpp | 27 +- libs/drape_frontend/traffic_renderer.cpp | 120 +- libs/drape_frontend/traffic_renderer.hpp | 7 +- .../drape_frontend/transit_scheme_builder.cpp | 387 +- .../drape_frontend/transit_scheme_builder.hpp | 72 +- .../transit_scheme_renderer.cpp | 103 +- .../transit_scheme_renderer.hpp | 10 +- libs/drape_frontend/user_event_stream.cpp | 317 +- libs/drape_frontend/user_event_stream.hpp | 103 +- libs/drape_frontend/user_mark_generator.cpp | 52 +- libs/drape_frontend/user_mark_shapes.cpp | 134 +- libs/drape_frontend/user_mark_shapes.hpp | 28 +- libs/drape_frontend/user_marks_provider.cpp | 11 +- libs/drape_frontend/user_marks_provider.hpp | 7 +- libs/drape_frontend/visual_params.cpp | 28 +- libs/drape_frontend/visual_params.hpp | 19 +- libs/editor/changeset_wrapper.cpp | 40 +- libs/editor/editor_config.cpp | 34 +- libs/editor/editor_config.hpp | 8 +- libs/editor/editor_notes.cpp | 34 +- libs/editor/editor_notes.hpp | 5 +- libs/editor/editor_storage.cpp | 10 +- .../editor_tests/config_loader_test.cpp | 4 +- .../editor_tests/editor_config_test.cpp | 17 +- .../editor/editor_tests/editor_notes_test.cpp | 7 +- .../editor_tests/feature_matcher_test.cpp | 189 +- .../editor_tests/match_by_geometry_test.cpp | 159 +- .../new_feature_categories_test.cpp | 3 +- .../editor_tests/opening_hours_ui_test.cpp | 17 +- libs/editor/editor_tests/osm_editor_test.cpp | 196 +- libs/editor/editor_tests/ui2oh_test.cpp | 104 +- libs/editor/editor_tests/xml_feature_test.cpp | 33 +- libs/editor/edits_migration.cpp | 101 +- libs/editor/edits_migration.hpp | 6 +- libs/editor/feature_matcher.cpp | 34 +- libs/editor/feature_matcher.hpp | 8 +- libs/editor/new_feature_categories.cpp | 3 +- libs/editor/opening_hours_ui.cpp | 65 +- libs/editor/opening_hours_ui.hpp | 9 +- libs/editor/osm_auth.cpp | 92 +- libs/editor/osm_auth.hpp | 33 +- libs/editor/osm_auth_tests/osm_auth_tests.cpp | 2 +- .../editor/osm_auth_tests/server_api_test.cpp | 20 +- libs/editor/osm_editor.cpp | 508 +- libs/editor/osm_editor.hpp | 6 +- libs/editor/server_api.cpp | 38 +- libs/editor/server_api.hpp | 2 +- libs/editor/ui2oh.cpp | 45 +- libs/editor/ui2oh.hpp | 4 +- libs/editor/xml_feature.cpp | 275 +- libs/editor/xml_feature.hpp | 4 +- libs/ge0/ge0_tests/geo_url_tests.cpp | 7 +- libs/ge0/ge0_tests/parser_tests.cpp | 29 +- libs/ge0/ge0_tests/url_generator_tests.cpp | 2 +- libs/ge0/geo_url_parser.cpp | 33 +- libs/ge0/geo_url_parser.hpp | 3 +- libs/ge0/parser.cpp | 4 - libs/ge0/parser.hpp | 6 +- libs/ge0/url_generator.cpp | 52 +- libs/geometry/algorithm.cpp | 3 +- libs/geometry/algorithm.hpp | 27 +- libs/geometry/any_rect2d.hpp | 18 +- libs/geometry/area_on_earth.cpp | 6 +- libs/geometry/avg_vector.hpp | 5 +- libs/geometry/bounding_box.hpp | 5 +- libs/geometry/calipers_box.cpp | 26 +- libs/geometry/cellid.hpp | 2 - libs/geometry/circle_on_earth.cpp | 9 +- libs/geometry/clipping.cpp | 41 +- libs/geometry/clipping.hpp | 12 +- libs/geometry/convex_hull.cpp | 5 +- libs/geometry/covering.hpp | 23 +- libs/geometry/covering_utils.hpp | 22 +- libs/geometry/diamond_box.hpp | 10 +- .../geometry_tests/algorithm_test.cpp | 106 +- libs/geometry/geometry_tests/angle_test.cpp | 98 +- libs/geometry/geometry_tests/anyrect_test.cpp | 2 +- .../geometry_tests/area_on_earth_tests.cpp | 20 +- .../geometry_tests/bounding_box_tests.cpp | 2 +- .../geometry_tests/calipers_box_tests.cpp | 10 +- libs/geometry/geometry_tests/cellid_test.cpp | 29 +- .../geometry_tests/circle_on_earth_tests.cpp | 31 +- .../geometry/geometry_tests/clipping_test.cpp | 60 +- libs/geometry/geometry_tests/common_test.cpp | 4 +- .../geometry_tests/convex_hull_tests.cpp | 20 +- .../geometry/geometry_tests/covering_test.cpp | 14 +- libs/geometry/geometry_tests/equality.hpp | 84 +- .../geometry_tests/intersect_test.cpp | 49 +- .../intersection_score_tests.cpp | 6 +- .../geometry/geometry_tests/large_polygon.hpp | 11083 ++++++++-------- libs/geometry/geometry_tests/latlon_test.cpp | 4 +- .../geometry/geometry_tests/mercator_test.cpp | 10 +- .../nearby_points_sweeper_test.cpp | 12 +- .../geometry_tests/oblate_spheroid_tests.cpp | 2 +- libs/geometry/geometry_tests/packer_test.cpp | 48 +- .../parametrized_segment_tests.cpp | 15 +- .../geometry/geometry_tests/point3d_tests.cpp | 2 +- libs/geometry/geometry_tests/point_test.cpp | 19 +- libs/geometry/geometry_tests/polygon_test.cpp | 12 +- .../geometry_tests/polyline_tests.cpp | 7 +- libs/geometry/geometry_tests/rect_test.cpp | 3 +- .../region2d_binary_op_test.cpp | 37 +- libs/geometry/geometry_tests/region_tests.cpp | 33 +- libs/geometry/geometry_tests/robust_test.cpp | 8 +- libs/geometry/geometry_tests/screen_test.cpp | 39 +- .../geometry_tests/segment2d_tests.cpp | 41 +- .../geometry_tests/simplification_test.cpp | 43 +- libs/geometry/geometry_tests/spline_test.cpp | 8 +- libs/geometry/geometry_tests/test_regions.hpp | 2056 ++- .../geometry_tests/transformations_test.cpp | 7 +- libs/geometry/geometry_tests/tree_test.cpp | 10 +- libs/geometry/geometry_tests/vector_test.cpp | 16 +- libs/geometry/intersection_score.hpp | 9 +- libs/geometry/latlon.cpp | 10 +- libs/geometry/mercator.cpp | 7 +- libs/geometry/mercator.hpp | 70 +- libs/geometry/nearby_points_sweeper.cpp | 9 +- libs/geometry/nearby_points_sweeper.hpp | 4 +- libs/geometry/oblate_spheroid.cpp | 25 +- libs/geometry/oblate_spheroid.hpp | 2 +- libs/geometry/packer.cpp | 21 +- libs/geometry/packer.hpp | 10 +- libs/geometry/parametrized_segment.hpp | 3 +- libs/geometry/point2d.hpp | 28 +- libs/geometry/point3d.hpp | 3 +- libs/geometry/point_with_altitude.cpp | 16 +- libs/geometry/point_with_altitude.hpp | 10 +- libs/geometry/polygon.hpp | 71 +- libs/geometry/polyline2d.hpp | 21 +- libs/geometry/rect2d.hpp | 24 +- libs/geometry/rect_intersect.hpp | 194 +- libs/geometry/region2d.hpp | 21 +- libs/geometry/region2d/boost_concept.hpp | 269 +- libs/geometry/robust_orientation.cpp | 6 +- libs/geometry/robust_orientation.hpp | 3 +- libs/geometry/screenbase.cpp | 121 +- libs/geometry/screenbase.hpp | 13 +- libs/geometry/segment2d.cpp | 7 +- libs/geometry/segment2d.hpp | 3 +- libs/geometry/simplification.hpp | 15 +- libs/geometry/smoothing.cpp | 9 +- libs/geometry/smoothing.hpp | 4 +- libs/geometry/spline.cpp | 39 +- libs/geometry/spline.hpp | 2 +- libs/geometry/transformations.hpp | 91 +- libs/geometry/tree4d.hpp | 23 +- libs/geometry/triangle2d.cpp | 23 +- libs/geometry/triangle2d.hpp | 19 +- libs/indexer/altitude_loader.cpp | 8 +- libs/indexer/altitude_loader.hpp | 5 +- libs/indexer/brands_holder.cpp | 6 +- libs/indexer/brands_holder.hpp | 8 +- libs/indexer/caching_rank_table_loader.cpp | 10 +- libs/indexer/categories_holder.cpp | 12 +- libs/indexer/categories_holder.hpp | 9 +- libs/indexer/categories_index.cpp | 59 +- libs/indexer/cell_coverer.hpp | 23 +- libs/indexer/cell_id.hpp | 37 +- libs/indexer/cell_value_pair.hpp | 5 +- libs/indexer/centers_table.cpp | 20 +- libs/indexer/centers_table.hpp | 8 +- libs/indexer/cities_boundaries_serdes.hpp | 73 +- libs/indexer/city_boundary.hpp | 5 +- libs/indexer/classificator.cpp | 278 +- libs/indexer/classificator.hpp | 67 +- libs/indexer/classificator_loader.cpp | 19 +- libs/indexer/classificator_loader.hpp | 3 +- libs/indexer/complex/serdes.hpp | 6 +- libs/indexer/complex/tree_node.hpp | 51 +- libs/indexer/cuisines.cpp | 16 +- libs/indexer/custom_keyvalue.cpp | 2 +- libs/indexer/custom_keyvalue.hpp | 4 +- libs/indexer/data_header.cpp | 182 +- libs/indexer/data_header.hpp | 122 +- libs/indexer/data_source.cpp | 48 +- libs/indexer/data_source.hpp | 23 +- libs/indexer/data_source_helpers.cpp | 11 +- libs/indexer/displacement_manager.hpp | 21 +- libs/indexer/drawing_rule_def.cpp | 12 +- libs/indexer/drawing_rule_def.hpp | 95 +- libs/indexer/drawing_rules.cpp | 408 +- libs/indexer/drawing_rules.hpp | 98 +- libs/indexer/drules_selector.cpp | 46 +- libs/indexer/drules_selector_parser.cpp | 20 +- libs/indexer/edit_journal.cpp | 198 +- libs/indexer/edit_journal.hpp | 116 +- libs/indexer/editable_map_object.cpp | 251 +- libs/indexer/editable_map_object.hpp | 21 +- libs/indexer/fake_feature_ids.hpp | 10 +- libs/indexer/feature.cpp | 45 +- libs/indexer/feature.hpp | 17 +- libs/indexer/feature_algo.cpp | 19 +- libs/indexer/feature_altitude.hpp | 12 +- libs/indexer/feature_covering.cpp | 50 +- libs/indexer/feature_covering.hpp | 28 +- libs/indexer/feature_data.cpp | 76 +- libs/indexer/feature_data.hpp | 240 +- libs/indexer/feature_decl.cpp | 11 +- libs/indexer/feature_decl.hpp | 5 +- libs/indexer/feature_impl.cpp | 2 +- libs/indexer/feature_impl.hpp | 11 +- libs/indexer/feature_meta.cpp | 28 +- libs/indexer/feature_meta.hpp | 58 +- libs/indexer/feature_source.cpp | 10 +- libs/indexer/feature_source.hpp | 7 +- libs/indexer/feature_to_osm.cpp | 11 +- libs/indexer/feature_to_osm.hpp | 50 +- libs/indexer/feature_utils.cpp | 103 +- libs/indexer/feature_utils.hpp | 301 +- libs/indexer/feature_visibility.cpp | 315 +- libs/indexer/feature_visibility.hpp | 140 +- libs/indexer/features_offsets_table.cpp | 229 +- libs/indexer/features_offsets_table.hpp | 146 +- libs/indexer/features_vector.cpp | 22 +- libs/indexer/features_vector.hpp | 20 +- libs/indexer/ftypes_mapping.hpp | 18 +- libs/indexer/ftypes_matcher.cpp | 180 +- libs/indexer/ftypes_matcher.hpp | 90 +- libs/indexer/house_to_street_iface.hpp | 6 +- libs/indexer/index_builder.hpp | 24 +- libs/indexer/indexer_tests/brands_tests.cpp | 23 +- .../indexer/indexer_tests/categories_test.cpp | 101 +- libs/indexer/indexer_tests/cell_id_test.cpp | 29 +- .../indexer_tests/centers_table_test.cpp | 13 +- libs/indexer/indexer_tests/checker_test.cpp | 41 +- .../cities_boundaries_serdes_tests.cpp | 10 +- .../indexer_tests/classificator_tests.cpp | 2 +- .../drules_selector_parser_test.cpp | 21 +- .../editable_map_object_test.cpp | 115 +- .../indexer_tests/feature_metadata_test.cpp | 24 +- .../indexer_tests/feature_names_test.cpp | 6 +- .../indexer_tests/feature_to_osm_tests.cpp | 7 +- .../indexer_tests/feature_types_test.cpp | 79 +- .../features_offsets_table_test.cpp | 116 +- .../indexer_tests/features_vector_test.cpp | 27 +- .../indexer_tests/index_builder_test.cpp | 2 - .../indexer_tests/interval_index_test.cpp | 103 +- .../indexer_tests/metadata_serdes_tests.cpp | 6 +- libs/indexer/indexer_tests/mwm_set_test.cpp | 3 +- .../indexer_tests/postcodes_matcher_tests.cpp | 3 +- .../indexer/indexer_tests/rank_table_test.cpp | 2 +- .../road_shields_parser_tests.cpp | 2 +- .../scale_index_reading_tests.cpp | 37 +- .../search_string_utils_test.cpp | 103 +- .../sort_and_merge_intervals_test.cpp | 27 +- .../indexer_tests/succinct_trie_test.cpp | 21 +- libs/indexer/indexer_tests/test_mwm_set.hpp | 2 +- libs/indexer/indexer_tests/test_type.cpp | 44 +- .../indexer/indexer_tests/tree_node_tests.cpp | 27 +- libs/indexer/indexer_tests/trie_test.cpp | 119 +- .../validate_and_format_contacts_test.cpp | 79 +- .../indexer/indexer_tests/visibility_test.cpp | 21 +- libs/indexer/interval_index.hpp | 30 +- libs/indexer/interval_index_builder.hpp | 20 +- libs/indexer/isolines_info.cpp | 3 +- libs/indexer/isolines_info.hpp | 16 +- libs/indexer/map_object.cpp | 81 +- libs/indexer/map_object.hpp | 14 +- libs/indexer/map_style.cpp | 55 +- libs/indexer/map_style_reader.cpp | 61 +- libs/indexer/metadata_serdes.cpp | 23 +- libs/indexer/mwm_set.cpp | 99 +- libs/indexer/mwm_set.hpp | 45 +- libs/indexer/postcodes_matcher.cpp | 23 +- libs/indexer/rank_table.cpp | 17 +- libs/indexer/rank_table.hpp | 9 +- libs/indexer/road_shields_parser.cpp | 154 +- libs/indexer/road_shields_parser.hpp | 12 +- libs/indexer/scale_index.hpp | 18 +- libs/indexer/scale_index_builder.hpp | 21 +- libs/indexer/scales.cpp | 144 +- libs/indexer/scales.hpp | 112 +- libs/indexer/scales_patch.hpp | 11 +- libs/indexer/search_delimiters.cpp | 3 +- libs/indexer/search_string_utils.cpp | 219 +- libs/indexer/search_string_utils.hpp | 12 +- libs/indexer/shared_load_info.cpp | 6 +- libs/indexer/string_set.hpp | 4 - libs/indexer/succinct_trie_reader.hpp | 39 +- libs/indexer/transliteration_loader.cpp | 2 +- libs/indexer/tree_structure.hpp | 9 +- libs/indexer/trie.hpp | 6 +- libs/indexer/trie_builder.hpp | 23 +- libs/indexer/trie_reader.hpp | 15 +- libs/indexer/types_mapping.cpp | 2 +- libs/indexer/types_mapping.hpp | 6 +- libs/indexer/utils.cpp | 3 +- libs/indexer/utils.hpp | 5 +- libs/indexer/validate_and_format_contacts.cpp | 112 +- libs/kml/header_binary.hpp | 41 +- libs/kml/kmb_to_kml/kmb_to_kml.cpp | 9 +- libs/kml/kml_tests/gpx_tests.cpp | 24 +- libs/kml/kml_tests/minzoom_quadtree_tests.cpp | 24 +- libs/kml/kml_tests/serdes_tests.cpp | 419 +- libs/kml/kml_tests/tests_data.hpp | 3141 ++--- libs/kml/kml_to_kmb/kml_to_kmb.cpp | 3 +- libs/kml/minzoom_quadtree.hpp | 26 +- libs/kml/pykmlib/bindings.cpp | 480 +- libs/kml/serdes.cpp | 110 +- libs/kml/serdes.hpp | 19 +- libs/kml/serdes_binary.cpp | 6 +- libs/kml/serdes_binary.hpp | 21 +- libs/kml/serdes_binary_v8.hpp | 6 +- libs/kml/serdes_common.cpp | 21 +- libs/kml/serdes_common.hpp | 16 +- libs/kml/serdes_gpx.cpp | 97 +- libs/kml/serdes_gpx.hpp | 10 +- libs/kml/type_utils.cpp | 2 +- libs/kml/type_utils.hpp | 18 +- libs/kml/types.cpp | 9 +- libs/kml/types.hpp | 136 +- libs/kml/types_v3.hpp | 90 +- libs/kml/types_v6.hpp | 30 +- libs/kml/types_v7.hpp | 88 +- libs/kml/types_v8.hpp | 51 +- libs/kml/types_v8mm.hpp | 122 +- libs/kml/types_v9mm.hpp | 22 +- libs/kml/visitors.hpp | 206 +- libs/map/api_mark_point.cpp | 42 +- libs/map/api_mark_point.hpp | 5 +- libs/map/benchmark_tool/api.cpp | 14 +- libs/map/benchmark_tool/api.hpp | 56 +- libs/map/benchmark_tool/features_loading.cpp | 128 +- libs/map/benchmark_tools.cpp | 38 +- libs/map/benchmark_tools.hpp | 2 +- libs/map/bookmark.cpp | 62 +- libs/map/bookmark.hpp | 1 + libs/map/bookmark_helpers.cpp | 317 +- libs/map/bookmark_helpers.hpp | 12 +- libs/map/bookmark_manager.cpp | 380 +- libs/map/bookmark_manager.hpp | 94 +- libs/map/chart_generator.cpp | 48 +- libs/map/chart_generator.hpp | 14 +- libs/map/elevation_info.hpp | 16 +- libs/map/everywhere_search_callback.cpp | 4 +- libs/map/extrapolation/extrapolator.cpp | 69 +- libs/map/extrapolation/extrapolator.hpp | 6 +- .../extrapolation_benchmark.cpp | 59 +- libs/map/features_fetcher.cpp | 23 +- libs/map/features_fetcher.hpp | 5 +- libs/map/framework.cpp | 423 +- libs/map/framework.hpp | 128 +- libs/map/framework_visualize.cpp | 16 +- libs/map/gps_track.cpp | 19 +- libs/map/gps_track.hpp | 31 +- libs/map/gps_track_collection.cpp | 17 +- libs/map/gps_track_collection.hpp | 8 +- libs/map/gps_track_filter.cpp | 11 +- libs/map/gps_track_filter.hpp | 9 +- libs/map/gps_track_storage.cpp | 13 +- libs/map/gps_tracker.cpp | 13 +- libs/map/gps_tracker.hpp | 5 +- libs/map/isolines_manager.cpp | 4 +- libs/map/isolines_manager.hpp | 5 +- .../interactive_search_test.cpp | 54 +- libs/map/map_tests/address_tests.cpp | 9 +- libs/map/map_tests/bookmarks_test.cpp | 700 +- libs/map/map_tests/chart_generator_tests.cpp | 81 +- libs/map/map_tests/check_mwms.cpp | 13 +- libs/map/map_tests/countries_names_tests.cpp | 20 +- libs/map/map_tests/elevation_info_tests.cpp | 58 +- libs/map/map_tests/extrapolator_tests.cpp | 15 +- libs/map/map_tests/feature_getters_tests.cpp | 15 +- .../map_tests/gps_track_collection_test.cpp | 2 +- libs/map/map_tests/gps_track_storage_test.cpp | 12 +- libs/map/map_tests/gps_track_test.cpp | 19 +- libs/map/map_tests/kmz_unarchive_test.cpp | 4 +- libs/map/map_tests/mwm_url_tests.cpp | 61 +- libs/map/map_tests/power_manager_tests.cpp | 33 +- libs/map/map_tests/search_api_tests.cpp | 29 +- libs/map/map_tests/track_statistics_tests.cpp | 136 +- libs/map/map_tests/transliteration_test.cpp | 6 +- libs/map/mwm_tests/multithread_mwm_test.cpp | 3 +- libs/map/mwm_tests/mwm_foreach_test.cpp | 74 +- libs/map/mwm_tests/mwm_index_test.cpp | 11 +- libs/map/mwm_tests/world_map_test.cpp | 2 +- libs/map/mwm_url.cpp | 62 +- libs/map/mwm_url.hpp | 10 +- libs/map/place_page_info.cpp | 102 +- libs/map/place_page_info.hpp | 49 +- .../power_management_schemas.cpp | 126 +- libs/map/power_management/power_manager.cpp | 44 +- libs/map/power_management/power_manager.hpp | 1 + libs/map/routing_manager.cpp | 295 +- libs/map/routing_manager.hpp | 63 +- libs/map/routing_mark.cpp | 79 +- libs/map/routing_mark.hpp | 6 +- libs/map/search_api.cpp | 51 +- libs/map/search_api.hpp | 23 +- libs/map/search_mark.cpp | 392 +- libs/map/search_mark.hpp | 14 +- libs/map/search_product_info.hpp | 5 +- libs/map/style_tests/classificator_tests.cpp | 201 +- libs/map/style_tests/dashes_test.cpp | 2 +- .../style_symbols_consistency_test.cpp | 13 +- libs/map/track.cpp | 6 +- libs/map/track_mark.cpp | 10 +- libs/map/track_mark.hpp | 5 +- libs/map/track_statistics.cpp | 29 +- libs/map/track_statistics.hpp | 1 + libs/map/traffic_manager.cpp | 64 +- libs/map/traffic_manager.hpp | 5 +- libs/map/transit/transit_display.cpp | 148 +- libs/map/transit/transit_display.hpp | 28 +- libs/map/transit/transit_reader.cpp | 20 +- libs/map/transit/transit_reader.hpp | 14 +- libs/map/user_mark.cpp | 15 +- libs/map/user_mark.hpp | 4 +- libs/map/user_mark_id_storage.cpp | 12 +- libs/map/user_mark_layer.cpp | 6 +- libs/map/user_mark_layer.hpp | 1 - libs/map/viewport_search_callback.cpp | 4 +- libs/mwm_diff/diff.cpp | 20 +- libs/mwm_diff/diff.hpp | 6 +- libs/mwm_diff/mwm_diff_tests/diff_tests.cpp | 18 +- libs/mwm_diff/mwm_diff_tool/mwm_diff_tool.cpp | 18 +- libs/platform/battery_tracker.cpp | 12 +- libs/platform/battery_tracker.hpp | 3 +- libs/platform/chunks_download_strategy.cpp | 31 +- libs/platform/chunks_download_strategy.hpp | 18 +- libs/platform/constants.hpp | 5 +- libs/platform/country_file.cpp | 12 +- libs/platform/country_file.hpp | 11 +- libs/platform/distance.cpp | 56 +- libs/platform/downloader_defines.hpp | 13 +- libs/platform/downloader_utils.cpp | 5 +- libs/platform/downloader_utils.hpp | 1 - libs/platform/duration.cpp | 50 +- libs/platform/duration.hpp | 9 +- libs/platform/get_text_by_id.cpp | 9 +- libs/platform/get_text_by_id.hpp | 4 +- libs/platform/http_client.cpp | 9 +- libs/platform/http_client.hpp | 9 +- libs/platform/http_client_curl.cpp | 17 +- libs/platform/http_request.cpp | 122 +- libs/platform/http_request.hpp | 17 +- libs/platform/http_thread_callback.hpp | 2 +- libs/platform/http_thread_qt.cpp | 40 +- libs/platform/http_thread_qt.hpp | 13 +- libs/platform/http_uploader_dummy.cpp | 2 +- libs/platform/languages.hpp | 92 +- libs/platform/local_country_file.cpp | 18 +- libs/platform/local_country_file.hpp | 2 +- libs/platform/local_country_file_utils.cpp | 22 +- libs/platform/local_country_file_utils.hpp | 18 +- libs/platform/locale.hpp | 2 +- libs/platform/locale_std.cpp | 9 +- libs/platform/localization.cpp | 2 +- libs/platform/localization_dummy.cpp | 22 +- libs/platform/location.hpp | 247 +- .../location_service/location_service.cpp | 88 +- .../location_service/location_service.hpp | 3 +- .../location_service/qt_location_service.cpp | 42 +- .../location_service/qt_location_service.hpp | 8 +- libs/platform/measurement_utils.cpp | 41 +- libs/platform/measurement_utils.hpp | 72 +- libs/platform/mwm_traits.cpp | 15 +- libs/platform/mwm_version.cpp | 3 +- libs/platform/network_policy.hpp | 2 +- libs/platform/platform.cpp | 85 +- libs/platform/platform.hpp | 28 +- libs/platform/platform_android.cpp | 27 +- libs/platform/platform_linux.cpp | 115 +- libs/platform/platform_qt.cpp | 16 +- .../platform_tests/country_file_tests.cpp | 2 +- .../platform_tests/distance_tests.cpp | 3 +- .../downloader_tests/downloader_test.cpp | 95 +- .../platform_tests/downloader_utils_tests.cpp | 5 +- .../platform_tests/duration_tests.cpp | 78 +- libs/platform/platform_tests/jansson_test.cpp | 7 +- .../platform/platform_tests/language_test.cpp | 4 +- .../local_country_file_tests.cpp | 42 +- .../platform/platform_tests/location_test.cpp | 1 - .../platform_tests/measurement_tests.cpp | 16 +- .../platform/platform_tests/platform_test.cpp | 47 +- .../platform_tests/products_tests.cpp | 1 - .../platform_tests/utm_mgrs_utils_tests.cpp | 6 +- .../async_gui_thread.hpp | 9 +- .../platform_tests_support/scoped_dir.cpp | 37 +- .../platform_tests_support/scoped_file.cpp | 14 +- .../platform_tests_support/scoped_mwm.cpp | 2 +- .../platform_tests_support/test_socket.cpp | 18 +- .../writable_dir_changer.hpp | 6 +- libs/platform/platform_unix_impl.cpp | 17 +- libs/platform/platform_unix_impl.hpp | 3 +- libs/platform/platform_win.cpp | 29 +- libs/platform/preferred_languages.cpp | 444 +- libs/platform/products.cpp | 9 +- libs/platform/products.hpp | 13 +- libs/platform/remote_file.cpp | 13 +- libs/platform/remote_file.hpp | 6 +- libs/platform/safe_callback.hpp | 15 +- libs/platform/servers_list.cpp | 14 +- libs/platform/settings.cpp | 12 +- libs/platform/settings.hpp | 12 +- libs/platform/string_storage_base.cpp | 6 +- libs/platform/trace.hpp | 14 +- libs/platform/trace_android.cpp | 23 +- libs/platform/utm_mgrs_utils.cpp | 76 +- libs/pyhelpers/pair.hpp | 2 +- libs/pyhelpers/vector_list_conversion.hpp | 3 +- libs/pyhelpers/vector_uint8.hpp | 9 +- libs/qt_tstfrm/test_main_loop.cpp | 13 +- libs/qt_tstfrm/test_main_loop.hpp | 4 +- libs/routing/absent_regions_finder.cpp | 21 +- libs/routing/absent_regions_finder.hpp | 3 +- libs/routing/async_router.cpp | 123 +- libs/routing/async_router.hpp | 24 +- libs/routing/base/astar_algorithm.hpp | 243 +- libs/routing/base/astar_graph.hpp | 18 +- libs/routing/base/astar_progress.cpp | 28 +- libs/routing/base/astar_progress.hpp | 3 +- libs/routing/base/astar_vertex_data.hpp | 7 +- libs/routing/base/bfs.hpp | 12 +- libs/routing/base/followed_polyline.cpp | 25 +- libs/routing/base/followed_polyline.hpp | 7 +- libs/routing/base/routing_result.hpp | 5 +- libs/routing/base/small_list.cpp | 7 +- libs/routing/base/small_list.hpp | 7 +- libs/routing/car_directions.cpp | 106 +- libs/routing/car_directions.hpp | 9 +- libs/routing/checkpoint_predictor.cpp | 12 +- libs/routing/checkpoint_predictor.hpp | 5 +- libs/routing/checkpoints.cpp | 3 +- libs/routing/city_roads.cpp | 3 +- libs/routing/city_roads_serialization.hpp | 10 +- libs/routing/coding.hpp | 10 +- libs/routing/cross_border_graph.cpp | 18 +- libs/routing/cross_border_graph.hpp | 17 +- libs/routing/cross_mwm_connector.hpp | 54 +- .../cross_mwm_connector_serialization.hpp | 125 +- libs/routing/cross_mwm_graph.cpp | 33 +- libs/routing/cross_mwm_graph.hpp | 13 +- libs/routing/cross_mwm_ids.hpp | 14 +- libs/routing/cross_mwm_index_graph.hpp | 50 +- libs/routing/data_source.hpp | 13 +- libs/routing/directions_engine.cpp | 65 +- libs/routing/directions_engine.hpp | 28 +- libs/routing/directions_engine_helpers.cpp | 24 +- libs/routing/directions_engine_helpers.hpp | 11 +- libs/routing/dummy_world_graph.hpp | 61 +- libs/routing/edge_estimator.cpp | 161 +- libs/routing/edge_estimator.hpp | 33 +- libs/routing/fake_edges_container.hpp | 3 +- libs/routing/fake_ending.cpp | 27 +- libs/routing/fake_ending.hpp | 15 +- libs/routing/fake_feature_ids.hpp | 12 +- libs/routing/fake_graph.cpp | 39 +- libs/routing/fake_graph.hpp | 5 +- libs/routing/fake_vertex.hpp | 21 +- libs/routing/features_road_graph.cpp | 46 +- libs/routing/features_road_graph.hpp | 13 +- libs/routing/following_info.hpp | 13 +- libs/routing/geometry.cpp | 41 +- libs/routing/geometry.hpp | 23 +- libs/routing/guides_connections.cpp | 84 +- libs/routing/guides_connections.hpp | 13 +- libs/routing/guides_graph.cpp | 46 +- libs/routing/guides_graph.hpp | 9 +- libs/routing/index_graph.cpp | 179 +- libs/routing/index_graph.hpp | 111 +- libs/routing/index_graph_loader.cpp | 34 +- libs/routing/index_graph_loader.hpp | 9 +- libs/routing/index_graph_serialization.cpp | 21 +- libs/routing/index_graph_serialization.hpp | 46 +- libs/routing/index_graph_starter.cpp | 166 +- libs/routing/index_graph_starter.hpp | 74 +- libs/routing/index_graph_starter_joints.hpp | 129 +- libs/routing/index_road_graph.cpp | 47 +- libs/routing/index_road_graph.hpp | 9 +- libs/routing/index_router.cpp | 634 +- libs/routing/index_router.hpp | 77 +- libs/routing/joint_index.cpp | 12 +- libs/routing/joint_segment.cpp | 15 +- libs/routing/joint_segment.hpp | 10 +- libs/routing/junction_visitor.cpp | 44 +- libs/routing/junction_visitor.hpp | 12 +- libs/routing/latlon_with_altitude.cpp | 4 +- libs/routing/latlon_with_altitude.hpp | 5 +- libs/routing/leaps_graph.cpp | 9 +- libs/routing/leaps_graph.hpp | 6 +- libs/routing/leaps_postprocessor.cpp | 62 +- libs/routing/loaded_path_segment.hpp | 10 +- libs/routing/maxspeeds.cpp | 10 +- libs/routing/maxspeeds.hpp | 3 +- libs/routing/maxspeeds_serialization.cpp | 4 +- libs/routing/maxspeeds_serialization.hpp | 27 +- libs/routing/mwm_hierarchy_handler.cpp | 35 +- libs/routing/mwm_hierarchy_handler.hpp | 3 +- libs/routing/nearest_edge_finder.cpp | 23 +- libs/routing/nearest_edge_finder.hpp | 2 +- libs/routing/opening_hours_serdes.cpp | 81 +- libs/routing/opening_hours_serdes.hpp | 45 +- libs/routing/pedestrian_directions.cpp | 14 +- libs/routing/pedestrian_directions.hpp | 4 +- libs/routing/position_accumulator.cpp | 5 +- libs/routing/position_accumulator.hpp | 2 +- libs/routing/regions_decl.hpp | 2 +- libs/routing/regions_router.cpp | 38 +- libs/routing/regions_router.hpp | 9 +- libs/routing/regions_sparse_graph.cpp | 48 +- libs/routing/regions_sparse_graph.hpp | 7 +- libs/routing/restriction_loader.cpp | 62 +- libs/routing/restriction_loader.hpp | 6 +- libs/routing/restrictions_serialization.cpp | 8 +- libs/routing/restrictions_serialization.hpp | 61 +- libs/routing/road_access.cpp | 31 +- libs/routing/road_access.hpp | 38 +- libs/routing/road_access_serialization.cpp | 1 - libs/routing/road_access_serialization.hpp | 75 +- libs/routing/road_graph.cpp | 101 +- libs/routing/road_graph.hpp | 112 +- libs/routing/road_index.hpp | 2 - libs/routing/road_point.hpp | 10 +- libs/routing/route.cpp | 56 +- libs/routing/route.hpp | 90 +- libs/routing/route_point.hpp | 2 +- libs/routing/route_weight.cpp | 30 +- libs/routing/route_weight.hpp | 13 +- libs/routing/router.cpp | 9 +- libs/routing/router.hpp | 12 +- libs/routing/router_delegate.hpp | 2 +- .../routing/routes_builder/routes_builder.cpp | 55 +- .../routing/routes_builder/routes_builder.hpp | 10 +- .../routes_builder_tool.cpp | 45 +- .../routes_builder_tool/utils.cpp | 29 +- .../routes_builder_tool/utils.hpp | 20 +- .../bicycle_routing_tests.cpp | 6 +- .../routing_benchmarks/car_routing_tests.cpp | 5 +- libs/routing/routing_benchmarks/helpers.cpp | 33 +- libs/routing/routing_benchmarks/helpers.hpp | 7 +- .../pedestrian_routing_tests.cpp | 38 +- libs/routing/routing_callbacks.hpp | 20 +- .../routing_consistency_tests.cpp | 22 +- libs/routing/routing_helpers.cpp | 23 +- libs/routing/routing_helpers.hpp | 8 +- .../absent_regions_finder_tests.cpp | 108 +- .../bicycle_route_test.cpp | 238 +- .../bicycle_turn_test.cpp | 83 +- .../concurrent_feature_parsing_test.cpp | 6 +- .../cross_country_routing_tests.cpp | 42 +- .../get_altitude_test.cpp | 6 +- .../guides_tests.cpp | 18 +- .../pedestrian_route_test.cpp | 478 +- .../road_graph_tests.cpp | 5 +- .../roundabouts_tests.cpp | 15 +- .../routing_integration_tests/route_test.cpp | 571 +- .../routing_test_tools.cpp | 94 +- .../routing_test_tools.hpp | 85 +- .../small_routes.cpp | 21 +- .../speed_camera_notifications_tests.cpp | 64 +- .../street_names_test.cpp | 9 +- .../transit_route_test.cpp | 79 +- .../routing_integration_tests/turn_test.cpp | 611 +- libs/routing/routing_options.cpp | 35 +- libs/routing/routing_options.hpp | 10 +- libs/routing/routing_quality/api/api.cpp | 4 +- .../routing_quality/api/google/google_api.cpp | 12 +- .../routing_quality/api/google/google_api.hpp | 2 +- .../routing_quality/api/google/types.cpp | 2 +- .../routing_quality/api/google/types.hpp | 12 +- .../routing_quality/api/mapbox/mapbox_api.cpp | 9 +- .../routing_quality/api/mapbox/mapbox_api.hpp | 1 - .../routing_quality/api/mapbox/types.hpp | 4 +- .../routing_quality_tests/barriers_tests.cpp | 4 +- .../bigger_roads_tests.cpp | 17 +- .../routing_quality_tests/ferry_tests.cpp | 2 +- .../passby_roads_tests.cpp | 10 +- .../routing_quality_tests/waypoints_tests.cpp | 4 +- .../routing_quality_tool/benchmark_stat.cpp | 71 +- .../routing_quality_tool/benchmark_stat.hpp | 7 +- .../error_type_counter.cpp | 6 +- .../error_type_counter.hpp | 6 +- .../routing_quality_tool.cpp | 40 +- .../routing_quality_tool/utils.cpp | 125 +- .../routing_quality_tool/utils.hpp | 27 +- libs/routing/routing_quality/waypoints.cpp | 12 +- libs/routing/routing_quality/waypoints.hpp | 9 +- libs/routing/routing_result_graph.hpp | 2 +- libs/routing/routing_session.cpp | 79 +- libs/routing/routing_session.hpp | 26 +- libs/routing/routing_settings.cpp | 19 +- libs/routing/routing_settings.hpp | 10 +- .../routing_tests/applying_traffic_test.cpp | 57 +- .../routing_tests/astar_algorithm_test.cpp | 17 +- .../routing_tests/astar_progress_test.cpp | 6 +- .../routing_tests/astar_router_test.cpp | 229 +- .../routing_tests/async_router_test.cpp | 13 +- libs/routing/routing_tests/bfs_tests.cpp | 48 +- .../checkpoint_predictor_test.cpp | 16 +- libs/routing/routing_tests/coding_test.cpp | 46 +- .../cross_border_graph_tests.cpp | 15 +- .../cross_mwm_connector_test.cpp | 72 +- .../cumulative_restriction_test.cpp | 172 +- .../routing/routing_tests/fake_graph_test.cpp | 38 +- .../routing_tests/followed_polyline_test.cpp | 16 +- libs/routing/routing_tests/guides_tests.cpp | 3 +- .../routing_tests/index_graph_test.cpp | 241 +- .../routing_tests/index_graph_tools.cpp | 144 +- .../routing_tests/index_graph_tools.hpp | 77 +- .../routing/routing_tests/maxspeeds_tests.cpp | 25 +- .../routing_tests/mwm_hierarchy_test.cpp | 37 +- .../nearest_edge_finder_tests.cpp | 7 +- .../opening_hours_serdes_tests.cpp | 20 +- .../position_accumulator_tests.cpp | 18 +- .../routing_tests/restriction_test.cpp | 439 +- .../routing_tests/road_access_test.cpp | 424 +- .../routing_tests/road_graph_builder.cpp | 17 +- .../routing_tests/road_graph_builder.hpp | 6 +- .../road_graph_nearest_edges_test.cpp | 3 +- libs/routing/routing_tests/route_tests.cpp | 106 +- .../routing_tests/routing_algorithm.cpp | 47 +- .../routing_tests/routing_algorithm.hpp | 14 +- .../routing_tests/routing_helpers_tests.cpp | 43 +- .../routing_tests/routing_options_tests.cpp | 21 +- .../routing_tests/routing_session_test.cpp | 290 +- .../routing_tests/speed_cameras_tests.cpp | 4 +- libs/routing/routing_tests/tools.cpp | 6 +- libs/routing/routing_tests/tools.hpp | 3 +- .../routing_tests/turns_generator_test.cpp | 188 +- .../routing_tests/turns_sound_test.cpp | 133 +- .../routing_tests/turns_tts_text_tests.cpp | 85 +- .../routing_tests/uturn_restriction_tests.cpp | 53 +- .../routing_tests/world_graph_builder.cpp | 18 +- .../routing_tests/world_graph_builder.hpp | 1 - libs/routing/ruler_router.cpp | 31 +- libs/routing/ruler_router.hpp | 13 +- libs/routing/segment.cpp | 10 +- libs/routing/segment.hpp | 20 +- libs/routing/segmented_route.cpp | 7 +- libs/routing/segmented_route.hpp | 5 +- libs/routing/single_vehicle_world_graph.cpp | 76 +- libs/routing/single_vehicle_world_graph.hpp | 36 +- libs/routing/speed_camera.hpp | 4 +- libs/routing/speed_camera_manager.cpp | 44 +- libs/routing/speed_camera_manager.hpp | 15 +- libs/routing/speed_camera_prohibition.cpp | 14 +- libs/routing/speed_camera_prohibition.hpp | 2 +- libs/routing/speed_camera_ser_des.cpp | 3 +- libs/routing/speed_camera_ser_des.hpp | 29 +- libs/routing/traffic_stash.cpp | 6 +- libs/routing/traffic_stash.hpp | 4 +- libs/routing/transit_graph.cpp | 209 +- libs/routing/transit_graph.hpp | 33 +- libs/routing/transit_graph_loader.cpp | 9 +- libs/routing/transit_graph_loader.hpp | 3 +- libs/routing/transit_info.hpp | 22 +- libs/routing/transit_world_graph.cpp | 53 +- libs/routing/transit_world_graph.hpp | 28 +- libs/routing/turn_candidate.hpp | 16 +- libs/routing/turns.cpp | 179 +- libs/routing/turns.hpp | 67 +- libs/routing/turns_generator.cpp | 69 +- libs/routing/turns_generator.hpp | 28 +- libs/routing/turns_generator_utils.cpp | 87 +- libs/routing/turns_generator_utils.hpp | 13 +- libs/routing/turns_notification_manager.cpp | 57 +- libs/routing/turns_notification_manager.hpp | 7 +- libs/routing/turns_sound_settings.cpp | 68 +- libs/routing/turns_sound_settings.hpp | 35 +- libs/routing/turns_tts_text.cpp | 81 +- libs/routing/turns_tts_text.hpp | 1 - libs/routing/turns_tts_text_i18n.cpp | 3 +- libs/routing/vehicle_mask.cpp | 5 +- libs/routing/world_graph.cpp | 14 +- libs/routing/world_graph.hpp | 26 +- libs/routing_common/bicycle_model.cpp | 52 +- libs/routing_common/car_model.cpp | 70 +- libs/routing_common/car_model_coefs.hpp | 12 +- libs/routing_common/maxspeed_conversion.cpp | 27 +- libs/routing_common/maxspeed_conversion.hpp | 16 +- libs/routing_common/num_mwm_id.hpp | 12 +- libs/routing_common/pedestrian_model.cpp | 55 +- libs/routing_common/pedestrian_model.hpp | 3 +- .../bicycle_model_test.cpp | 7 +- .../vehicle_model_for_country_test.cpp | 18 +- .../vehicle_model_test.cpp | 149 +- libs/routing_common/vehicle_model.cpp | 20 +- libs/routing_common/vehicle_model.hpp | 86 +- libs/search/algos.hpp | 106 +- libs/search/approximate_string_match.hpp | 9 +- libs/search/base/mem_search_index.hpp | 17 +- libs/search/base/text_index/mem.hpp | 6 +- libs/search/base/text_index/merger.cpp | 13 +- libs/search/base/text_index/merger.hpp | 3 +- libs/search/base/text_index/postings.hpp | 6 +- libs/search/base/text_index/reader.hpp | 4 +- libs/search/base/text_index/text_index.cpp | 5 +- libs/search/bookmarks/data.hpp | 13 +- libs/search/bookmarks/processor.cpp | 46 +- libs/search/bookmarks/processor.hpp | 6 +- libs/search/categories_cache.cpp | 29 +- libs/search/categories_cache.hpp | 3 +- libs/search/cbv.cpp | 5 +- libs/search/cities_boundaries_table.cpp | 3 +- libs/search/cities_boundaries_table.hpp | 12 +- libs/search/city_finder.cpp | 8 +- libs/search/cuisine_filter.cpp | 32 +- libs/search/cuisine_filter.hpp | 6 +- libs/search/displayed_categories.cpp | 34 +- libs/search/displayed_categories.hpp | 2 +- libs/search/doc_vec.cpp | 36 +- libs/search/doc_vec.hpp | 12 +- libs/search/downloader_search_callback.cpp | 22 +- libs/search/downloader_search_callback.hpp | 3 +- libs/search/dummy_rank_table.cpp | 5 +- libs/search/editor_delegate.cpp | 3 +- libs/search/editor_delegate.hpp | 6 +- libs/search/emitter.hpp | 4 +- libs/search/engine.cpp | 79 +- libs/search/engine.hpp | 14 +- libs/search/feature_offset_match.hpp | 48 +- libs/search/features_filter.cpp | 15 +- libs/search/features_layer.cpp | 15 +- libs/search/features_layer.hpp | 2 +- libs/search/features_layer_matcher.cpp | 20 +- libs/search/features_layer_matcher.hpp | 122 +- libs/search/features_layer_path_finder.cpp | 26 +- libs/search/features_layer_path_finder.hpp | 13 +- libs/search/filtering_params.hpp | 2 +- libs/search/geocoder.cpp | 289 +- libs/search/geocoder.hpp | 31 +- libs/search/geocoder_context.cpp | 7 - libs/search/geocoder_locality.hpp | 13 +- libs/search/geometry_cache.cpp | 37 +- libs/search/geometry_cache.hpp | 3 +- libs/search/highlighting.cpp | 20 +- libs/search/highlighting.hpp | 3 +- libs/search/house_detector.cpp | 116 +- libs/search/house_detector.hpp | 16 +- libs/search/house_numbers_matcher.cpp | 152 +- libs/search/house_numbers_matcher.hpp | 8 +- libs/search/house_to_street_table.cpp | 7 +- libs/search/idf_map.cpp | 3 +- libs/search/intermediate_result.cpp | 69 +- libs/search/intermediate_result.hpp | 14 +- libs/search/intersection_result.cpp | 4 +- libs/search/intersection_result.hpp | 10 +- libs/search/interval_set.hpp | 3 +- libs/search/keyword_lang_matcher.cpp | 21 +- libs/search/keyword_lang_matcher.hpp | 7 +- libs/search/keyword_matcher.cpp | 16 +- libs/search/latlon_match.cpp | 42 +- libs/search/lazy_centers_table.cpp | 13 +- libs/search/locality_finder.cpp | 56 +- libs/search/locality_finder.hpp | 11 +- libs/search/locality_scorer.cpp | 59 +- libs/search/locality_scorer.hpp | 4 +- libs/search/model.cpp | 51 +- libs/search/model.hpp | 5 +- libs/search/mwm_context.cpp | 10 +- libs/search/mwm_context.hpp | 36 +- libs/search/nested_rects_cache.cpp | 12 +- libs/search/point_rect_matcher.hpp | 14 +- libs/search/postcode_points.cpp | 35 +- libs/search/postcode_points.hpp | 3 +- libs/search/pre_ranker.cpp | 39 +- libs/search/pre_ranker.hpp | 9 +- libs/search/pre_ranking_info.cpp | 13 +- libs/search/pre_ranking_info.hpp | 5 +- libs/search/processor.cpp | 104 +- libs/search/processor.hpp | 10 +- libs/search/projection_on_street.cpp | 14 +- libs/search/pysearch/bindings.cpp | 9 +- libs/search/query_params.cpp | 45 +- libs/search/query_params.hpp | 1 - libs/search/query_saver.cpp | 23 +- libs/search/ranker.cpp | 149 +- libs/search/ranker.hpp | 11 +- libs/search/ranking_info.cpp | 177 +- libs/search/ranking_info.hpp | 5 +- libs/search/ranking_utils.cpp | 34 +- libs/search/ranking_utils.hpp | 61 +- libs/search/region_address_getter.cpp | 13 +- libs/search/region_info_getter.cpp | 13 +- libs/search/result.cpp | 13 +- libs/search/result.hpp | 17 +- libs/search/retrieval.cpp | 49 +- libs/search/retrieval.hpp | 26 +- libs/search/reverse_geocoder.cpp | 95 +- libs/search/reverse_geocoder.hpp | 55 +- libs/search/search_index_values.hpp | 15 +- .../downloader_search_test.cpp | 22 +- .../generate_tests.cpp | 6 +- .../postcode_points_tests.cpp | 106 +- .../pre_ranker_test.cpp | 18 +- .../processor_test.cpp | 353 +- .../search_integration_tests/ranker_test.cpp | 35 +- .../search_edited_features_test.cpp | 22 +- .../search_integration_tests/smoke_test.cpp | 39 +- .../search_integration_tests/tracer_tests.cpp | 21 +- .../search_integration_tests/utils_test.cpp | 9 +- .../assessment_tool/context.cpp | 35 +- .../assessment_tool/context.hpp | 20 +- .../search_quality/assessment_tool/edits.cpp | 41 +- .../search_quality/assessment_tool/edits.hpp | 19 +- .../assessment_tool/feature_info_dialog.cpp | 3 +- .../assessment_tool/feature_info_dialog.hpp | 6 +- .../assessment_tool/main_model.cpp | 67 +- .../assessment_tool/main_view.cpp | 110 +- .../assessment_tool/main_view.hpp | 14 +- .../assessment_tool/result_view.cpp | 15 +- .../assessment_tool/result_view.hpp | 6 +- .../assessment_tool/results_view.cpp | 21 +- .../assessment_tool/sample_view.cpp | 32 +- .../assessment_tool/sample_view.hpp | 3 +- .../assessment_tool/samples_view.cpp | 7 +- .../assessment_tool/search_request_runner.cpp | 28 +- .../assessment_tool/search_request_runner.hpp | 3 +- .../search_quality/assessment_tool/view.hpp | 11 +- .../features_collector_tool.cpp | 12 +- libs/search/search_quality/helpers.cpp | 21 +- libs/search/search_quality/helpers.hpp | 5 +- libs/search/search_quality/helpers_json.hpp | 3 +- libs/search/search_quality/matcher.cpp | 14 +- libs/search/search_quality/matcher.hpp | 7 +- libs/search/search_quality/sample.cpp | 10 +- libs/search/search_quality/sample.hpp | 6 +- .../samples_generation_tool.cpp | 73 +- .../search_quality_tests/benchmark_tests.cpp | 4 +- .../search_quality_tests/real_mwm_tests.cpp | 97 +- .../search_quality_tests/sample_test.cpp | 5 +- .../search_quality_tool.cpp | 61 +- libs/search/search_tests/algos_tests.cpp | 10 +- .../bookmarks_processor_tests.cpp | 27 +- .../feature_offset_match_tests.cpp | 4 +- .../search_tests/highlighting_tests.cpp | 6 +- .../search_tests/house_detector_tests.cpp | 34 +- .../house_numbers_matcher_test.cpp | 5 +- .../search/search_tests/interval_set_test.cpp | 3 +- .../keyword_lang_matcher_test.cpp | 2 +- .../search_tests/keyword_matcher_test.cpp | 175 +- .../search/search_tests/latlon_match_test.cpp | 6 +- .../search_tests/locality_finder_test.cpp | 44 +- .../search_tests/locality_scorer_test.cpp | 35 +- .../search_tests/locality_selector_test.cpp | 10 +- .../search_tests/mem_search_index_tests.cpp | 6 +- .../search_tests/point_rect_matcher_tests.cpp | 41 +- .../search/search_tests/query_saver_tests.cpp | 2 +- libs/search/search_tests/ranking_tests.cpp | 19 +- libs/search/search_tests/results_tests.cpp | 4 +- .../search_tests/segment_tree_tests.cpp | 10 +- .../search/search_tests/string_match_test.cpp | 32 +- libs/search/search_tests/suggest_tests.cpp | 7 +- libs/search/search_tests/text_index_tests.cpp | 9 +- .../utm_mgrs_coords_match_test.cpp | 2 +- libs/search/search_tests_support/helpers.cpp | 18 +- libs/search/search_tests_support/helpers.hpp | 24 +- .../test_results_matching.cpp | 37 +- .../test_results_matching.hpp | 14 +- .../test_search_engine.cpp | 8 +- .../test_search_request.cpp | 12 +- .../test_search_request.hpp | 9 +- .../test_with_custom_mwms.hpp | 5 +- libs/search/search_trie.hpp | 4 +- libs/search/segment_tree.cpp | 3 +- libs/search/segment_tree.hpp | 5 +- libs/search/stats_cache.hpp | 13 +- libs/search/street_vicinity_loader.cpp | 30 +- libs/search/street_vicinity_loader.hpp | 2 +- libs/search/streets_matcher.cpp | 38 +- libs/search/streets_matcher.hpp | 8 +- libs/search/string_utils.cpp | 2 +- libs/search/string_utils.hpp | 2 +- libs/search/suggest.hpp | 7 +- libs/search/token_range.hpp | 8 +- libs/search/token_slice.cpp | 14 +- libs/search/token_slice.hpp | 5 +- libs/search/tracer.cpp | 16 +- libs/search/tracer.hpp | 10 +- libs/search/types_skipper.cpp | 15 +- libs/search/types_skipper.hpp | 1 - libs/search/utils.cpp | 16 +- libs/search/utils.hpp | 18 +- libs/search/utm_mgrs_coords_match.cpp | 13 +- libs/shaders/gl_program_info.hpp | 6 +- libs/shaders/gl_program_params.cpp | 61 +- libs/shaders/gl_program_params.hpp | 44 +- libs/shaders/gl_program_pool.cpp | 15 +- libs/shaders/gl_program_pool.hpp | 5 +- libs/shaders/metal_program_pool.hpp | 14 +- libs/shaders/program_manager.cpp | 4 +- libs/shaders/program_manager.hpp | 7 +- libs/shaders/program_params.hpp | 167 +- libs/shaders/programs.hpp | 3 +- .../shaders_tests/gl_program_params_tests.cpp | 9 +- .../gl_shaders_desktop_compile_tests.cpp | 2 - .../gl_shaders_mobile_compile_test.cpp | 487 +- libs/shaders/vulkan_program_params.cpp | 66 +- libs/shaders/vulkan_program_params.hpp | 10 +- libs/shaders/vulkan_program_pool.cpp | 50 +- libs/std/target_os.hpp | 66 +- libs/std/windows.hpp | 6 +- .../downloader_queue.hpp | 34 +- libs/storage/country.hpp | 6 +- libs/storage/country_decl.cpp | 2 +- libs/storage/country_decl.hpp | 11 +- libs/storage/country_info_getter.cpp | 73 +- libs/storage/country_info_reader_light.cpp | 5 +- libs/storage/country_parent_getter.cpp | 3 +- libs/storage/country_parent_getter.hpp | 3 +- libs/storage/country_tree.cpp | 78 +- libs/storage/country_tree.hpp | 15 +- libs/storage/country_tree_helpers.cpp | 8 +- libs/storage/diff_scheme/apply_diff.cpp | 38 +- libs/storage/diff_scheme/apply_diff.hpp | 3 +- .../diff_scheme/diff_scheme_loader.cpp | 9 +- .../storage/diff_scheme/diffs_data_source.cpp | 4 +- libs/storage/downloader.hpp | 2 +- libs/storage/downloader_queue_interface.hpp | 2 +- libs/storage/downloader_queue_universal.cpp | 6 +- libs/storage/downloader_search_params.hpp | 6 +- libs/storage/downloading_policy.cpp | 8 +- libs/storage/downloading_policy.hpp | 8 +- libs/storage/http_map_files_downloader.cpp | 9 +- libs/storage/http_map_files_downloader.hpp | 3 +- libs/storage/map_files_downloader.cpp | 39 +- libs/storage/map_files_downloader.hpp | 4 +- .../map_files_downloader_with_ping.cpp | 2 +- libs/storage/pinger.cpp | 20 +- libs/storage/queued_country.cpp | 5 +- libs/storage/queued_country.hpp | 6 +- libs/storage/routing_helpers.cpp | 14 +- libs/storage/routing_helpers.hpp | 6 +- libs/storage/storage.cpp | 324 +- libs/storage/storage.hpp | 74 +- libs/storage/storage_defines.cpp | 107 +- libs/storage/storage_defines.hpp | 18 +- libs/storage/storage_helpers.cpp | 22 +- libs/storage/storage_helpers.hpp | 3 +- .../download_calc_size_test.cpp | 14 +- .../lightweight_matching_tests.cpp | 8 +- .../storage_3levels_tests.cpp | 13 +- .../storage_downloading_tests.cpp | 46 +- .../storage_group_download_tests.cpp | 37 +- .../storage_http_tests.cpp | 45 +- .../storage_update_tests.cpp | 11 +- .../storage/storage_tests/countries_tests.cpp | 2 +- .../country_info_getter_tests.cpp | 62 +- .../storage_tests/downloader_tests.cpp | 6 +- .../fake_map_files_downloader.cpp | 8 +- .../fake_map_files_downloader.hpp | 3 +- libs/storage/storage_tests/helpers.hpp | 2 +- libs/storage/storage_tests/storage_tests.cpp | 210 +- libs/storage/storage_tests/task_runner.cpp | 5 +- libs/testing/benchmark.hpp | 10 +- libs/testing/testing.hpp | 339 +- libs/testing/testingmain.cpp | 56 +- libs/testing/testregister.hpp | 5 +- libs/tracking/archival_file.cpp | 18 +- libs/tracking/archival_manager.cpp | 22 +- libs/tracking/archival_reporter.cpp | 3 +- libs/tracking/archive.cpp | 26 +- libs/tracking/archive.hpp | 36 +- libs/tracking/connection.cpp | 11 +- libs/tracking/connection.hpp | 8 +- libs/tracking/protocol.cpp | 19 +- libs/tracking/pytracking/bindings.cpp | 14 +- libs/tracking/reporter.cpp | 26 +- libs/tracking/reporter.hpp | 2 +- .../tracking_fuzz_tests.cpp | 4 +- .../archival_reporter_tests.cpp | 3 +- .../tracking/tracking_tests/protocol_test.cpp | 3 +- .../tracking/tracking_tests/reporter_test.cpp | 14 +- libs/traffic/pytraffic/bindings.cpp | 21 +- libs/traffic/speed_groups.cpp | 2 - libs/traffic/traffic_cache.hpp | 2 +- libs/traffic/traffic_info.cpp | 53 +- libs/traffic/traffic_info.hpp | 8 +- .../traffic_tests/traffic_info_test.cpp | 16 +- libs/transit/experimental/transit_data.cpp | 52 +- .../transit_types_experimental.cpp | 418 +- .../transit_types_experimental.hpp | 55 +- libs/transit/transit_display_info.hpp | 6 +- libs/transit/transit_entities.hpp | 66 +- .../parse_transit_from_json_tests.cpp | 54 +- .../transit_serdes_tests.cpp | 116 +- libs/transit/transit_graph_data.cpp | 77 +- libs/transit/transit_graph_data.hpp | 12 +- libs/transit/transit_schedule.cpp | 65 +- libs/transit/transit_schedule.hpp | 33 +- libs/transit/transit_serdes.hpp | 45 +- .../transit_tests/transit_graph_test.cpp | 509 +- .../transit_json_parsing_test.cpp | 69 +- .../transit_tests/transit_schedule_tests.cpp | 92 +- libs/transit/transit_tests/transit_test.cpp | 77 +- libs/transit/transit_tests/transit_tools.hpp | 40 +- libs/transit/transit_types.cpp | 133 +- libs/transit/transit_types.hpp | 99 +- libs/transit/transit_version.cpp | 3 +- libs/transit/transit_version.hpp | 3 +- libs/transit/world_feed/color_picker.cpp | 7 +- libs/transit/world_feed/date_time_helpers.cpp | 41 +- libs/transit/world_feed/date_time_helpers.hpp | 6 +- libs/transit/world_feed/feed_helpers.cpp | 110 +- libs/transit/world_feed/feed_helpers.hpp | 22 +- .../gtfs_converter/gtfs_converter.cpp | 30 +- libs/transit/world_feed/subway_converter.cpp | 144 +- libs/transit/world_feed/subway_converter.hpp | 12 +- libs/transit/world_feed/world_feed.cpp | 275 +- libs/transit/world_feed/world_feed.hpp | 17 +- .../subway_converter_tests.cpp | 16 +- .../world_feed_tests/world_feed_tests.cpp | 129 +- qt/about.cpp | 6 +- qt/about.hpp | 1 + qt/bookmark_dialog.cpp | 14 +- qt/build_style/build_common.cpp | 21 +- qt/build_style/build_drules.cpp | 17 +- qt/build_style/build_phone_pack.cpp | 9 +- qt/build_style/build_skins.cpp | 74 +- qt/build_style/build_statistics.cpp | 12 +- qt/build_style/build_style.cpp | 20 +- qt/build_style/run_tests.cpp | 8 +- qt/create_feature_dialog.cpp | 3 +- qt/create_feature_dialog.hpp | 1 + qt/draw_widget.cpp | 170 +- qt/draw_widget.hpp | 6 +- qt/editor_dialog.cpp | 55 +- qt/editor_dialog.hpp | 1 + qt/info_dialog.cpp | 94 +- qt/info_dialog.hpp | 28 +- qt/main.cpp | 80 +- qt/mainwindow.cpp | 154 +- qt/mainwindow.hpp | 31 +- qt/mwms_borders_selection.cpp | 8 +- qt/osm_auth_dialog.cpp | 2 +- qt/osm_auth_dialog.hpp | 3 +- qt/place_page_dialog_common.cpp | 28 +- qt/place_page_dialog_common.hpp | 5 +- qt/place_page_dialog_developer.cpp | 9 +- qt/place_page_dialog_developer.hpp | 1 + qt/place_page_dialog_user.cpp | 47 +- qt/place_page_dialog_user.hpp | 1 + qt/popup_menu_holder.cpp | 7 +- qt/popup_menu_holder.hpp | 24 +- qt/preferences_dialog.cpp | 339 +- qt/preferences_dialog.hpp | 16 +- qt/qt_common/helpers.cpp | 27 +- qt/qt_common/helpers.hpp | 2 +- qt/qt_common/map_widget.cpp | 115 +- qt/qt_common/map_widget.hpp | 6 +- qt/qt_common/proxy_style.cpp | 83 +- qt/qt_common/proxy_style.hpp | 32 +- qt/qt_common/qtoglcontext.cpp | 19 +- qt/qt_common/qtoglcontext.hpp | 2 +- qt/qt_common/scale_slider.cpp | 10 +- qt/qt_common/spinner.cpp | 3 +- qt/qt_common/text_dialog.cpp | 11 +- qt/qt_common/text_dialog.hpp | 1 + qt/routing_settings_dialog.cpp | 6 +- qt/routing_turns_visualizer.cpp | 7 +- qt/ruler.cpp | 18 +- qt/screenshoter.cpp | 55 +- qt/screenshoter.hpp | 3 +- qt/search_panel.cpp | 71 +- qt/selection.hpp | 2 +- qt/update_dialog.cpp | 848 +- qt/update_dialog.hpp | 91 +- tools/feature_list/feature_list.cpp | 124 +- tools/openlr/cache_line_size.hpp | 2 +- tools/openlr/candidate_paths_getter.cpp | 53 +- tools/openlr/candidate_paths_getter.hpp | 31 +- tools/openlr/candidate_points_getter.cpp | 26 +- tools/openlr/candidate_points_getter.hpp | 3 +- tools/openlr/decoded_path.cpp | 23 +- tools/openlr/decoded_path.hpp | 10 +- tools/openlr/graph.cpp | 18 +- tools/openlr/graph.hpp | 1 + tools/openlr/helpers.cpp | 56 +- tools/openlr/helpers.hpp | 18 +- tools/openlr/openlr_decoder.cpp | 109 +- tools/openlr/openlr_decoder.hpp | 9 +- .../openlr_assessment_tool/mainwindow.cpp | 141 +- .../openlr_assessment_tool/mainwindow.hpp | 4 +- .../openlr_assessment_tool/map_widget.cpp | 5 +- .../openlr_assessment_tool/map_widget.hpp | 5 +- .../points_controller_delegate_base.hpp | 6 +- .../segment_correspondence.cpp | 8 +- .../segment_correspondence.hpp | 9 +- .../openlr_assessment_tool/traffic_mode.cpp | 82 +- .../openlr_assessment_tool/traffic_mode.hpp | 24 +- .../openlr_assessment_tool/traffic_panel.cpp | 18 +- .../openlr_assessment_tool/traffic_panel.hpp | 3 +- .../trafficmodeinitdlg.cpp | 12 +- tools/openlr/openlr_model_xml.cpp | 38 +- tools/openlr/openlr_stat/openlr_stat.cpp | 35 +- .../openlr/openlr_tests/decoded_path_test.cpp | 42 +- tools/openlr/paths_connector.cpp | 40 +- tools/openlr/paths_connector.hpp | 12 +- tools/openlr/road_info_getter.cpp | 10 +- tools/openlr/road_info_getter.hpp | 3 +- tools/openlr/router.cpp | 181 +- tools/openlr/router.hpp | 35 +- tools/openlr/score_candidate_paths_getter.cpp | 82 +- tools/openlr/score_candidate_paths_getter.hpp | 47 +- .../openlr/score_candidate_points_getter.cpp | 29 +- .../openlr/score_candidate_points_getter.hpp | 6 +- tools/openlr/score_paths_connector.cpp | 88 +- tools/openlr/score_paths_connector.hpp | 11 +- tools/openlr/score_types.hpp | 10 +- tools/openlr/stats.hpp | 2 +- tools/openlr/way_point.hpp | 3 +- tools/poly_borders/borders_data.cpp | 42 +- tools/poly_borders/borders_data.hpp | 11 +- tools/poly_borders/help_structures.cpp | 5 +- tools/poly_borders/help_structures.hpp | 22 +- .../poly_borders_tests/mark_points_tests.cpp | 91 +- .../remove_empty_spaces_tests.cpp | 51 +- .../poly_borders/poly_borders_tests/tools.cpp | 8 +- .../poly_borders/poly_borders_tests/tools.hpp | 7 +- .../poly_borders_tool/poly_borders_tool.cpp | 17 +- tools/skin_generator/generator.cpp | 35 +- tools/skin_generator/generator.hpp | 13 +- tools/skin_generator/main.cpp | 11 +- tools/topography_generator/filters_impl.hpp | 36 +- tools/topography_generator/generator.cpp | 146 +- tools/topography_generator/generator.hpp | 30 +- .../topography_generator/isolines_profile.hpp | 22 +- tools/topography_generator/main.cpp | 95 +- .../marching_squares/contours_builder.cpp | 6 - .../marching_squares/contours_builder.hpp | 8 +- .../marching_squares/marching_squares.hpp | 24 +- .../marching_squares/square.hpp | 81 +- tools/topography_generator/tile_filter.hpp | 21 +- tools/topography_generator/utils/contours.hpp | 11 +- .../utils/contours_serdes.hpp | 15 +- tools/track_analyzing/log_parser.cpp | 31 +- tools/track_analyzing/log_parser.hpp | 4 +- tools/track_analyzing/serialization.hpp | 13 +- tools/track_analyzing/temporary_file.cpp | 3 +- tools/track_analyzing/temporary_file.hpp | 5 +- tools/track_analyzing/track.cpp | 9 +- tools/track_analyzing/track.hpp | 9 +- .../track_analyzer/cmd_balance_csv.cpp | 53 +- .../track_analyzer/cmd_balance_csv.hpp | 22 +- .../track_analyzer/cmd_cpp_track.cpp | 11 +- .../track_analyzer/cmd_gpx.cpp | 5 +- .../track_analyzer/cmd_match.cpp | 25 +- .../track_analyzer/cmd_table.cpp | 98 +- .../track_analyzer/cmd_track.cpp | 23 +- .../track_analyzer/cmd_tracks.cpp | 48 +- .../track_analyzer/crossroad_checker.cpp | 28 +- .../track_analyzer/crossroad_checker.hpp | 3 +- .../track_analyzer/track_analyzer.cpp | 56 +- .../track_analyzing/track_analyzer/utils.cpp | 40 +- .../track_analyzing/track_analyzer/utils.hpp | 13 +- .../track_analyzing_tests/balance_tests.cpp | 43 +- .../statistics_tests.cpp | 40 +- .../track_archive_reader_tests.cpp | 24 +- .../track_analyzing/track_archive_reader.cpp | 26 +- tools/track_analyzing/track_matcher.cpp | 62 +- tools/track_analyzing/track_matcher.hpp | 16 +- tools/track_analyzing/utils.cpp | 28 +- tools/track_analyzing/utils.hpp | 15 +- .../track_generator/track_generator_tool.cpp | 20 +- 2169 files changed, 56441 insertions(+), 64188 deletions(-) mode change 100755 => 100644 libs/drape/vulkan/vulkan_layers.cpp mode change 100755 => 100644 libs/drape/vulkan/vulkan_layers.hpp mode change 100755 => 100644 libs/drape_frontend/frontend_renderer.cpp mode change 100755 => 100644 libs/drape_frontend/frontend_renderer.hpp mode change 100755 => 100644 libs/drape_frontend/read_manager.cpp mode change 100755 => 100644 libs/drape_frontend/read_manager.hpp mode change 100755 => 100644 libs/drape_frontend/render_group.cpp mode change 100755 => 100644 libs/drape_frontend/render_group.hpp mode change 100755 => 100644 libs/drape_frontend/requested_tiles.cpp mode change 100755 => 100644 libs/drape_frontend/requested_tiles.hpp mode change 100755 => 100644 libs/drape_frontend/tile_key.cpp mode change 100755 => 100644 libs/drape_frontend/tile_key.hpp mode change 100755 => 100644 libs/drape_frontend/tile_utils.cpp diff --git a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java index afbb787d5..55038a5ec 100644 --- a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java +++ b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java @@ -150,14 +150,12 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity switch (item.newStatus) { - case CountryItem.STATUS_DONE: - mAreResourcesDownloaded = true; - showMap(); - return; + case CountryItem.STATUS_DONE: + mAreResourcesDownloaded = true; + showMap(); + return; - case CountryItem.STATUS_FAILED: - MapManager.showError(DownloadResourcesLegacyActivity.this, item, null); - return; + case CountryItem.STATUS_FAILED: MapManager.showError(DownloadResourcesLegacyActivity.this, item, null); return; } } } diff --git a/android/app/src/main/java/app/organicmaps/MapFragment.java b/android/app/src/main/java/app/organicmaps/MapFragment.java index af1626859..b76d97292 100644 --- a/android/app/src/main/java/app/organicmaps/MapFragment.java +++ b/android/app/src/main/java/app/organicmaps/MapFragment.java @@ -163,24 +163,24 @@ public class MapFragment extends BaseMwmFragment implements View.OnTouchListener int pointerIndex = event.getActionIndex(); switch (action) { - case MotionEvent.ACTION_POINTER_UP -> action = Map.NATIVE_ACTION_UP; - case MotionEvent.ACTION_UP -> - { - action = Map.NATIVE_ACTION_UP; - pointerIndex = 0; - } - case MotionEvent.ACTION_POINTER_DOWN -> action = Map.NATIVE_ACTION_DOWN; - case MotionEvent.ACTION_DOWN -> - { - action = Map.NATIVE_ACTION_DOWN; - pointerIndex = 0; - } - case MotionEvent.ACTION_MOVE -> - { - action = Map.NATIVE_ACTION_MOVE; - pointerIndex = Map.INVALID_POINTER_MASK; - } - case MotionEvent.ACTION_CANCEL -> action = Map.NATIVE_ACTION_CANCEL; + case MotionEvent.ACTION_POINTER_UP -> action = Map.NATIVE_ACTION_UP; + case MotionEvent.ACTION_UP -> + { + action = Map.NATIVE_ACTION_UP; + pointerIndex = 0; + } + case MotionEvent.ACTION_POINTER_DOWN -> action = Map.NATIVE_ACTION_DOWN; + case MotionEvent.ACTION_DOWN -> + { + action = Map.NATIVE_ACTION_DOWN; + pointerIndex = 0; + } + case MotionEvent.ACTION_MOVE -> + { + action = Map.NATIVE_ACTION_MOVE; + pointerIndex = Map.INVALID_POINTER_MASK; + } + case MotionEvent.ACTION_CANCEL -> action = Map.NATIVE_ACTION_CANCEL; } Map.onTouch(action, event, pointerIndex); return true; diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java index 3e48cfd3a..9239c5f50 100644 --- a/android/app/src/main/java/app/organicmaps/MwmActivity.java +++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java @@ -683,29 +683,29 @@ public class MwmActivity extends BaseMwmFragmentActivity mPointChooser.findViewById(R.id.done).setOnClickListener(v -> { switch (ChoosePositionMode.get()) { - case Api: - final Intent apiResult = new Intent(); - final double[] center = Framework.nativeGetScreenRectCenter(); - apiResult.putExtra(Const.EXTRA_POINT_LAT, center[0]); - apiResult.putExtra(Const.EXTRA_POINT_LON, center[1]); - apiResult.putExtra(Const.EXTRA_ZOOM_LEVEL, Framework.nativeGetDrawScale()); - setResult(Activity.RESULT_OK, apiResult); - finish(); - break; - case Editor: - if (Framework.nativeIsDownloadedMapAtScreenCenter()) - startActivity(new Intent(MwmActivity.this, FeatureCategoryActivity.class)); - else - { - dismissAlertDialog(); - mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog) - .setTitle(R.string.message_invalid_feature_position) - .setPositiveButton(R.string.ok, null) - .setOnDismissListener(dialog -> mAlertDialog = null) - .show(); - } - break; - case None: throw new IllegalStateException("Unexpected Framework.nativeGetChoosePositionMode()"); + case Api: + final Intent apiResult = new Intent(); + final double[] center = Framework.nativeGetScreenRectCenter(); + apiResult.putExtra(Const.EXTRA_POINT_LAT, center[0]); + apiResult.putExtra(Const.EXTRA_POINT_LON, center[1]); + apiResult.putExtra(Const.EXTRA_ZOOM_LEVEL, Framework.nativeGetDrawScale()); + setResult(Activity.RESULT_OK, apiResult); + finish(); + break; + case Editor: + if (Framework.nativeIsDownloadedMapAtScreenCenter()) + startActivity(new Intent(MwmActivity.this, FeatureCategoryActivity.class)); + else + { + dismissAlertDialog(); + mAlertDialog = new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog) + .setTitle(R.string.message_invalid_feature_position) + .setPositiveButton(R.string.ok, null) + .setOnDismissListener(dialog -> mAlertDialog = null) + .show(); + } + break; + case None: throw new IllegalStateException("Unexpected Framework.nativeGetChoosePositionMode()"); } closePositionChooser(); }); @@ -972,24 +972,24 @@ public class MwmActivity extends BaseMwmFragmentActivity { switch (button) { - case zoomIn -> Map.zoomIn(); - case zoomOut -> Map.zoomOut(); - case myPosition -> - { - Logger.i(LOCATION_TAG, "The location button pressed"); - // Calls onMyPositionModeChanged(mode + 1). - LocationState.nativeSwitchToNextMode(); - } - case toggleMapLayer -> toggleMapLayerBottomSheet(); - case bookmarks -> showBookmarks(); - case search -> showSearch(""); - case menu -> - { - closeFloatingPanels(); - showBottomSheet(MAIN_MENU_ID); - } - case help -> showHelp(); - case trackRecordingStatus -> showTrackSaveDialog(); + case zoomIn -> Map.zoomIn(); + case zoomOut -> Map.zoomOut(); + case myPosition -> + { + Logger.i(LOCATION_TAG, "The location button pressed"); + // Calls onMyPositionModeChanged(mode + 1). + LocationState.nativeSwitchToNextMode(); + } + case toggleMapLayer -> toggleMapLayerBottomSheet(); + case bookmarks -> showBookmarks(); + case search -> showSearch(""); + case menu -> + { + closeFloatingPanels(); + showBottomSheet(MAIN_MENU_ID); + } + case help -> showHelp(); + case trackRecordingStatus -> showTrackSaveDialog(); } } @@ -2429,18 +2429,18 @@ public class MwmActivity extends BaseMwmFragmentActivity { switch (keyCode) { - case KeyEvent.KEYCODE_DPAD_DOWN: Map.zoomOut(); return true; - case KeyEvent.KEYCODE_DPAD_UP: Map.zoomIn(); return true; - case KeyEvent.KEYCODE_ESCAPE: - final Intent currIntent = getIntent(); - final String backUrl = Framework.nativeGetParsedBackUrl(); - if (TextUtils.isEmpty(backUrl) || (currIntent != null && Factory.isStartedForApiResult(currIntent))) - { - finish(); - return true; - } - return super.onKeyUp(keyCode, event); - default: return super.onKeyUp(keyCode, event); + case KeyEvent.KEYCODE_DPAD_DOWN: Map.zoomOut(); return true; + case KeyEvent.KEYCODE_DPAD_UP: Map.zoomIn(); return true; + case KeyEvent.KEYCODE_ESCAPE: + final Intent currIntent = getIntent(); + final String backUrl = Framework.nativeGetParsedBackUrl(); + if (TextUtils.isEmpty(backUrl) || (currIntent != null && Factory.isStartedForApiResult(currIntent))) + { + finish(); + return true; + } + return super.onKeyUp(keyCode, event); + default: return super.onKeyUp(keyCode, event); } } diff --git a/android/app/src/main/java/app/organicmaps/backup/LocalBackupManager.java b/android/app/src/main/java/app/organicmaps/backup/LocalBackupManager.java index f1a8cad85..e31287b54 100644 --- a/android/app/src/main/java/app/organicmaps/backup/LocalBackupManager.java +++ b/android/app/src/main/java/app/organicmaps/backup/LocalBackupManager.java @@ -62,39 +62,39 @@ public class LocalBackupManager implements BookmarkManager.BookmarksSharingListe ErrorCode errorCode = null; switch (result.getCode()) { - case BookmarkSharingResult.SUCCESS -> - { - if (!saveBackup(result)) - { - Logger.e(TAG, "Failed to save backup. See system log above"); - errorCode = ErrorCode.FILE_ERROR; - } - else - { - Logger.i(TAG, "Backup was created and saved successfully"); - } - } - case BookmarkSharingResult.EMPTY_CATEGORY -> - { - errorCode = ErrorCode.EMPTY_CATEGORY; - Logger.e(TAG, "Failed to create backup. Category is empty"); - } - case BookmarkSharingResult.ARCHIVE_ERROR -> - { - errorCode = ErrorCode.ARCHIVE_ERROR; - Logger.e(TAG, "Failed to create archive of bookmarks"); - } - case BookmarkSharingResult.FILE_ERROR -> + case BookmarkSharingResult.SUCCESS -> + { + if (!saveBackup(result)) { + Logger.e(TAG, "Failed to save backup. See system log above"); errorCode = ErrorCode.FILE_ERROR; - Logger.e(TAG, "Failed create file for archive"); } - default -> + else { - errorCode = ErrorCode.UNSUPPORTED; - Logger.e(TAG, "Failed to create backup. Unknown error"); + Logger.i(TAG, "Backup was created and saved successfully"); } } + case BookmarkSharingResult.EMPTY_CATEGORY -> + { + errorCode = ErrorCode.EMPTY_CATEGORY; + Logger.e(TAG, "Failed to create backup. Category is empty"); + } + case BookmarkSharingResult.ARCHIVE_ERROR -> + { + errorCode = ErrorCode.ARCHIVE_ERROR; + Logger.e(TAG, "Failed to create archive of bookmarks"); + } + case BookmarkSharingResult.FILE_ERROR -> + { + errorCode = ErrorCode.FILE_ERROR; + Logger.e(TAG, "Failed create file for archive"); + } + default -> + { + errorCode = ErrorCode.UNSUPPORTED; + Logger.e(TAG, "Failed to create backup. Unknown error"); + } + } ErrorCode finalErrorCode = errorCode; UiThread.run(() -> { diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesAdapter.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesAdapter.java index cd9fa68db..559277dde 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesAdapter.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesAdapter.java @@ -66,47 +66,47 @@ public class BookmarkCategoriesAdapter extends BaseBookmarkCategoryAdapter - { - View header = inflater.inflate(R.layout.item_bookmark_group_list_header, parent, false); - return new HeaderViewHolder(header); - } - case TYPE_CATEGORY_ITEM -> - { - View view = inflater.inflate(R.layout.item_bookmark_category, parent, false); - final CategoryViewHolder holder = new CategoryViewHolder(view); - view.setOnClickListener(new CategoryItemClickListener(holder)); - view.setOnLongClickListener(new LongClickListener(holder)); - return holder; - } - case TYPE_ACTION_ADD -> - { - View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); - item.setOnClickListener(v -> { - if (mCategoryListCallback != null) - mCategoryListCallback.onAddButtonClick(); - }); - return new Holders.GeneralViewHolder(item); - } - case TYPE_ACTION_IMPORT -> - { - View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); - item.setOnClickListener(v -> { - if (mCategoryListCallback != null) - mCategoryListCallback.onImportButtonClick(); - }); - return new Holders.GeneralViewHolder(item); - } - case TYPE_ACTION_EXPORT_ALL_AS_KMZ -> - { - View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); - item.setOnClickListener(v -> { - if (mCategoryListCallback != null) - mCategoryListCallback.onExportButtonClick(); - }); - return new Holders.GeneralViewHolder(item); - } - default -> throw new AssertionError("Invalid item type: " + viewType); + case TYPE_ACTION_HEADER -> + { + View header = inflater.inflate(R.layout.item_bookmark_group_list_header, parent, false); + return new HeaderViewHolder(header); + } + case TYPE_CATEGORY_ITEM -> + { + View view = inflater.inflate(R.layout.item_bookmark_category, parent, false); + final CategoryViewHolder holder = new CategoryViewHolder(view); + view.setOnClickListener(new CategoryItemClickListener(holder)); + view.setOnLongClickListener(new LongClickListener(holder)); + return holder; + } + case TYPE_ACTION_ADD -> + { + View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); + item.setOnClickListener(v -> { + if (mCategoryListCallback != null) + mCategoryListCallback.onAddButtonClick(); + }); + return new Holders.GeneralViewHolder(item); + } + case TYPE_ACTION_IMPORT -> + { + View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); + item.setOnClickListener(v -> { + if (mCategoryListCallback != null) + mCategoryListCallback.onImportButtonClick(); + }); + return new Holders.GeneralViewHolder(item); + } + case TYPE_ACTION_EXPORT_ALL_AS_KMZ -> + { + View item = inflater.inflate(R.layout.item_bookmark_button, parent, false); + item.setOnClickListener(v -> { + if (mCategoryListCallback != null) + mCategoryListCallback.onExportButtonClick(); + }); + return new Holders.GeneralViewHolder(item); + } + default -> throw new AssertionError("Invalid item type: " + viewType); } } @@ -116,44 +116,44 @@ public class BookmarkCategoriesAdapter extends BaseBookmarkCategoryAdapter - { - HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder; - headerViewHolder.setAction(mMassOperationAction, BookmarkManager.INSTANCE.areAllCategoriesInvisible()); - headerViewHolder.getText().setText(R.string.bookmark_lists); - } - case TYPE_CATEGORY_ITEM -> - { - final BookmarkCategory category = getCategoryByPosition(toCategoryPosition(position)); - CategoryViewHolder categoryHolder = (CategoryViewHolder) holder; - categoryHolder.setEntity(category); - categoryHolder.setName(category.getName()); - categoryHolder.setSize(); - categoryHolder.setVisibilityState(category.isVisible()); - ToggleVisibilityClickListener visibilityListener = new ToggleVisibilityClickListener(categoryHolder); - categoryHolder.setVisibilityListener(visibilityListener); - CategoryItemMoreClickListener moreClickListener = new CategoryItemMoreClickListener(categoryHolder); - categoryHolder.setMoreButtonClickListener(moreClickListener); - } - case TYPE_ACTION_ADD -> - { - Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; - generalViewHolder.getImage().setImageResource(R.drawable.ic_add_list); - generalViewHolder.getText().setText(R.string.bookmarks_create_new_group); - } - case TYPE_ACTION_IMPORT -> - { - Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; - generalViewHolder.getImage().setImageResource(R.drawable.ic_import); - generalViewHolder.getText().setText(R.string.bookmarks_import); - } - case TYPE_ACTION_EXPORT_ALL_AS_KMZ -> - { - Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; - generalViewHolder.getImage().setImageResource(R.drawable.ic_export); - generalViewHolder.getText().setText(R.string.bookmarks_export); - } - default -> throw new AssertionError("Invalid item type: " + type); + case TYPE_ACTION_HEADER -> + { + HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder; + headerViewHolder.setAction(mMassOperationAction, BookmarkManager.INSTANCE.areAllCategoriesInvisible()); + headerViewHolder.getText().setText(R.string.bookmark_lists); + } + case TYPE_CATEGORY_ITEM -> + { + final BookmarkCategory category = getCategoryByPosition(toCategoryPosition(position)); + CategoryViewHolder categoryHolder = (CategoryViewHolder) holder; + categoryHolder.setEntity(category); + categoryHolder.setName(category.getName()); + categoryHolder.setSize(); + categoryHolder.setVisibilityState(category.isVisible()); + ToggleVisibilityClickListener visibilityListener = new ToggleVisibilityClickListener(categoryHolder); + categoryHolder.setVisibilityListener(visibilityListener); + CategoryItemMoreClickListener moreClickListener = new CategoryItemMoreClickListener(categoryHolder); + categoryHolder.setMoreButtonClickListener(moreClickListener); + } + case TYPE_ACTION_ADD -> + { + Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; + generalViewHolder.getImage().setImageResource(R.drawable.ic_add_list); + generalViewHolder.getText().setText(R.string.bookmarks_create_new_group); + } + case TYPE_ACTION_IMPORT -> + { + Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; + generalViewHolder.getImage().setImageResource(R.drawable.ic_import); + generalViewHolder.getText().setText(R.string.bookmarks_import); + } + case TYPE_ACTION_EXPORT_ALL_AS_KMZ -> + { + Holders.GeneralViewHolder generalViewHolder = (Holders.GeneralViewHolder) holder; + generalViewHolder.getImage().setImageResource(R.drawable.ic_export); + generalViewHolder.getText().setText(R.string.bookmarks_export); + } + default -> throw new AssertionError("Invalid item type: " + type); } } diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java index 76a73c529..31b49aad7 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java @@ -442,37 +442,37 @@ public class BookmarkListAdapter extends RecyclerView.Adapter onMoreButtonClicked(text, moreBtn)); - moreBtn.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn)); - title.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn)); - break; + case TYPE_TRACK: + Holders.TrackViewHolder trackHolder = + new Holders.TrackViewHolder(inflater.inflate(R.layout.item_track, parent, false)); + trackHolder.setOnClickListener(mClickListener); + trackHolder.setOnLongClickListener(mLongClickListener); + trackHolder.setTrackIconClickListener(mIconClickListener); + trackHolder.setMoreButtonClickListener(mMoreClickListener); + holder = trackHolder; + break; + case TYPE_BOOKMARK: + Holders.BookmarkViewHolder bookmarkHolder = + new Holders.BookmarkViewHolder(inflater.inflate(R.layout.item_bookmark, parent, false)); + bookmarkHolder.setOnClickListener(mClickListener); + bookmarkHolder.setOnLongClickListener(mLongClickListener); + holder = bookmarkHolder; + break; + case TYPE_SECTION: + MaterialTextView tv = (MaterialTextView) inflater.inflate(R.layout.item_category_title, parent, false); + holder = new Holders.SectionViewHolder(tv); + break; + case TYPE_DESC: + View desc = inflater.inflate(R.layout.item_category_description, parent, false); + MaterialTextView moreBtn = desc.findViewById(R.id.more_btn); + MaterialTextView text = desc.findViewById(R.id.text); + MaterialTextView title = desc.findViewById(R.id.title); + setMoreButtonVisibility(text, moreBtn); + holder = new Holders.DescriptionViewHolder(desc, mSectionsDataSource.getCategory()); + text.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn)); + moreBtn.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn)); + title.setOnClickListener(v -> onMoreButtonClicked(text, moreBtn)); + break; } if (holder == null) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java index 98bad6b1d..db7e3eda0 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksListFragment.java @@ -552,12 +552,12 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment - { - return; - } - case BookmarkListAdapter.TYPE_BOOKMARK -> onBookmarkClicked(position, intent, adapter); - case BookmarkListAdapter.TYPE_TRACK -> onTrackClicked(position, intent, adapter); + case BookmarkListAdapter.TYPE_SECTION, BookmarkListAdapter.TYPE_DESC -> + { + return; + } + case BookmarkListAdapter.TYPE_BOOKMARK -> onBookmarkClicked(position, intent, adapter); + case BookmarkListAdapter.TYPE_TRACK -> onTrackClicked(position, intent, adapter); } intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); @@ -622,22 +622,22 @@ public class BookmarksListFragment extends BaseMwmRecyclerFragment - { - return getBookmarkMenuItems(); - } - case TRACK_MENU_ID -> - { - final Track track = (Track) getBookmarkListAdapter().getItem(mSelectedPosition); - return getTrackMenuItems(track); - } - case OPTIONS_MENU_ID -> - { - return getOptionsMenuItems(); - } + case BOOKMARKS_MENU_ID -> + { + return getBookmarkMenuItems(); + } + case TRACK_MENU_ID -> + { + final Track track = (Track) getBookmarkListAdapter().getItem(mSelectedPosition); + return getTrackMenuItems(track); + } + case OPTIONS_MENU_ID -> + { + return getOptionsMenuItems(); + } } return null; } diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksSharingHelper.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksSharingHelper.java index 33ae76970..423ad9f40 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksSharingHelper.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarksSharingHelper.java @@ -57,27 +57,27 @@ public enum BookmarksSharingHelper switch (result.getCode()) { - case BookmarkSharingResult.SUCCESS -> - SharingUtils.shareBookmarkFile(context, launcher, result.getSharingPath(), result.getMimeType()); - case BookmarkSharingResult.EMPTY_CATEGORY -> - new MaterialAlertDialogBuilder(context, R.style.MwmTheme_AlertDialog) - .setTitle(R.string.bookmarks_error_title_share_empty) - .setMessage(R.string.bookmarks_error_message_share_empty) - .setPositiveButton(R.string.ok, null) - .show(); - case BookmarkSharingResult.ARCHIVE_ERROR, BookmarkSharingResult.FILE_ERROR -> - { - new MaterialAlertDialogBuilder(context, R.style.MwmTheme_AlertDialog) - .setTitle(R.string.dialog_routing_system_error) - .setMessage(R.string.bookmarks_error_message_share_general) - .setPositiveButton(R.string.ok, null) - .show(); - List names = new ArrayList<>(); - for (long categoryId : result.getCategoriesIds()) - names.add(BookmarkManager.INSTANCE.getCategoryById(categoryId).getName()); - Logger.e(TAG, "Failed to share bookmark categories " + names + ", error code: " + result.getCode()); - } - default -> throw new AssertionError("Unsupported bookmark sharing code: " + result.getCode()); + case BookmarkSharingResult.SUCCESS -> + SharingUtils.shareBookmarkFile(context, launcher, result.getSharingPath(), result.getMimeType()); + case BookmarkSharingResult.EMPTY_CATEGORY -> + new MaterialAlertDialogBuilder(context, R.style.MwmTheme_AlertDialog) + .setTitle(R.string.bookmarks_error_title_share_empty) + .setMessage(R.string.bookmarks_error_message_share_empty) + .setPositiveButton(R.string.ok, null) + .show(); + case BookmarkSharingResult.ARCHIVE_ERROR, BookmarkSharingResult.FILE_ERROR -> + { + new MaterialAlertDialogBuilder(context, R.style.MwmTheme_AlertDialog) + .setTitle(R.string.dialog_routing_system_error) + .setMessage(R.string.bookmarks_error_message_share_general) + .setPositiveButton(R.string.ok, null) + .show(); + List names = new ArrayList<>(); + for (long categoryId : result.getCategoriesIds()) + names.add(BookmarkManager.INSTANCE.getCategoryById(categoryId).getName()); + Logger.e(TAG, "Failed to share bookmark categories " + names + ", error code: " + result.getCode()); + } + default -> throw new AssertionError("Unsupported bookmark sharing code: " + result.getCode()); } } diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java index 16c520d59..cf8904d17 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java @@ -64,10 +64,10 @@ public class ChooseBookmarksSortingTypeFragment { switch (sortingType) { - case BookmarkManager.SORT_BY_TYPE: return R.id.sort_by_type; - case BookmarkManager.SORT_BY_DISTANCE: return R.id.sort_by_distance; - case BookmarkManager.SORT_BY_TIME: return R.id.sort_by_time; - case BookmarkManager.SORT_BY_NAME: return R.id.sort_by_name; + case BookmarkManager.SORT_BY_TYPE: return R.id.sort_by_type; + case BookmarkManager.SORT_BY_DISTANCE: return R.id.sort_by_distance; + case BookmarkManager.SORT_BY_TIME: return R.id.sort_by_time; + case BookmarkManager.SORT_BY_NAME: return R.id.sort_by_name; } } return R.id.sort_by_default; diff --git a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchUiHelpers.java b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchUiHelpers.java index d673c84ed..6deeb1a67 100644 --- a/android/app/src/main/java/app/organicmaps/car/screens/search/SearchUiHelpers.java +++ b/android/app/src/main/java/app/organicmaps/car/screens/search/SearchUiHelpers.java @@ -62,29 +62,29 @@ public final class SearchUiHelpers CarColor color = Colors.DEFAULT; switch (searchResult.description.openNow) { - case SearchResult.OPEN_NOW_YES: - if (searchResult.description.minutesUntilClosed < 60) // less than 1 hour - { - final String time = searchResult.description.minutesUntilClosed + " " + carContext.getString(R.string.minute); - text = carContext.getString(R.string.closes_in, time); - color = Colors.OPENING_HOURS_CLOSES_SOON; - } - else - { - text = carContext.getString(R.string.editor_time_open); - color = Colors.OPENING_HOURS_OPEN; - } - break; - case SearchResult.OPEN_NOW_NO: - if (searchResult.description.minutesUntilOpen < 60) // less than 1 hour - { - final String time = searchResult.description.minutesUntilOpen + " " + carContext.getString(R.string.minute); - text = carContext.getString(R.string.opens_in, time); - } - else - text = carContext.getString(R.string.closed); - color = Colors.OPENING_HOURS_CLOSED; - break; + case SearchResult.OPEN_NOW_YES: + if (searchResult.description.minutesUntilClosed < 60) // less than 1 hour + { + final String time = searchResult.description.minutesUntilClosed + " " + carContext.getString(R.string.minute); + text = carContext.getString(R.string.closes_in, time); + color = Colors.OPENING_HOURS_CLOSES_SOON; + } + else + { + text = carContext.getString(R.string.editor_time_open); + color = Colors.OPENING_HOURS_OPEN; + } + break; + case SearchResult.OPEN_NOW_NO: + if (searchResult.description.minutesUntilOpen < 60) // less than 1 hour + { + final String time = searchResult.description.minutesUntilOpen + " " + carContext.getString(R.string.minute); + text = carContext.getString(R.string.opens_in, time); + } + else + text = carContext.getString(R.string.closed); + color = Colors.OPENING_HOURS_CLOSED; + break; } result.append(text); diff --git a/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java b/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java index 02d55fb34..ab37fbd72 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java +++ b/android/app/src/main/java/app/organicmaps/car/util/IntentUtils.java @@ -65,36 +65,36 @@ public final class IntentUtils final ScreenManager screenManager = carContext.getCarService(ScreenManager.class); switch (Framework.nativeParseAndSetApiUrl(uri.toString())) { - case RequestType.INCORRECT: return; - case RequestType.MAP: - screenManager.popToRoot(); - Map.executeMapApiRequest(); - return; - case RequestType.SEARCH: - screenManager.popToRoot(); - final ParsedSearchRequest request = Framework.nativeGetParsedSearchRequest(); - final double[] latlon = Framework.nativeGetParsedCenterLatLon(); - if (latlon != null) - { - Framework.nativeStopLocationFollow(); - Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); - // We need to update viewport for search api manually because of drape engine - // will not notify subscribers when search activity is shown. - if (!request.mIsSearchOnMap) - Framework.nativeSetSearchViewport(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); - } - final SearchScreen.Builder builder = new SearchScreen.Builder(carContext, surfaceRenderer); - builder.setQuery(request.mQuery); - if (request.mLocale != null) - builder.setLocale(request.mLocale); + case RequestType.INCORRECT: return; + case RequestType.MAP: + screenManager.popToRoot(); + Map.executeMapApiRequest(); + return; + case RequestType.SEARCH: + screenManager.popToRoot(); + final ParsedSearchRequest request = Framework.nativeGetParsedSearchRequest(); + final double[] latlon = Framework.nativeGetParsedCenterLatLon(); + if (latlon != null) + { + Framework.nativeStopLocationFollow(); + Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); + // We need to update viewport for search api manually because of drape engine + // will not notify subscribers when search activity is shown. + if (!request.mIsSearchOnMap) + Framework.nativeSetSearchViewport(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); + } + final SearchScreen.Builder builder = new SearchScreen.Builder(carContext, surfaceRenderer); + builder.setQuery(request.mQuery); + if (request.mLocale != null) + builder.setLocale(request.mLocale); - screenManager.popToRoot(); - screenManager.push(builder.build()); - return; - case RequestType.ROUTE: Logger.e(TAG, "Route API is not supported by Android Auto: " + uri); return; - case RequestType.CROSSHAIR: Logger.e(TAG, "Crosshair API is not supported by Android Auto: " + uri); return; - case RequestType.MENU: Logger.e(TAG, "Menu API is not supported by Android Auto: " + uri); return; - case RequestType.SETTINGS: Logger.e(TAG, "Settings API is not supported by Android Auto: " + uri); + screenManager.popToRoot(); + screenManager.push(builder.build()); + return; + case RequestType.ROUTE: Logger.e(TAG, "Route API is not supported by Android Auto: " + uri); return; + case RequestType.CROSSHAIR: Logger.e(TAG, "Crosshair API is not supported by Android Auto: " + uri); return; + case RequestType.MENU: Logger.e(TAG, "Menu API is not supported by Android Auto: " + uri); return; + case RequestType.SETTINGS: Logger.e(TAG, "Settings API is not supported by Android Auto: " + uri); } } diff --git a/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java b/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java index 063041606..ada151fcb 100644 --- a/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java +++ b/android/app/src/main/java/app/organicmaps/car/util/UiHelpers.java @@ -171,20 +171,20 @@ public final class UiHelpers int drawableRes; switch (locationMode) { - case LocationState.PENDING_POSITION, LocationState.NOT_FOLLOW_NO_POSITION -> - drawableRes = R.drawable.ic_location_off; - case LocationState.NOT_FOLLOW -> drawableRes = R.drawable.ic_not_follow; - case LocationState.FOLLOW -> - { - drawableRes = R.drawable.ic_follow; - tintColor = Colors.LOCATION_TINT; - } - case LocationState.FOLLOW_AND_ROTATE -> - { - drawableRes = R.drawable.ic_follow_and_rotate; - tintColor = Colors.LOCATION_TINT; - } - default -> throw new IllegalArgumentException("Invalid button mode: " + locationMode); + case LocationState.PENDING_POSITION, LocationState.NOT_FOLLOW_NO_POSITION -> + drawableRes = R.drawable.ic_location_off; + case LocationState.NOT_FOLLOW -> drawableRes = R.drawable.ic_not_follow; + case LocationState.FOLLOW -> + { + drawableRes = R.drawable.ic_follow; + tintColor = Colors.LOCATION_TINT; + } + case LocationState.FOLLOW_AND_ROTATE -> + { + drawableRes = R.drawable.ic_follow_and_rotate; + tintColor = Colors.LOCATION_TINT; + } + default -> throw new IllegalArgumentException("Invalid button mode: " + locationMode); } final CarIcon icon = diff --git a/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java b/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java index 90c95e401..2cf9b99e8 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java +++ b/android/app/src/main/java/app/organicmaps/downloader/BottomPanel.java @@ -115,15 +115,15 @@ class BottomPanel { switch (status) { - case STATUS_UPDATABLE -> - { - UpdateInfo info = MapManager.nativeGetUpdateInfo(root); - setUpdateAllState(info); - } // Special case for "Countries" node when no maps currently downloaded. - case STATUS_DOWNLOADABLE, STATUS_DONE, STATUS_PARTLY -> show = false; - case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); - case STATUS_FAILED -> setRetryFailedStates(); - default -> throw new IllegalArgumentException("Inappropriate status for \"" + root + "\": " + status); + case STATUS_UPDATABLE -> + { + UpdateInfo info = MapManager.nativeGetUpdateInfo(root); + setUpdateAllState(info); + } // Special case for "Countries" node when no maps currently downloaded. + case STATUS_DOWNLOADABLE, STATUS_DONE, STATUS_PARTLY -> show = false; + case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); + case STATUS_FAILED -> setRetryFailedStates(); + default -> throw new IllegalArgumentException("Inappropriate status for \"" + root + "\": " + status); } } else @@ -133,15 +133,15 @@ class BottomPanel { switch (status) { - case STATUS_UPDATABLE -> - { - UpdateInfo info = MapManager.nativeGetUpdateInfo(root); - setUpdateAllState(info); - } - case STATUS_DONE -> show = false; - case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); - case STATUS_FAILED -> setRetryFailedStates(); - default -> setDownloadAllState(); + case STATUS_UPDATABLE -> + { + UpdateInfo info = MapManager.nativeGetUpdateInfo(root); + setUpdateAllState(info); + } + case STATUS_DONE -> show = false; + case STATUS_PROGRESS, STATUS_APPLYING, STATUS_ENQUEUED -> setCancelState(); + case STATUS_FAILED -> setRetryFailedStates(); + default -> setDownloadAllState(); } } } diff --git a/android/app/src/main/java/app/organicmaps/downloader/CountrySuggestFragment.java b/android/app/src/main/java/app/organicmaps/downloader/CountrySuggestFragment.java index 7a9b0155e..a128e275e 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/CountrySuggestFragment.java +++ b/android/app/src/main/java/app/organicmaps/downloader/CountrySuggestFragment.java @@ -70,9 +70,9 @@ public class CountrySuggestFragment extends BaseMwmFragment implements View.OnCl switch (item.newStatus) { - case CountryItem.STATUS_FAILED: updateViews(); return; + case CountryItem.STATUS_FAILED: updateViews(); return; - case CountryItem.STATUS_DONE: exitFragment(); return; + case CountryItem.STATUS_DONE: exitFragment(); return; } break; diff --git a/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java b/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java index 597a78b45..e41f45a7e 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java +++ b/android/app/src/main/java/app/organicmaps/downloader/DownloaderAdapter.java @@ -287,41 +287,41 @@ class DownloaderAdapter extends RecyclerView.Adapter items = new ArrayList<>(); switch (mSelectedItem.status) { - case CountryItem.STATUS_DOWNLOADABLE: items.add(getDownloadMenuItem()); break; + case CountryItem.STATUS_DOWNLOADABLE: items.add(getDownloadMenuItem()); break; - case CountryItem.STATUS_UPDATABLE: - items.add(getUpdateMenuItem()); - // Fallthrough + case CountryItem.STATUS_UPDATABLE: + items.add(getUpdateMenuItem()); + // Fallthrough - case CountryItem.STATUS_DONE: - if (!mSelectedItem.isExpandable()) - items.add(getExploreMenuItem()); + case CountryItem.STATUS_DONE: + if (!mSelectedItem.isExpandable()) + items.add(getExploreMenuItem()); + appendDeleteMenuItem(items); + break; + + case CountryItem.STATUS_FAILED: + items.add(getCancelMenuItem()); + + if (mSelectedItem.present) + { appendDeleteMenuItem(items); - break; + items.add(getExploreMenuItem()); + } + break; - case CountryItem.STATUS_FAILED: - items.add(getCancelMenuItem()); + case CountryItem.STATUS_PROGRESS: + case CountryItem.STATUS_APPLYING: + case CountryItem.STATUS_ENQUEUED: + items.add(getCancelMenuItem()); - if (mSelectedItem.present) - { - appendDeleteMenuItem(items); - items.add(getExploreMenuItem()); - } - break; + if (mSelectedItem.present) + items.add(getExploreMenuItem()); + break; - case CountryItem.STATUS_PROGRESS: - case CountryItem.STATUS_APPLYING: - case CountryItem.STATUS_ENQUEUED: - items.add(getCancelMenuItem()); - - if (mSelectedItem.present) - items.add(getExploreMenuItem()); - break; - - case CountryItem.STATUS_PARTLY: - items.add(getDownloadMenuItem()); - appendDeleteMenuItem(items); - break; + case CountryItem.STATUS_PARTLY: + items.add(getDownloadMenuItem()); + appendDeleteMenuItem(items); + break; } return items; } @@ -372,20 +372,20 @@ class DownloaderAdapter extends RecyclerView.Adapter + case CountryItem.STATUS_DONE, CountryItem.STATUS_PROGRESS, CountryItem.STATUS_APPLYING, + CountryItem.STATUS_ENQUEUED -> + processLongClick(); + case CountryItem.STATUS_DOWNLOADABLE, CountryItem.STATUS_PARTLY -> + { + if (clickOnStatus) + onDownloadActionSelected(mItem, DownloaderAdapter.this); + else processLongClick(); - case CountryItem.STATUS_DOWNLOADABLE, CountryItem.STATUS_PARTLY -> - { - if (clickOnStatus) - onDownloadActionSelected(mItem, DownloaderAdapter.this); - else - processLongClick(); - } - case CountryItem.STATUS_FAILED -> MapManager.warn3gAndRetry(mActivity, mItem.id, null); - case CountryItem.STATUS_UPDATABLE -> - MapManager.warnOn3gUpdate(mActivity, mItem.id, () -> MapManager.startUpdate(mItem.id)); - default -> throw new IllegalArgumentException("Inappropriate item status: " + mItem.status); + } + case CountryItem.STATUS_FAILED -> MapManager.warn3gAndRetry(mActivity, mItem.id, null); + case CountryItem.STATUS_UPDATABLE -> + MapManager.warnOn3gUpdate(mActivity, mItem.id, () -> MapManager.startUpdate(mItem.id)); + default -> throw new IllegalArgumentException("Inappropriate item status: " + mItem.status); } } @@ -535,33 +535,33 @@ class DownloaderAdapter extends RecyclerView.Adapter + case CountryItem.CATEGORY_NEAR_ME -> + { + if (ci.category != prev) { - if (ci.category != prev) - { - headerId = CountryItem.CATEGORY_NEAR_ME; - mItemsAndHeader.add(new GenericItem(mActivity.getString(R.string.downloader_near_me_subtitle))); - prev = ci.category; - } - } - case CountryItem.CATEGORY_DOWNLOADED -> - { - if (ci.category != prev) - { - headerId = CountryItem.CATEGORY_DOWNLOADED; - mItemsAndHeader.add(new GenericItem(mActivity.getString(R.string.downloader_downloaded_subtitle))); - prev = ci.category; - } - } - default -> - { - int prevHeader = headerId; - headerId = CountryItem.CATEGORY_AVAILABLE + ci.name.charAt(0); - if (headerId != prevHeader) - mItemsAndHeader.add(new GenericItem(StringUtils.toUpperCase(ci.name.substring(0, 1)))); + headerId = CountryItem.CATEGORY_NEAR_ME; + mItemsAndHeader.add(new GenericItem(mActivity.getString(R.string.downloader_near_me_subtitle))); prev = ci.category; } } + case CountryItem.CATEGORY_DOWNLOADED -> + { + if (ci.category != prev) + { + headerId = CountryItem.CATEGORY_DOWNLOADED; + mItemsAndHeader.add(new GenericItem(mActivity.getString(R.string.downloader_downloaded_subtitle))); + prev = ci.category; + } + } + default -> + { + int prevHeader = headerId; + headerId = CountryItem.CATEGORY_AVAILABLE + ci.name.charAt(0); + if (headerId != prevHeader) + mItemsAndHeader.add(new GenericItem(StringUtils.toUpperCase(ci.name.substring(0, 1)))); + prev = ci.category; + } + } ci.headerId = headerId; } mItemsAndHeader.add(new GenericItem(ci)); diff --git a/android/app/src/main/java/app/organicmaps/downloader/DownloaderFragment.java b/android/app/src/main/java/app/organicmaps/downloader/DownloaderFragment.java index 688d0ada6..8e52cc25a 100644 --- a/android/app/src/main/java/app/organicmaps/downloader/DownloaderFragment.java +++ b/android/app/src/main/java/app/organicmaps/downloader/DownloaderFragment.java @@ -24,8 +24,8 @@ import app.organicmaps.widget.PlaceholderView; import java.util.ArrayList; import java.util.List; -public class DownloaderFragment extends BaseMwmRecyclerFragment - implements MenuBottomSheetFragment.MenuBottomSheetInterface +public class DownloaderFragment + extends BaseMwmRecyclerFragment implements MenuBottomSheetFragment.MenuBottomSheetInterface { private DownloaderToolbarController mToolbarController; @@ -153,7 +153,8 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment mReset.setText(R.string.editor_remove_place_button); - case Editor.MODIFIED -> mReset.setText(R.string.editor_reset_edits_button); - case Editor.UNTOUCHED -> mReset.setText(R.string.editor_place_doesnt_exist); - case Editor.DELETED -> throw new IllegalStateException("Can't delete already deleted feature."); - case Editor.OBSOLETE -> throw new IllegalStateException("Obsolete objects cannot be reverted."); + case Editor.CREATED -> mReset.setText(R.string.editor_remove_place_button); + case Editor.MODIFIED -> mReset.setText(R.string.editor_reset_edits_button); + case Editor.UNTOUCHED -> mReset.setText(R.string.editor_place_doesnt_exist); + case Editor.DELETED -> throw new IllegalStateException("Can't delete already deleted feature."); + case Editor.OBSOLETE -> throw new IllegalStateException("Obsolete objects cannot be reverted."); } } @@ -641,11 +641,11 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe switch (Editor.nativeGetMapObjectStatus()) { - case Editor.CREATED -> rollback(Editor.CREATED); - case Editor.MODIFIED -> rollback(Editor.MODIFIED); - case Editor.UNTOUCHED -> placeDoesntExist(); - case Editor.DELETED -> throw new IllegalStateException("Can't delete already deleted feature."); - case Editor.OBSOLETE -> throw new IllegalStateException("Obsolete objects cannot be reverted."); + case Editor.CREATED -> rollback(Editor.CREATED); + case Editor.MODIFIED -> rollback(Editor.MODIFIED); + case Editor.UNTOUCHED -> placeDoesntExist(); + case Editor.DELETED -> throw new IllegalStateException("Can't delete already deleted feature."); + case Editor.OBSOLETE -> throw new IllegalStateException("Obsolete objects cannot be reverted."); } } diff --git a/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java b/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java index 3a7cab0c3..cdc0ffdfd 100644 --- a/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/EditorHostFragment.java @@ -173,8 +173,8 @@ public class EditorHostFragment { switch (mMode) { - case OPENING_HOURS, STREET, CUISINE, LANGUAGE, PHONE, SELF_SERVICE -> editMapObject(); - default -> Utils.navigateToParent(requireActivity()); + case OPENING_HOURS, STREET, CUISINE, LANGUAGE, PHONE, SELF_SERVICE -> editMapObject(); + default -> Utils.navigateToParent(requireActivity()); } return true; } @@ -283,57 +283,57 @@ public class EditorHostFragment { switch (mMode) { - case OPENING_HOURS -> - { - final String timetables = ((TimetableContainerFragment) getChildFragmentManager().findFragmentByTag( - TimetableContainerFragment.class.getName())) - .getTimetable(); - Editor.nativeSetOpeningHours(timetables); - editMapObject(); - } - case STREET -> - setStreet(((StreetFragment) getChildFragmentManager().findFragmentByTag(StreetFragment.class.getName())) - .getStreet()); - case CUISINE -> - { - String[] cuisines = - ((CuisineFragment) getChildFragmentManager().findFragmentByTag(CuisineFragment.class.getName())) - .getCuisines(); - Editor.nativeSetSelectedCuisines(cuisines); - editMapObject(); - } - case SELF_SERVICE -> - setSelection( - Metadata.MetadataType.FMD_SELF_SERVICE, - ((SelfServiceFragment) getChildFragmentManager().findFragmentByTag(SelfServiceFragment.class.getName())) - .getSelection()); - case LANGUAGE -> editMapObject(); - case MAP_OBJECT -> - { - if (!setEdits()) - return; + case OPENING_HOURS -> + { + final String timetables = ((TimetableContainerFragment) getChildFragmentManager().findFragmentByTag( + TimetableContainerFragment.class.getName())) + .getTimetable(); + Editor.nativeSetOpeningHours(timetables); + editMapObject(); + } + case STREET -> + setStreet( + ((StreetFragment) getChildFragmentManager().findFragmentByTag(StreetFragment.class.getName())).getStreet()); + case CUISINE -> + { + String[] cuisines = + ((CuisineFragment) getChildFragmentManager().findFragmentByTag(CuisineFragment.class.getName())) + .getCuisines(); + Editor.nativeSetSelectedCuisines(cuisines); + editMapObject(); + } + case SELF_SERVICE -> + setSelection( + Metadata.MetadataType.FMD_SELF_SERVICE, + ((SelfServiceFragment) getChildFragmentManager().findFragmentByTag(SelfServiceFragment.class.getName())) + .getSelection()); + case LANGUAGE -> editMapObject(); + case MAP_OBJECT -> + { + if (!setEdits()) + return; - // Save object edits - if (!MwmApplication.prefs(requireContext()).contains(NOOB_ALERT_SHOWN)) - { - showNoobDialog(); - } - else - { - saveNote(); - saveMapObjectEdits(); - } - } - case PHONE -> + // Save object edits + if (!MwmApplication.prefs(requireContext()).contains(NOOB_ALERT_SHOWN)) { - final String phone = - ((PhoneFragment) getChildFragmentManager().findFragmentByTag(PhoneFragment.class.getName())).getPhone(); - if (Editor.nativeIsPhoneValid(phone)) - { - Editor.nativeSetPhone(phone); - editMapObject(); - } + showNoobDialog(); } + else + { + saveNote(); + saveMapObjectEdits(); + } + } + case PHONE -> + { + final String phone = + ((PhoneFragment) getChildFragmentManager().findFragmentByTag(PhoneFragment.class.getName())).getPhone(); + if (Editor.nativeIsPhoneValid(phone)) + { + Editor.nativeSetPhone(phone); + editMapObject(); + } + } } } } diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java index 7541f042e..7ae679850 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java @@ -7,13 +7,11 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.textfield.TextInputEditText; - import app.organicmaps.R; import app.organicmaps.sdk.editor.data.FeatureCategory; import app.organicmaps.sdk.util.StringUtils; import app.organicmaps.sdk.util.UiUtils; +import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textview.MaterialTextView; public class FeatureCategoryAdapter extends RecyclerView.Adapter @@ -59,17 +57,18 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter - { - return new FeatureViewHolder( - LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category, parent, false)); - } - case TYPE_FOOTER -> - { - return new FooterViewHolder( - LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category_footer, parent, false), (FooterListener) mFragment); - } - default -> throw new IllegalArgumentException("Unsupported"); + case TYPE_CATEGORY -> + { + return new FeatureViewHolder( + LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category, parent, false)); + } + case TYPE_FOOTER -> + { + return new FooterViewHolder( + LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category_footer, parent, false), + (FooterListener) mFragment); + } + default -> throw new IllegalArgumentException("Unsupported"); } } diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java index ec1cdcce3..6a445d308 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java @@ -1,34 +1,35 @@ package app.organicmaps.editor; import static app.organicmaps.sdk.util.Utils.getLocalizedFeatureType; + +import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import app.organicmaps.MwmApplication; -import app.organicmaps.sdk.editor.Editor; -import app.organicmaps.sdk.editor.data.FeatureCategory; -import app.organicmaps.sdk.util.Language; -import app.organicmaps.sdk.editor.OsmOAuth; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import android.text.TextUtils; -import android.content.Intent; -import android.widget.Toast; - -import app.organicmaps.sdk.Framework; import app.organicmaps.R; import app.organicmaps.base.BaseMwmRecyclerFragment; import app.organicmaps.dialog.EditTextDialogFragment; +import app.organicmaps.sdk.Framework; +import app.organicmaps.sdk.editor.Editor; +import app.organicmaps.sdk.editor.OsmOAuth; +import app.organicmaps.sdk.editor.data.FeatureCategory; +import app.organicmaps.sdk.util.Language; import app.organicmaps.util.Utils; import app.organicmaps.widget.SearchToolbarController; import app.organicmaps.widget.ToolbarController; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.util.Arrays; import java.util.Comparator; -public class FeatureCategoryFragment extends BaseMwmRecyclerFragment implements FeatureCategoryAdapter.FooterListener +public class FeatureCategoryFragment + extends BaseMwmRecyclerFragment implements FeatureCategoryAdapter.FooterListener { private FeatureCategory mSelectedCategory; protected ToolbarController mToolbarController; @@ -58,8 +59,7 @@ public class FeatureCategoryFragment extends BaseMwmRecyclerFragment { - MwmApplication.prefs(requireContext().getApplicationContext()).edit() - .putBoolean(NOTE_CONFIRMATION_SHOWN, true) - .apply(); - Editor.nativeCreateStandaloneNote(lat, lon, noteText); - mPendingNoteText = ""; - Toast.makeText(requireContext(), R.string.osm_note_toast, Toast.LENGTH_SHORT).show(); - requireActivity().finish(); - }) - .setNegativeButton(R.string.cancel, null) - .show(); + .setTitle(R.string.editor_share_to_all_dialog_title) + .setMessage(getString(R.string.editor_share_to_all_dialog_message_1) + " " + + getString(R.string.editor_share_to_all_dialog_message_2)) + .setPositiveButton(android.R.string.ok, + (dlg, which) -> { + MwmApplication.prefs(requireContext().getApplicationContext()) + .edit() + .putBoolean(NOTE_CONFIRMATION_SHOWN, true) + .apply(); + Editor.nativeCreateStandaloneNote(lat, lon, noteText); + mPendingNoteText = ""; + Toast.makeText(requireContext(), R.string.osm_note_toast, Toast.LENGTH_SHORT).show(); + requireActivity().finish(); + }) + .setNegativeButton(R.string.cancel, null) + .show(); } } diff --git a/android/app/src/main/java/app/organicmaps/editor/SimpleTimetableAdapter.java b/android/app/src/main/java/app/organicmaps/editor/SimpleTimetableAdapter.java index 0b2d20002..8e37fc3d1 100644 --- a/android/app/src/main/java/app/organicmaps/editor/SimpleTimetableAdapter.java +++ b/android/app/src/main/java/app/organicmaps/editor/SimpleTimetableAdapter.java @@ -13,9 +13,9 @@ import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; import app.organicmaps.R; +import app.organicmaps.editor.data.TimeFormatUtils; import app.organicmaps.sdk.editor.OpeningHours; import app.organicmaps.sdk.editor.data.HoursMinutes; -import app.organicmaps.editor.data.TimeFormatUtils; import app.organicmaps.sdk.editor.data.Timespan; import app.organicmaps.sdk.editor.data.Timetable; import app.organicmaps.sdk.util.UiUtils; diff --git a/android/app/src/main/java/app/organicmaps/editor/TimetableContainerFragment.java b/android/app/src/main/java/app/organicmaps/editor/TimetableContainerFragment.java index 3012d0d88..307919667 100644 --- a/android/app/src/main/java/app/organicmaps/editor/TimetableContainerFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/TimetableContainerFragment.java @@ -162,8 +162,8 @@ public class TimetableContainerFragment extends BaseMwmFragment implements Timet switch (mMode) { - case SIMPLE -> setMode(Mode.ADVANCED, filledTimetables); - case ADVANCED -> setMode(Mode.SIMPLE, filledTimetables); + case SIMPLE -> setMode(Mode.ADVANCED, filledTimetables); + case ADVANCED -> setMode(Mode.SIMPLE, filledTimetables); } } diff --git a/android/app/src/main/java/app/organicmaps/help/FaqFragment.java b/android/app/src/main/java/app/organicmaps/help/FaqFragment.java index 94585eaca..5532020a1 100644 --- a/android/app/src/main/java/app/organicmaps/help/FaqFragment.java +++ b/android/app/src/main/java/app/organicmaps/help/FaqFragment.java @@ -42,8 +42,8 @@ public class FaqFragment extends BaseMwmFragment { switch (which) { - case 0 -> sendGeneralFeedback(); - case 1 -> reportBug(); + case 0 -> sendGeneralFeedback(); + case 1 -> reportBug(); } } }; diff --git a/android/app/src/main/java/app/organicmaps/intent/Factory.java b/android/app/src/main/java/app/organicmaps/intent/Factory.java index 5a2677fdd..da6c76b20 100644 --- a/android/app/src/main/java/app/organicmaps/intent/Factory.java +++ b/android/app/src/main/java/app/organicmaps/intent/Factory.java @@ -78,67 +78,67 @@ public class Factory switch (Framework.nativeParseAndSetApiUrl(uri.toString())) { - case RequestType.INCORRECT: return false; + case RequestType.INCORRECT: return false; - case RequestType.MAP: - SearchEngine.INSTANCE.cancelInteractiveSearch(); - Map.executeMapApiRequest(); - return true; + case RequestType.MAP: + SearchEngine.INSTANCE.cancelInteractiveSearch(); + Map.executeMapApiRequest(); + return true; - case RequestType.ROUTE: - SearchEngine.INSTANCE.cancelInteractiveSearch(); - final ParsedRoutingData data = Framework.nativeGetParsedRoutingData(); - RoutingController.get().setRouterType(data.mRouterType); - final RoutePoint from = data.mPoints[0]; - final RoutePoint to = data.mPoints[1]; - RoutingController.get().prepare( - MapObject.createMapObject(FeatureId.EMPTY, MapObject.API_POINT, from.mName, "", from.mLat, from.mLon), - MapObject.createMapObject(FeatureId.EMPTY, MapObject.API_POINT, to.mName, "", to.mLat, to.mLon)); - return true; - case RequestType.SEARCH: + case RequestType.ROUTE: + SearchEngine.INSTANCE.cancelInteractiveSearch(); + final ParsedRoutingData data = Framework.nativeGetParsedRoutingData(); + RoutingController.get().setRouterType(data.mRouterType); + final RoutePoint from = data.mPoints[0]; + final RoutePoint to = data.mPoints[1]; + RoutingController.get().prepare( + MapObject.createMapObject(FeatureId.EMPTY, MapObject.API_POINT, from.mName, "", from.mLat, from.mLon), + MapObject.createMapObject(FeatureId.EMPTY, MapObject.API_POINT, to.mName, "", to.mLat, to.mLon)); + return true; + case RequestType.SEARCH: + { + SearchEngine.INSTANCE.cancelInteractiveSearch(); + final ParsedSearchRequest request = Framework.nativeGetParsedSearchRequest(); + final double[] latlon = Framework.nativeGetParsedCenterLatLon(); + if (latlon != null) { - SearchEngine.INSTANCE.cancelInteractiveSearch(); - final ParsedSearchRequest request = Framework.nativeGetParsedSearchRequest(); - final double[] latlon = Framework.nativeGetParsedCenterLatLon(); - if (latlon != null) - { - Framework.nativeStopLocationFollow(); - Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); - // We need to update viewport for search api manually because of drape engine - // will not notify subscribers when search activity is shown. - if (!request.mIsSearchOnMap) - Framework.nativeSetSearchViewport(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); - } - SearchActivity.start(target, request.mQuery, request.mLocale, request.mIsSearchOnMap); - return true; + Framework.nativeStopLocationFollow(); + Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); + // We need to update viewport for search api manually because of drape engine + // will not notify subscribers when search activity is shown. + if (!request.mIsSearchOnMap) + Framework.nativeSetSearchViewport(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); } - case RequestType.CROSSHAIR: + SearchActivity.start(target, request.mQuery, request.mLocale, request.mIsSearchOnMap); + return true; + } + case RequestType.CROSSHAIR: + { + SearchEngine.INSTANCE.cancelInteractiveSearch(); + target.showPositionChooserForAPI(Framework.nativeGetParsedAppName()); + + final double[] latlon = Framework.nativeGetParsedCenterLatLon(); + if (latlon != null) { - SearchEngine.INSTANCE.cancelInteractiveSearch(); - target.showPositionChooserForAPI(Framework.nativeGetParsedAppName()); - - final double[] latlon = Framework.nativeGetParsedCenterLatLon(); - if (latlon != null) - { - Framework.nativeStopLocationFollow(); - Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); - } - - return true; - } - case RequestType.OAUTH2: - { - SearchEngine.INSTANCE.cancelInteractiveSearch(); - - final String oauth2code = Framework.nativeGetParsedOAuth2Code(); - OsmLoginActivity.OAuth2Callback(target, oauth2code); - - return true; + Framework.nativeStopLocationFollow(); + Framework.nativeSetViewportCenter(latlon[0], latlon[1], SEARCH_IN_VIEWPORT_ZOOM); } - // Menu and Settings url types should be implemented to support deeplinking. - case RequestType.MENU: - case RequestType.SETTINGS: + return true; + } + case RequestType.OAUTH2: + { + SearchEngine.INSTANCE.cancelInteractiveSearch(); + + final String oauth2code = Framework.nativeGetParsedOAuth2Code(); + OsmLoginActivity.OAuth2Callback(target, oauth2code); + + return true; + } + + // Menu and Settings url types should be implemented to support deeplinking. + case RequestType.MENU: + case RequestType.SETTINGS: } return false; diff --git a/android/app/src/main/java/app/organicmaps/maplayer/LayerBottomSheetItem.java b/android/app/src/main/java/app/organicmaps/maplayer/LayerBottomSheetItem.java index 4cdd7fdca..a8b06d26c 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/LayerBottomSheetItem.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/LayerBottomSheetItem.java @@ -42,26 +42,26 @@ public class LayerBottomSheetItem int buttonTextResource = R.string.layers_title; switch (mode) { - case OUTDOORS: - disabledResource = R.attr.outdoorsMenuDisabled; - enabledResource = R.attr.outdoorsMenuEnabled; - buttonTextResource = R.string.button_layer_outdoor; - break; - case SUBWAY: - disabledResource = R.attr.subwayMenuDisabled; - enabledResource = R.attr.subwayMenuEnabled; - buttonTextResource = R.string.subway; - break; - case ISOLINES: - disabledResource = R.attr.isoLinesMenuDisabled; - enabledResource = R.attr.isoLinesMenuEnabled; - buttonTextResource = R.string.button_layer_isolines; - break; - case TRAFFIC: - disabledResource = R.attr.trafficMenuDisabled; - enabledResource = R.attr.trafficMenuEnabled; - buttonTextResource = R.string.button_layer_traffic; - break; + case OUTDOORS: + disabledResource = R.attr.outdoorsMenuDisabled; + enabledResource = R.attr.outdoorsMenuEnabled; + buttonTextResource = R.string.button_layer_outdoor; + break; + case SUBWAY: + disabledResource = R.attr.subwayMenuDisabled; + enabledResource = R.attr.subwayMenuEnabled; + buttonTextResource = R.string.subway; + break; + case ISOLINES: + disabledResource = R.attr.isoLinesMenuDisabled; + enabledResource = R.attr.isoLinesMenuEnabled; + buttonTextResource = R.string.button_layer_isolines; + break; + case TRAFFIC: + disabledResource = R.attr.trafficMenuDisabled; + enabledResource = R.attr.trafficMenuEnabled; + buttonTextResource = R.string.button_layer_traffic; + break; } int disabled = ThemeUtils.getResource(mContext, disabledResource); int enabled = ThemeUtils.getResource(mContext, enabledResource); diff --git a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java index 9dd0e4380..200ac7082 100644 --- a/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java +++ b/android/app/src/main/java/app/organicmaps/maplayer/MapButtonsController.java @@ -230,21 +230,21 @@ public class MapButtonsController extends Fragment return; switch (button) { - case zoom: UiUtils.showIf(show && Config.showZoomButtons(), buttonView); break; - case toggleMapLayer: - if (mToggleMapLayerButton != null) - UiUtils.showIf(show && !isInNavigationMode(), mToggleMapLayerButton); - break; - case myPosition: - if (mNavMyPosition != null) - mNavMyPosition.showButton(show); - break; - case search: mSearchWheel.show(show); - case bookmarks: - case menu: UiUtils.showIf(show, buttonView); break; - case trackRecordingStatus: - UiUtils.showIf(show, buttonView); - animateIconBlinking(show, (FloatingActionButton) buttonView); + case zoom: UiUtils.showIf(show && Config.showZoomButtons(), buttonView); break; + case toggleMapLayer: + if (mToggleMapLayerButton != null) + UiUtils.showIf(show && !isInNavigationMode(), mToggleMapLayerButton); + break; + case myPosition: + if (mNavMyPosition != null) + mNavMyPosition.showButton(show); + break; + case search: mSearchWheel.show(show); + case bookmarks: + case menu: UiUtils.showIf(show, buttonView); break; + case trackRecordingStatus: + UiUtils.showIf(show, buttonView); + animateIconBlinking(show, (FloatingActionButton) buttonView); } } diff --git a/android/app/src/main/java/app/organicmaps/routing/ManageRouteAdapter.java b/android/app/src/main/java/app/organicmaps/routing/ManageRouteAdapter.java index bf7f32769..b86032375 100644 --- a/android/app/src/main/java/app/organicmaps/routing/ManageRouteAdapter.java +++ b/android/app/src/main/java/app/organicmaps/routing/ManageRouteAdapter.java @@ -11,14 +11,14 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; -import com.google.android.material.imageview.ShapeableImageView; -import com.google.android.material.textview.MaterialTextView; import app.organicmaps.R; import app.organicmaps.sdk.bookmarks.data.MapObject; import app.organicmaps.sdk.routing.RouteMarkData; import app.organicmaps.sdk.routing.RouteMarkType; import app.organicmaps.sdk.util.StringUtils; import app.organicmaps.sdk.util.UiUtils; +import com.google.android.material.imageview.ShapeableImageView; +import com.google.android.material.textview.MaterialTextView; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -63,26 +63,26 @@ public class ManageRouteAdapter extends RecyclerView.Adapter + case SearchResult.OPEN_NOW_YES -> + { + if (result.description.minutesUntilClosed < 60) // less than 1 hour { - if (result.description.minutesUntilClosed < 60) // less than 1 hour - { - final String time = result.description.minutesUntilClosed + " " + resources.getString(R.string.minute); - final String string = resources.getString(R.string.closes_in, time); + final String time = result.description.minutesUntilClosed + " " + resources.getString(R.string.minute); + final String string = resources.getString(R.string.closes_in, time); - UiUtils.setTextAndShow(mOpen, string); - mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_yellow)); - } - else - { - UiUtils.setTextAndShow(mOpen, resources.getString(R.string.editor_time_open)); - mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_green)); - } + UiUtils.setTextAndShow(mOpen, string); + mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_yellow)); } - case SearchResult.OPEN_NOW_NO -> + else { - if (result.description.minutesUntilOpen < 60) // less than 1 hour - { - final String time = result.description.minutesUntilOpen + " " + resources.getString(R.string.minute); - final String string = resources.getString(R.string.opens_in, time); - - UiUtils.setTextAndShow(mOpen, string); - mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_red)); - } - else - { - UiUtils.setTextAndShow(mOpen, resources.getString(R.string.closed)); - mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_red)); - } + UiUtils.setTextAndShow(mOpen, resources.getString(R.string.editor_time_open)); + mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_green)); } - default -> UiUtils.hide(mOpen); + } + case SearchResult.OPEN_NOW_NO -> + { + if (result.description.minutesUntilOpen < 60) // less than 1 hour + { + final String time = result.description.minutesUntilOpen + " " + resources.getString(R.string.minute); + final String string = resources.getString(R.string.opens_in, time); + + UiUtils.setTextAndShow(mOpen, string); + mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_red)); + } + else + { + UiUtils.setTextAndShow(mOpen, resources.getString(R.string.closed)); + mOpen.setTextColor(ContextCompat.getColor(mSearchFragment.getContext(), R.color.base_red)); + } + } + default -> UiUtils.hide(mOpen); } } diff --git a/android/app/src/main/java/app/organicmaps/search/SearchHistoryAdapter.java b/android/app/src/main/java/app/organicmaps/search/SearchHistoryAdapter.java index 368d845a8..506b2757a 100644 --- a/android/app/src/main/java/app/organicmaps/search/SearchHistoryAdapter.java +++ b/android/app/src/main/java/app/organicmaps/search/SearchHistoryAdapter.java @@ -49,32 +49,32 @@ class SearchHistoryAdapter extends RecyclerView.Adapter mSearchToolbarController.setQuery(res.mText.getText())); - break; + case TYPE_ITEM: + res = new ViewHolder( + LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_search_recent, viewGroup, false)); + res.mText.setOnClickListener(v -> mSearchToolbarController.setQuery(res.mText.getText())); + break; - case TYPE_CLEAR: - res = new ViewHolder( - LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_search_clear_history, viewGroup, false)); - res.mText.setOnClickListener(v -> { - SearchRecents.clear(); - notifyDataSetChanged(); - }); - break; + case TYPE_CLEAR: + res = new ViewHolder( + LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_search_clear_history, viewGroup, false)); + res.mText.setOnClickListener(v -> { + SearchRecents.clear(); + notifyDataSetChanged(); + }); + break; - case TYPE_MY_POSITION: - res = new ViewHolder( - LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_search_my_position, viewGroup, false)); - res.mText.setOnClickListener(v -> { - RoutingController.get().onPoiSelected( - MwmApplication.from(viewGroup.getContext()).getLocationHelper().getMyPosition()); - mSearchToolbarController.onUpClick(); - }); - break; + case TYPE_MY_POSITION: + res = new ViewHolder( + LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_search_my_position, viewGroup, false)); + res.mText.setOnClickListener(v -> { + RoutingController.get().onPoiSelected( + MwmApplication.from(viewGroup.getContext()).getLocationHelper().getMyPosition()); + mSearchToolbarController.onUpClick(); + }); + break; - default: throw new IllegalArgumentException("Unsupported ViewHolder type given"); + default: throw new IllegalArgumentException("Unsupported ViewHolder type given"); } Graphics.tint(res.mText); diff --git a/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java b/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java index 4e3bea88e..e0e00d130 100644 --- a/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java +++ b/android/app/src/main/java/app/organicmaps/settings/VoiceInstructionsSettingsFragment.java @@ -326,10 +326,10 @@ public class VoiceInstructionsSettingsFragment extends BaseXmlSettingsFragment final String ttsLinkText = getString(R.string.prefs_languages_information_off_link); final Spannable link = new SpannableString(ttsLinkText + "↗"); // Set link color. - link.setSpan( - new ForegroundColorSpan(ContextCompat.getColor( - requireContext(), UiUtils.getStyledResourceId(requireContext(), com.google.android.material.R.attr.colorSecondary))), - 0, ttsLinkText.length(), 0); + link.setSpan(new ForegroundColorSpan(ContextCompat.getColor( + requireContext(), + UiUtils.getStyledResourceId(requireContext(), com.google.android.material.R.attr.colorSecondary))), + 0, ttsLinkText.length(), 0); ttsLangInfoLink.setSummary(link); final String ttsInfoUrl = requireActivity().getString(R.string.tts_info_link); diff --git a/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java b/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java index f5c01d931..6f96fd355 100644 --- a/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java +++ b/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java @@ -166,9 +166,9 @@ public class NavMenu public void refreshTts() { - mTts.setImageDrawable(TtsPlayer.isEnabled() - ? Graphics.tint(mActivity, R.drawable.ic_voice_on, com.google.android.material.R.attr.colorSecondary) - : Graphics.tint(mActivity, R.drawable.ic_voice_off)); + mTts.setImageDrawable(TtsPlayer.isEnabled() ? Graphics.tint(mActivity, R.drawable.ic_voice_on, + com.google.android.material.R.attr.colorSecondary) + : Graphics.tint(mActivity, R.drawable.ic_voice_off)); } private void updateTime(int seconds) diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java b/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java index 8ffc5ab53..ac43efb83 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/EditBookmarkFragment.java @@ -156,23 +156,23 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. switch (mType) { - case TYPE_BOOKMARK -> - { - mBookmark = BookmarkManager.INSTANCE.getBookmarkInfo(id); - if (savedInstanceState != null && savedInstanceState.getParcelable(STATE_ICON) != null) - mIcon = savedInstanceState.getParcelable(STATE_ICON); - else if (mBookmark != null) - mIcon = mBookmark.getIcon(); - refreshBookmark(); - } - case TYPE_TRACK -> - { - mTrack = BookmarkManager.INSTANCE.getTrack(id); - mColor = mTrack.getColor(); - if (savedInstanceState != null) - mColor = savedInstanceState.getInt(STATE_COLOR, mColor); - refreshTrack(); - } + case TYPE_BOOKMARK -> + { + mBookmark = BookmarkManager.INSTANCE.getBookmarkInfo(id); + if (savedInstanceState != null && savedInstanceState.getParcelable(STATE_ICON) != null) + mIcon = savedInstanceState.getParcelable(STATE_ICON); + else if (mBookmark != null) + mIcon = mBookmark.getIcon(); + refreshBookmark(); + } + case TYPE_TRACK -> + { + mTrack = BookmarkManager.INSTANCE.getTrack(id); + mColor = mTrack.getColor(); + if (savedInstanceState != null) + mColor = savedInstanceState.getInt(STATE_COLOR, mColor); + refreshTrack(); + } } initToolbar(view); } @@ -210,16 +210,16 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. final ShapeableImageView imageView = toolbar.findViewById(R.id.save); switch (mType) { - case TYPE_BOOKMARK -> - { - imageView.setOnClickListener(v -> saveBookmark()); - toolbar.setTitle(R.string.placepage_edit_bookmark_button); - } - case TYPE_TRACK -> - { - imageView.setOnClickListener(v -> saveTrack()); - toolbar.setTitle(R.string.edit_track); - } + case TYPE_BOOKMARK -> + { + imageView.setOnClickListener(v -> saveBookmark()); + toolbar.setTitle(R.string.placepage_edit_bookmark_button); + } + case TYPE_TRACK -> + { + imageView.setOnClickListener(v -> saveTrack()); + toolbar.setTitle(R.string.edit_track); + } } UiUtils.showHomeUpButton(toolbar); toolbar.setNavigationOnClickListener(v -> dismiss()); @@ -319,23 +319,23 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. dialogFragment.setArguments(args); switch (mType) { - case TYPE_BOOKMARK -> - dialogFragment.setOnColorSetListener(colorPos -> { - if (mIcon != null && mIcon.getColor() == colorPos) - return; + case TYPE_BOOKMARK -> + dialogFragment.setOnColorSetListener(colorPos -> { + if (mIcon != null && mIcon.getColor() == colorPos) + return; - mIcon = new Icon(colorPos, mIcon.getType()); - refreshColorMarker(); - }); - case TYPE_TRACK -> - dialogFragment.setOnColorSetListener(colorPos -> { - int from = mTrack.getColor(); - int to = PredefinedColors.getColor(colorPos); - if (from == to) - return; - mColor = to; - refreshTrackColor(); - }); + mIcon = new Icon(colorPos, mIcon.getType()); + refreshColorMarker(); + }); + case TYPE_TRACK -> + dialogFragment.setOnColorSetListener(colorPos -> { + int from = mTrack.getColor(); + int to = PredefinedColors.getColor(colorPos); + if (from == to) + return; + mColor = to; + refreshTrackColor(); + }); } dialogFragment.show(requireActivity().getSupportFragmentManager(), null); diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageController.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageController.java index c85225f6c..a7751ebf3 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageController.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageController.java @@ -414,15 +414,15 @@ public class PlacePageController { switch (item) { - case BOOKMARK_SAVE, BOOKMARK_DELETE -> onBookmarkBtnClicked(); - case BACK -> onBackBtnClicked(); - case ROUTE_FROM -> onRouteFromBtnClicked(); - case ROUTE_TO -> onRouteToBtnClicked(); - case ROUTE_ADD -> onRouteAddBtnClicked(); - case ROUTE_REMOVE -> onRouteRemoveBtnClicked(); - case ROUTE_AVOID_TOLL -> onAvoidTollBtnClicked(); - case ROUTE_AVOID_UNPAVED -> onAvoidUnpavedBtnClicked(); - case ROUTE_AVOID_FERRY -> onAvoidFerryBtnClicked(); + case BOOKMARK_SAVE, BOOKMARK_DELETE -> onBookmarkBtnClicked(); + case BACK -> onBackBtnClicked(); + case ROUTE_FROM -> onRouteFromBtnClicked(); + case ROUTE_TO -> onRouteToBtnClicked(); + case ROUTE_ADD -> onRouteAddBtnClicked(); + case ROUTE_REMOVE -> onRouteRemoveBtnClicked(); + case ROUTE_AVOID_TOLL -> onAvoidTollBtnClicked(); + case ROUTE_AVOID_UNPAVED -> onAvoidUnpavedBtnClicked(); + case ROUTE_AVOID_FERRY -> onAvoidFerryBtnClicked(); } } diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index 7a41c5e17..7187c253d 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -478,8 +478,9 @@ public class PlacePageView extends Fragment MaterialTextView mTvAddPlace = mAddPlace.findViewById(R.id.tv__editor); final int editPlaceButtonColor = Editor.nativeShouldEnableEditPlace() - ? ContextCompat.getColor(getContext(), - UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary)) + ? ContextCompat.getColor( + getContext(), + UiUtils.getStyledResourceId(getContext(), com.google.android.material.R.attr.colorSecondary)) : getResources().getColor(R.color.button_accent_text_disabled); mTvEditPlace.setTextColor(editPlaceButtonColor); mTvAddBusiness.setTextColor(editPlaceButtonColor); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp index da1cc89c5..cd23a3a15 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/DownloadResourcesLegacyActivity.cpp @@ -31,13 +31,13 @@ using namespace std::placeholders; /// Special error codes to notify GUI about free space //@{ -#define ERR_DOWNLOAD_SUCCESS 0 -#define ERR_DISK_ERROR -1 -#define ERR_NOT_ENOUGH_FREE_SPACE -2 -#define ERR_STORAGE_DISCONNECTED -3 -#define ERR_DOWNLOAD_ERROR -4 -#define ERR_NO_MORE_FILES -5 -#define ERR_FILE_IN_PROGRESS -6 +#define ERR_DOWNLOAD_SUCCESS 0 +#define ERR_DISK_ERROR -1 +#define ERR_NOT_ENOUGH_FREE_SPACE -2 +#define ERR_STORAGE_DISCONNECTED -3 +#define ERR_DOWNLOAD_ERROR -4 +#define ERR_NO_MORE_FILES -5 +#define ERR_FILE_IN_PROGRESS -6 //@} namespace @@ -52,135 +52,129 @@ static std::shared_ptr g_currentRequest; extern "C" { - using Callback = HttpRequest::Callback; +using Callback = HttpRequest::Callback; - static int HasSpaceForFiles(Platform & pl, std::string const & sdcardPath, size_t fileSize) +static int HasSpaceForFiles(Platform & pl, std::string const & sdcardPath, size_t fileSize) +{ + switch (pl.GetWritableStorageStatus(fileSize)) { - switch (pl.GetWritableStorageStatus(fileSize)) - { - case Platform::STORAGE_DISCONNECTED: - return ERR_STORAGE_DISCONNECTED; + case Platform::STORAGE_DISCONNECTED: return ERR_STORAGE_DISCONNECTED; - case Platform::NOT_ENOUGH_SPACE: - return ERR_NOT_ENOUGH_FREE_SPACE; + case Platform::NOT_ENOUGH_SPACE: return ERR_NOT_ENOUGH_FREE_SPACE; - default: - return static_cast(fileSize); - } - } - - JNIEXPORT jint JNICALL - Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeGetBytesToDownload(JNIEnv * env, jclass clazz) - { - // clear all - g_filesToDownload.clear(); - g_totalBytesToDownload = 0; - g_totalDownloadedBytes = 0; - - using namespace storage; - Storage const & storage = g_framework->GetStorage(); - auto const status = storage.GetForceDownloadWorlds(g_filesToDownload); - - for (auto const & cf : g_filesToDownload) - g_totalBytesToDownload += cf.GetRemoteSize(); - - int res; - if (status == Storage::WorldStatus::ERROR_CREATE_FOLDER || - status == Storage::WorldStatus::ERROR_MOVE_FILE) - { - res = ERR_DISK_ERROR; - } - else - { - Platform & pl = GetPlatform(); - res = HasSpaceForFiles(pl, pl.WritableDir(), g_totalBytesToDownload); - } - - if (res == ERR_STORAGE_DISCONNECTED) - LOG(LWARNING, ("External file system is not available")); - else if (res == ERR_NOT_ENOUGH_FREE_SPACE) - LOG(LWARNING, ("Not enough space to extract files")); - - g_currentRequest.reset(); - - if (status == Storage::WorldStatus::WAS_MOVED) - { - g_framework->ReloadWorldMaps(); - res = ERR_DOWNLOAD_SUCCESS; // reset possible storage error if we moved files - } - - return res; - } - - static void DownloadFileFinished(std::shared_ptr obj, HttpRequest const & req) - { - auto const status = req.GetStatus(); - ASSERT_NOT_EQUAL(status, DownloadStatus::InProgress, ()); - - int errorCode = ERR_DOWNLOAD_ERROR; - if (status == DownloadStatus::Completed) - errorCode = ERR_DOWNLOAD_SUCCESS; - - g_currentRequest.reset(); - - if (errorCode == ERR_DOWNLOAD_SUCCESS) - { - auto const & curFile = g_filesToDownload.back(); - size_t const sz = curFile.GetRemoteSize(); - LOG(LDEBUG, ("finished downloading", curFile.GetName(), "size", sz, "bytes")); - - g_totalDownloadedBytes += sz; - LOG(LDEBUG, ("totalDownloadedBytes:", g_totalDownloadedBytes)); - - g_filesToDownload.pop_back(); - } - - JNIEnv * env = jni::GetEnv(); - - jmethodID methodID = jni::GetMethodID(env, *obj, "onFinish", "(I)V"); - env->CallVoidMethod(*obj, methodID, errorCode); - } - - static void DownloadFileProgress(std::shared_ptr listener, HttpRequest const & req) - { - JNIEnv * env = jni::GetEnv(); - static jmethodID methodID = jni::GetMethodID(env, *listener, "onProgress", "(I)V"); - env->CallVoidMethod(*listener, methodID, static_cast(g_totalDownloadedBytes + req.GetProgress().m_bytesDownloaded)); - } - - JNIEXPORT jint JNICALL - Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeStartNextFileDownload(JNIEnv * env, jclass clazz, jobject listener) - { - if (g_filesToDownload.empty()) - return ERR_NO_MORE_FILES; - - /// @todo One downloader instance with cached servers. All this routine will be refactored some time. - static auto downloader = storage::GetDownloader(); - storage::Storage const & storage = g_framework->GetStorage(); - downloader->SetDataVersion(storage.GetCurrentDataVersion()); - - downloader->EnsureMetaConfigReady([&storage, ptr = jni::make_global_ref(listener)]() - { - auto const & curFile = g_filesToDownload.back(); - auto const fileName = curFile.GetFileName(MapFileType::Map); - LOG(LINFO, ("Downloading file", fileName)); - - g_currentRequest.reset(HttpRequest::GetFile( - downloader->MakeUrlListLegacy(fileName), - storage.GetFilePath(curFile.GetName(), MapFileType::Map), - curFile.GetRemoteSize(), - std::bind(&DownloadFileFinished, ptr, _1), - std::bind(&DownloadFileProgress, ptr, _1), - 0, false)); - }); - - return ERR_FILE_IN_PROGRESS; - } - - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeCancelCurrentFile(JNIEnv * env, jclass clazz) - { - LOG(LDEBUG, ("cancelCurrentFile, currentRequest=", g_currentRequest)); - g_currentRequest.reset(); + default: return static_cast(fileSize); } } + +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeGetBytesToDownload(JNIEnv * env, + jclass clazz) +{ + // clear all + g_filesToDownload.clear(); + g_totalBytesToDownload = 0; + g_totalDownloadedBytes = 0; + + using namespace storage; + Storage const & storage = g_framework->GetStorage(); + auto const status = storage.GetForceDownloadWorlds(g_filesToDownload); + + for (auto const & cf : g_filesToDownload) + g_totalBytesToDownload += cf.GetRemoteSize(); + + int res; + if (status == Storage::WorldStatus::ERROR_CREATE_FOLDER || status == Storage::WorldStatus::ERROR_MOVE_FILE) + { + res = ERR_DISK_ERROR; + } + else + { + Platform & pl = GetPlatform(); + res = HasSpaceForFiles(pl, pl.WritableDir(), g_totalBytesToDownload); + } + + if (res == ERR_STORAGE_DISCONNECTED) + LOG(LWARNING, ("External file system is not available")); + else if (res == ERR_NOT_ENOUGH_FREE_SPACE) + LOG(LWARNING, ("Not enough space to extract files")); + + g_currentRequest.reset(); + + if (status == Storage::WorldStatus::WAS_MOVED) + { + g_framework->ReloadWorldMaps(); + res = ERR_DOWNLOAD_SUCCESS; // reset possible storage error if we moved files + } + + return res; +} + +static void DownloadFileFinished(std::shared_ptr obj, HttpRequest const & req) +{ + auto const status = req.GetStatus(); + ASSERT_NOT_EQUAL(status, DownloadStatus::InProgress, ()); + + int errorCode = ERR_DOWNLOAD_ERROR; + if (status == DownloadStatus::Completed) + errorCode = ERR_DOWNLOAD_SUCCESS; + + g_currentRequest.reset(); + + if (errorCode == ERR_DOWNLOAD_SUCCESS) + { + auto const & curFile = g_filesToDownload.back(); + size_t const sz = curFile.GetRemoteSize(); + LOG(LDEBUG, ("finished downloading", curFile.GetName(), "size", sz, "bytes")); + + g_totalDownloadedBytes += sz; + LOG(LDEBUG, ("totalDownloadedBytes:", g_totalDownloadedBytes)); + + g_filesToDownload.pop_back(); + } + + JNIEnv * env = jni::GetEnv(); + + jmethodID methodID = jni::GetMethodID(env, *obj, "onFinish", "(I)V"); + env->CallVoidMethod(*obj, methodID, errorCode); +} + +static void DownloadFileProgress(std::shared_ptr listener, HttpRequest const & req) +{ + JNIEnv * env = jni::GetEnv(); + static jmethodID methodID = jni::GetMethodID(env, *listener, "onProgress", "(I)V"); + env->CallVoidMethod(*listener, methodID, + static_cast(g_totalDownloadedBytes + req.GetProgress().m_bytesDownloaded)); +} + +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeStartNextFileDownload( + JNIEnv * env, jclass clazz, jobject listener) +{ + if (g_filesToDownload.empty()) + return ERR_NO_MORE_FILES; + + /// @todo One downloader instance with cached servers. All this routine will be refactored some time. + static auto downloader = storage::GetDownloader(); + storage::Storage const & storage = g_framework->GetStorage(); + downloader->SetDataVersion(storage.GetCurrentDataVersion()); + + downloader->EnsureMetaConfigReady([&storage, ptr = jni::make_global_ref(listener)]() + { + auto const & curFile = g_filesToDownload.back(); + auto const fileName = curFile.GetFileName(MapFileType::Map); + LOG(LINFO, ("Downloading file", fileName)); + + g_currentRequest.reset(HttpRequest::GetFile(downloader->MakeUrlListLegacy(fileName), + storage.GetFilePath(curFile.GetName(), MapFileType::Map), + curFile.GetRemoteSize(), std::bind(&DownloadFileFinished, ptr, _1), + std::bind(&DownloadFileProgress, ptr, _1), 0, false)); + }); + + return ERR_FILE_IN_PROGRESS; +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_DownloadResourcesLegacyActivity_nativeCancelCurrentFile(JNIEnv * env, + jclass clazz) +{ + LOG(LDEBUG, ("cancelCurrentFile, currentRequest=", g_currentRequest)); + g_currentRequest.reset(); +} +} diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp index 8eed02401..9fb589b4d 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.cpp @@ -1,7 +1,7 @@ #include "app/organicmaps/sdk/Framework.hpp" -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/UserMarkHelper.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp" #include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "app/organicmaps/sdk/routing/JunctionInfo.hpp" @@ -46,8 +46,8 @@ #include "platform/local_country_file.hpp" #include "platform/local_country_file_utils.hpp" #include "platform/locale.hpp" -#include "platform/location.hpp" #include "platform/localization.hpp" +#include "platform/location.hpp" #include "platform/measurement_utils.hpp" #include "platform/network_policy.hpp" #include "platform/platform.hpp" @@ -91,7 +91,10 @@ using platform::ToNativeNetworkPolicy; static_assert(sizeof(int) >= 4, "Size of jint in less than 4 bytes."); -::Framework * frm() { return g_framework->NativeFramework(); } +::Framework * frm() +{ + return g_framework->NativeFramework(); +} namespace { @@ -108,14 +111,13 @@ namespace android enum MultiTouchAction { - MULTITOUCH_UP = 0x00000001, - MULTITOUCH_DOWN = 0x00000002, - MULTITOUCH_MOVE = 0x00000003, - MULTITOUCH_CANCEL = 0x00000004 + MULTITOUCH_UP = 0x00000001, + MULTITOUCH_DOWN = 0x00000002, + MULTITOUCH_MOVE = 0x00000003, + MULTITOUCH_CANCEL = 0x00000004 }; -Framework::Framework(std::function && afterMapsLoaded) -: m_work({} /* params */, false /* loadMaps */) +Framework::Framework(std::function && afterMapsLoaded) : m_work({} /* params */, false /* loadMaps */) { m_work.LoadMapsAsync(std::move(afterMapsLoaded)); @@ -187,8 +189,8 @@ bool Framework::CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi int constexpr kMinSdkVersionForVulkan = 26; int const sdkVersion = android_get_device_api_level(); LOG(LINFO, ("Android SDK version in the Drape Engine:", sdkVersion)); - auto const vulkanForbidden = sdkVersion < kMinSdkVersionForVulkan || - dp::SupportManager::Instance().IsVulkanForbidden(); + auto const vulkanForbidden = + sdkVersion < kMinSdkVersionForVulkan || dp::SupportManager::Instance().IsVulkanForbidden(); if (vulkanForbidden) LOG(LWARNING, ("Vulkan API is forbidden on this device.")); @@ -474,7 +476,10 @@ Storage & Framework::GetStorage() return m_work.GetStorage(); } -DataSource const & Framework::GetDataSource() { return m_work.GetDataSource(); } +DataSource const & Framework::GetDataSource() +{ + return m_work.GetDataSource(); +} void Framework::ShowNode(CountryId const & idx, bool zoomToDownloadButton) { @@ -504,22 +509,13 @@ void Framework::Touch(int action, Finger const & f1, Finger const & f2, uint8_t MultiTouchAction eventType = static_cast(action); df::TouchEvent event; - switch(eventType) + switch (eventType) { - case MULTITOUCH_DOWN: - event.SetTouchType(df::TouchEvent::TOUCH_DOWN); - break; - case MULTITOUCH_MOVE: - event.SetTouchType(df::TouchEvent::TOUCH_MOVE); - break; - case MULTITOUCH_UP: - event.SetTouchType(df::TouchEvent::TOUCH_UP); - break; - case MULTITOUCH_CANCEL: - event.SetTouchType(df::TouchEvent::TOUCH_CANCEL); - break; - default: - return; + case MULTITOUCH_DOWN: event.SetTouchType(df::TouchEvent::TOUCH_DOWN); break; + case MULTITOUCH_MOVE: event.SetTouchType(df::TouchEvent::TOUCH_MOVE); break; + case MULTITOUCH_UP: event.SetTouchType(df::TouchEvent::TOUCH_UP); break; + case MULTITOUCH_CANCEL: event.SetTouchType(df::TouchEvent::TOUCH_CANCEL); break; + default: return; } df::Touch touch; @@ -689,7 +685,7 @@ void Framework::SetMyPositionModeListener(location::TMyPositionModeChanged const location::EMyPositionMode Framework::GetMyPositionMode() const { // No need in assertion here, return location::PendingPosition if no engine created. - //ASSERT(IsDrapeEngineCreated(), ()); + // ASSERT(IsDrapeEngineCreated(), ()); return m_work.GetMyPositionMode(); } @@ -787,14 +783,14 @@ FeatureID Framework::BuildFeatureId(JNIEnv * env, jobject featureId) extern "C" { -void CallRoutingListener(shared_ptr listener, int errorCode, - storage::CountriesSet const & absentMaps) +void CallRoutingListener(shared_ptr listener, int errorCode, storage::CountriesSet const & absentMaps) { JNIEnv * env = jni::GetEnv(); jmethodID const method = jni::GetMethodID(env, *listener, "onRoutingEvent", "(I[Ljava/lang/String;)V"); ASSERT(method, ()); - env->CallVoidMethod(*listener, method, errorCode, jni::TScopedLocalObjectArrayRef(env, jni::ToJavaStringArray(env, absentMaps)).get()); + env->CallVoidMethod(*listener, method, errorCode, + jni::TScopedLocalObjectArrayRef(env, jni::ToJavaStringArray(env, absentMaps)).get()); } void CallRouteProgressListener(shared_ptr listener, float progress) @@ -804,11 +800,11 @@ void CallRouteProgressListener(shared_ptr listener, float progress) env->CallVoidMethod(*listener, methodId, progress); } -void CallRouteRecommendationListener(shared_ptr listener, - RoutingManager::Recommendation recommendation) +void CallRouteRecommendationListener(shared_ptr listener, RoutingManager::Recommendation recommendation) { JNIEnv * env = jni::GetEnv(); - jmethodID const methodId = jni::GetMethodID(env, *listener, "onRecommend", "(Lapp/organicmaps/sdk/routing/RouteRecommendationType;)V"); + jmethodID const methodId = + jni::GetMethodID(env, *listener, "onRecommend", "(Lapp/organicmaps/sdk/routing/RouteRecommendationType;)V"); env->CallVoidMethod(*listener, methodId, GetRouteRecommendationType(env, recommendation)); } @@ -822,27 +818,25 @@ void CallSetRoutingLoadPointsListener(shared_ptr listener, bool success RoutingManager::LoadRouteHandler g_loadRouteHandler; /// @name JNI EXPORTS -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetAddress(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetAddress(JNIEnv * env, jclass clazz, jdouble lat, + jdouble lon) { auto const info = frm()->GetAddressAtPoint(mercator::FromLatLon(lat, lon)); return jni::ToJavaString(env, info.FormatAddress()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz) { frm()->GetBookmarkManager().GetEditSession().ClearGroup(UserMark::Type::API); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeParseAndSetApiUrl(JNIEnv * env, jclass clazz, jstring url) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeParseAndSetApiUrl(JNIEnv * env, jclass clazz, + jstring url) { return static_cast(frm()->ParseAndSetApiURL(jni::ToNativeString(env, url))); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedRoutingData(JNIEnv * env, jclass clazz) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedRoutingData(JNIEnv * env, jclass clazz) { using namespace url_scheme; static jclass const pointClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/RoutePoint"); @@ -851,23 +845,22 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedRoutingData(JNIEnv * env, jcla static jclass const routeDataClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/ParsedRoutingData"); // Java signature : ParsedRoutingData(RoutePoint[] points, int routerType) { - static jmethodID const routeDataConstructor = jni::GetConstructorID(env, routeDataClazz, "([Lapp/organicmaps/sdk/api/RoutePoint;I)V"); + static jmethodID const routeDataConstructor = + jni::GetConstructorID(env, routeDataClazz, "([Lapp/organicmaps/sdk/api/RoutePoint;I)V"); auto const & routingData = frm()->GetParsedRoutingData(); - jobjectArray points = jni::ToJavaArray(env, pointClazz, routingData.m_points, - [](JNIEnv * env, RoutePoint const & point) - { - jni::TScopedLocalRef const name(env, jni::ToJavaString(env, point.m_name)); - return env->NewObject(pointClazz, pointConstructor, - mercator::YToLat(point.m_org.y), - mercator::XToLon(point.m_org.x), name.get()); - }); + jobjectArray points = + jni::ToJavaArray(env, pointClazz, routingData.m_points, [](JNIEnv * env, RoutePoint const & point) + { + jni::TScopedLocalRef const name(env, jni::ToJavaString(env, point.m_name)); + return env->NewObject(pointClazz, pointConstructor, mercator::YToLat(point.m_org.y), + mercator::XToLon(point.m_org.x), name.get()); + }); return env->NewObject(routeDataClazz, routeDataConstructor, points, routingData.m_type); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jclass clazz) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jclass clazz) { using namespace url_scheme; static jclass const cl = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/api/ParsedSearchRequest"); @@ -875,32 +868,29 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedSearchRequest(JNIEnv * env, jc static jmethodID const ctor = jni::GetConstructorID(env, cl, "(Ljava/lang/String;Ljava/lang/String;DDZ)V"); auto const & r = frm()->GetParsedSearchRequest(); ms::LatLon const center = frm()->GetParsedCenterLatLon(); - return env->NewObject(cl, ctor, jni::ToJavaString(env, r.m_query), jni::ToJavaString(env, r.m_locale), center.m_lat, center.m_lon, r.m_isSearchOnMap); + return env->NewObject(cl, ctor, jni::ToJavaString(env, r.m_query), jni::ToJavaString(env, r.m_locale), center.m_lat, + center.m_lon, r.m_isSearchOnMap); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedAppName(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedAppName(JNIEnv * env, jclass) { std::string const & appName = frm()->GetParsedAppName(); return (appName.empty()) ? nullptr : jni::ToJavaString(env, appName); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedOAuth2Code(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedOAuth2Code(JNIEnv * env, jclass) { std::string const & code = frm()->GetParsedOAuth2Code(); return jni::ToJavaString(env, code); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedBackUrl(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedBackUrl(JNIEnv * env, jclass) { std::string const & backUrl = frm()->GetParsedBackUrl(); return (backUrl.empty()) ? nullptr : jni::ToJavaString(env, backUrl); } -JNIEXPORT jdoubleArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jclass) +JNIEXPORT jdoubleArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jclass) { ms::LatLon const center = frm()->GetParsedCenterLatLon(); if (!center.IsValid()) @@ -913,21 +903,19 @@ Java_app_organicmaps_sdk_Framework_nativeGetParsedCenterLatLon(JNIEnv * env, jcl return jLatLon; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativePlacePageActivationListener(JNIEnv * env, jclass, + jobject jListener) { LOG(LINFO, ("Set global map object listener")); g_placePageActivationListener = env->NewGlobalRef(jListener); // void onPlacePageActivated(MapObject object); - jmethodID const activatedId = jni::GetMethodID(env, g_placePageActivationListener, - "onPlacePageActivated", + jmethodID const activatedId = jni::GetMethodID(env, g_placePageActivationListener, "onPlacePageActivated", "(Lapp/organicmaps/sdk/widget/placepage/PlacePageData;)V"); // void onPlacePageDeactivated(); - jmethodID const deactivateId = jni::GetMethodID(env, g_placePageActivationListener, - "onPlacePageDeactivated", "()V"); + jmethodID const deactivateId = jni::GetMethodID(env, g_placePageActivationListener, "onPlacePageDeactivated", "()V"); // void onPlacePageDeactivated(); - jmethodID const switchFullscreenId = jni::GetMethodID(env, g_placePageActivationListener, - "onSwitchFullScreenMode", "()V"); + jmethodID const switchFullscreenId = + jni::GetMethodID(env, g_placePageActivationListener, "onSwitchFullScreenMode", "()V"); auto const fillPlacePage = [activatedId]() { JNIEnv * env = jni::GetEnv(); @@ -960,8 +948,8 @@ Java_app_organicmaps_sdk_Framework_nativePlacePageActivationListener(JNIEnv *env frm()->SetPlacePageListeners(fillPlacePage, closePlacePage, fillPlacePage, switchFullscreen); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRemovePlacePageActivationListener(JNIEnv *env, jclass, jobject jListener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRemovePlacePageActivationListener(JNIEnv * env, jclass, + jobject jListener) { if (g_placePageActivationListener == nullptr) return; @@ -975,8 +963,9 @@ Java_app_organicmaps_sdk_Framework_nativeRemovePlacePageActivationListener(JNIEn g_placePageActivationListener = nullptr; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble lat, + jdouble lon, jdouble zoomLevel, + jstring name) { ::Framework * fr = frm(); double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale()); @@ -984,8 +973,9 @@ Java_app_organicmaps_sdk_Framework_nativeGetGe0Url(JNIEnv * env, jclass, jdouble return jni::ToJavaString(env, url); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble lat, + jdouble lon, jdouble zoomLevel, + jstring name) { ::Framework * fr = frm(); double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale()); @@ -993,9 +983,10 @@ Java_app_organicmaps_sdk_Framework_nativeGetGeoUri(JNIEnv * env, jclass, jdouble return jni::ToJavaString(env, url); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth( - JNIEnv * env, jclass, jdouble merX, jdouble merY, jdouble cLat, jdouble cLon, jdouble north) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth(JNIEnv * env, jclass, + jdouble merX, jdouble merY, + jdouble cLat, jdouble cLon, + jdouble north) { platform::Distance distance; double azimut = -1.0; @@ -1005,13 +996,10 @@ Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth( // Java signature : DistanceAndAzimut(Distance distance, double azimuth) static jmethodID const methodID = jni::GetConstructorID(env, daClazz, "(Lapp/organicmaps/sdk/util/Distance;D)V"); - return env->NewObject(daClazz, methodID, - ToJavaDistance(env, distance), - static_cast(azimut)); + return env->NewObject(daClazz, methodID, ToJavaDistance(env, distance), static_cast(azimut)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuthFromLatLon( +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuthFromLatLon( JNIEnv * env, jclass clazz, jdouble lat, jdouble lon, jdouble cLat, jdouble cLon, jdouble north) { double const merY = mercator::LatToY(lat); @@ -1019,51 +1007,49 @@ Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuthFromLatLon( return Java_app_organicmaps_sdk_Framework_nativeGetDistanceAndAzimuth(env, clazz, merX, merY, cLat, cLon, north); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeFormatLatLon(JNIEnv * env, jclass, jdouble lat, jdouble lon, int coordsFormat) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeFormatLatLon(JNIEnv * env, jclass, jdouble lat, + jdouble lon, int coordsFormat) { switch (static_cast(coordsFormat)) { - default: - case android::CoordinatesFormat::LatLonDMS: // DMS, comma separated - return jni::ToJavaString(env, measurement_utils::FormatLatLonAsDMS(lat, lon, true /*withComma*/, 2)); - case android::CoordinatesFormat::LatLonDecimal: // Decimal, comma separated - return jni::ToJavaString(env, measurement_utils::FormatLatLon(lat, lon, true /* withComma */, 6)); - case android::CoordinatesFormat::OLCFull: // Open location code, long format - return jni::ToJavaString(env, openlocationcode::Encode({lat, lon})); - case android::CoordinatesFormat::OSMLink: // Link to osm.org - return jni::ToJavaString(env, measurement_utils::FormatOsmLink(lat, lon, 14)); - case android::CoordinatesFormat::UTM: // Universal Transverse Mercator - { - string utmFormat = utm_mgrs_utils::FormatUTM(lat, lon); - if (!utmFormat.empty()) - return jni::ToJavaString(env, utmFormat); - else - return nullptr; - } - case android::CoordinatesFormat::MGRS: // Military Grid Reference System - { - string mgrsFormat = utm_mgrs_utils::FormatMGRS(lat, lon, 5); - if (!mgrsFormat.empty()) - return jni::ToJavaString(env, mgrsFormat); - else - return nullptr; - } + default: + case android::CoordinatesFormat::LatLonDMS: // DMS, comma separated + return jni::ToJavaString(env, measurement_utils::FormatLatLonAsDMS(lat, lon, true /*withComma*/, 2)); + case android::CoordinatesFormat::LatLonDecimal: // Decimal, comma separated + return jni::ToJavaString(env, measurement_utils::FormatLatLon(lat, lon, true /* withComma */, 6)); + case android::CoordinatesFormat::OLCFull: // Open location code, long format + return jni::ToJavaString(env, openlocationcode::Encode({lat, lon})); + case android::CoordinatesFormat::OSMLink: // Link to osm.org + return jni::ToJavaString(env, measurement_utils::FormatOsmLink(lat, lon, 14)); + case android::CoordinatesFormat::UTM: // Universal Transverse Mercator + { + string utmFormat = utm_mgrs_utils::FormatUTM(lat, lon); + if (!utmFormat.empty()) + return jni::ToJavaString(env, utmFormat); + else + return nullptr; + } + case android::CoordinatesFormat::MGRS: // Military Grid Reference System + { + string mgrsFormat = utm_mgrs_utils::FormatMGRS(lat, lon, 5); + if (!mgrsFormat.empty()) + return jni::ToJavaString(env, mgrsFormat); + else + return nullptr; + } } } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeFormatAltitude(JNIEnv * env, jclass, jdouble alt) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeFormatAltitude(JNIEnv * env, jclass, jdouble alt) { return jni::ToJavaString(env, platform::Distance::FormatAltitude(alt)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeFormatSpeed(JNIEnv * env, jclass, jdouble speed) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeFormatSpeed(JNIEnv * env, jclass, jdouble speed) { auto const units = measurement_utils::GetMeasurementUnits(); - return jni::ToJavaString(env, measurement_utils::FormatSpeedNumeric(speed, units) + " " + - platform::GetLocalizedSpeedUnits(units)); + return jni::ToJavaString( + env, measurement_utils::FormatSpeedNumeric(speed, units) + " " + platform::GetLocalizedSpeedUnits(units)); } /* @@ -1106,26 +1092,22 @@ Java_app_organicmaps_sdk_Framework_nativeUpdateSavedDataVersion(JNIEnv * env, jc } */ -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetDataVersion(JNIEnv * env, jclass) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_Framework_nativeGetDataVersion(JNIEnv * env, jclass) { return frm()->GetCurrentDataVersion(); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetDrawScale(JNIEnv * env, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeGetDrawScale(JNIEnv * env, jclass) { return static_cast(frm()->GetDrawScale()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativePokeSearchInViewport(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativePokeSearchInViewport(JNIEnv * env, jclass) { frm()->GetSearchAPI().PokeSearchInViewport(); } -JNIEXPORT jdoubleArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclass) +JNIEXPORT jdoubleArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclass) { m2::PointD const center = frm()->GetViewportCenter(); @@ -1136,65 +1118,53 @@ Java_app_organicmaps_sdk_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclas return jLatLon; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track) { frm()->ShowTrack(static_cast(track)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSaveRoute(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSaveRoute(JNIEnv *, jclass) { frm()->SaveRoute(); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetBookmarkDir(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetBookmarkDir(JNIEnv * env, jclass) { return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetWritableDir(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetWritableDir(JNIEnv * env, jclass) { return jni::ToJavaString(env, GetPlatform().WritableDir().c_str()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetSettingsDir(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetSettingsDir(JNIEnv * env, jclass) { return jni::ToJavaString(env, GetPlatform().SettingsDir().c_str()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetDataFileExt(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetDataFileExt(JNIEnv * env, jclass) { return jni::ToJavaString(env, DATA_FILE_EXTENSION); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetMovableFilesExts(JNIEnv * env, jclass) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetMovableFilesExts(JNIEnv * env, jclass) { - vector exts = { DATA_FILE_EXTENSION, FONT_FILE_EXTENSION }; + vector exts = {DATA_FILE_EXTENSION, FONT_FILE_EXTENSION}; platform::CountryIndexes::GetIndexesExts(exts); return jni::ToJavaStringArray(env, exts); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetBookmarksFilesExts(JNIEnv * env, jclass) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetBookmarksFilesExts(JNIEnv * env, jclass) { static std::array const kBookmarkExtensions = { - std::string{kKmzExtension}, - std::string{kKmlExtension}, - std::string{kKmbExtension}, - std::string{kGpxExtension} - }; + std::string{kKmzExtension}, std::string{kKmlExtension}, std::string{kKmbExtension}, std::string{kGpxExtension}}; return jni::ToJavaStringArray(env, kBookmarkExtensions); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, jstring jNewPath) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, + jstring jNewPath) { string newPath = jni::ToNativeString(env, jNewPath); g_framework->RemoveLocalMaps(); @@ -1202,56 +1172,48 @@ Java_app_organicmaps_sdk_Framework_nativeChangeWritableDir(JNIEnv * env, jclass, g_framework->AddLocalMaps(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsRoutingActive(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsRoutingActive(JNIEnv * env, jclass) { return frm()->GetRoutingManager().IsRoutingActive(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilding(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilding(JNIEnv * env, jclass) { return frm()->GetRoutingManager().IsRouteBuilding(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilt(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsRouteBuilt(JNIEnv * env, jclass) { return frm()->GetRoutingManager().IsRouteBuilt(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeCloseRouting(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeCloseRouting(JNIEnv * env, jclass) { frm()->GetRoutingManager().CloseRouting(true /* remove route points */); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeBuildRoute(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeBuildRoute(JNIEnv * env, jclass) { frm()->GetRoutingManager().BuildRoute(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRemoveRoute(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRemoveRoute(JNIEnv * env, jclass) { frm()->GetRoutingManager().RemoveRoute(false /* deactivateFollowing */); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeFollowRoute(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeFollowRoute(JNIEnv * env, jclass) { frm()->GetRoutingManager().FollowRoute(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeDisableFollowing(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeDisableFollowing(JNIEnv * env, jclass) { frm()->GetRoutingManager().DisableFollowMode(); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGenerateNotifications(JNIEnv * env, jclass, jboolean announceStreets) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGenerateNotifications(JNIEnv * env, jclass, + jboolean announceStreets) { ::Framework * fr = frm(); if (!fr->GetRoutingManager().IsRoutingActive()) @@ -1265,21 +1227,17 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateNotifications(JNIEnv * env, jcl return jni::ToJavaStringArray(env, notifications); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetSpeedCamManagerMode(JNIEnv * env, jclass, jint mode) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetSpeedCamManagerMode(JNIEnv * env, jclass, jint mode) { - frm()->GetRoutingManager().GetSpeedCamManager().SetMode( - static_cast(mode)); + frm()->GetRoutingManager().GetSpeedCamManager().SetMode(static_cast(mode)); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetSpeedCamManagerMode(JNIEnv * env, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeGetSpeedCamManagerMode(JNIEnv * env, jclass) { return static_cast(frm()->GetRoutingManager().GetSpeedCamManager().GetMode()); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jclass) { RoutingManager & rm = frm()->GetRoutingManager(); if (!rm.IsRoutingActive()) @@ -1293,8 +1251,7 @@ Java_app_organicmaps_sdk_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jcl return CreateRoutingInfo(env, info, rm); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jclass) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jclass) { vector junctionPoints; if (!frm()->GetRoutingManager().RoutingSession().GetRouteJunctionPoints(junctionPoints)) @@ -1306,8 +1263,8 @@ Java_app_organicmaps_sdk_Framework_nativeGetRouteJunctionPoints(JNIEnv * env, jc return CreateJunctionInfoArray(env, junctionPoints); } -JNIEXPORT jintArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * env, jclass, jint width, jint height, jobject routeAltitudeLimits) +JNIEXPORT jintArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits( + JNIEnv * env, jclass, jint width, jint height, jobject routeAltitudeLimits) { RoutingManager::DistanceAltitude altitudes; if (!frm()->GetRoutingManager().GetRouteAltitudesAndDistancesM(altitudes)) @@ -1354,11 +1311,13 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * ASSERT(totalDescentField, ()); env->SetIntField(routeAltitudeLimits, totalDescentField, static_cast(totalDescent)); - static jfieldID const totalAscentStringField = env->GetFieldID(routeAltitudeLimitsClass, "totalAscentString", "Ljava/lang/String;"); + static jfieldID const totalAscentStringField = + env->GetFieldID(routeAltitudeLimitsClass, "totalAscentString", "Ljava/lang/String;"); ASSERT(totalAscentStringField, ()); env->SetObjectField(routeAltitudeLimits, totalAscentStringField, totalAscentString.get()); - static jfieldID const totalDescentStringField = env->GetFieldID(routeAltitudeLimitsClass, "totalDescentString", "Ljava/lang/String;"); + static jfieldID const totalDescentStringField = + env->GetFieldID(routeAltitudeLimitsClass, "totalDescentString", "Ljava/lang/String;"); ASSERT(totalDescentStringField, ()); env->SetObjectField(routeAltitudeLimits, totalDescentStringField, totalDescentString.get()); @@ -1367,12 +1326,14 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * env->SetBooleanField(routeAltitudeLimits, isMetricUnitsField, units == Units::Metric); size_t const imageRGBADataSize = imageRGBAData.size(); - ASSERT_NOT_EQUAL(imageRGBADataSize, 0, ("GenerateRouteAltitudeChart returns true but the vector with altitude image bits is empty.")); + ASSERT_NOT_EQUAL(imageRGBADataSize, 0, + ("GenerateRouteAltitudeChart returns true but the vector with altitude image bits is empty.")); size_t const pxlCount = width * height; if (maps::kAltitudeChartBPP * pxlCount != imageRGBADataSize) { - LOG(LWARNING, ("Wrong size of vector with altitude image bits. Expected size:", pxlCount, ". Real size:", imageRGBADataSize)); + LOG(LWARNING, + ("Wrong size of vector with altitude image bits. Expected size:", pxlCount, ". Real size:", imageRGBADataSize)); return nullptr; } @@ -1384,54 +1345,51 @@ Java_app_organicmaps_sdk_Framework_nativeGenerateRouteAltitudeChartBits(JNIEnv * for (size_t i = 0; i < pxlCount; ++i) { size_t const shiftInBytes = i * maps::kAltitudeChartBPP; - // Type of |imageRGBAData| elements is uint8_t. But uint8_t is promoted to unsinged int in code below before shifting. - // So there's no data lost in code below. + // Type of |imageRGBAData| elements is uint8_t. But uint8_t is promoted to unsinged int in code below before + // shifting. So there's no data lost in code below. arrayElements[i] = (imageRGBAData[shiftInBytes + 3] << 24) /* alpha */ - | (imageRGBAData[shiftInBytes] << 16) /* red */ - | (imageRGBAData[shiftInBytes + 1] << 8) /* green */ - | (imageRGBAData[shiftInBytes + 2]); /* blue */ + | (imageRGBAData[shiftInBytes] << 16) /* red */ + | (imageRGBAData[shiftInBytes + 1] << 8) /* green */ + | (imageRGBAData[shiftInBytes + 2]); /* blue */ } env->ReleaseIntArrayElements(imageRGBADataArray, arrayElements, 0); return imageRGBADataArray; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeShowCountry(JNIEnv * env, jclass, jstring countryId, jboolean zoomToDownloadButton) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeShowCountry(JNIEnv * env, jclass, jstring countryId, + jboolean zoomToDownloadButton) { - g_framework->ShowNode(jni::ToNativeString(env, countryId), (bool) zoomToDownloadButton); + g_framework->ShowNode(jni::ToNativeString(env, countryId), (bool)zoomToDownloadButton); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetRoutingListener(JNIEnv * env, jclass, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetRoutingListener(JNIEnv * env, jclass, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); frm()->GetRoutingManager().SetRouteBuildingListener( - [rf = jni::make_global_ref(listener)](routing::RouterResultCode e, storage::CountriesSet const & countries) { - CallRoutingListener(rf, static_cast(e), countries); - }); + [rf = jni::make_global_ref(listener)](routing::RouterResultCode e, storage::CountriesSet const & countries) + { CallRoutingListener(rf, static_cast(e), countries); }); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetRouteProgressListener(JNIEnv * env, jclass, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetRouteProgressListener(JNIEnv * env, jclass, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); frm()->GetRoutingManager().SetRouteProgressListener( bind(&CallRouteProgressListener, jni::make_global_ref(listener), _1)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetRoutingRecommendationListener(JNIEnv * env, jclass, - jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetRoutingRecommendationListener(JNIEnv * env, jclass, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); frm()->GetRoutingManager().SetRouteRecommendationListener( bind(&CallRouteRecommendationListener, jni::make_global_ref(listener), _1)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetRoutingLoadPointsListener( - JNIEnv *, jclass, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetRoutingLoadPointsListener(JNIEnv *, jclass, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); if (listener != nullptr) @@ -1440,25 +1398,20 @@ Java_app_organicmaps_sdk_Framework_nativeSetRoutingLoadPointsListener( g_loadRouteHandler = nullptr; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeDeactivatePopup(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeDeactivatePopup(JNIEnv * env, jclass) { return g_framework->DeactivatePopup(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeDeactivateMapSelectionCircle(JNIEnv * env, jclass, jboolean restoreViewport) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeDeactivateMapSelectionCircle(JNIEnv * env, jclass, + jboolean restoreViewport) { return g_framework->DeactivateMapSelectionCircle(restoreViewport); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jstring title, - jstring subtitle, jobject markType, - jint intermediateIndex, - jboolean isMyPosition, - jdouble lat, jdouble lon, - jboolean reorderIntermediatePoints) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeAddRoutePoint( + JNIEnv * env, jclass, jstring title, jstring subtitle, jobject markType, jint intermediateIndex, + jboolean isMyPosition, jdouble lat, jdouble lon, jboolean reorderIntermediatePoints) { RouteMarkData data; data.m_title = jni::ToNativeString(env, title); @@ -1471,65 +1424,58 @@ Java_app_organicmaps_sdk_Framework_nativeAddRoutePoint(JNIEnv * env, jclass, jst frm()->GetRoutingManager().AddRoutePoint(std::move(data), reorderIntermediatePoints); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoints(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoints(JNIEnv * env, jclass) { frm()->GetRoutingManager().RemoveRoutePoints(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoint(JNIEnv * env, jclass, jobject markType, jint intermediateIndex) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRemoveRoutePoint(JNIEnv * env, jclass, jobject markType, + jint intermediateIndex) { - frm()->GetRoutingManager().RemoveRoutePoint(GetRouteMarkType(env, markType), - static_cast(intermediateIndex)); + frm()->GetRoutingManager().RemoveRoutePoint(GetRouteMarkType(env, markType), static_cast(intermediateIndex)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRemoveIntermediateRoutePoints(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRemoveIntermediateRoutePoints(JNIEnv * env, jclass) { frm()->GetRoutingManager().RemoveIntermediateRoutePoints(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeCouldAddIntermediatePoint(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeCouldAddIntermediatePoint(JNIEnv * env, jclass) { return frm()->GetRoutingManager().CouldAddIntermediatePoint(); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetRoutePoints(JNIEnv * env, jclass) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_Framework_nativeGetRoutePoints(JNIEnv * env, jclass) { return CreateRouteMarkDataArray(env, frm()->GetRoutingManager().GetRoutePoints()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeMoveRoutePoint(JNIEnv * env, jclass, - jint currentIndex, jint targetIndex) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeMoveRoutePoint(JNIEnv * env, jclass, jint currentIndex, + jint targetIndex) { frm()->GetRoutingManager().MoveRoutePoint(currentIndex, targetIndex); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetTransitRouteInfo(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeGetTransitRouteInfo(JNIEnv * env, jclass) { return CreateTransitRouteInfo(env, frm()->GetRoutingManager().GetTransitRouteInfo()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeReloadWorldMaps(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeReloadWorldMaps(JNIEnv * env, jclass) { g_framework->ReloadWorldMaps(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsDayTime(JNIEnv * env, jclass, jlong utcTimeSeconds, jdouble lat, jdouble lon) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsDayTime(JNIEnv * env, jclass, + jlong utcTimeSeconds, jdouble lat, + jdouble lon) { DayTimeType const dt = GetDayTime(static_cast(utcTimeSeconds), lat, lon); return (dt == DayTimeType::Day || dt == DayTimeType::PolarDay); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolean allow, jboolean allowBuildings) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolean allow, + jboolean allowBuildings) { bool const allow3d = static_cast(allow); bool const allow3dBuildings = static_cast(allowBuildings); @@ -1538,8 +1484,7 @@ Java_app_organicmaps_sdk_Framework_nativeSet3dMode(JNIEnv * env, jclass, jboolea g_framework->Set3dMode(allow3d, allow3dBuildings); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject result) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject result) { bool enabled; bool buildings; @@ -1554,73 +1499,68 @@ Java_app_organicmaps_sdk_Framework_nativeGet3dMode(JNIEnv * env, jclass, jobject env->SetBooleanField(result, buildingsField, buildings); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetAutoZoomEnabled(JNIEnv * env, jclass, + jboolean enabled) { bool const autoZoomEnabled = static_cast(enabled); frm()->SaveAutoZoom(autoZoomEnabled); frm()->AllowAutoZoom(autoZoomEnabled); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetTransitSchemeEnabled(JNIEnv * env, jclass, + jboolean enabled) { frm()->GetTransitManager().EnableTransitSchemeMode(static_cast(enabled)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsTransitSchemeEnabled(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsTransitSchemeEnabled(JNIEnv * env, jclass) { return static_cast(frm()->LoadTransitSchemeEnabled()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetIsolinesLayerEnabled(JNIEnv * env, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetIsolinesLayerEnabled(JNIEnv * env, jclass, + jboolean enabled) { auto const isolinesEnabled = static_cast(enabled); frm()->GetIsolinesManager().SetEnabled(isolinesEnabled); frm()->SaveIsolinesEnabled(isolinesEnabled); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsIsolinesLayerEnabled(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsIsolinesLayerEnabled(JNIEnv * env, jclass) { return static_cast(frm()->LoadIsolinesEnabled()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetOutdoorsLayerEnabled(JNIEnv * env, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetOutdoorsLayerEnabled(JNIEnv * env, jclass, + jboolean enabled) { frm()->SaveOutdoorsEnabled(enabled); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsOutdoorsLayerEnabled(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsOutdoorsLayerEnabled(JNIEnv * env, jclass) { return static_cast(frm()->LoadOutdoorsEnabled()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSaveSettingSchemeEnabled(JNIEnv * env, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSaveSettingSchemeEnabled(JNIEnv * env, jclass, + jboolean enabled) { frm()->SaveTransitSchemeEnabled(static_cast(enabled)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeGetAutoZoomEnabled(JNIEnv *, jclass) { return frm()->LoadAutoZoom(); } // static void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, jdouble lon, jint zoom, jboolean animate) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeZoomToPoint(JNIEnv * env, jclass, jdouble lat, + jdouble lon, jint zoom, jboolean animate) { g_framework->Scale(m2::PointD(mercator::FromLatLon(lat, lon)), zoom, animate); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass) { if (!frm()->HasPlacePageInfo()) return nullptr; @@ -1638,8 +1578,7 @@ Java_app_organicmaps_sdk_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * en return usermark_helper::CreateMapObject(env, g_framework->GetPlacePageInfo()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetPoiContactUrl(JNIEnv *env, jclass, jint id) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetPoiContactUrl(JNIEnv * env, jclass, jint id) { auto const metaID = static_cast(id); string_view const value = g_framework->GetPlacePageInfo().GetMetadata(metaID); @@ -1648,15 +1587,13 @@ Java_app_organicmaps_sdk_Framework_nativeGetPoiContactUrl(JNIEnv *env, jclass, j return jni::ToJavaString(env, value); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsDownloadedMapAtScreenCenter(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsDownloadedMapAtScreenCenter(JNIEnv *, jclass) { ::Framework * fr = frm(); return storage::IsPointCoveredByDownloadedMaps(fr->GetViewportCenter(), fr->GetStorage(), fr->GetCountryInfoGetter()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv * env, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -1665,76 +1602,65 @@ Java_app_organicmaps_sdk_Framework_nativeGetActiveObjectFormattedCuisine(JNIEnv return jni::ToJavaString(env, g_framework->GetPlacePageInfo().FormatCuisines()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetVisibleRect(JNIEnv * env, jclass, jint left, jint top, jint right, jint bottom) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetVisibleRect(JNIEnv * env, jclass, jint left, + jint top, jint right, jint bottom) { frm()->SetVisibleViewport(m2::RectD(left, top, right, bottom)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeIsRouteFinished(JNIEnv * env, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeIsRouteFinished(JNIEnv * env, jclass) { return frm()->GetRoutingManager().IsRouteFinished(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeRunFirstLaunchAnimation(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeRunFirstLaunchAnimation(JNIEnv * env, jclass) { frm()->RunFirstLaunchAnimation(); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeOpenRoutePointsTransaction(JNIEnv * env, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeOpenRoutePointsTransaction(JNIEnv * env, jclass) { return frm()->GetRoutingManager().OpenRoutePointsTransaction(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeApplyRoutePointsTransaction(JNIEnv * env, jclass, - jint transactionId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeApplyRoutePointsTransaction(JNIEnv * env, jclass, + jint transactionId) { frm()->GetRoutingManager().ApplyRoutePointsTransaction(transactionId); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeCancelRoutePointsTransaction(JNIEnv * env, jclass, - jint transactionId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeCancelRoutePointsTransaction(JNIEnv * env, jclass, + jint transactionId) { frm()->GetRoutingManager().CancelRoutePointsTransaction(transactionId); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeInvalidRoutePointsTransactionId(JNIEnv * env, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeInvalidRoutePointsTransactionId(JNIEnv * env, jclass) { return frm()->GetRoutingManager().InvalidRoutePointsTransactionId(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeHasSavedRoutePoints(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeHasSavedRoutePoints(JNIEnv *, jclass) { return frm()->GetRoutingManager().HasSavedRoutePoints(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeLoadRoutePoints(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeLoadRoutePoints(JNIEnv *, jclass) { frm()->GetRoutingManager().LoadRoutePoints(g_loadRouteHandler); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSaveRoutePoints(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSaveRoutePoints(JNIEnv *, jclass) { frm()->GetRoutingManager().SaveRoutePoints(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeDeleteSavedRoutePoints(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeDeleteSavedRoutePoints(JNIEnv *, jclass) { frm()->GetRoutingManager().DeleteSavedRoutePoints(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeShowFeature(JNIEnv * env, jclass, jobject featureId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeShowFeature(JNIEnv * env, jclass, jobject featureId) { auto const f = g_framework->BuildFeatureId(env, featureId); @@ -1742,63 +1668,54 @@ Java_app_organicmaps_sdk_Framework_nativeShowFeature(JNIEnv * env, jclass, jobje frm()->ShowFeature(f); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeMakeCrash(JNIEnv *env, jclass type) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeMakeCrash(JNIEnv * env, jclass type) { CHECK(false, ("Diagnostic native crash!")); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerFacility(JNIEnv *, jclass, - jint facilityType, jboolean state) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerFacility(JNIEnv *, jclass, + jint facilityType, + jboolean state) { - frm()->GetPowerManager().SetFacility(static_cast(facilityType), - static_cast(state)); + frm()->GetPowerManager().SetFacility(static_cast(facilityType), static_cast(state)); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_Framework_nativeGetPowerManagerScheme(JNIEnv *, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_Framework_nativeGetPowerManagerScheme(JNIEnv *, jclass) { return static_cast(frm()->GetPowerManager().GetScheme()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerScheme(JNIEnv *, jclass, jint schemeType) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetPowerManagerScheme(JNIEnv *, jclass, jint schemeType) { frm()->GetPowerManager().SetScheme(static_cast(schemeType)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetViewportCenter(JNIEnv *, jclass, jdouble lat, jdouble lon, jint zoom) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetViewportCenter(JNIEnv *, jclass, jdouble lat, + jdouble lon, jint zoom) { // isAnim = true because of previous nativeSetChoosePositionMode animations. frm()->SetViewportCenter(mercator::FromLatLon(lat, lon), static_cast(zoom), true /* isAnim */); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeStopLocationFollow(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeStopLocationFollow(JNIEnv *, jclass) { frm()->StopLocationFollow(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeSetSearchViewport(JNIEnv *, jclass, jdouble lat, - jdouble lon, jint zoom) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeSetSearchViewport(JNIEnv *, jclass, jdouble lat, + jdouble lon, jint zoom) { - auto const center = mercator::FromLatLon(static_cast(lat), - static_cast(lon)); + auto const center = mercator::FromLatLon(static_cast(lat), static_cast(lon)); auto const rect = df::GetRectForDrawScale(static_cast(zoom), center); frm()->GetSearchAPI().OnViewportChanged(rect); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Framework_nativeHasPlacePageInfo(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Framework_nativeHasPlacePageInfo(JNIEnv *, jclass) { return static_cast(frm()->HasPlacePageInfo()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Framework_nativeMemoryWarning(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Framework_nativeMemoryWarning(JNIEnv *, jclass) { return frm()->MemoryWarning(); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp index debc312c8..1531c0924 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/Framework.hpp @@ -10,9 +10,8 @@ #include "drape_frontend/gui/skin.hpp" -#include "drape/pointers.hpp" #include "drape/graphics_context_factory.hpp" - +#include "drape/pointers.hpp" #include "indexer/feature_decl.hpp" #include "indexer/map_style.hpp" @@ -39,184 +38,176 @@ struct EverywhereSearchParams; namespace android { - enum CoordinatesFormat // See Java enum app.organicmaps.widget.placepage.CoordinatesFormat for all possible values. +enum CoordinatesFormat // See Java enum app.organicmaps.widget.placepage.CoordinatesFormat for all possible values. +{ + LatLonDMS = 0, // Latitude, Longitude in degrees minutes seconds format, comma separated + LatLonDecimal = 1, // Latitude, Longitude in decimal format, comma separated + OLCFull = 2, // Open location code, full format + OSMLink = 3, // Link to the OSM. E.g. https://osm.org/go/xcXjyqQlq-?m= + UTM = 4, // Universal Transverse Mercator + MGRS = 5 // Military Grid Reference System +}; + +// Keep in sync `public @interface ChoosePositionMode`in Framework.java. +enum class ChoosePositionMode +{ + None = 0, + Editor = 1, + Api = 2, +}; + +class Framework : private power_management::PowerManager::Subscriber +{ +private: + drape_ptr m_oglContextFactory; + drape_ptr m_vulkanContextFactory; + ::Framework m_work; + + math::LowPassVector m_sensors[2]; + double m_lastCompass = 0; + + std::string m_searchQuery; + + std::map m_guiPositions; + + void TrafficStateChanged(TrafficManager::TrafficState state); + void TransitSchemeStateChanged(TransitReadManager::TransitSchemeState state); + void IsolinesSchemeStateChanged(IsolinesManager::IsolinesState state); + + void MyPositionModeChanged(location::EMyPositionMode mode, bool routingActive); + + location::TMyPositionModeChanged m_myPositionModeSignal; + + TrafficManager::TrafficStateChangedFn m_onTrafficStateChangedFn; + TransitReadManager::TransitStateChangedFn m_onTransitStateChangedFn; + IsolinesManager::IsolinesStateChangedFn m_onIsolinesStateChangedFn; + + ChoosePositionMode m_isChoosePositionMode = ChoosePositionMode::None; + bool m_isSurfaceDestroyed = false; + +public: + Framework(std::function && afterMapsLoaded); + + storage::Storage & GetStorage(); + DataSource const & GetDataSource(); + + void ShowNode(storage::CountryId const & countryId, bool zoomToDownloadButton); + + void OnLocationError(int /* == location::TLocationStatus*/ newStatus); + void OnLocationUpdated(location::GpsInfo const & info); + void OnCompassUpdated(location::CompassInfo const & info, bool forceRedraw); + + bool CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi, bool firstLaunch, bool launchByDeepLink, + uint32_t appVersionCode, bool isCustomROM); + bool IsDrapeEngineCreated() const; + void UpdateDpi(int dpi); + bool DestroySurfaceOnDetach(); + void DetachSurface(bool destroySurface); + bool AttachSurface(JNIEnv * env, jobject jSurface); + void PauseSurfaceRendering(); + void ResumeSurfaceRendering(); + + void SetMapStyle(MapStyle mapStyle); + void MarkMapStyle(MapStyle mapStyle); + MapStyle GetMapStyle() const; + + void SetupMeasurementSystem(); + + RoutingManager & GetRoutingManager() { return m_work.GetRoutingManager(); } + void SetRouter(routing::RouterType type) { m_work.GetRoutingManager().SetRouter(type); } + routing::RouterType GetRouter() const { return m_work.GetRoutingManager().GetRouter(); } + routing::RouterType GetLastUsedRouter() const { return m_work.GetRoutingManager().GetLastUsedRouter(); } + + void Resize(JNIEnv * env, jobject jSurface, int w, int h); + + struct Finger { - LatLonDMS = 0, // Latitude, Longitude in degrees minutes seconds format, comma separated - LatLonDecimal = 1, // Latitude, Longitude in decimal format, comma separated - OLCFull = 2, // Open location code, full format - OSMLink = 3, // Link to the OSM. E.g. https://osm.org/go/xcXjyqQlq-?m= - UTM = 4, // Universal Transverse Mercator - MGRS = 5 // Military Grid Reference System + Finger(int64_t id, float x, float y) : m_id(id), m_x(x), m_y(y) {} + + int64_t m_id; + float m_x, m_y; }; - // Keep in sync `public @interface ChoosePositionMode`in Framework.java. - enum class ChoosePositionMode - { - None = 0, - Editor = 1, - Api = 2, - }; + void Scale(double factor, m2::PointD const & pxPoint, bool isAnim); - class Framework : private power_management::PowerManager::Subscriber - { - private: - drape_ptr m_oglContextFactory; - drape_ptr m_vulkanContextFactory; - ::Framework m_work; + void Scroll(double distanceX, double distanceY); - math::LowPassVector m_sensors[2]; - double m_lastCompass = 0; + void Touch(int action, Finger const & f1, Finger const & f2, uint8_t maskedPointer); - std::string m_searchQuery; + bool Search(search::EverywhereSearchParams const & params); + std::string GetLastSearchQuery() { return m_searchQuery; } + void ClearLastSearchQuery() { m_searchQuery.clear(); } - std::map m_guiPositions; + void AddLocalMaps(); + void RemoveLocalMaps(); + void ReloadWorldMaps(); - void TrafficStateChanged(TrafficManager::TrafficState state); - void TransitSchemeStateChanged(TransitReadManager::TransitSchemeState state); - void IsolinesSchemeStateChanged(IsolinesManager::IsolinesState state); + m2::PointD GetViewportCenter() const; - void MyPositionModeChanged(location::EMyPositionMode mode, bool routingActive); + void AddString(std::string const & name, std::string const & value); - location::TMyPositionModeChanged m_myPositionModeSignal; + void Scale(::Framework::EScaleMode mode); + void Scale(m2::PointD const & centerPt, int targetZoom, bool animate); - TrafficManager::TrafficStateChangedFn m_onTrafficStateChangedFn; - TransitReadManager::TransitStateChangedFn m_onTransitStateChangedFn; - IsolinesManager::IsolinesStateChangedFn m_onIsolinesStateChangedFn; + void ChangeTrackColor(kml::TrackId trackId, dp::Color color); + void ReplaceBookmark(kml::MarkId markId, kml::BookmarkData & bm); + void ReplaceTrack(kml::TrackId trackId, kml::TrackData & trackData); + void MoveBookmark(kml::MarkId markId, kml::MarkGroupId curCat, kml::MarkGroupId newCat); + void MoveTrack(kml::TrackId trackId, kml::MarkGroupId curCat, kml::MarkGroupId newCat); - ChoosePositionMode m_isChoosePositionMode = ChoosePositionMode::None; - bool m_isSurfaceDestroyed = false; + ::Framework * NativeFramework(); - public: - Framework(std::function && afterMapsLoaded); + bool IsDownloadingActive(); - storage::Storage & GetStorage(); - DataSource const & GetDataSource(); + void ExecuteMapApiRequest(); - void ShowNode(storage::CountryId const & countryId, bool zoomToDownloadButton); + void DeactivatePopup(); + void DeactivateMapSelectionCircle(bool restoreViewport); - void OnLocationError(int/* == location::TLocationStatus*/ newStatus); - void OnLocationUpdated(location::GpsInfo const & info); - void OnCompassUpdated(location::CompassInfo const & info, bool forceRedraw); + // std::string GetOutdatedCountriesString(); - bool CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi, bool firstLaunch, - bool launchByDeepLink, uint32_t appVersionCode, bool isCustomROM); - bool IsDrapeEngineCreated() const; - void UpdateDpi(int dpi); - bool DestroySurfaceOnDetach(); - void DetachSurface(bool destroySurface); - bool AttachSurface(JNIEnv * env, jobject jSurface); - void PauseSurfaceRendering(); - void ResumeSurfaceRendering(); + void SetMyPositionModeListener(location::TMyPositionModeChanged const & fn); + location::EMyPositionMode GetMyPositionMode() const; + void SwitchMyPositionNextMode(); - void SetMapStyle(MapStyle mapStyle); - void MarkMapStyle(MapStyle mapStyle); - MapStyle GetMapStyle() const; + void SetTrafficStateListener(TrafficManager::TrafficStateChangedFn const & fn); + void SetTransitSchemeListener(TransitReadManager::TransitStateChangedFn const & fn); + void SetIsolinesListener(IsolinesManager::IsolinesStateChangedFn const & fn); - void SetupMeasurementSystem(); + bool IsTrafficEnabled(); + void EnableTraffic(); + void DisableTraffic(); - RoutingManager & GetRoutingManager() { return m_work.GetRoutingManager(); } - void SetRouter(routing::RouterType type) { m_work.GetRoutingManager().SetRouter(type); } - routing::RouterType GetRouter() const { return m_work.GetRoutingManager().GetRouter(); } - routing::RouterType GetLastUsedRouter() const - { - return m_work.GetRoutingManager().GetLastUsedRouter(); - } + void Save3dMode(bool allow3d, bool allow3dBuildings); + void Set3dMode(bool allow3d, bool allow3dBuildings); + void Get3dMode(bool & allow3d, bool & allow3dBuildings); - void Resize(JNIEnv * env, jobject jSurface, int w, int h); + void SetMapLanguageCode(std::string const & languageCode); + std::string GetMapLanguageCode(); - struct Finger - { - Finger(int64_t id, float x, float y) - : m_id(id) - , m_x(x) - , m_y(y) - { - } + void SetChoosePositionMode(ChoosePositionMode mode, bool isBusiness, m2::PointD const * optionalPosition); + ChoosePositionMode GetChoosePositionMode(); - int64_t m_id; - float m_x, m_y; - }; + void UpdateMyPositionRoutingOffset(int offsetY); + void SetupWidget(gui::EWidget widget, float x, float y, dp::Anchor anchor); + void ApplyWidgets(); + void CleanWidgets(); - void Scale(double factor, m2::PointD const & pxPoint, bool isAnim); + place_page::Info & GetPlacePageInfo(); - void Scroll(double distanceX, double distanceY); + bool IsAutoRetryDownloadFailed(); + bool IsDownloadOn3gEnabled(); + void EnableDownloadOn3g(); - void Touch(int action, Finger const & f1, Finger const & f2, uint8_t maskedPointer); + // int ToDoAfterUpdate() const; - bool Search(search::EverywhereSearchParams const & params); - std::string GetLastSearchQuery() { return m_searchQuery; } - void ClearLastSearchQuery() { m_searchQuery.clear(); } + // PowerManager::Subscriber overrides: + void OnPowerFacilityChanged(power_management::Facility const facility, bool enabled) override; + void OnPowerSchemeChanged(power_management::Scheme const actualScheme) override; - void AddLocalMaps(); - void RemoveLocalMaps(); - void ReloadWorldMaps(); - - m2::PointD GetViewportCenter() const; - - void AddString(std::string const & name, std::string const & value); - - void Scale(::Framework::EScaleMode mode); - void Scale(m2::PointD const & centerPt, int targetZoom, bool animate); - - void ChangeTrackColor(kml::TrackId trackId, dp::Color color); - void ReplaceBookmark(kml::MarkId markId, kml::BookmarkData & bm); - void ReplaceTrack(kml::TrackId trackId, kml::TrackData & trackData); - void MoveBookmark(kml::MarkId markId, kml::MarkGroupId curCat, kml::MarkGroupId newCat); - void MoveTrack(kml::TrackId trackId, kml::MarkGroupId curCat, kml::MarkGroupId newCat); - - ::Framework * NativeFramework(); - - bool IsDownloadingActive(); - - void ExecuteMapApiRequest(); - - void DeactivatePopup(); - void DeactivateMapSelectionCircle(bool restoreViewport); - -// std::string GetOutdatedCountriesString(); - - void SetMyPositionModeListener(location::TMyPositionModeChanged const & fn); - location::EMyPositionMode GetMyPositionMode() const; - void SwitchMyPositionNextMode(); - - void SetTrafficStateListener(TrafficManager::TrafficStateChangedFn const & fn); - void SetTransitSchemeListener(TransitReadManager::TransitStateChangedFn const & fn); - void SetIsolinesListener(IsolinesManager::IsolinesStateChangedFn const & fn); - - bool IsTrafficEnabled(); - void EnableTraffic(); - void DisableTraffic(); - - void Save3dMode(bool allow3d, bool allow3dBuildings); - void Set3dMode(bool allow3d, bool allow3dBuildings); - void Get3dMode(bool & allow3d, bool & allow3dBuildings); - - void SetMapLanguageCode(std::string const & languageCode); - std::string GetMapLanguageCode(); - - void SetChoosePositionMode(ChoosePositionMode mode, bool isBusiness, m2::PointD const * optionalPosition); - ChoosePositionMode GetChoosePositionMode(); - - void UpdateMyPositionRoutingOffset(int offsetY); - void SetupWidget(gui::EWidget widget, float x, float y, dp::Anchor anchor); - void ApplyWidgets(); - void CleanWidgets(); - - place_page::Info & GetPlacePageInfo(); - - bool IsAutoRetryDownloadFailed(); - bool IsDownloadOn3gEnabled(); - void EnableDownloadOn3g(); - -// int ToDoAfterUpdate() const; - - // PowerManager::Subscriber overrides: - void OnPowerFacilityChanged(power_management::Facility const facility, bool enabled) override; - void OnPowerSchemeChanged(power_management::Scheme const actualScheme) override; - - FeatureID BuildFeatureId(JNIEnv * env, jobject featureId); - }; -} + FeatureID BuildFeatureId(JNIEnv * env, jobject featureId); +}; +} // namespace android extern std::unique_ptr g_framework; ::Framework * frm(); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp index 8e12965b7..d89967c7c 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/LocationState.cpp @@ -7,26 +7,23 @@ extern "C" { - -static void LocationStateModeChanged(location::EMyPositionMode mode, - std::shared_ptr const & listener) +static void LocationStateModeChanged(location::EMyPositionMode mode, std::shared_ptr const & listener) { JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener.get(), - "onMyPositionModeChanged", "(I)V"), static_cast(mode)); + env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener.get(), "onMyPositionModeChanged", "(I)V"), + static_cast(mode)); } // public static void nativeSwitchToNextMode(); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeSwitchToNextMode(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeSwitchToNextMode(JNIEnv * env, + jclass clazz) { ASSERT(g_framework, ()); g_framework->SwitchMyPositionNextMode(); } // private static int nativeGetMode(); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeGetMode(JNIEnv * env, jclass clazz) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeGetMode(JNIEnv * env, jclass clazz) { // GetMyPositionMode() is initialized only after drape creation. // https://github.com/organicmaps/organicmaps/issues/1128#issuecomment-1784435190 @@ -35,34 +32,31 @@ Java_app_organicmaps_sdk_location_LocationState_nativeGetMode(JNIEnv * env, jcla } // public static void nativeSetListener(ModeChangeListener listener); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeSetListener(JNIEnv * env, jclass clazz, - jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeSetListener(JNIEnv * env, jclass clazz, + jobject listener) { ASSERT(g_framework, ()); - g_framework->SetMyPositionModeListener(std::bind(&LocationStateModeChanged, std::placeholders::_1, - jni::make_global_ref(listener))); + g_framework->SetMyPositionModeListener( + std::bind(&LocationStateModeChanged, std::placeholders::_1, jni::make_global_ref(listener))); } // public static void nativeRemoveListener(); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeRemoveListener(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeRemoveListener(JNIEnv * env, jclass clazz) { ASSERT(g_framework, ()); g_framework->SetMyPositionModeListener(location::TMyPositionModeChanged()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeOnLocationError(JNIEnv * env, jclass clazz, int errorCode) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeOnLocationError(JNIEnv * env, jclass clazz, + int errorCode) { ASSERT(g_framework, ()); g_framework->OnLocationError(errorCode); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_location_LocationState_nativeLocationUpdated(JNIEnv * env, jclass clazz, jlong time, - jdouble lat, jdouble lon, jfloat accuracy, - jdouble altitude, jfloat speed, jfloat bearing) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_LocationState_nativeLocationUpdated( + JNIEnv * env, jclass clazz, jlong time, jdouble lat, jdouble lon, jfloat accuracy, jdouble altitude, jfloat speed, + jfloat bearing) { ASSERT(g_framework, ()); location::GpsInfo info; @@ -90,4 +84,4 @@ Java_app_organicmaps_sdk_location_LocationState_nativeLocationUpdated(JNIEnv * e g_framework->OnLocationUpdated(info); GpsTracker::Instance().OnLocationUpdated(info); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/Map.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/Map.cpp index f5332f3d9..3cb064527 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/Map.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/Map.cpp @@ -15,51 +15,43 @@ namespace void OnRenderingInitializationFinished(std::shared_ptr const & listener) { JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener.get(), - "onRenderingInitializationFinished", "()V")); + env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener.get(), "onRenderingInitializationFinished", "()V")); } } // namespace extern "C" { -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Map_nativeCreateEngine(JNIEnv * env, jclass, - jobject surface, jint density, - jboolean firstLaunch, - jboolean isLaunchByDeepLink, - jint appVersionCode, - jboolean isCustomROM) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Map_nativeCreateEngine(JNIEnv * env, jclass, jobject surface, + jint density, jboolean firstLaunch, + jboolean isLaunchByDeepLink, + jint appVersionCode, jboolean isCustomROM) { return g_framework->CreateDrapeEngine(env, surface, density, firstLaunch, isLaunchByDeepLink, base::asserted_cast(appVersionCode), isCustomROM); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Map_nativeIsEngineCreated(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Map_nativeIsEngineCreated(JNIEnv *, jclass) { return g_framework->IsDrapeEngineCreated(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeUpdateEngineDpi(JNIEnv *, jclass, jint dpi) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeUpdateEngineDpi(JNIEnv *, jclass, jint dpi) { return g_framework->UpdateDpi(dpi); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeExecuteMapApiRequest(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeExecuteMapApiRequest(JNIEnv * env, jclass) { return g_framework->ExecuteMapApiRequest(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeSetRenderingInitializationFinishedListener( - JNIEnv *, jclass, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeSetRenderingInitializationFinishedListener(JNIEnv *, jclass, + jobject listener) { if (listener) { g_framework->NativeFramework()->SetGraphicsContextInitializationHandler( - std::bind(&OnRenderingInitializationFinished, jni::make_global_ref(listener))); + std::bind(&OnRenderingInitializationFinished, jni::make_global_ref(listener))); } else { @@ -67,69 +59,61 @@ Java_app_organicmaps_sdk_Map_nativeSetRenderingInitializationFinishedListener( } } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Map_nativeAttachSurface(JNIEnv * env, jclass, jobject surface) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Map_nativeAttachSurface(JNIEnv * env, jclass, jobject surface) { return g_framework->AttachSurface(env, surface); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeDetachSurface(JNIEnv *, jclass, jboolean destroySurface) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeDetachSurface(JNIEnv *, jclass, jboolean destroySurface) { g_framework->DetachSurface(destroySurface); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeSurfaceChanged(JNIEnv * env, jclass, jobject surface, jint w, jint h) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeSurfaceChanged(JNIEnv * env, jclass, jobject surface, jint w, + jint h) { g_framework->Resize(env, surface, w, h); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_Map_nativeDestroySurfaceOnDetach(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_Map_nativeDestroySurfaceOnDetach(JNIEnv *, jclass) { return g_framework->DestroySurfaceOnDetach(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativePauseSurfaceRendering(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativePauseSurfaceRendering(JNIEnv *, jclass) { g_framework->PauseSurfaceRendering(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeResumeSurfaceRendering(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeResumeSurfaceRendering(JNIEnv *, jclass) { g_framework->ResumeSurfaceRendering(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeUpdateMyPositionRoutingOffset(JNIEnv * env, jclass clazz, int offsetY) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeUpdateMyPositionRoutingOffset(JNIEnv * env, jclass clazz, + int offsetY) { g_framework->UpdateMyPositionRoutingOffset(offsetY); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeApplyWidgets(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeApplyWidgets(JNIEnv *, jclass) { g_framework->ApplyWidgets(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeCleanWidgets(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeCleanWidgets(JNIEnv *, jclass) { g_framework->CleanWidgets(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeSetupWidget( - JNIEnv *, jclass, jint widget, jfloat x, jfloat y, jint anchor) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeSetupWidget(JNIEnv *, jclass, jint widget, jfloat x, jfloat y, + jint anchor) { g_framework->SetupWidget(static_cast(widget), x, y, static_cast(anchor)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble north, jboolean forceRedraw) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble north, + jboolean forceRedraw) { location::CompassInfo info; info.m_bearing = north; @@ -137,54 +121,45 @@ Java_app_organicmaps_sdk_Map_nativeCompassUpdated(JNIEnv *, jclass, jdouble nort g_framework->OnCompassUpdated(info, forceRedraw); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeScalePlus(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeScalePlus(JNIEnv *, jclass) { g_framework->Scale(::Framework::SCALE_MAG); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeScaleMinus(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeScaleMinus(JNIEnv *, jclass) { g_framework->Scale(::Framework::SCALE_MIN); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeOnScroll( - JNIEnv *, jclass, jdouble distanceX, jdouble distanceY) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeOnScroll(JNIEnv *, jclass, jdouble distanceX, + jdouble distanceY) { g_framework->Scroll(distanceX, distanceY); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeOnScale( - JNIEnv *, jclass, jdouble factor, jdouble focusX, jdouble focusY, jboolean isAnim) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeOnScale(JNIEnv *, jclass, jdouble factor, jdouble focusX, + jdouble focusY, jboolean isAnim) { g_framework->Scale(factor, {focusX, focusY}, isAnim); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeOnTouch(JNIEnv *, jclass, jint action, - jint id1, jfloat x1, jfloat y1, - jint id2, jfloat x2, jfloat y2, - jint maskedPointer) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeOnTouch(JNIEnv *, jclass, jint action, jint id1, jfloat x1, + jfloat y1, jint id2, jfloat x2, jfloat y2, + jint maskedPointer) { - g_framework->Touch(action, - android::Framework::Finger(id1, x1, y1), - android::Framework::Finger(id2, x2, y2), maskedPointer); + g_framework->Touch(action, android::Framework::Finger(id1, x1, y1), android::Framework::Finger(id2, x2, y2), + maskedPointer); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeStorageConnected(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeStorageConnected(JNIEnv *, jclass) { android::Platform::Instance().OnExternalStorageStatusChanged(true); g_framework->AddLocalMaps(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_Map_nativeStorageDisconnected(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_Map_nativeStorageDisconnected(JNIEnv *, jclass) { android::Platform::Instance().OnExternalStorageStatusChanged(false); g_framework->RemoveLocalMaps(); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/MapManager.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/MapManager.cpp index 75083bb58..b8f1e2fe5 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/MapManager.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/MapManager.cpp @@ -21,7 +21,6 @@ #include #include - namespace { // The last 5% are left for applying diffs. @@ -44,7 +43,10 @@ struct TBatchedData TBatchedData(storage::CountryId const & countryId, storage::NodeStatus const newStatus, storage::NodeErrorCode const errorCode, bool isLeaf) - : m_countryId(countryId), m_newStatus(newStatus), m_errorCode(errorCode), m_isLeaf(isLeaf) + : m_countryId(countryId) + , m_newStatus(newStatus) + , m_errorCode(errorCode) + , m_isLeaf(isLeaf) {} }; @@ -64,11 +66,11 @@ struct CountryItemBuilder { jclass m_class; jmethodID m_ctor; - jfieldID m_Id, m_Name, m_DirectParentId, m_TopmostParentId, m_DirectParentName, m_TopmostParentName, - m_Description, m_Size, m_EnqueuedSize, m_TotalSize, m_ChildCount, m_TotalChildCount, - m_Present, m_Progress, m_DownloadedBytes, m_BytesToDownload, m_Category, m_Status, m_ErrorCode; + jfieldID m_Id, m_Name, m_DirectParentId, m_TopmostParentId, m_DirectParentName, m_TopmostParentName, m_Description, + m_Size, m_EnqueuedSize, m_TotalSize, m_ChildCount, m_TotalChildCount, m_Present, m_Progress, m_DownloadedBytes, + m_BytesToDownload, m_Category, m_Status, m_ErrorCode; - CountryItemBuilder(JNIEnv *env) + CountryItemBuilder(JNIEnv * env) { m_class = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/CountryItem"); m_ctor = jni::GetConstructorID(env, m_class, "(Ljava/lang/String;)V"); @@ -95,10 +97,7 @@ struct CountryItemBuilder } DECLARE_BUILDER_INSTANCE(CountryItemBuilder); - jobject Create(JNIEnv * env, jobject id) const - { - return env->NewObject(m_class, m_ctor, id); - } + jobject Create(JNIEnv * env, jobject id) const { return env->NewObject(m_class, m_ctor, id); } }; static storage::CountryId const GetRootId(JNIEnv * env, jstring root) @@ -109,52 +108,54 @@ static storage::CountryId const GetRootId(JNIEnv * env, jstring root) extern "C" { - // static String nativeGetRoot(); -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetRoot(JNIEnv * env, jclass clazz) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetRoot(JNIEnv * env, jclass clazz) { return jni::ToJavaString(env, GetStorage().GetRootId()); } // static boolean nativeMoveFile(String oldFile, String newFile); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeMoveFile(JNIEnv * env, jclass clazz, jstring oldFile, jstring newFile) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeMoveFile(JNIEnv * env, jclass clazz, + jstring oldFile, + jstring newFile) { return base::MoveFileX(jni::ToNativeString(env, oldFile), jni::ToNativeString(env, newFile)); } // static boolean nativeHasSpaceToDownloadAmount(long bytes); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadAmount(JNIEnv * env, jclass clazz, jlong bytes) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadAmount(JNIEnv * env, + jclass clazz, + jlong bytes) { return storage::IsEnoughSpaceForDownload(bytes); } // static boolean nativeHasSpaceToDownloadCountry(String root); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadCountry(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToDownloadCountry(JNIEnv * env, + jclass clazz, + jstring root) { return storage::IsEnoughSpaceForDownload(jni::ToNativeString(env, root), GetStorage()); } // static boolean nativeHasSpaceToUpdate(String root); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToUpdate(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeHasSpaceToUpdate(JNIEnv * env, + jclass clazz, + jstring root) { return IsEnoughSpaceForUpdate(jni::ToNativeString(env, root), GetStorage()); } // static int nativeGetDownloadedCount(); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetDownloadedCount(JNIEnv * env, jclass clazz) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetDownloadedCount(JNIEnv * env, + jclass clazz) { return static_cast(GetStorage().GetDownloadedFilesCount()); } // static @Nullable UpdateInfo nativeGetUpdateInfo(@Nullable String root); -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetUpdateInfo(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetUpdateInfo(JNIEnv * env, jclass clazz, + jstring root) { storage::Storage::UpdateInfo info; if (!GetStorage().GetUpdateInfo(GetRootId(env, root), info)) @@ -168,7 +169,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetUpdateInfo(JNIEnv * env, return env->NewObject(infoClass, ctor, info.m_numberOfMwmFilesToUpdate, info.m_totalDownloadSizeInBytes); } -static void UpdateItemShort(JNIEnv * env, jobject item, storage::NodeStatus const status, storage::NodeErrorCode const error) +static void UpdateItemShort(JNIEnv * env, jobject item, storage::NodeStatus const status, + storage::NodeErrorCode const error) { auto const & ciBuilder = CountryItemBuilder::Instance(env); @@ -211,7 +213,8 @@ static void UpdateItem(JNIEnv * env, jobject item, storage::NodeAttrs const & at } // Description - env->SetObjectField(item, ciBuilder.m_Description, SLR(env, jni::ToJavaString(env, attrs.m_nodeLocalDescription)).get()); + env->SetObjectField(item, ciBuilder.m_Description, + SLR(env, jni::ToJavaString(env, attrs.m_nodeLocalDescription)).get()); // Sizes env->SetLongField(item, ciBuilder.m_Size, attrs.m_localMwmSize); @@ -267,18 +270,21 @@ static void PutItemsToList( } } -// static void nativeListItems(@Nullable String root, double lat, double lon, boolean hasLocation, boolean myMapsMode, List result); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeListItems(JNIEnv * env, jclass clazz, jstring parent, jdouble lat, jdouble lon, jboolean hasLocation, jboolean myMapsMode, jobject result) +// static void nativeListItems(@Nullable String root, double lat, double lon, boolean hasLocation, boolean myMapsMode, +// List result); +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeListItems(JNIEnv * env, jclass clazz, + jstring parent, jdouble lat, + jdouble lon, jboolean hasLocation, + jboolean myMapsMode, + jobject result) { if (hasLocation && !myMapsMode) { storage::CountriesVec near; g_framework->NativeFramework()->GetCountryInfoGetter().GetRegionsCountryId(mercator::FromLatLon(lat, lon), near); PutItemsToList(env, result, near, ItemCategory::NEAR_ME, - [](storage::CountryId const & countryId, storage::NodeAttrs const & attrs) -> bool { - return !attrs.m_present; - }); + [](storage::CountryId const & countryId, storage::NodeAttrs const & attrs) -> bool + { return !attrs.m_present; }); } storage::CountriesVec downloaded, available; @@ -291,8 +297,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeListItems(JNIEnv * env, jcl } // static void nativeUpdateItem(CountryItem item); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetAttributes(JNIEnv * env, jclass, jobject item) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetAttributes(JNIEnv * env, jclass, + jobject item) { auto const & ciBuilder = CountryItemBuilder::Instance(env); jstring id = static_cast(env->GetObjectField(item, ciBuilder.m_Id)); @@ -304,8 +310,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetAttributes(JNIEnv * env, } // static void nativeGetStatus(String root); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetStatus(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetStatus(JNIEnv * env, jclass clazz, + jstring root) { storage::NodeStatuses ns; GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns); @@ -313,8 +319,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetStatus(JNIEnv * env, jcl } // static void nativeGetError(String root); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetError(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetError(JNIEnv * env, jclass clazz, + jstring root) { storage::NodeStatuses ns; GetStorage().GetNodeStatuses(jni::ToNativeString(env, root), ns); @@ -322,22 +328,23 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetError(JNIEnv * env, jcla } // static String nativeGetName(String root); -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetName(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetName(JNIEnv * env, jclass clazz, + jstring root) { return jni::ToJavaString(env, GetStorage().GetNodeLocalName(jni::ToNativeString(env, root))); } // static @Nullable String nativeFindCountry(double lat, double lon); -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeFindCountry(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeFindCountry(JNIEnv * env, jclass clazz, + jdouble lat, jdouble lon) { - return jni::ToJavaString(env, g_framework->NativeFramework()->GetCountryInfoGetter().GetRegionCountryId(mercator::FromLatLon(lat, lon))); + return jni::ToJavaString( + env, g_framework->NativeFramework()->GetCountryInfoGetter().GetRegionCountryId(mercator::FromLatLon(lat, lon))); } // static boolean nativeIsDownloading(); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloading(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloading(JNIEnv * env, + jclass clazz) { return static_cast(GetStorage().IsDownloadInProgress()); } @@ -365,14 +372,14 @@ static void EndBatchingCallbacks(JNIEnv * env) for (TBatchedData const & dataItem : key.second) { // Create StorageCallbackData instance… - static jclass batchDataClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/MapManager$StorageCallbackData"); + static jclass batchDataClass = + jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/MapManager$StorageCallbackData"); static jmethodID batchDataCtor = jni::GetConstructorID(env, batchDataClass, "(Ljava/lang/String;IIZ)V"); jni::TScopedLocalRef const id(env, jni::ToJavaString(env, dataItem.m_countryId)); - jni::TScopedLocalRef const item(env, env->NewObject(batchDataClass, batchDataCtor, id.get(), - static_cast(dataItem.m_newStatus), - static_cast(dataItem.m_errorCode), - dataItem.m_isLeaf)); + jni::TScopedLocalRef const item( + env, env->NewObject(batchDataClass, batchDataCtor, id.get(), static_cast(dataItem.m_newStatus), + static_cast(dataItem.m_errorCode), dataItem.m_isLeaf)); // …and put it into the resulting list env->CallBooleanMethod(list.get(), listBuilder.m_add, item.get()); } @@ -387,8 +394,8 @@ static void EndBatchingCallbacks(JNIEnv * env) } // static void nativeDownload(String root); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeDownload(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeDownload(JNIEnv * env, jclass clazz, + jstring root) { StartBatchingCallbacks(); GetStorage().DownloadNode(jni::ToNativeString(env, root)); @@ -396,8 +403,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeDownload(JNIEnv * env, jcla } // static boolean nativeRetry(String root); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeRetry(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeRetry(JNIEnv * env, jclass clazz, + jstring root) { StartBatchingCallbacks(); GetStorage().RetryDownloadNode(jni::ToNativeString(env, root)); @@ -405,8 +412,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeRetry(JNIEnv * env, jclass } // static void nativeUpdate(String root); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass clazz, + jstring root) { StartBatchingCallbacks(); GetStorage().UpdateNode(GetRootId(env, root)); @@ -414,8 +421,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeUpdate(JNIEnv * env, jclass } // static void nativeCancel(String root); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeCancel(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeCancel(JNIEnv * env, jclass clazz, + jstring root) { StartBatchingCallbacks(); GetStorage().CancelDownloadNode(GetRootId(env, root)); @@ -423,8 +430,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeCancel(JNIEnv * env, jclass } // static void nativeDelete(String root); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeDelete(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeDelete(JNIEnv * env, jclass clazz, + jstring root) { StartBatchingCallbacks(); auto const countryId = jni::ToNativeString(env, root); @@ -432,8 +439,7 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeDelete(JNIEnv * env, jclass EndBatchingCallbacks(env); } -static void StatusChangedCallback(std::shared_ptr const & listenerRef, - storage::CountryId const & countryId) +static void StatusChangedCallback(std::shared_ptr const & listenerRef, storage::CountryId const & countryId) { storage::NodeStatuses ns; GetStorage().GetNodeStatuses(countryId, ns); @@ -445,42 +451,48 @@ static void StatusChangedCallback(std::shared_ptr const & listenerRef, EndBatchingCallbacks(jni::GetEnv()); } -static void ProgressChangedCallback(std::shared_ptr const & listenerRef, - storage::CountryId const & countryId, downloader::Progress const & progress) +static void ProgressChangedCallback(std::shared_ptr const & listenerRef, storage::CountryId const & countryId, + downloader::Progress const & progress) { JNIEnv * env = jni::GetEnv(); jmethodID const methodID = jni::GetMethodID(env, *listenerRef, "onProgress", "(Ljava/lang/String;JJ)V"); - env->CallVoidMethod(*listenerRef, methodID, jni::ToJavaString(env, countryId), - progress.m_bytesDownloaded, progress.m_bytesTotal); + env->CallVoidMethod(*listenerRef, methodID, jni::ToJavaString(env, countryId), progress.m_bytesDownloaded, + progress.m_bytesTotal); } // static int nativeSubscribe(StorageCallback listener); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribe(JNIEnv * env, jclass clazz, jobject listener) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribe(JNIEnv * env, jclass clazz, + jobject listener) { - return GetStorage().Subscribe(std::bind(&StatusChangedCallback, jni::make_global_ref(listener), std::placeholders::_1), - std::bind(&ProgressChangedCallback, jni::make_global_ref(listener), std::placeholders::_1, std::placeholders::_2)); + return GetStorage().Subscribe( + std::bind(&StatusChangedCallback, jni::make_global_ref(listener), std::placeholders::_1), + std::bind(&ProgressChangedCallback, jni::make_global_ref(listener), std::placeholders::_1, + std::placeholders::_2)); } // static void nativeUnsubscribe(int slot); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribe(JNIEnv * env, jclass clazz, jint slot) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribe(JNIEnv * env, jclass clazz, + jint slot) { GetStorage().Unsubscribe(slot); } // static void nativeSubscribeOnCountryChanged(CurrentCountryChangedListener listener); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribeOnCountryChanged(JNIEnv * env, jclass clazz, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribeOnCountryChanged(JNIEnv * env, + jclass clazz, + jobject listener) { ASSERT(!g_countryChangedListener, ()); g_countryChangedListener = env->NewGlobalRef(listener); - auto const callback = [](storage::CountryId const & countryId) { + auto const callback = [](storage::CountryId const & countryId) + { JNIEnv * env = jni::GetEnv(); - jmethodID methodID = jni::GetMethodID(env, g_countryChangedListener, "onCurrentCountryChanged", "(Ljava/lang/String;)V"); - env->CallVoidMethod(g_countryChangedListener, methodID, jni::TScopedLocalRef(env, jni::ToJavaString(env, countryId)).get()); + jmethodID methodID = + jni::GetMethodID(env, g_countryChangedListener, "onCurrentCountryChanged", "(Ljava/lang/String;)V"); + env->CallVoidMethod(g_countryChangedListener, methodID, + jni::TScopedLocalRef(env, jni::ToJavaString(env, countryId)).get()); }; storage::CountryId const & prev = g_framework->NativeFramework()->GetLastReportedCountry(); @@ -491,8 +503,8 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeSubscribeOnCountryChanged(J } // static void nativeUnsubscribeOnCountryChanged(); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribeOnCountryChanged(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribeOnCountryChanged(JNIEnv * env, + jclass clazz) { g_framework->NativeFramework()->SetCurrentCountryChangedListener(nullptr); @@ -501,15 +513,16 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeUnsubscribeOnCountryChanged } // static boolean nativeHasUnsavedEditorChanges(String root); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeHasUnsavedEditorChanges(JNIEnv * env, jclass clazz, jstring root) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeHasUnsavedEditorChanges(JNIEnv * env, + jclass clazz, + jstring root) { return g_framework->NativeFramework()->HasUnsavedEdits(jni::ToNativeString(env, root)); } // static void nativeGetPathTo(String root, List result); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jclass clazz, jstring root, jobject result) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jclass clazz, + jstring root, jobject result) { auto const listAddMethod = jni::ListBuilder::Instance(env).m_add; @@ -520,8 +533,9 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetPathTo(JNIEnv * env, jcl } // static int nativeGetOverallProgress(String[] countries); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetOverallProgress(JNIEnv * env, jclass clazz, jobjectArray jcountries) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetOverallProgress(JNIEnv * env, + jclass clazz, + jobjectArray jcountries) { int const size = env->GetArrayLength(jcountries); storage::CountriesVec countries; @@ -543,29 +557,29 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetOverallProgress(JNIEnv * } // static boolean nativeIsAutoretryFailed(); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeIsAutoretryFailed(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsAutoretryFailed(JNIEnv * env, + jclass clazz) { return g_framework->IsAutoRetryDownloadFailed(); } // static boolean nativeIsDownloadOn3gEnabled(); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloadOn3gEnabled(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeIsDownloadOn3gEnabled(JNIEnv * env, + jclass clazz) { return g_framework->IsDownloadOn3gEnabled(); } // static void nativeEnableDownloadOn3g(); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeEnableDownloadOn3g(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeEnableDownloadOn3g(JNIEnv * env, + jclass clazz) { g_framework->EnableDownloadOn3g(); } // static @Nullable String nativeGetSelectedCountry(); -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_downloader_MapManager_nativeGetSelectedCountry(JNIEnv * env, jclass clazz) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_downloader_MapManager_nativeGetSelectedCountry(JNIEnv * env, + jclass clazz) { if (!g_framework->NativeFramework()->HasPlacePageInfo()) return nullptr; @@ -573,4 +587,4 @@ Java_app_organicmaps_sdk_downloader_MapManager_nativeGetSelectedCountry(JNIEnv * storage::CountryId const & res = g_framework->GetPlacePageInfo().GetCountryId(); return (res == storage::kInvalidCountryId ? nullptr : jni::ToJavaString(env, res)); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp index a54c78142..2c628ba25 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/OrganicMaps.cpp @@ -16,8 +16,8 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_OrganicMaps_nativeSetSettingsDir // static void nativeInitPlatform(Context context, String apkPath, String storagePath, String privatePath, String // tmpPath, String flavorName, String buildType, boolean isTablet); JNIEXPORT void JNICALL Java_app_organicmaps_sdk_OrganicMaps_nativeInitPlatform( - JNIEnv * env, jclass clazz, jobject context, jstring apkPath, jstring writablePath, jstring privatePath, - jstring tmpPath, jstring flavorName, jstring buildType, jboolean isTablet) + JNIEnv * env, jclass clazz, jobject context, jstring apkPath, jstring writablePath, jstring privatePath, + jstring tmpPath, jstring flavorName, jstring buildType, jboolean isTablet) { android::Platform::Instance().Initialize(env, context, apkPath, writablePath, privatePath, tmpPath, flavorName, buildType, isTablet); @@ -29,13 +29,12 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_OrganicMaps_nativeInitFramework( { if (!g_framework) { - g_framework = std::make_unique( - [onComplete = jni::make_global_ref(onComplete)]() - { - JNIEnv * env = jni::GetEnv(); - jmethodID const methodId = jni::GetMethodID(env, *onComplete, "run", "()V"); - env->CallVoidMethod(*onComplete, methodId); - }); + g_framework = std::make_unique([onComplete = jni::make_global_ref(onComplete)]() + { + JNIEnv * env = jni::GetEnv(); + jmethodID const methodId = jni::GetMethodID(env, *onComplete, "run", "()V"); + env->CallVoidMethod(*onComplete, methodId); + }); } } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/TrackRecorder.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/TrackRecorder.cpp index 5a9df5298..f57252f06 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/TrackRecorder.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/TrackRecorder.cpp @@ -8,52 +8,52 @@ extern "C" { - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeSetEnabled(JNIEnv * env, jclass clazz, jboolean enable) - { - GpsTracker::Instance().SetEnabled(enable); - Framework * const f = frm(); - if (f == nullptr) - return; - if (enable) - f->ConnectToGpsTracker(); - else - f->DisconnectFromGpsTracker(); - } - - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsEnabled(JNIEnv * env, jclass clazz) - { - return GpsTracker::Instance().IsEnabled(); - } - - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeStartTrackRecording(JNIEnv * env, jclass clazz) - { - frm()->StartTrackRecording(); - } - - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeStopTrackRecording(JNIEnv * env, jclass clazz) - { - frm()->StopTrackRecording(); - } - - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeSaveTrackRecordingWithName(JNIEnv * env, jclass clazz, jstring name) - { - frm()->SaveTrackRecordingWithName(jni::ToNativeString(env, name)); - } - - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEmpty(JNIEnv * env, jclass clazz) - { - return frm()->IsTrackRecordingEmpty(); - } - - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEnabled(JNIEnv * env, jclass clazz) - { - return frm()->IsTrackRecordingEnabled(); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeSetEnabled(JNIEnv * env, jclass clazz, + jboolean enable) +{ + GpsTracker::Instance().SetEnabled(enable); + Framework * const f = frm(); + if (f == nullptr) + return; + if (enable) + f->ConnectToGpsTracker(); + else + f->DisconnectFromGpsTracker(); +} + +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsEnabled(JNIEnv * env, jclass clazz) +{ + return GpsTracker::Instance().IsEnabled(); +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeStartTrackRecording(JNIEnv * env, + jclass clazz) +{ + frm()->StartTrackRecording(); +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeStopTrackRecording(JNIEnv * env, + jclass clazz) +{ + frm()->StopTrackRecording(); +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeSaveTrackRecordingWithName(JNIEnv * env, + jclass clazz, + jstring name) +{ + frm()->SaveTrackRecordingWithName(jni::ToNativeString(env, name)); +} + +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEmpty(JNIEnv * env, + jclass clazz) +{ + return frm()->IsTrackRecordingEmpty(); +} + +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_location_TrackRecorder_nativeIsTrackRecordingEnabled(JNIEnv * env, + jclass clazz) +{ + return frm()->IsTrackRecordingEnabled(); +} } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/TrafficState.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/TrafficState.cpp index 6206f6d3e..c0b29926e 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/TrafficState.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/TrafficState.cpp @@ -9,41 +9,42 @@ extern "C" static void TrafficStateChanged(TrafficManager::TrafficState state, std::shared_ptr const & listener) { JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener, "onTrafficStateChanged", "(I)V"), static_cast(state)); + env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener, "onTrafficStateChanged", "(I)V"), + static_cast(state)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeSetListener(JNIEnv * env, jclass clazz, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeSetListener(JNIEnv * env, + jclass clazz, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); - g_framework->SetTrafficStateListener(std::bind(&TrafficStateChanged, std::placeholders::_1, jni::make_global_ref(listener))); + g_framework->SetTrafficStateListener( + std::bind(&TrafficStateChanged, std::placeholders::_1, jni::make_global_ref(listener))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeRemoveListener(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeRemoveListener(JNIEnv * env, + jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); g_framework->SetTrafficStateListener(TrafficManager::TrafficStateChangedFn()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeEnable(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeEnable(JNIEnv * env, jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); g_framework->EnableTraffic(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeIsEnabled(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeIsEnabled(JNIEnv * env, + jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); return static_cast(g_framework->IsTrafficEnabled()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeDisable(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_traffic_TrafficState_nativeDisable(JNIEnv * env, jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); g_framework->DisableTraffic(); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.cpp index 44d6424c3..455ccb557 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.cpp @@ -27,107 +27,98 @@ void InjectMetadata(JNIEnv * env, jclass const clazz, jobject const mapObject, o }); } -//jobject CreatePopularity(JNIEnv * env, place_page::Info const & info) +// jobject CreatePopularity(JNIEnv * env, place_page::Info const & info) //{ -// static jclass const popularityClass = -// jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity"); -// static jmethodID const popularityConstructor = -// jni::GetConstructorID(env, popularityClass, "(I)V"); -// auto const popularityValue = info.GetPopularity(); -// return env->NewObject(popularityClass, popularityConstructor, static_cast(popularityValue)); -//} +// static jclass const popularityClass = +// jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity"); +// static jmethodID const popularityConstructor = +// jni::GetConstructorID(env, popularityClass, "(I)V"); +// auto const popularityValue = info.GetPopularity(); +// return env->NewObject(popularityClass, popularityConstructor, static_cast(popularityValue)); +// } -jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObjectType, - double lat, double lon, bool parseMeta, bool parseApi, - jobject const & routingPointInfo, jobject const & popularity, jobjectArray jrawTypes) +jobject CreateMapObject(JNIEnv * env, place_page::Info const & info, int mapObjectType, double lat, double lon, + bool parseMeta, bool parseApi, jobject const & routingPointInfo, jobject const & popularity, + jobjectArray jrawTypes) { // public MapObject(@NonNull FeatureId featureId, @MapObjectType int mapObjectType, String title, // @Nullable String secondaryTitle, String subtitle, String address, // double lat, double lon, String apiId, @Nullable RoutePointInfo routePointInfo, // @OpeningMode int openingMode, @NonNull Popularity popularity, @NonNull String description, // int roadWarningType, @Nullable String[] rawTypes) - static jmethodID const ctorId = jni::GetConstructorID( - env, g_mapObjectClazz, - "(" - "Lapp/organicmaps/sdk/bookmarks/data/FeatureId;" // featureId - "I" // mapObjectType - "Ljava/lang/String;" // title - "Ljava/lang/String;" // secondaryTitle - "Ljava/lang/String;" // subtitle - "Ljava/lang/String;" // address - "DD" // lat, lon - "Ljava/lang/String;" // appId - "Lapp/organicmaps/sdk/routing/RoutePointInfo;" // routePointInfo - "I" // openingMode - "Lapp/organicmaps/sdk/search/Popularity;" // popularity - "Ljava/lang/String;" // description - "I" // roadWarnType - "[Ljava/lang/String;" // rawTypes - ")V"); + static jmethodID const ctorId = + jni::GetConstructorID(env, g_mapObjectClazz, + "(" + "Lapp/organicmaps/sdk/bookmarks/data/FeatureId;" // featureId + "I" // mapObjectType + "Ljava/lang/String;" // title + "Ljava/lang/String;" // secondaryTitle + "Ljava/lang/String;" // subtitle + "Ljava/lang/String;" // address + "DD" // lat, lon + "Ljava/lang/String;" // appId + "Lapp/organicmaps/sdk/routing/RoutePointInfo;" // routePointInfo + "I" // openingMode + "Lapp/organicmaps/sdk/search/Popularity;" // popularity + "Ljava/lang/String;" // description + "I" // roadWarnType + "[Ljava/lang/String;" // rawTypes + ")V"); - //public FeatureId(@NonNull String mwmName, long mwmVersion, int featureIndex) - static jmethodID const featureCtorId = - jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); + // public FeatureId(@NonNull String mwmName, long mwmVersion, int featureIndex) + static jmethodID const featureCtorId = jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); auto const fID = info.GetID(); jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, fID.GetMwmName())); - jni::TScopedLocalRef jFeatureId( - env, env->NewObject(g_featureIdClazz, featureCtorId, jMwmName.get(), (jlong)fID.GetMwmVersion(), - (jint)fID.m_index)); + jni::TScopedLocalRef jFeatureId(env, env->NewObject(g_featureIdClazz, featureCtorId, jMwmName.get(), + (jlong)fID.GetMwmVersion(), (jint)fID.m_index)); jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle())); jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle())); jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle())); jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle())); jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, parseApi ? info.GetApiUrl() : "")); jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription())); - jobject mapObject = - env->NewObject(g_mapObjectClazz, ctorId, jFeatureId.get(), mapObjectType, jTitle.get(), - jSecondaryTitle.get(), jSubtitle.get(), jAddress.get(), lat, lon, jApiId.get(), - routingPointInfo, - static_cast(info.GetOpeningMode()), popularity, jWikiDescription.get(), - static_cast(info.GetRoadType()), jrawTypes); + jobject mapObject = env->NewObject(g_mapObjectClazz, ctorId, jFeatureId.get(), mapObjectType, jTitle.get(), + jSecondaryTitle.get(), jSubtitle.get(), jAddress.get(), lat, lon, jApiId.get(), + routingPointInfo, static_cast(info.GetOpeningMode()), popularity, + jWikiDescription.get(), static_cast(info.GetRoadType()), jrawTypes); if (parseMeta) InjectMetadata(env, g_mapObjectClazz, mapObject, info); return mapObject; } -jobject CreateBookmark(JNIEnv *env, const place_page::Info &info, - const jni::TScopedLocalObjectArrayRef &jrawTypes, - const jni::TScopedLocalRef &routingPointInfo, - jobject const & popularity) +jobject CreateBookmark(JNIEnv * env, place_page::Info const & info, jni::TScopedLocalObjectArrayRef const & jrawTypes, + jni::TScopedLocalRef const & routingPointInfo, jobject const & popularity) { - //public Bookmark(@NonNull FeatureId featureId, @IntRange(from = 0) long categoryId, - // @IntRange(from = 0) long bookmarkId, String title, @Nullable String secondaryTitle, - // @Nullable String subtitle, @Nullable String address, @Nullable RoutePointInfo routePointInfo, - // @OpeningMode int openingMode, @NonNull Popularity popularity, @NonNull String description, - // @Nullable String[] rawTypes) + // public Bookmark(@NonNull FeatureId featureId, @IntRange(from = 0) long categoryId, + // @IntRange(from = 0) long bookmarkId, String title, @Nullable String secondaryTitle, + // @Nullable String subtitle, @Nullable String address, @Nullable RoutePointInfo routePointInfo, + // @OpeningMode int openingMode, @NonNull Popularity popularity, @NonNull String description, + // @Nullable String[] rawTypes) static jmethodID const ctorId = - jni::GetConstructorID(env, g_bookmarkClazz, - "(Lapp/organicmaps/sdk/bookmarks/data/FeatureId;JJLjava/lang/String;" - "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;" - "Lapp/organicmaps/sdk/routing/RoutePointInfo;" - "ILapp/organicmaps/sdk/search/Popularity;Ljava/lang/String;" - "[Ljava/lang/String;)V"); - static jmethodID const featureCtorId = - jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); + jni::GetConstructorID(env, g_bookmarkClazz, + "(Lapp/organicmaps/sdk/bookmarks/data/FeatureId;JJLjava/lang/String;" + "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;" + "Lapp/organicmaps/sdk/routing/RoutePointInfo;" + "ILapp/organicmaps/sdk/search/Popularity;Ljava/lang/String;" + "[Ljava/lang/String;)V"); + static jmethodID const featureCtorId = jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); auto const bookmarkId = info.GetBookmarkId(); auto const categoryId = info.GetBookmarkCategoryId(); jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, info.GetID().GetMwmName())); - jni::TScopedLocalRef jFeatureId( - env, env->NewObject(g_featureIdClazz, featureCtorId, jMwmName.get(), - (jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index)); + jni::TScopedLocalRef jFeatureId(env, env->NewObject(g_featureIdClazz, featureCtorId, jMwmName.get(), + (jlong)info.GetID().GetMwmVersion(), (jint)info.GetID().m_index)); jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle())); jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle())); jni::TScopedLocalRef jSubtitle(env, jni::ToJavaStringWithSupplementalCharsFix(env, info.GetSubtitle())); jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, info.GetSecondarySubtitle())); jni::TScopedLocalRef jWikiDescription(env, jni::ToJavaString(env, info.GetWikiDescription())); - jobject mapObject = env->NewObject( - g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast(categoryId), - static_cast(bookmarkId), jTitle.get(), jSecondaryTitle.get(), jSubtitle.get(), - jAddress.get(), routingPointInfo.get(), info.GetOpeningMode(), popularity, - jWikiDescription.get(), jrawTypes.get()); + jobject mapObject = env->NewObject(g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast(categoryId), + static_cast(bookmarkId), jTitle.get(), jSecondaryTitle.get(), + jSubtitle.get(), jAddress.get(), routingPointInfo.get(), info.GetOpeningMode(), + popularity, jWikiDescription.get(), jrawTypes.get()); if (info.HasMetadata()) InjectMetadata(env, g_mapObjectClazz, mapObject, info); @@ -139,9 +130,8 @@ jobject CreateElevationPoint(JNIEnv * env, ElevationInfo::Point const & point) static jclass const pointClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/ElevationInfo$Point"); // public Point(double distance, int altitude) - static jmethodID const pointCtorId = - jni::GetConstructorID(env, pointClass, "(DI)V"); - return env->NewObject(pointClass, pointCtorId, static_cast(point.m_distance), + static jmethodID const pointCtorId = jni::GetConstructorID(env, pointClass, "(DI)V"); + return env->NewObject(pointClass, pointCtorId, static_cast(point.m_distance), static_cast(point.m_point.GetAltitude())); } @@ -150,11 +140,8 @@ jobjectArray ToElevationPointArray(JNIEnv * env, ElevationInfo::Points const & p CHECK(!points.empty(), ("Elevation points must be non empty!")); static jclass const pointClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/ElevationInfo$Point"); - return jni::ToJavaArray(env, pointClass, points, - [](JNIEnv * env, ElevationInfo::Point const & item) - { - return CreateElevationPoint(env, item); - }); + return jni::ToJavaArray(env, pointClass, points, [](JNIEnv * env, ElevationInfo::Point const & item) + { return CreateElevationPoint(env, item); }); } jobject CreateElevationInfo(JNIEnv * env, ElevationInfo const & info) @@ -162,18 +149,18 @@ jobject CreateElevationInfo(JNIEnv * env, ElevationInfo const & info) // public ElevationInfo(long trackId, @NonNull String name, @NonNull Point[] points, // int ascent, int descent, int minAltitude, int maxAltitude, int difficulty, // long m_duration) - static jmethodID const ctorId = - jni::GetConstructorID(env, g_elevationInfoClazz, "(JLjava/lang/String;Ljava/lang/String;" - "[Lapp/organicmaps/sdk/bookmarks/data/ElevationInfo$Point;" - "IIIIIJ)V"); + static jmethodID const ctorId = jni::GetConstructorID(env, g_elevationInfoClazz, + "(JLjava/lang/String;Ljava/lang/String;" + "[Lapp/organicmaps/sdk/bookmarks/data/ElevationInfo$Point;" + "IIIIIJ)V"); jni::TScopedLocalObjectArrayRef jPoints(env, ToElevationPointArray(env, info.GetPoints())); - // TODO (KK): elevation info should have only the elevation data - see the https://github.com/organicmaps/organicmaps/pull/10063 - return env->NewObject(g_elevationInfoClazz, ctorId, - jPoints.get(), -// static_cast(info.GetAscent()), -// static_cast(info.GetDescent()), -// static_cast(info.GetMinAltitude()), -// static_cast(info.GetMaxAltitude()), + // TODO (KK): elevation info should have only the elevation data - see the + // https://github.com/organicmaps/organicmaps/pull/10063 + return env->NewObject(g_elevationInfoClazz, ctorId, jPoints.get(), + // static_cast(info.GetAscent()), + // static_cast(info.GetDescent()), + // static_cast(info.GetMinAltitude()), + // static_cast(info.GetMaxAltitude()), static_cast(info.GetDifficulty())); } @@ -185,46 +172,39 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info) if (info.IsRoutePoint()) routingPointInfo.reset(CreateRoutePointInfo(env, info)); - //jni::TScopedLocalRef popularity(env, CreatePopularity(env, info)); + // jni::TScopedLocalRef popularity(env, CreatePopularity(env, info)); jobject popularity = nullptr; if (info.IsBookmark()) - { return CreateBookmark(env, info, jrawTypes, routingPointInfo, popularity); - } ms::LatLon const ll = info.GetLatLon(); // TODO(yunikkk): object can be POI + API + search result + bookmark simultaneously. // TODO(yunikkk): Should we pass localized strings here and in other methods as byte arrays? if (info.IsMyPosition()) { - return CreateMapObject(env, info, kMyPosition, ll.m_lat, ll.m_lon, - false /* parseMeta */, false /* parseApi */, + return CreateMapObject(env, info, kMyPosition, ll.m_lat, ll.m_lon, false /* parseMeta */, false /* parseApi */, routingPointInfo.get(), popularity, jrawTypes.get()); } if (info.HasApiUrl()) { - return CreateMapObject(env, info, kApiPoint, ll.m_lat, ll.m_lon, - true /* parseMeta */, true /* parseApi */, + return CreateMapObject(env, info, kApiPoint, ll.m_lat, ll.m_lon, true /* parseMeta */, true /* parseApi */, routingPointInfo.get(), popularity, jrawTypes.get()); } - return CreateMapObject(env, info, kPoi, ll.m_lat, ll.m_lon, - true /* parseMeta */, false /* parseApi */, + return CreateMapObject(env, info, kPoi, ll.m_lat, ll.m_lon, true /* parseMeta */, false /* parseApi */, routingPointInfo.get(), popularity, jrawTypes.get()); } jobject CreateFeatureId(JNIEnv * env, FeatureID const & fid) { - static jmethodID const featureCtorId = - jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); + static jmethodID const featureCtorId = jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V"); auto const & info = fid.m_mwmId.GetInfo(); jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, info ? info->GetCountryName() : "")); return env->NewObject(g_featureIdClazz, featureCtorId, jMwmName.get(), - info ? static_cast(info->GetVersion()) : 0, - static_cast(fid.m_index)); + info ? static_cast(info->GetVersion()) : 0, static_cast(fid.m_index)); } jobjectArray ToFeatureIdArray(JNIEnv * env, std::vector const & ids) @@ -233,8 +213,6 @@ jobjectArray ToFeatureIdArray(JNIEnv * env, std::vector const & ids) return nullptr; return jni::ToJavaArray(env, g_featureIdClazz, ids, - [](JNIEnv * env, FeatureID const & fid) { - return CreateFeatureId(env, fid); - }); + [](JNIEnv * env, FeatureID const & fid) { return CreateFeatureId(env, fid); }); } } // namespace usermark_helper diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.hpp index e67e0254d..242d3ef53 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/UserMarkHelper.hpp @@ -2,8 +2,8 @@ #include -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/Framework.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp index 8048629be..15a997d6e 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/bookmarks/data/BookmarkManager.cpp @@ -1,12 +1,11 @@ -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/Framework.hpp" #include "app/organicmaps/sdk/UserMarkHelper.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/util/Distance.hpp" #include "map/bookmark_helpers.hpp" #include "map/place_page_info.hpp" - #include "coding/zip_creator.hpp" #include "platform/localization.hpp" @@ -44,70 +43,56 @@ jmethodID g_onBookmarksSortingCancelled; jmethodID g_bookmarkInfoConstructor; jclass g_bookmarkInfoClass; - void PrepareClassRefs(JNIEnv * env) { if (g_bookmarkManagerClass) return; - g_bookmarkManagerClass = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkManager"); + g_bookmarkManagerClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkManager"); g_bookmarkManagerInstanceField = jni::GetStaticFieldID(env, g_bookmarkManagerClass, "INSTANCE", - "Lapp/organicmaps/sdk/bookmarks/data/BookmarkManager;"); + "Lapp/organicmaps/sdk/bookmarks/data/BookmarkManager;"); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); - g_onBookmarksChangedMethod = - jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksChanged", "()V"); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); + g_onBookmarksChangedMethod = jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksChanged", "()V"); g_onBookmarksLoadingStartedMethod = - jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksLoadingStarted", "()V"); + jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksLoadingStarted", "()V"); g_onBookmarksLoadingFinishedMethod = - jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksLoadingFinished", "()V"); + jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksLoadingFinished", "()V"); g_onBookmarksFileLoadedMethod = - jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksFileLoaded", - "(ZLjava/lang/String;Z)V"); - g_onPreparedFileForSharingMethod = - jni::GetMethodID(env, bookmarkManagerInstance, "onPreparedFileForSharing", - "(Lapp/organicmaps/sdk/bookmarks/data/BookmarkSharingResult;)V"); + jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksFileLoaded", "(ZLjava/lang/String;Z)V"); + g_onPreparedFileForSharingMethod = jni::GetMethodID(env, bookmarkManagerInstance, "onPreparedFileForSharing", + "(Lapp/organicmaps/sdk/bookmarks/data/BookmarkSharingResult;)V"); - g_longClass = jni::GetGlobalClassRef(env,"java/lang/Long"); + g_longClass = jni::GetGlobalClassRef(env, "java/lang/Long"); g_longConstructor = jni::GetConstructorID(env, g_longClass, "(J)V"); - g_sortedBlockClass = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/SortedBlock"); + g_sortedBlockClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/SortedBlock"); g_sortedBlockConstructor = - jni::GetConstructorID(env, g_sortedBlockClass, - "(Ljava/lang/String;[Ljava/lang/Long;[Ljava/lang/Long;)V"); + jni::GetConstructorID(env, g_sortedBlockClass, "(Ljava/lang/String;[Ljava/lang/Long;[Ljava/lang/Long;)V"); + g_onBookmarksSortingCompleted = jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksSortingCompleted", + "([Lapp/organicmaps/sdk/bookmarks/data/SortedBlock;J)V"); + g_onBookmarksSortingCancelled = jni::GetMethodID(env, bookmarkManagerInstance, "onBookmarksSortingCancelled", "(J)V"); + g_bookmarkInfoClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkInfo"); + g_bookmarkInfoConstructor = jni::GetConstructorID(env, g_bookmarkInfoClass, "(JJ)V"); + g_bookmarkCategoryClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkCategory"); - g_onBookmarksSortingCompleted = jni::GetMethodID(env, bookmarkManagerInstance, - "onBookmarksSortingCompleted", "([Lapp/organicmaps/sdk/bookmarks/data/SortedBlock;J)V"); - g_onBookmarksSortingCancelled = jni::GetMethodID(env, bookmarkManagerInstance, - "onBookmarksSortingCancelled", "(J)V"); - g_bookmarkInfoClass = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkInfo"); - g_bookmarkInfoConstructor = - jni::GetConstructorID(env, g_bookmarkInfoClass, "(JJ)V" ); - g_bookmarkCategoryClass = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkCategory"); - -//public BookmarkCategory(long id, -// String name, -// String annotation, -// String desc, -// int tracksCount, -// int bookmarksCount, -// boolean isVisible) - g_bookmarkCategoryConstructor = - jni::GetConstructorID(env, g_bookmarkCategoryClass, - "(" - "J" // id - "Ljava/lang/String;" // name - "Ljava/lang/String;" // annotation - "Ljava/lang/String;" // desc - "I" // tracksCount - "I" // bookmarksCount - "Z" // isVisible - ")V"); + // public BookmarkCategory(long id, + // String name, + // String annotation, + // String desc, + // int tracksCount, + // int bookmarksCount, + // boolean isVisible) + g_bookmarkCategoryConstructor = jni::GetConstructorID(env, g_bookmarkCategoryClass, + "(" + "J" // id + "Ljava/lang/String;" // name + "Ljava/lang/String;" // annotation + "Ljava/lang/String;" // desc + "I" // tracksCount + "I" // bookmarksCount + "Z" // isVisible + ")V"); g_onElevationCurrentPositionChangedMethod = jni::GetMethodID(env, bookmarkManagerInstance, "onElevationCurrentPositionChanged", "()V"); g_onElevationActivePointChangedMethod = @@ -117,8 +102,7 @@ void PrepareClassRefs(JNIEnv * env) void OnElevationCurPositionChanged(JNIEnv * env) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = - env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); env->CallVoidMethod(bookmarkManagerInstance, g_onElevationCurrentPositionChangedMethod); jni::HandleJavaException(env); } @@ -126,8 +110,7 @@ void OnElevationCurPositionChanged(JNIEnv * env) void OnElevationActivePointChanged(JNIEnv * env) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); env->CallVoidMethod(bookmarkManagerInstance, g_onElevationActivePointChangedMethod); jni::HandleJavaException(env); } @@ -135,8 +118,7 @@ void OnElevationActivePointChanged(JNIEnv * env) void OnBookmarksChanged(JNIEnv * env) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksChangedMethod); jni::HandleJavaException(env); } @@ -144,8 +126,7 @@ void OnBookmarksChanged(JNIEnv * env) void OnAsyncLoadingStarted(JNIEnv * env) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksLoadingStartedMethod); jni::HandleJavaException(env); } @@ -153,8 +134,7 @@ void OnAsyncLoadingStarted(JNIEnv * env) void OnAsyncLoadingFinished(JNIEnv * env) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksLoadingFinishedMethod); jni::HandleJavaException(env); } @@ -162,41 +142,44 @@ void OnAsyncLoadingFinished(JNIEnv * env) void OnAsyncLoadingFileSuccess(JNIEnv * env, std::string const & fileName, bool isTemporaryFile) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); jni::TScopedLocalRef jFileName(env, jni::ToJavaString(env, fileName)); - env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksFileLoadedMethod, - true /* success */, jFileName.get(), isTemporaryFile); + env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksFileLoadedMethod, true /* success */, jFileName.get(), + isTemporaryFile); jni::HandleJavaException(env); } void OnAsyncLoadingFileError(JNIEnv * env, std::string const & fileName, bool isTemporaryFile) { ASSERT(g_bookmarkManagerClass, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); jni::TScopedLocalRef jFileName(env, jni::ToJavaString(env, fileName)); - env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksFileLoadedMethod, - false /* success */, jFileName.get(), isTemporaryFile); + env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksFileLoadedMethod, false /* success */, jFileName.get(), + isTemporaryFile); jni::HandleJavaException(env); } void OnPreparedFileForSharing(JNIEnv * env, BookmarkManager::SharingResult const & result) { - static jclass const classBookmarkSharingResult = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkSharingResult"); - // BookmarkSharingResult(long[] categoriesIds, @Code int code, @NonNull String sharingPath, @NonNull String mimeType, @NonNull String errorString) - static jmethodID const ctorBookmarkSharingResult = jni::GetConstructorID(env, classBookmarkSharingResult, "([JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + static jclass const classBookmarkSharingResult = + jni::GetGlobalClassRef(env, "app/organicmaps/sdk/bookmarks/data/BookmarkSharingResult"); + // BookmarkSharingResult(long[] categoriesIds, @Code int code, @NonNull String sharingPath, @NonNull String mimeType, + // @NonNull String errorString) + static jmethodID const ctorBookmarkSharingResult = jni::GetConstructorID( + env, classBookmarkSharingResult, "([JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); static_assert(sizeof(jlong) == sizeof(decltype(result.m_categoriesIds)::value_type)); jsize const categoriesIdsSize = static_cast(result.m_categoriesIds.size()); jni::ScopedLocalRef categoriesIds(env, env->NewLongArray(categoriesIdsSize)); - env->SetLongArrayRegion(categoriesIds.get(), 0, categoriesIdsSize, reinterpret_cast(result.m_categoriesIds.data())); + env->SetLongArrayRegion(categoriesIds.get(), 0, categoriesIdsSize, + reinterpret_cast(result.m_categoriesIds.data())); jni::TScopedLocalRef const sharingPath(env, jni::ToJavaString(env, result.m_sharingPath)); jni::TScopedLocalRef const mimeType(env, jni::ToJavaString(env, result.m_mimeType)); jni::TScopedLocalRef const errorString(env, jni::ToJavaString(env, result.m_errorString)); - jni::TScopedLocalRef const sharingResult(env, env->NewObject(classBookmarkSharingResult, ctorBookmarkSharingResult, - categoriesIds.get(), static_cast(result.m_code), sharingPath.get(), mimeType.get(), errorString.get())); + jni::TScopedLocalRef const sharingResult( + env, env->NewObject(classBookmarkSharingResult, ctorBookmarkSharingResult, categoriesIds.get(), + static_cast(result.m_code), sharingPath.get(), mimeType.get(), errorString.get())); ASSERT(g_bookmarkManagerClass, ()); jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); @@ -212,45 +195,34 @@ void OnCategorySortingResults(JNIEnv * env, long long timestamp, ASSERT(g_sortedBlockClass, ()); ASSERT(g_sortedBlockConstructor, ()); - jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, - g_bookmarkManagerInstanceField); + jobject bookmarkManagerInstance = env->GetStaticObjectField(g_bookmarkManagerClass, g_bookmarkManagerInstanceField); if (status == BookmarkManager::SortParams::Status::Cancelled) { - env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksSortingCancelled, - static_cast(timestamp)); + env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksSortingCancelled, static_cast(timestamp)); jni::HandleJavaException(env); return; } - jni::TScopedLocalObjectArrayRef blocksRef(env, - jni::ToJavaArray(env, g_sortedBlockClass, sortedBlocks, - [](JNIEnv * env, BookmarkManager::SortedBlock const & block) - { - jni::TScopedLocalRef blockNameRef(env, jni::ToJavaString(env, block.m_blockName)); + jni::TScopedLocalObjectArrayRef blocksRef( + env, jni::ToJavaArray(env, g_sortedBlockClass, sortedBlocks, + [](JNIEnv * env, BookmarkManager::SortedBlock const & block) + { + jni::TScopedLocalRef blockNameRef(env, jni::ToJavaString(env, block.m_blockName)); - jni::TScopedLocalObjectArrayRef marksRef(env, - jni::ToJavaArray(env, g_longClass, block.m_markIds, - [](JNIEnv * env, kml::MarkId const & markId) - { - return env->NewObject(g_longClass, g_longConstructor, - static_cast(markId)); - })); + jni::TScopedLocalObjectArrayRef marksRef( + env, jni::ToJavaArray(env, g_longClass, block.m_markIds, [](JNIEnv * env, kml::MarkId const & markId) + { return env->NewObject(g_longClass, g_longConstructor, static_cast(markId)); })); - jni::TScopedLocalObjectArrayRef tracksRef(env, - jni::ToJavaArray(env, g_longClass, block.m_trackIds, - [](JNIEnv * env, kml::TrackId const & trackId) - { - return env->NewObject(g_longClass, g_longConstructor, - static_cast(trackId)); - })); + jni::TScopedLocalObjectArrayRef tracksRef( + env, jni::ToJavaArray(env, g_longClass, block.m_trackIds, [](JNIEnv * env, kml::TrackId const & trackId) + { return env->NewObject(g_longClass, g_longConstructor, static_cast(trackId)); })); - return env->NewObject(g_sortedBlockClass, g_sortedBlockConstructor, - blockNameRef.get(), marksRef.get(), tracksRef.get()); - - })); - env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksSortingCompleted, - blocksRef.get(), static_cast(timestamp)); + return env->NewObject(g_sortedBlockClass, g_sortedBlockConstructor, blockNameRef.get(), marksRef.get(), + tracksRef.get()); + })); + env->CallVoidMethod(bookmarkManagerInstance, g_onBookmarksSortingCompleted, blocksRef.get(), + static_cast(timestamp)); jni::HandleJavaException(env); } @@ -277,14 +249,9 @@ jobject MakeCategory(JNIEnv * env, kml::MarkGroupId id) jni::TScopedLocalRef annotationRef(env, jni::ToJavaString(env, annotation)); jni::TScopedLocalRef descriptionRef(env, jni::ToJavaString(env, description)); - return env->NewObject(g_bookmarkCategoryClass, - g_bookmarkCategoryConstructor, - static_cast(data.m_id), - preferBookmarkStrRef.get(), - annotationRef.get(), - descriptionRef.get(), - static_cast(tracksCount), - static_cast(bookmarksCount), + return env->NewObject(g_bookmarkCategoryClass, g_bookmarkCategoryConstructor, static_cast(data.m_id), + preferBookmarkStrRef.get(), annotationRef.get(), descriptionRef.get(), + static_cast(tracksCount), static_cast(bookmarksCount), static_cast(isVisible)); } @@ -296,22 +263,20 @@ jobjectArray MakeCategories(JNIEnv * env, kml::GroupIdCollection const & ids) extern "C" { -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap( - JNIEnv *, jobject, jlong bmkId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap(JNIEnv *, + jobject, + jlong bmkId) { frm()->ShowBookmark(static_cast(bmkId)); } JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkCategoryOnMap( - JNIEnv *, jobject, jlong catId) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeShowBookmarkCategoryOnMap(JNIEnv *, jobject, jlong catId) { frm()->ShowBookmarkCategory(static_cast(catId), true /* animated */); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIEnv * env, jclass) { PrepareClassRefs(env); BookmarkManager::AsyncLoadingCallbacks callbacks; @@ -326,39 +291,38 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIE frm()->LoadBookmarks(); } -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeCreateCategory( - JNIEnv * env, jobject, jstring name) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeCreateCategory(JNIEnv * env, + jobject, + jstring name) { auto const categoryId = frm()->GetBookmarkManager().CreateBookmarkCategory(ToNativeString(env, name)); frm()->GetBookmarkManager().SetLastEditedBmCategory(categoryId); return static_cast(categoryId); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteCategory( - JNIEnv *, jobject, jlong catId) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteCategory(JNIEnv *, + jobject, + jlong catId) { auto const categoryId = static_cast(catId); // `permanently` should be set to false when the Recently Deleted Lists feature be implemented - return static_cast(frm()->GetBookmarkManager().GetEditSession().DeleteBmCategory(categoryId, true /* permanently */)); + return static_cast( + frm()->GetBookmarkManager().GetEditSession().DeleteBmCategory(categoryId, true /* permanently */)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jlong bmkId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, + jlong bmkId) { frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(static_cast(bmkId)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteTrack( - JNIEnv *, jobject, jlong trkId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeDeleteTrack(JNIEnv *, jobject, + jlong trkId) { frm()->GetBookmarkManager().GetEditSession().DeleteTrack(static_cast(trkId)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory( +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory( JNIEnv * env, jobject, double lat, double lon) { if (!frm()->HasPlacePageInfo()) @@ -377,8 +341,7 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastE if (info.IsFeature()) SaveFeatureTypes(info.GetTypes(), bmData); - auto const * createdBookmark = bmMng.GetEditSession().CreateBookmark(std::move(bmData), - lastEditedCategory); + auto const * createdBookmark = bmMng.GetEditSession().CreateBookmark(std::move(bmData), lastEditedCategory); auto buildInfo = info.GetBuildInfo(); buildInfo.m_match = place_page::BuildInfo::Match::Everything; @@ -388,23 +351,20 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastE return usermark_helper::CreateMapObject(env, g_framework->GetPlacePageInfo()); } -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory( - JNIEnv *, jobject) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory(JNIEnv *, + jobject) { return static_cast(frm()->LastEditedBMCategory()); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedColor( - JNIEnv *, jobject) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastEditedColor(JNIEnv *, + jobject) { return static_cast(frm()->LastEditedBMColor()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarksFile(JNIEnv * env, jclass, - jstring path, jboolean isTemporaryFile) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeLoadBookmarksFile( + JNIEnv * env, jclass, jstring path, jboolean isTemporaryFile) { frm()->AddBookmarksFile(ToNativeString(env, path), isTemporaryFile); } @@ -415,40 +375,36 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsAsyncBookmarksLo return static_cast(frm()->GetBookmarkManager().IsAsyncLoadingInProgress()); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsVisible( - JNIEnv *, jobject, jlong catId) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsVisible(JNIEnv *, jobject, + jlong catId) { return static_cast(frm()->GetBookmarkManager().IsVisible(static_cast(catId))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetVisibility( - JNIEnv *, jobject, jlong catId, jboolean isVisible) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetVisibility(JNIEnv *, jobject, + jlong catId, + jboolean isVisible) { frm()->GetBookmarkManager().GetEditSession().SetIsVisible(static_cast(catId), isVisible); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryName( - JNIEnv * env, jobject, jlong catId, jstring name) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryName(JNIEnv * env, + jobject, + jlong catId, + jstring name) { frm()->GetBookmarkManager().GetEditSession().SetCategoryName(static_cast(catId), jni::ToNativeString(env, name)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryDescription(JNIEnv * env, - jobject, - jlong catId, - jstring desc) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryDescription( + JNIEnv * env, jobject, jlong catId, jstring desc) { - frm()->GetBookmarkManager().GetEditSession().SetCategoryDescription( - static_cast(catId), jni::ToNativeString(env, desc)); + frm()->GetBookmarkManager().GetEditSession().SetCategoryDescription(static_cast(catId), + jni::ToNativeString(env, desc)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryTags( +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryTags( JNIEnv * env, jobject, jlong catId, jobjectArray tagsIds) { auto const size = env->GetArrayLength(tagsIds); @@ -460,29 +416,25 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryTags( categoryTags.push_back(jni::ToNativeString(env, static_cast(item.get()))); } - frm()->GetBookmarkManager().GetEditSession().SetCategoryTags(static_cast(catId), - categoryTags); + frm()->GetBookmarkManager().GetEditSession().SetCategoryTags(static_cast(catId), categoryTags); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryAccessRules( +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryAccessRules( JNIEnv *, jobject, jlong catId, jint accessRules) { - frm()->GetBookmarkManager().GetEditSession().SetCategoryAccessRules( - static_cast(catId), static_cast(accessRules)); + frm()->GetBookmarkManager().GetEditSession().SetCategoryAccessRules(static_cast(catId), + static_cast(accessRules)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryCustomProperty( +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetCategoryCustomProperty( JNIEnv * env, jobject, jlong catId, jstring key, jstring value) { frm()->GetBookmarkManager().GetEditSession().SetCategoryCustomProperty( - static_cast(catId), ToNativeString(env, key), ToNativeString(env, value)); + static_cast(catId), ToNativeString(env, key), ToNativeString(env, value)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlacePage( - JNIEnv * env, jobject, jlong bmkId) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlacePage( + JNIEnv * env, jobject, jlong bmkId) { if (!frm()->HasPlacePageInfo()) return nullptr; @@ -495,21 +447,19 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeUpdateBookmarkPlac return usermark_helper::CreateMapObject(env, g_framework->GetPlacePageInfo()); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkInfo( - JNIEnv * env, jobject, jlong bmkId) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkInfo(JNIEnv * env, + jobject, + jlong bmkId) { auto const bookmark = frm()->GetBookmarkManager().GetBookmark(static_cast(bmkId)); if (!bookmark) return nullptr; - return env->NewObject(g_bookmarkInfoClass, - g_bookmarkInfoConstructor, static_cast(bookmark->GetGroupId()), + return env->NewObject(g_bookmarkInfoClass, g_bookmarkInfoConstructor, static_cast(bookmark->GetGroupId()), static_cast(bmkId)); } -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition( - JNIEnv *, jobject, jlong catId, jint positionInCategory) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition( + JNIEnv *, jobject, jlong catId, jint positionInCategory) { auto const & ids = frm()->GetBookmarkManager().GetUserMarkIds(static_cast(catId)); if (positionInCategory >= static_cast(ids.size())) @@ -519,15 +469,18 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPos return static_cast(*it); } -static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; } +static uint32_t shift(uint32_t v, uint8_t bitCount) +{ + return v << bitCount; +} -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrack( - JNIEnv * env, jobject, jlong trackId, jclass trackClazz) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrack(JNIEnv * env, jobject, + jlong trackId, + jclass trackClazz) { // Track(long trackId, long categoryId, String name, String lengthString, int color) - static jmethodID const cId = jni::GetConstructorID(env, trackClazz, - "(JJLjava/lang/String;Lapp/organicmaps/sdk/util/Distance;I)V"); + static jmethodID const cId = + jni::GetConstructorID(env, trackClazz, "(JJLjava/lang/String;Lapp/organicmaps/sdk/util/Distance;I)V"); auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast(trackId)); ASSERT(nTrack, ("Track must not be null with id:)", trackId)); @@ -538,9 +491,8 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrack( nTrack->GetColor(0).GetARGB()); } -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition( - JNIEnv *, jobject, jlong catId, jint positionInCategory) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition( + JNIEnv *, jobject, jlong catId, jint positionInCategory) { auto const & ids = frm()->GetBookmarkManager().GetTrackIds(static_cast(catId)); if (positionInCategory >= static_cast(ids.size())) @@ -551,92 +503,82 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackIdByPositi } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsUsedCategoryName( - JNIEnv * env, jclass, jstring name) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsUsedCategoryName(JNIEnv * env, jclass, jstring name) { return static_cast(frm()->GetBookmarkManager().IsUsedCategoryName(ToNativeString(env, name))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareForSearch( - JNIEnv *, jclass, jlong catId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareForSearch(JNIEnv *, jclass, + jlong catId) { frm()->GetBookmarkManager().PrepareForSearch(static_cast(catId)); } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesInvisible( - JNIEnv *, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesInvisible(JNIEnv *, jclass) { return static_cast(frm()->GetBookmarkManager().AreAllCategoriesInvisible()); } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesVisible( - JNIEnv *, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreAllCategoriesVisible(JNIEnv *, jclass) { return static_cast(frm()->GetBookmarkManager().AreAllCategoriesVisible()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetAllCategoriesVisibility( - JNIEnv *, jclass, jboolean visible) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetAllCategoriesVisibility( + JNIEnv *, jclass, jboolean visible) { frm()->GetBookmarkManager().SetAllCategoriesVisibility(static_cast(visible)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareTrackFileForSharing(JNIEnv * env, jclass, jlong trackId, jint kmlFileType) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareTrackFileForSharing( + JNIEnv * env, jclass, jlong trackId, jint kmlFileType) { - frm()->GetBookmarkManager().PrepareTrackFileForSharing(static_cast(trackId), [env](BookmarkManager::SharingResult const & result) - { - OnPreparedFileForSharing(env, result); - }, static_cast(kmlFileType)); + frm()->GetBookmarkManager().PrepareTrackFileForSharing(static_cast(trackId), + [env](BookmarkManager::SharingResult const & result) + { OnPreparedFileForSharing(env, result); }, static_cast(kmlFileType)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareFileForSharing(JNIEnv * env, jclass, jlongArray catIds, jint kmlFileType) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativePrepareFileForSharing( + JNIEnv * env, jclass, jlongArray catIds, jint kmlFileType) { auto const size = env->GetArrayLength(catIds); kml::GroupIdCollection catIdsVector(size); static_assert(sizeof(jlong) == sizeof(decltype(catIdsVector)::value_type)); env->GetLongArrayRegion(catIds, 0, size, reinterpret_cast(catIdsVector.data())); - frm()->GetBookmarkManager().PrepareFileForSharing(std::move(catIdsVector), [env](BookmarkManager::SharingResult const & result) - { - OnPreparedFileForSharing(env, result); - }, static_cast(kmlFileType)); + frm()->GetBookmarkManager().PrepareFileForSharing(std::move(catIdsVector), + [env](BookmarkManager::SharingResult const & result) + { OnPreparedFileForSharing(env, result); }, static_cast(kmlFileType)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsCategoryEmpty( - JNIEnv *, jclass, jlong catId) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeIsCategoryEmpty(JNIEnv *, + jclass, + jlong catId) { - return static_cast(frm()->GetBookmarkManager().IsCategoryEmpty( - static_cast(catId))); + return static_cast(frm()->GetBookmarkManager().IsCategoryEmpty(static_cast(catId))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetNotificationsEnabled( - JNIEnv *, jclass, jboolean enabled) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetNotificationsEnabled( + JNIEnv *, jclass, jboolean enabled) { frm()->GetBookmarkManager().SetNotificationsEnabled(static_cast(enabled)); } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreNotificationsEnabled( - JNIEnv *, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeAreNotificationsEnabled(JNIEnv *, jclass) { return static_cast(frm()->GetBookmarkManager().AreNotificationsEnabled()); } JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategory(JNIEnv *env, jobject, jlong id) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategory(JNIEnv * env, jobject, jlong id) { return MakeCategory(env, static_cast(id)); } JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategories(JNIEnv *env, jobject) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategories(JNIEnv * env, jobject) { auto const & bm = frm()->GetBookmarkManager(); auto const & ids = bm.GetSortedBmGroupIdList(); @@ -645,16 +587,16 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategor } JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategoriesCount(JNIEnv *env, jobject) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkCategoriesCount(JNIEnv * env, jobject) { - auto const & bm = frm()->GetBookmarkManager(); - auto const count = bm.GetBmGroupsCount(); + auto const & bm = frm()->GetBookmarkManager(); + auto const count = bm.GetBmGroupsCount(); - return static_cast(count); + return static_cast(count); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetChildrenCategories(JNIEnv *env, jobject, jlong parentId) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetChildrenCategories( + JNIEnv * env, jobject, jlong parentId) { auto const & bm = frm()->GetBookmarkManager(); auto const ids = bm.GetChildrenCategories(static_cast(parentId)); @@ -662,18 +604,18 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetChildrenCategor return MakeCategories(env, ids); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeHasLastSortingType( - JNIEnv *, jobject, jlong catId) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeHasLastSortingType(JNIEnv *, + jobject, + jlong catId) { auto const & bm = frm()->GetBookmarkManager(); BookmarkManager::SortingType type; return static_cast(bm.GetLastSortingType(static_cast(catId), type)); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastSortingType( - JNIEnv *, jobject, jlong catId) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastSortingType(JNIEnv *, + jobject, + jlong catId) { auto const & bm = frm()->GetBookmarkManager(); BookmarkManager::SortingType type; @@ -683,30 +625,29 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetLastSortingType return static_cast(type); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetLastSortingType( - JNIEnv *, jobject, jlong catId, jint type) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetLastSortingType(JNIEnv *, + jobject, + jlong catId, + jint type) { auto & bm = frm()->GetBookmarkManager(); - bm.SetLastSortingType(static_cast(catId), - static_cast(type)); + bm.SetLastSortingType(static_cast(catId), static_cast(type)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeResetLastSortingType( - JNIEnv *, jobject, jlong catId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeResetLastSortingType(JNIEnv *, + jobject, + jlong catId) { auto & bm = frm()->GetBookmarkManager(); bm.ResetLastSortingType(static_cast(catId)); } -JNIEXPORT jintArray JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetAvailableSortingTypes(JNIEnv *env, - jobject, jlong catId, jboolean hasMyPosition) +JNIEXPORT jintArray JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetAvailableSortingTypes( + JNIEnv * env, jobject, jlong catId, jboolean hasMyPosition) { auto const & bm = frm()->GetBookmarkManager(); - auto const types = bm.GetAvailableSortingTypes(static_cast(catId), - static_cast(hasMyPosition)); + auto const types = + bm.GetAvailableSortingTypes(static_cast(catId), static_cast(hasMyPosition)); int const size = static_cast(types.size()); jintArray jTypes = env->NewIntArray(size); jint * arr = env->GetIntArrayElements(jTypes, 0); @@ -717,9 +658,8 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetAvailableSortin return jTypes; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetSortedCategory(JNIEnv *env, - jobject, jlong catId, jint sortingType, jboolean hasMyPosition, jdouble lat, jdouble lon, +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetSortedCategory( + JNIEnv * env, jobject, jlong catId, jint sortingType, jboolean hasMyPosition, jdouble lat, jdouble lon, jlong timestamp) { auto & bm = frm()->GetBookmarkManager(); @@ -727,57 +667,47 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetSortedCategory( sortParams.m_groupId = static_cast(catId); sortParams.m_sortingType = static_cast(sortingType); sortParams.m_hasMyPosition = static_cast(hasMyPosition); - sortParams.m_myPosition = mercator::FromLatLon(static_cast(lat), - static_cast(lon)); + sortParams.m_myPosition = mercator::FromLatLon(static_cast(lat), static_cast(lon)); sortParams.m_onResults = bind(&OnCategorySortingResults, env, timestamp, _1, _2); bm.GetSortedCategory(sortParams); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkName( - JNIEnv * env, jclass, jlong bmk) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkName(JNIEnv * env, + jclass, + jlong bmk) { return jni::ToJavaString(env, getBookmark(bmk)->GetPreferredName()); } JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkFeatureType( - JNIEnv * env, jclass, jlong bmk) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkFeatureType(JNIEnv * env, jclass, jlong bmk) { - return jni::ToJavaString(env, - kml::GetLocalizedFeatureType(getBookmark(bmk)->GetData().m_featureTypes)); + return jni::ToJavaString(env, kml::GetLocalizedFeatureType(getBookmark(bmk)->GetData().m_featureTypes)); } JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkDescription( - JNIEnv * env, jclass, jlong bmk) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkDescription(JNIEnv * env, jclass, jlong bmk) { return jni::ToJavaString(env, getBookmark(bmk)->GetDescription()); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkColor( - JNIEnv *, jclass, jlong bmk) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkColor(JNIEnv *, jclass, + jlong bmk) { auto const * mark = getBookmark(bmk); - return static_cast(mark != nullptr ? mark->GetColor() - : frm()->LastEditedBMColor()); + return static_cast(mark != nullptr ? mark->GetColor() : frm()->LastEditedBMColor()); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIcon( - JNIEnv *, jclass, jlong bmk) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkIcon(JNIEnv *, jclass, + jlong bmk) { auto const * mark = getBookmark(bmk); - return static_cast(mark != nullptr ? mark->GetData().m_icon - : kml::BookmarkIcon::None); + return static_cast(mark != nullptr ? mark->GetData().m_icon : kml::BookmarkIcon::None); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetBookmarkParams( - JNIEnv * env, jclass, jlong bmk, - jstring name, jint color, jstring descr) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetBookmarkParams( + JNIEnv * env, jclass, jlong bmk, jstring name, jint color, jstring descr) { auto const * mark = getBookmark(bmk); @@ -793,12 +723,13 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetBookmarkParams( g_framework->ReplaceBookmark(static_cast(bmk), bmData); } -constexpr static uint8_t ExtractByte(uint32_t number, uint8_t byteIdx) { return (number >> (8 * byteIdx)) & 0xFF; } +constexpr static uint8_t ExtractByte(uint32_t number, uint8_t byteIdx) +{ + return (number >> (8 * byteIdx)) & 0xFF; +} -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetTrackParams( - JNIEnv * env, jclass, jlong trackId, - jstring name, jint color, jstring descr) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetTrackParams( + JNIEnv * env, jclass, jlong trackId, jstring name, jint color, jstring descr) { auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast(trackId)); CHECK(nTrack, ("Track must not be null with id:", trackId)); @@ -809,73 +740,69 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetTrackParams( kml::SetDefaultStr(trackData.m_description, jni::ToNativeString(env, descr)); uint8_t alpha = ExtractByte(color, 3); - trackData.m_layers[0].m_color.m_rgba = static_cast(shift(color,8) + alpha); + trackData.m_layers[0].m_color.m_rgba = static_cast(shift(color, 8) + alpha); g_framework->ReplaceTrack(static_cast(trackId), trackData); } JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackDescription( - JNIEnv * env, jclass, jlong trackId) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetTrackDescription(JNIEnv * env, jclass, jlong trackId) { - return jni::ToJavaString(env, frm()->GetBookmarkManager().GetTrack(static_cast(trackId))->GetDescription()); + return jni::ToJavaString(env, + frm()->GetBookmarkManager().GetTrack(static_cast(trackId))->GetDescription()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeBookmarkCategory( - JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong bmk) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeBookmarkCategory( + JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong bmk) { g_framework->MoveBookmark(static_cast(bmk), static_cast(oldCat), static_cast(newCat)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackCategory( - JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong trackId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackCategory( + JNIEnv *, jclass, jlong oldCat, jlong newCat, jlong trackId) { g_framework->MoveTrack(static_cast(trackId), static_cast(oldCat), - static_cast(newCat)); + static_cast(newCat)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackColor( - JNIEnv *, jclass, jlong trackId, jint color) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeChangeTrackColor(JNIEnv *, jclass, + jlong trackId, + jint color) { uint8_t alpha = ExtractByte(color, 3); - g_framework->ChangeTrackColor(static_cast(trackId), static_cast(shift(color,8) + alpha)); + g_framework->ChangeTrackColor(static_cast(trackId), static_cast(shift(color, 8) + alpha)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkXY( - JNIEnv * env, jclass, jlong bmk) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkXY(JNIEnv * env, + jclass, jlong bmk) { return jni::GetNewParcelablePointD(env, getBookmark(bmk)->GetPivot()); } -JNIEXPORT jdouble JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkScale( - JNIEnv *, jclass, jlong bmk) +JNIEXPORT jdouble JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkScale(JNIEnv *, + jclass, + jlong bmk) { return getBookmark(bmk)->GetScale(); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeEncode2Ge0Url( - JNIEnv * env, jclass, jlong bmk, jboolean addName) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeEncode2Ge0Url(JNIEnv * env, + jclass, jlong bmk, + jboolean addName) { return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(bmk), addName)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkAddress( - JNIEnv * env, jclass, jlong bmkId) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetBookmarkAddress(JNIEnv * env, + jclass, + jlong bmkId) { auto const address = frm()->GetAddressAtPoint(getBookmark(bmkId)->GetPivot()).FormatAddress(); return jni::ToJavaString(env, address); } -JNIEXPORT jdouble JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationCurPositionDistance( +JNIEXPORT jdouble JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationCurPositionDistance( JNIEnv *, jclass, jlong trackId) { auto const & bm = frm()->GetBookmarkManager(); @@ -883,48 +810,45 @@ Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationCurPos } JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationCurrentPositionChangedListener( - JNIEnv * env, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationCurrentPositionChangedListener(JNIEnv * env, + jclass) { - frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback( - std::bind(&OnElevationCurPositionChanged, env)); + frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback(std::bind(&OnElevationCurPositionChanged, env)); } JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationCurrentPositionChangedListener( - JNIEnv *, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationCurrentPositionChangedListener(JNIEnv *, + jclass) { frm()->GetBookmarkManager().SetElevationMyPositionChangedCallback(nullptr); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActivePoint( - JNIEnv *, jclass, jlong trackId, jdouble distanceInMeters) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActivePoint( + JNIEnv *, jclass, jlong trackId, jdouble distanceInMeters) { auto & bm = frm()->GetBookmarkManager(); - bm.SetElevationActivePoint(static_cast(trackId), - {0,0}, // todo(KK): replace with coordinates from the elevation profile point to show selection mark on the track - static_cast(distanceInMeters)); + bm.SetElevationActivePoint( + static_cast(trackId), + {0, + 0}, // todo(KK): replace with coordinates from the elevation profile point to show selection mark on the track + static_cast(distanceInMeters)); } -JNIEXPORT jdouble JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationActivePointDistance( - JNIEnv *, jclass, jlong trackId) +JNIEXPORT jdouble JNICALL Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeGetElevationActivePointDistance( + JNIEnv *, jclass, jlong trackId) { auto & bm = frm()->GetBookmarkManager(); return static_cast(bm.GetElevationActivePoint(static_cast(trackId))); } JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActiveChangedListener( - JNIEnv *env, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeSetElevationActiveChangedListener(JNIEnv * env, jclass) { frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(std::bind(&OnElevationActivePointChanged, env)); } JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationActiveChangedListener( - JNIEnv *, jclass) +Java_app_organicmaps_sdk_bookmarks_data_BookmarkManager_nativeRemoveElevationActiveChangedListener(JNIEnv *, jclass) { frm()->GetBookmarkManager().SetElevationActivePointChangedCallback(nullptr); } @@ -934,4 +858,4 @@ Java_app_organicmaps_sdk_widget_placepage_PlacePageButtonFactory_nativeHasRecent { return frm()->GetBookmarkManager().HasRecentlyDeletedBookmark(); } -} // extern "C" \ No newline at end of file +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/ScopedLocalRef.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/ScopedLocalRef.hpp index 312c0ccc2..17932b0bd 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/ScopedLocalRef.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/ScopedLocalRef.hpp @@ -6,7 +6,8 @@ namespace jni { // A smart pointer that deletes a JNI local reference when it goes out of scope. template -class ScopedLocalRef { +class ScopedLocalRef +{ public: ScopedLocalRef(JNIEnv * env, T localRef) : m_env(env), m_localRef(localRef) {} diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.cpp index c315cc7cc..62ef0ddc4 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.cpp @@ -6,8 +6,8 @@ #include "base/exception.hpp" #include "base/string_utils.hpp" -#include "app/organicmaps/sdk/bookmarks/data/PredefinedColors.hpp" #include "app/organicmaps/sdk/bookmarks/data/Icon.hpp" +#include "app/organicmaps/sdk/bookmarks/data/PredefinedColors.hpp" #include @@ -36,7 +36,7 @@ int __system_property_get(char const * name, char * value); static bool IsAndroidApiLowerThan(int apiLevel) { - char value[92] = { 0 }; + char value[92] = {0}; if (__system_property_get("ro.build.version.sdk", value) < 1) return false; int const deviceApiLevel = atoi(value); @@ -78,8 +78,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM * jvm, void *) return JNI_VERSION_1_6; } -JNIEXPORT void JNICALL -JNI_OnUnload(JavaVM *, void *) +JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *, void *) { g_jvm = 0; JNIEnv * env = jni::GetEnv(); @@ -187,11 +186,11 @@ jstring ToJavaStringWithSupplementalCharsFix(JNIEnv * env, std::string const & s if (g_isAndroidLowerThan7) { // Detect 4-byte sequence start marker to avoid unnecessary allocation + copy. - for (const auto c : s) + for (auto const c : s) { if (0b11110000 == (c & 0b11111000)) { - const auto utf16 = strings::ToUtf16(s); + auto const utf16 = strings::ToUtf16(s); return env->NewString(reinterpret_cast(utf16.data()), utf16.size()); } } @@ -219,39 +218,36 @@ std::shared_ptr make_global_ref(jobject obj) }); } -std::string ToNativeString(JNIEnv * env, const jthrowable & e) +std::string ToNativeString(JNIEnv * env, jthrowable const & e) { jni::TScopedLocalClassRef logClassRef(env, env->FindClass("android/util/Log")); ASSERT(logClassRef.get(), ()); - static jmethodID const getStacktraceMethod = - jni::GetStaticMethodID(env, logClassRef.get(), "getStackTraceString", - "(Ljava/lang/Throwable;)Ljava/lang/String;"); + static jmethodID const getStacktraceMethod = jni::GetStaticMethodID(env, logClassRef.get(), "getStackTraceString", + "(Ljava/lang/Throwable;)Ljava/lang/String;"); ASSERT(getStacktraceMethod, ()); TScopedLocalRef resultRef(env, env->CallStaticObjectMethod(logClassRef.get(), getStacktraceMethod, e)); - return ToNativeString(env, (jstring) resultRef.get()); + return ToNativeString(env, (jstring)resultRef.get()); } - bool HandleJavaException(JNIEnv * env) { if (env->ExceptionCheck()) - { - jni::ScopedLocalRef const e(env, env->ExceptionOccurred()); - env->ExceptionDescribe(); - env->ExceptionClear(); - base::LogLevel level = GetLogLevelForException(env, e.get()); - LOG(level, (ToNativeString(env, e.get()))); - return true; - } - return false; + { + jni::ScopedLocalRef const e(env, env->ExceptionOccurred()); + env->ExceptionDescribe(); + env->ExceptionClear(); + base::LogLevel level = GetLogLevelForException(env, e.get()); + LOG(level, (ToNativeString(env, e.get()))); + return true; + } + return false; } -base::LogLevel GetLogLevelForException(JNIEnv * env, const jthrowable & e) +base::LogLevel GetLogLevelForException(JNIEnv * env, jthrowable const & e) { static jclass const errorClass = jni::GetGlobalClassRef(env, "java/lang/Error"); ASSERT(errorClass, (jni::DescribeException())); - static jclass const runtimeExceptionClass = - jni::GetGlobalClassRef(env, "java/lang/RuntimeException"); + static jclass const runtimeExceptionClass = jni::GetGlobalClassRef(env, "java/lang/RuntimeException"); ASSERT(runtimeExceptionClass, (jni::DescribeException())); // If Unchecked Exception or Error is occurred during Java call the app should fail immediately. // In other cases, just a warning message about exception (Checked Exception) @@ -281,12 +277,10 @@ std::string DescribeException() jobject GetNewParcelablePointD(JNIEnv * env, m2::PointD const & point) { jclass klass = env->FindClass("app/organicmaps/sdk/bookmarks/data/ParcelablePointD"); - ASSERT ( klass, () ); + ASSERT(klass, ()); jmethodID methodID = GetConstructorID(env, klass, "(DD)V"); - return env->NewObject(klass, methodID, - static_cast(point.x), - static_cast(point.y)); + return env->NewObject(klass, methodID, static_cast(point.x), static_cast(point.y)); } jobject GetNewPoint(JNIEnv * env, m2::PointD const & point) @@ -297,12 +291,10 @@ jobject GetNewPoint(JNIEnv * env, m2::PointD const & point) jobject GetNewPoint(JNIEnv * env, m2::PointI const & point) { jclass klass = env->FindClass("android/graphics/Point"); - ASSERT ( klass, () ); + ASSERT(klass, ()); jmethodID methodID = GetConstructorID(env, klass, "(II)V"); - return env->NewObject(klass, methodID, - static_cast(point.x), - static_cast(point.y)); + return env->NewObject(klass, methodID, static_cast(point.x), static_cast(point.y)); } // This util method dumps content of local and global reference jni tables to logcat for debug and testing purposes @@ -317,8 +309,8 @@ void DumpDalvikReferenceTables() jobject ToKeyValue(JNIEnv * env, std::pair src) { - static jmethodID const keyValueInit = jni::GetConstructorID( - env, g_keyValueClazz, "(Ljava/lang/String;Ljava/lang/String;)V"); + static jmethodID const keyValueInit = + jni::GetConstructorID(env, g_keyValueClazz, "(Ljava/lang/String;Ljava/lang/String;)V"); jni::TScopedLocalRef key(env, jni::ToJavaString(env, src.first)); jni::TScopedLocalRef value(env, jni::ToJavaString(env, src.second)); @@ -328,16 +320,12 @@ jobject ToKeyValue(JNIEnv * env, std::pair src) std::pair ToNativeKeyValue(JNIEnv * env, jobject pairOfStrings) { - static jfieldID const keyId = env->GetFieldID(g_keyValueClazz, "mKey", - "Ljava/lang/String;"); - static jfieldID const valueId = env->GetFieldID(g_keyValueClazz, "mValue", - "Ljava/lang/String;"); + static jfieldID const keyId = env->GetFieldID(g_keyValueClazz, "mKey", "Ljava/lang/String;"); + static jfieldID const valueId = env->GetFieldID(g_keyValueClazz, "mValue", "Ljava/lang/String;"); - jni::ScopedLocalRef const key( - env, static_cast(env->GetObjectField(pairOfStrings, keyId))); - jni::ScopedLocalRef const value( - env, static_cast(env->GetObjectField(pairOfStrings, valueId))); + jni::ScopedLocalRef const key(env, static_cast(env->GetObjectField(pairOfStrings, keyId))); + jni::ScopedLocalRef const value(env, static_cast(env->GetObjectField(pairOfStrings, valueId))); - return { jni::ToNativeString(env, key.get()), jni::ToNativeString(env, value.get()) }; + return {jni::ToNativeString(env, key.get()), jni::ToNativeString(env, value.get())}; } } // namespace jni diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp index 3753e7b08..4da33cbd5 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp @@ -41,8 +41,8 @@ jfieldID GetStaticFieldID(JNIEnv * env, jclass clazz, char const * name, char co jclass GetGlobalClassRef(JNIEnv * env, char const * s); std::string ToNativeString(JNIEnv * env, jstring str); -// Converts UTF-8 array to native UTF-8 string. Result differs from simple GetStringUTFChars call for characters greater than U+10000, -// since jni uses modified UTF (MUTF-8) for strings. +// Converts UTF-8 array to native UTF-8 string. Result differs from simple GetStringUTFChars call for characters greater +// than U+10000, since jni uses modified UTF (MUTF-8) for strings. std::string ToNativeString(JNIEnv * env, jbyteArray const & utfBytes); jstring ToJavaString(JNIEnv * env, char const * s); inline jstring ToJavaString(JNIEnv * env, std::string const & s) @@ -63,7 +63,7 @@ char const * GetStringClassName(); std::string DescribeException(); bool HandleJavaException(JNIEnv * env); -base::LogLevel GetLogLevelForException(JNIEnv * env, const jthrowable & e); +base::LogLevel GetLogLevelForException(JNIEnv * env, jthrowable const & e); std::shared_ptr make_global_ref(jobject obj); using TScopedLocalRef = ScopedLocalRef; @@ -77,10 +77,10 @@ jobject GetNewParcelablePointD(JNIEnv * env, m2::PointD const & point); jobject GetNewPoint(JNIEnv * env, m2::PointD const & point); jobject GetNewPoint(JNIEnv * env, m2::PointI const & point); -template +template jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, TIt begin, TIt end, size_t const size, TToJavaFn && toJavaFn) { - jobjectArray jArray = env->NewObjectArray((jint) size, clazz, 0); + jobjectArray jArray = env->NewObjectArray((jint)size, clazz, 0); jint i = 0; for (auto it = begin; it != end; ++it) { @@ -92,21 +92,17 @@ jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, TIt begin, TIt end, size_t return jArray; } -template +template jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, TContainer const & src, TToJavaFn && toJavaFn) { - return ToJavaArray(env, clazz, std::begin(src), std::end(src), src.size(), - std::forward(toJavaFn)); + return ToJavaArray(env, clazz, std::begin(src), std::end(src), src.size(), std::forward(toJavaFn)); } template jobjectArray ToJavaStringArray(JNIEnv * env, Cont const & src) { return ToJavaArray(env, GetStringClass(env), src, - [](JNIEnv * env, std::string const & item) - { - return ToJavaString(env, item.c_str()); - }); + [](JNIEnv * env, std::string const & item) { return ToJavaString(env, item.c_str()); }); } void DumpDalvikReferenceTables(); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.cpp index 3c735e05e..fa467e477 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.cpp @@ -29,4 +29,4 @@ jobject ListBuilder::CreateArray(JNIEnv * env, size_t sz) const { return env->NewObject(m_arrayClass, m_arrayCtor, sz); } -} // namespace jni +} // namespace jni diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.hpp index a343ab987..af992a48c 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_java_methods.hpp @@ -2,8 +2,12 @@ #include -#define DECLARE_BUILDER_INSTANCE(BuilderType) static BuilderType const & Instance(JNIEnv * env) { \ - static BuilderType const inst(env); return inst; } +#define DECLARE_BUILDER_INSTANCE(BuilderType) \ + static BuilderType const & Instance(JNIEnv * env) \ + { \ + static BuilderType const inst(env); \ + return inst; \ + } namespace jni { @@ -34,4 +38,4 @@ public: jobject CreateArray(JNIEnv * env, size_t sz) const; }; -} // namespace jni +} // namespace jni diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.cpp index 857d49aca..d5c433db3 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.cpp @@ -3,9 +3,9 @@ #include "base/exception.hpp" #include "base/logging.hpp" +#include "app/organicmaps/sdk/core/ScopedEnv.hpp" #include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/core/logging.hpp" -#include "app/organicmaps/sdk/core/ScopedEnv.hpp" #include #include @@ -22,17 +22,17 @@ void AndroidMessage(LogLevel level, SrcPoint const & src, std::string const & s) switch (level) { - case LINFO: pr = ANDROID_LOG_INFO; break; - case LDEBUG: pr = ANDROID_LOG_DEBUG; break; - case LWARNING: pr = ANDROID_LOG_WARN; break; - case LERROR: pr = ANDROID_LOG_ERROR; break; - case LCRITICAL: pr = ANDROID_LOG_ERROR; break; - case NUM_LOG_LEVELS: break; + case LINFO: pr = ANDROID_LOG_INFO; break; + case LDEBUG: pr = ANDROID_LOG_DEBUG; break; + case LWARNING: pr = ANDROID_LOG_WARN; break; + case LERROR: pr = ANDROID_LOG_ERROR; break; + case LCRITICAL: pr = ANDROID_LOG_ERROR; break; + case NUM_LOG_LEVELS: break; } ScopedEnv env(jni::GetJVM()); - static jmethodID const logMethod = jni::GetStaticMethodID(env.get(), g_loggerClazz, - "log", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"); + static jmethodID const logMethod = jni::GetStaticMethodID( + env.get(), g_loggerClazz, "log", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V"); std::string const out = DebugPrint(src) + s; jni::TScopedLocalRef msg(env.get(), jni::ToJavaString(env.get(), out)); @@ -68,4 +68,4 @@ void ToggleDebugLogs(bool enabled) else g_LogLevel = LINFO; } -} +} // namespace jni diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.hpp index c7538e332..55548abf2 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/logging.hpp @@ -2,7 +2,7 @@ namespace jni { - void InitSystemLog(); - void InitAssertLog(); - void ToggleDebugLogs(bool enabled); -} +void InitSystemLog(); +void InitAssertLog(); +void ToggleDebugLogs(bool enabled); +} // namespace jni diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.cpp index 978ca4053..3a73d4dc9 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.cpp @@ -2,16 +2,12 @@ namespace android { - void RenderContext::makeCurrent() - { - } +void RenderContext::makeCurrent() {} - graphics::RenderContext * RenderContext::createShared() - { - RenderContext * rc = new RenderContext(); - rc->setResourceManager(resourceManager()); - return rc; - } +graphics::RenderContext * RenderContext::createShared() +{ + RenderContext * rc = new RenderContext(); + rc->setResourceManager(resourceManager()); + return rc; } - - +} // namespace android diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.hpp index 4d13bc9c1..9ab8d665a 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/core/render_context.hpp @@ -6,12 +6,11 @@ namespace android { - class RenderContext : public graphics::gl::RenderContext - { - public: +class RenderContext : public graphics::gl::RenderContext +{ +public: + void makeCurrent(); - void makeCurrent(); - - graphics::RenderContext * createShared(); - }; -} + graphics::RenderContext * createShared(); +}; +} // namespace android diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/Editor.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/Editor.cpp index b225381cc..7b65cee98 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/Editor.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/Editor.cpp @@ -1,7 +1,7 @@ #include -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/Framework.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "editor/osm_editor.hpp" @@ -43,8 +43,7 @@ jobject ToJavaName(JNIEnv * env, osm::LocalizedName const & name) jni::TScopedLocalRef jName(env, jni::ToJavaString(env, name.m_name)); jni::TScopedLocalRef jLang(env, jni::ToJavaString(env, name.m_lang)); jni::TScopedLocalRef jLangName(env, jni::ToJavaString(env, name.m_langName)); - return env->NewObject(g_localNameClazz, g_localNameCtor, name.m_code, - jName.get(), jLang.get(), jLangName.get()); + return env->NewObject(g_localNameClazz, g_localNameCtor, name.m_code, jName.get(), jLang.get(), jLangName.get()); } jobject ToJavaStreet(JNIEnv * env, osm::LocalizedStreet const & street) @@ -65,12 +64,12 @@ extern "C" { using osm::Editor; -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeInit(JNIEnv * env, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeInit(JNIEnv * env, jclass) { g_localNameClazz = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/LocalizedName"); // LocalizedName(int code, @NonNull String name, @NonNull String lang, @NonNull String langName) - g_localNameCtor = jni::GetConstructorID(env, g_localNameClazz, "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + g_localNameCtor = + jni::GetConstructorID(env, g_localNameClazz, "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); g_localNameFieldCode = env->GetFieldID(g_localNameClazz, "code", "I"); g_localNameFieldName = env->GetFieldID(g_localNameClazz, "name", "Ljava/lang/String;"); @@ -81,30 +80,28 @@ Java_app_organicmaps_sdk_editor_Editor_nativeInit(JNIEnv * env, jclass) g_localStreetFieldLoc = env->GetFieldID(g_localStreetClazz, "localizedName", "Ljava/lang/String;"); g_namesDataSourceClassID = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/NamesDataSource"); - g_namesDataSourceConstructorID = jni::GetConstructorID(env, g_namesDataSourceClassID, "([Lapp/organicmaps/sdk/editor/data/LocalizedName;I)V"); + g_namesDataSourceConstructorID = + jni::GetConstructorID(env, g_namesDataSourceClassID, "([Lapp/organicmaps/sdk/editor/data/LocalizedName;I)V"); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetOpeningHours(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetOpeningHours(JNIEnv * env, jclass) { return jni::ToJavaString(env, g_editableMapObject.GetOpeningHours()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetOpeningHours(JNIEnv * env, jclass, jstring value) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetOpeningHours(JNIEnv * env, jclass, jstring value) { g_editableMapObject.SetOpeningHours(jni::ToNativeString(env, value)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, jint id) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, jint id) { auto const metaID = static_cast(id); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); if (osm::isSocialContactTag(metaID)) { auto const value = g_editableMapObject.GetMetadata(metaID); - if (value.find('/') == std::string::npos) // `value` contains pagename. + if (value.find('/') == std::string::npos) // `value` contains pagename. return jni::ToJavaString(env, value); // `value` contains URL. return jni::ToJavaString(env, osm::socialContactToURL(metaID, value)); @@ -112,64 +109,56 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetMetadata(JNIEnv * env, jclass, j return jni::ToJavaString(env, g_editableMapObject.GetMetadata(metaID)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsMetadataValid(JNIEnv * env, jclass, jint id, jstring value) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsMetadataValid(JNIEnv * env, jclass, jint id, + jstring value) { auto const metaID = static_cast(id); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); return osm::EditableMapObject::IsValidMetadata(metaID, jni::ToNativeString(env, value)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass, jint id, jstring value) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass, jint id, + jstring value) { auto const metaID = static_cast(id); ASSERT_LESS(metaID, osm::MapObject::MetadataID::FMD_COUNT, ()); g_editableMapObject.SetMetadata(metaID, jni::ToNativeString(env, value)); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetStars(JNIEnv * env, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetStars(JNIEnv * env, jclass) { return g_editableMapObject.GetStars(); } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetMaxEditableBuildingLevels(JNIEnv *, jclass) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMaxEditableBuildingLevels(JNIEnv *, jclass) { return osm::EditableMapObject::kMaximumLevelsEditableByUsers; } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeHasWifi(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeHasWifi(JNIEnv *, jclass) { return g_editableMapObject.GetInternet() == feature::Internet::Wlan; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetHasWifi(JNIEnv *, jclass, jboolean hasWifi) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetHasWifi(JNIEnv *, jclass, jboolean hasWifi) { if (hasWifi != (g_editableMapObject.GetInternet() == feature::Internet::Wlan)) g_editableMapObject.SetInternet(hasWifi ? feature::Internet::Wlan : feature::Internet::Unknown); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSaveEditedFeature(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSaveEditedFeature(JNIEnv *, jclass) { switch (g_framework->NativeFramework()->SaveEditedMapObject(g_editableMapObject)) { case osm::Editor::SaveResult::NothingWasChanged: - case osm::Editor::SaveResult::SavedSuccessfully: - return true; + case osm::Editor::SaveResult::SavedSuccessfully: return true; case osm::Editor::SaveResult::NoFreeSpaceError: case osm::Editor::SaveResult::NoUnderlyingMapError: - case osm::Editor::SaveResult::SavingError: - return false; + case osm::Editor::SaveResult::SavingError: return false; } } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -178,8 +167,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowEditPlace(JNIEnv *, jclas return g_framework->GetPlacePageInfo().ShouldShowEditPlace(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -188,8 +176,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddBusiness(JNIEnv *, jcl return g_framework->GetPlacePageInfo().ShouldShowAddBusiness(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -198,8 +185,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldShowAddPlace(JNIEnv *, jclass return g_framework->GetPlacePageInfo().ShouldShowAddPlace(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -208,8 +194,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableEditPlace(JNIEnv *, jcl return g_framework->GetPlacePageInfo().ShouldEnableEditPlace(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -218,8 +203,8 @@ Java_app_organicmaps_sdk_editor_Editor_nativeShouldEnableAddPlace(JNIEnv *, jcla return g_framework->GetPlacePageInfo().ShouldEnableAddPlace(); } -JNIEXPORT jintArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetEditableProperties(JNIEnv * env, jclass clazz) +JNIEXPORT jintArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetEditableProperties(JNIEnv * env, + jclass clazz) { auto const & editable = g_editableMapObject.GetEditableProperties(); size_t const size = editable.size(); @@ -232,32 +217,27 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetEditableProperties(JNIEnv * env, return jEditableFields; } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsAddressEditable(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsAddressEditable(JNIEnv * env, jclass clazz) { return g_editableMapObject.IsAddressEditable(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsNameEditable(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsNameEditable(JNIEnv * env, jclass clazz) { return g_editableMapObject.IsNameEditable(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsPointType(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsPointType(JNIEnv * env, jclass clazz) { return g_editableMapObject.IsPointType(); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsBuilding(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsBuilding(JNIEnv * env, jclass clazz) { return g_editableMapObject.IsBuilding(); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jclass) { auto const namesDataSource = g_editableMapObject.GetNamesDataSource(); @@ -267,82 +247,79 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetNamesDataSource(JNIEnv * env, jc return env->NewObject(g_namesDataSourceClassID, g_namesDataSourceConstructorID, names, mandatoryNamesCount); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetNames(JNIEnv * env, jclass, jobjectArray names) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetNames(JNIEnv * env, jclass, jobjectArray names) { int const length = env->GetArrayLength(names); for (int i = 0; i < length; i++) { auto jName = env->GetObjectArrayElement(names, i); - g_editableMapObject.SetName(jni::ToNativeString(env, static_cast(env->GetObjectField(jName, g_localNameFieldName))), - env->GetIntField(jName, g_localNameFieldCode)); + g_editableMapObject.SetName( + jni::ToNativeString(env, static_cast(env->GetObjectField(jName, g_localNameFieldName))), + env->GetIntField(jName, g_localNameFieldCode)); } } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetStreet(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetStreet(JNIEnv * env, jclass) { return ToJavaStreet(env, g_editableMapObject.GetStreet()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetStreet(JNIEnv * env, jclass, jobject street) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetStreet(JNIEnv * env, jclass, jobject street) { - g_editableMapObject.SetStreet({jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldDef)), - jni::ToNativeString(env, (jstring) env->GetObjectField(street, g_localStreetFieldLoc))}); + g_editableMapObject.SetStreet( + {jni::ToNativeString(env, (jstring)env->GetObjectField(street, g_localStreetFieldDef)), + jni::ToNativeString(env, (jstring)env->GetObjectField(street, g_localStreetFieldLoc))}); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetNearbyStreets(JNIEnv * env, jclass clazz) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetNearbyStreets(JNIEnv * env, jclass clazz) { return jni::ToJavaArray(env, g_localStreetClazz, g_editableMapObject.GetNearbyStreets(), ToJavaStreet); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetSupportedLanguages(JNIEnv * env, jclass clazz, jboolean includeServiceLangs) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetSupportedLanguages( + JNIEnv * env, jclass clazz, jboolean includeServiceLangs) { using TLang = StringUtf8Multilang::Lang; - //public Language(@NonNull String code, @NonNull String name) + // public Language(@NonNull String code, @NonNull String name) static jclass const langClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Language"); static jmethodID const langCtor = jni::GetConstructorID(env, langClass, "(Ljava/lang/String;Ljava/lang/String;)V"); return jni::ToJavaArray(env, langClass, StringUtf8Multilang::GetSupportedLanguages(includeServiceLangs), [](JNIEnv * env, TLang const & lang) - { - jni::TScopedLocalRef const code(env, jni::ToJavaString(env, lang.m_code)); - jni::TScopedLocalRef const name(env, jni::ToJavaString(env, lang.m_name)); - return env->NewObject(langClass, langCtor, code.get(), name.get()); - }); + { + jni::TScopedLocalRef const code(env, jni::ToJavaString(env, lang.m_code)); + jni::TScopedLocalRef const name(env, jni::ToJavaString(env, lang.m_name)); + return env->NewObject(langClass, langCtor, code.get(), name.get()); + }); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetHouseNumber(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetHouseNumber(JNIEnv * env, jclass) { return jni::ToJavaString(env, g_editableMapObject.GetHouseNumber()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetHouseNumber(JNIEnv * env, jclass, jstring houseNumber) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetHouseNumber(JNIEnv * env, jclass, + jstring houseNumber) { g_editableMapObject.SetHouseNumber(jni::ToNativeString(env, houseNumber)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeHasSomethingToUpload(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeHasSomethingToUpload(JNIEnv * env, jclass clazz) { return Editor::Instance().HaveMapEditsOrNotesToUpload(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeUploadChanges(JNIEnv * env, jclass clazz, jstring token, jstring appVersion, jstring appId) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeUploadChanges(JNIEnv * env, jclass clazz, + jstring token, jstring appVersion, + jstring appId) { // TODO: Handle upload status in callback Editor::Instance().UploadChanges(jni::ToNativeString(env, token), - {{"created_by", "CoMaps " OMIM_OS_NAME " " + jni::ToNativeString(env, appVersion)}, - {"bundle_id", jni::ToNativeString(env, appId)}}, nullptr); + {{"created_by", "CoMaps " OMIM_OS_NAME " " + jni::ToNativeString(env, appVersion)}, + {"bundle_id", jni::ToNativeString(env, appId)}}, + nullptr); } -JNIEXPORT jlongArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz) +JNIEXPORT jlongArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz) { auto const stats = Editor::Instance().GetStats(); jlongArray result = env->NewLongArray(3); @@ -352,14 +329,12 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetStats(JNIEnv * env, jclass clazz return result; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeClearLocalEdits(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeClearLocalEdits(JNIEnv * env, jclass clazz) { Editor::Instance().ClearAllLocalEdits(); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeStartEdit(JNIEnv *, jclass) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeStartEdit(JNIEnv *, jclass) { ::Framework * frm = g_framework->NativeFramework(); if (!frm->HasPlacePageInfo()) @@ -373,9 +348,8 @@ Java_app_organicmaps_sdk_editor_Editor_nativeStartEdit(JNIEnv *, jclass) CHECK(frm->GetEditableMapObject(info.GetID(), g_editableMapObject), ("Invalid feature in the place page.")); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclass, - jstring featureType) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclass, + jstring featureType) { ::Framework * frm = g_framework->NativeFramework(); auto const type = classif().GetTypeByReadableObjectName(jni::ToNativeString(env, featureType)); @@ -384,11 +358,10 @@ Java_app_organicmaps_sdk_editor_Editor_nativeCreateMapObject(JNIEnv * env, jclas } // static void nativeCreateNote(String text); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeCreateNote(JNIEnv * env, jclass clazz, jstring text) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeCreateNote(JNIEnv * env, jclass clazz, jstring text) { - g_framework->NativeFramework()->CreateNote( - g_editableMapObject, osm::Editor::NoteProblemType::General, jni::ToNativeString(env, text)); + g_framework->NativeFramework()->CreateNote(g_editableMapObject, osm::Editor::NoteProblemType::General, + jni::ToNativeString(env, text)); } JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeCreateStandaloneNote(JNIEnv * env, jclass clazz, @@ -399,23 +372,21 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeCreateStanda } // static void nativePlaceDoesNotExist(String comment); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativePlaceDoesNotExist(JNIEnv * env, jclass clazz, jstring comment) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativePlaceDoesNotExist(JNIEnv * env, jclass clazz, + jstring comment) { - g_framework->NativeFramework()->CreateNote(g_editableMapObject, - osm::Editor::NoteProblemType::PlaceDoesNotExist, + g_framework->NativeFramework()->CreateNote(g_editableMapObject, osm::Editor::NoteProblemType::PlaceDoesNotExist, jni::ToNativeString(env, comment)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeRollbackMapObject(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeRollbackMapObject(JNIEnv * env, jclass clazz) { g_framework->NativeFramework()->RollBackChanges(g_editableMapObject.GetID()); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv * env, jclass clazz, - jstring jLang) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv * env, + jclass clazz, + jstring jLang) { std::string const & lang = jni::ToNativeString(env, jLang); auto & categories = GetFeatureCategories(); @@ -424,10 +395,10 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv return jni::ToJavaStringArray(env, categories.GetAllCreatableTypeNames()); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv * env, jclass clazz, - jstring query, - jstring jLang) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv * env, + jclass clazz, + jstring query, + jstring jLang) { std::string const & lang = jni::ToNativeString(env, jLang); auto & categories = GetFeatureCategories(); @@ -436,8 +407,7 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSearchCreatableFeatureTypes(JNIEnv return jni::ToJavaStringArray(env, categories.Search(jni::ToNativeString(env, query))); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass clazz) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass clazz) { osm::AllCuisines const & cuisines = osm::Cuisines::Instance().AllSupportedCuisines(); std::vector keys; @@ -447,14 +417,15 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetCuisines(JNIEnv * env, jclass cl return jni::ToJavaStringArray(env, keys); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetSelectedCuisines(JNIEnv * env, jclass clazz) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetSelectedCuisines(JNIEnv * env, + jclass clazz) { return jni::ToJavaStringArray(env, g_editableMapObject.GetCuisines()); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, jclass thiz, jstring jSubstr) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, + jclass thiz, + jstring jSubstr) { std::string const substr = jni::ToNativeString(env, jSubstr); bool const noFilter = substr.length() == 0; @@ -473,8 +444,9 @@ Java_app_organicmaps_sdk_editor_Editor_nativeFilterCuisinesKeys(JNIEnv * env, jc return jni::ToJavaStringArray(env, keys); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeTranslateCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeTranslateCuisines(JNIEnv * env, + jclass clazz, + jobjectArray jKeys) { int const length = env->GetArrayLength(jKeys); auto const & cuisines = osm::Cuisines::Instance(); @@ -488,8 +460,8 @@ Java_app_organicmaps_sdk_editor_Editor_nativeTranslateCuisines(JNIEnv * env, jcl return jni::ToJavaStringArray(env, translations); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, jclass clazz, jobjectArray jKeys) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, jclass clazz, + jobjectArray jKeys) { int const length = env->GetArrayLength(jKeys); std::vector cuisines; @@ -499,39 +471,35 @@ Java_app_organicmaps_sdk_editor_Editor_nativeSetSelectedCuisines(JNIEnv * env, j g_editableMapObject.SetCuisines(cuisines); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetFormattedCuisine(JNIEnv * env, jclass clazz) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetFormattedCuisine(JNIEnv * env, jclass clazz) { return jni::ToJavaString(env, g_editableMapObject.FormatCuisines()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmName(JNIEnv * env, jclass clazz) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmName(JNIEnv * env, jclass clazz) { return jni::ToJavaString(env, g_editableMapObject.GetID().GetMwmName()); } -JNIEXPORT jlong JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmVersion(JNIEnv * env, jclass clazz) +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMwmVersion(JNIEnv * env, jclass clazz) { return g_editableMapObject.GetID().GetMwmVersion(); } // static boolean nativeIsHouseValid(String houseNumber); -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsHouseValid(JNIEnv * env, jclass clazz, jstring houseNumber) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsHouseValid(JNIEnv * env, jclass clazz, + jstring houseNumber) { return osm::EditableMapObject::ValidateHouseNumber(jni::ToNativeString(env, houseNumber)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsNameValid(JNIEnv * env, jclass clazz, jstring name) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsNameValid(JNIEnv * env, jclass clazz, + jstring name) { return osm::EditableMapObject::ValidateName(jni::ToNativeString(env, name)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetCategory(JNIEnv * env, jclass clazz) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetCategory(JNIEnv * env, jclass clazz) { auto types = g_editableMapObject.GetTypes(); types.SortBySpec(); @@ -540,23 +508,22 @@ Java_app_organicmaps_sdk_editor_Editor_nativeGetCategory(JNIEnv * env, jclass cl // @FeatureStatus // static native int nativeGetMapObjectStatus(); -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeGetMapObjectStatus(JNIEnv * env, jclass clazz) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetMapObjectStatus(JNIEnv * env, jclass clazz) { return static_cast(osm::Editor::Instance().GetFeatureStatus(g_editableMapObject.GetID())); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeIsMapObjectUploaded(JNIEnv * env, jclass clazz) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsMapObjectUploaded(JNIEnv * env, jclass clazz) { - return osm::Editor::Instance().IsFeatureUploaded(g_editableMapObject.GetID().m_mwmId, g_editableMapObject.GetID().m_index); + return osm::Editor::Instance().IsFeatureUploaded(g_editableMapObject.GetID().m_mwmId, + g_editableMapObject.GetID().m_index); } // static nativeMakeLocalizedName(String langCode, String name); -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_Editor_nativeMakeLocalizedName(JNIEnv * env, jclass clazz, jstring code, jstring name) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeMakeLocalizedName(JNIEnv * env, jclass clazz, + jstring code, jstring name) { osm::LocalizedName localizedName(jni::ToNativeString(env, code), jni::ToNativeString(env, name)); return ToJavaName(env, localizedName); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OpeningHours.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OpeningHours.cpp index ec16b2abc..c06d332d8 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OpeningHours.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OpeningHours.cpp @@ -14,7 +14,6 @@ #include #include - namespace { using namespace editor; @@ -43,22 +42,12 @@ jfieldID g_fidWeekdays; jobject JavaHoursMinutes(JNIEnv * env, jlong hours, jlong minutes) { - static const jclass dateUtilsClass = jni::GetGlobalClassRef(env, - "app/organicmaps/sdk/util/DateUtils"); + static jclass const dateUtilsClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/DateUtils"); static jmethodID const is24HourFormatMethod = - jni::GetStaticMethodID(env, - dateUtilsClass, - "is24HourFormat", - "(Landroid/content/Context;)Z"); + jni::GetStaticMethodID(env, dateUtilsClass, "is24HourFormat", "(Landroid/content/Context;)Z"); jobject context = android::Platform::Instance().GetContext(); - jboolean const is24HourFormat = env->CallStaticBooleanMethod(dateUtilsClass, - is24HourFormatMethod, - context); - jobject const hoursMinutes = env->NewObject(g_clazzHoursMinutes, - g_ctorHoursMinutes, - hours, - minutes, - is24HourFormat); + jboolean const is24HourFormat = env->CallStaticBooleanMethod(dateUtilsClass, is24HourFormatMethod, context); + jobject const hoursMinutes = env->NewObject(g_clazzHoursMinutes, g_ctorHoursMinutes, hours, minutes, is24HourFormat); ASSERT(hoursMinutes, (jni::DescribeException())); return hoursMinutes; } @@ -74,8 +63,7 @@ jobject JavaTimespan(JNIEnv * env, osmoh::Timespan const & timespan) { auto const start = timespan.GetStart(); auto const end = timespan.GetEnd(); - return JavaTimespan(env, - JavaHoursMinutes(env, start.GetHoursCount(), start.GetMinutesCount()), + return JavaTimespan(env, JavaHoursMinutes(env, start.GetHoursCount(), start.GetMinutesCount()), JavaHoursMinutes(env, end.GetHoursCount(), end.GetMinutesCount())); } @@ -92,22 +80,16 @@ jobject JavaTimetable(JNIEnv * env, TimeTable const & tt) std::set weekdays = tt.GetOpeningDays(); std::vector weekdaysVector; weekdaysVector.reserve(weekdays.size()); - std::transform(weekdays.begin(), weekdays.end(), std::back_inserter(weekdaysVector), [](Weekday weekday) - { - return static_cast(weekday); - }); + std::transform(weekdays.begin(), weekdays.end(), std::back_inserter(weekdaysVector), + [](Weekday weekday) { return static_cast(weekday); }); jintArray jWeekdays = env->NewIntArray(static_cast(weekdays.size())); - env->SetIntArrayRegion(jWeekdays, 0, static_cast(weekdaysVector.size()), - &weekdaysVector[0]); + env->SetIntArrayRegion(jWeekdays, 0, static_cast(weekdaysVector.size()), &weekdaysVector[0]); - return JavaTimetable(env, - JavaTimespan(env, tt.GetOpeningTime()), - jni::ToJavaArray(env, g_clazzTimespan, tt.GetExcludeTime(), [](JNIEnv * env, osmoh::Timespan const & timespan) - { - return JavaTimespan(env, timespan); - }), - tt.IsTwentyFourHours(), - jWeekdays); + return JavaTimetable( + env, JavaTimespan(env, tt.GetOpeningTime()), + jni::ToJavaArray(env, g_clazzTimespan, tt.GetExcludeTime(), + [](JNIEnv * env, osmoh::Timespan const & timespan) { return JavaTimespan(env, timespan); }), + tt.IsTwentyFourHours(), jWeekdays); } jobjectArray JavaTimetables(JNIEnv * env, TimeTableSet & tts) @@ -142,7 +124,7 @@ TimeTable NativeTimetable(JNIEnv * env, jobject jTimetable) { TimeTable tt = TimeTable::GetPredefinedTimeTable(); jintArray const jWeekdays = static_cast(env->GetObjectField(jTimetable, g_fidWeekdays)); - int * weekdaysArr = static_cast(env->GetIntArrayElements(jWeekdays, nullptr)); + int * weekdaysArr = static_cast(env->GetIntArrayElements(jWeekdays, nullptr)); jint size = env->GetArrayLength(jWeekdays); std::set weekdays; for (int i = 0; i < size; i++) @@ -181,8 +163,7 @@ TimeTableSet NativeTimetableSet(JNIEnv * env, jobjectArray jTimetables) extern "C" { -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass clazz) { g_clazzHoursMinutes = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/HoursMinutes"); // Java signature : HoursMinutes(@IntRange(from = 0, to = 24) long hours, @IntRange(from = 0, to = 60) long minutes) @@ -195,8 +176,9 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass cla g_clazzTimespan = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Timespan"); // Java signature : Timespan(HoursMinutes start, HoursMinutes end) - g_ctorTimespan = - env->GetMethodID(g_clazzTimespan, "","(Lapp/organicmaps/sdk/editor/data/HoursMinutes;Lapp/organicmaps/sdk/editor/data/HoursMinutes;)V"); + g_ctorTimespan = env->GetMethodID( + g_clazzTimespan, "", + "(Lapp/organicmaps/sdk/editor/data/HoursMinutes;Lapp/organicmaps/sdk/editor/data/HoursMinutes;)V"); ASSERT(g_ctorTimespan, (jni::DescribeException())); g_fidStart = env->GetFieldID(g_clazzTimespan, "start", "Lapp/organicmaps/sdk/editor/data/HoursMinutes;"); ASSERT(g_fidStart, (jni::DescribeException())); @@ -206,11 +188,14 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass cla g_clazzTimetable = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/editor/data/Timetable"); // Java signature : Timetable(Timespan workingTime, Timespan[] closedHours, boolean isFullday, int weekdays[]) g_ctorTimetable = - env->GetMethodID(g_clazzTimetable, "","(Lapp/organicmaps/sdk/editor/data/Timespan;[Lapp/organicmaps/sdk/editor/data/Timespan;Z[I)V"); + env->GetMethodID(g_clazzTimetable, "", + "(Lapp/organicmaps/sdk/editor/data/Timespan;[Lapp/organicmaps/sdk/editor/data/Timespan;Z[I)V"); ASSERT(g_ctorTimetable, (jni::DescribeException())); - g_fidWorkingTimespan = env->GetFieldID(g_clazzTimetable, "workingTimespan", "Lapp/organicmaps/sdk/editor/data/Timespan;"); + g_fidWorkingTimespan = + env->GetFieldID(g_clazzTimetable, "workingTimespan", "Lapp/organicmaps/sdk/editor/data/Timespan;"); ASSERT(g_fidWorkingTimespan, (jni::DescribeException())); - g_fidClosedTimespans = env->GetFieldID(g_clazzTimetable, "closedTimespans", "[Lapp/organicmaps/sdk/editor/data/Timespan;"); + g_fidClosedTimespans = + env->GetFieldID(g_clazzTimetable, "closedTimespans", "[Lapp/organicmaps/sdk/editor/data/Timespan;"); ASSERT(g_fidClosedTimespans, (jni::DescribeException())); g_fidIsFullday = env->GetFieldID(g_clazzTimetable, "isFullday", "Z"); ASSERT(g_fidIsFullday, (jni::DescribeException())); @@ -218,23 +203,22 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeInit(JNIEnv * env, jclass cla ASSERT(g_fidWeekdays, (jni::DescribeException())); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetDefaultTimetables(JNIEnv * env, jclass clazz) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetDefaultTimetables(JNIEnv * env, + jclass clazz) { TimeTableSet tts; return JavaTimetables(env, tts); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetComplementTimetable(JNIEnv * env, jclass clazz, jobjectArray timetables) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeGetComplementTimetable( + JNIEnv * env, jclass clazz, jobjectArray timetables) { TimeTableSet const tts = NativeTimetableSet(env, timetables); return JavaTimetable(env, tts.GetComplementTimeTable()); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env, jclass clazz, - jobjectArray timetables, jint ttIndex, jint dayIndex) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveWorkingDay( + JNIEnv * env, jclass clazz, jobjectArray timetables, jint ttIndex, jint dayIndex) { TimeTableSet tts = NativeTimetableSet(env, timetables); auto tt = tts.Get(ttIndex); @@ -243,9 +227,8 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveWorkingDay(JNIEnv * env return JavaTimetables(env, tts); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, jclass clazz, - jobjectArray timetables, jint ttIndex, jint dayIndex) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddWorkingDay( + JNIEnv * env, jclass clazz, jobjectArray timetables, jint ttIndex, jint dayIndex) { TimeTableSet tts = NativeTimetableSet(env, timetables); auto tt = tts.Get(ttIndex); @@ -254,9 +237,9 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddWorkingDay(JNIEnv * env, j return JavaTimetables(env, tts); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass clazz, - jobject jTimetable, jboolean jIsFullday) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jclass clazz, + jobject jTimetable, + jboolean jIsFullday) { TimeTable tt = NativeTimetable(env, jTimetable); if (jIsFullday) @@ -269,46 +252,49 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetIsFullday(JNIEnv * env, jc return JavaTimetable(env, tt); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jclass clazz, - jobject jTimetable, jobject jOpeningTime) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeSetOpeningTime(JNIEnv * env, jclass clazz, + jobject jTimetable, + jobject jOpeningTime) { TimeTable tt = NativeTimetable(env, jTimetable); tt.SetOpeningTime(NativeTimespan(env, jOpeningTime)); return JavaTimetable(env, tt); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclass clazz, - jobject jTimetable, jobject jClosedSpan) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeAddClosedSpan(JNIEnv * env, jclass clazz, + jobject jTimetable, + jobject jClosedSpan) { TimeTable tt = NativeTimetable(env, jTimetable); tt.AddExcludeTime(NativeTimespan(env, jClosedSpan)); return JavaTimetable(env, tt); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env, jclass clazz, - jobject jTimetable, jint jClosedSpanIndex) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeRemoveClosedSpan(JNIEnv * env, + jclass clazz, + jobject jTimetable, + jint jClosedSpanIndex) { TimeTable tt = NativeTimetable(env, jTimetable); tt.RemoveExcludeTime(static_cast(jClosedSpanIndex)); return JavaTimetable(env, tt); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesFromString(JNIEnv * env, jclass clazz, jstring jSource) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesFromString(JNIEnv * env, + jclass clazz, + jstring jSource) { TimeTableSet tts; std::string const source = jni::ToNativeString(env, jSource); - if (!source.empty() && MakeTimeTableSet(OpeningHours(source), tts)) + if (!source.empty() && MakeTimeTableSet(OpeningHours(source), tts)) return JavaTimetables(env, tts); return nullptr; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesToString(JNIEnv * env, jclass clazz, jobjectArray jTts) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesToString(JNIEnv * env, + jclass clazz, + jobjectArray jTts) { TimeTableSet tts = NativeTimetableSet(env, jTts); std::stringstream sstr; @@ -316,15 +302,15 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeTimetablesToString(JNIEnv * e return jni::ToJavaString(env, sstr.str()); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeIsTimetableStringValid(JNIEnv * env, jclass clazz, jstring jSource) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeIsTimetableStringValid(JNIEnv * env, + jclass clazz, + jstring jSource) { return OpeningHours(jni::ToNativeString(env, jSource)).IsValid(); } - -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_editor_OpeningHours_nativeCurrentState(JNIEnv * env, jclass clazz, jobjectArray jTts) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_editor_OpeningHours_nativeCurrentState(JNIEnv * env, jclass clazz, + jobjectArray jTts) { TimeTableSet tts = NativeTimetableSet(env, jTts); time_t const now = time(nullptr); @@ -334,17 +320,16 @@ Java_app_organicmaps_sdk_editor_OpeningHours_nativeCurrentState(JNIEnv * env, jc jclass ohStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/editor/OhState"); jclass ruleStateClass = jni::GetGlobalClassRef(env, "app/organicmaps/editor/OhState$State"); - static const std::unordered_map ruleState = { - {RuleState::Open, "Open"}, - {RuleState::Closed, "Closed"}, - {RuleState::Unknown, "Unknown"} - }; + static std::unordered_map const ruleState = { + {RuleState::Open, "Open"}, {RuleState::Closed, "Closed"}, {RuleState::Unknown, "Unknown"}}; - jfieldID stateField = env->GetStaticFieldID(ruleStateClass, ruleState.at(ohInfo.state), "Lapp/organicmaps/editor/OhState$State;"); + jfieldID stateField = + env->GetStaticFieldID(ruleStateClass, ruleState.at(ohInfo.state), "Lapp/organicmaps/editor/OhState$State;"); jobject stateObj = env->GetStaticObjectField(ruleStateClass, stateField); jmethodID constructor = env->GetMethodID(ohStateClass, "", "(Lapp/organicmaps/editor/OhState$State;JJ)V"); - jobject javaOhState = env->NewObject(ohStateClass, constructor, stateObj, (jlong) ohInfo.nextTimeOpen, (jlong) ohInfo.nextTimeClosed); + jobject javaOhState = + env->NewObject(ohStateClass, constructor, stateObj, (jlong)ohInfo.nextTimeOpen, (jlong)ohInfo.nextTimeClosed); return javaOhState; } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OsmOAuth.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OsmOAuth.cpp index 9ef2078af..6dbfb257a 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OsmOAuth.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/editor/OsmOAuth.cpp @@ -1,7 +1,7 @@ #include -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/Framework.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "base/logging.hpp" #include "base/string_utils.hpp" @@ -25,17 +25,15 @@ bool LoadOsmUserPreferences(std::string const & oauthToken, UserPreferences & ou extern "C" { - -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOAuth2Url(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOAuth2Url(JNIEnv * env, jclass) { auto const auth = OsmOAuth::ServerAuth(); return ToJavaString(env, auth.BuildOAuth2Url()); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jclass clazz, - jstring login, jstring password) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jclass clazz, + jstring login, + jstring password) { OsmOAuth auth = OsmOAuth::ServerAuth(); try @@ -51,8 +49,8 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithPassword(JNIEnv * env, jc return nullptr; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, jclass, jstring oauth2code) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, jclass, + jstring oauth2code) { OsmOAuth auth = OsmOAuth::ServerAuth(); try @@ -60,8 +58,8 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, auto token = auth.FinishAuthorization(ToNativeString(env, oauth2code)); if (!token.empty()) { - auth.SetAuthToken(token); - return ToJavaString(env, token); + auth.SetAuthToken(token); + return ToJavaString(env, token); } LOG(LWARNING, ("nativeAuthWithOAuth2Code: invalid OAuth2 code", oauth2code)); } @@ -72,8 +70,8 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeAuthWithOAuth2Code(JNIEnv * env, return nullptr; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jclass, jstring oauthToken) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jclass, + jstring oauthToken) { UserPreferences prefs; if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) @@ -81,8 +79,8 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmUsername(JNIEnv * env, jcla return nullptr; } -JNIEXPORT jint JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * env, jclass, jstring oauthToken) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * env, jclass, + jstring oauthToken) { UserPreferences prefs; if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) @@ -90,8 +88,8 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmChangesetsCount(JNIEnv * en return -1; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv * env, jclass, jstring oauthToken) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv * env, jclass, + jstring oauthToken) { UserPreferences prefs; if (LoadOsmUserPreferences(jni::ToNativeString(env, oauthToken), prefs)) @@ -99,15 +97,14 @@ Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetOsmProfilePictureUrl(JNIEnv * return nullptr; } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetHistoryUrl(JNIEnv * env, jclass, jstring user) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetHistoryUrl(JNIEnv * env, jclass, + jstring user) { return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetHistoryURL(jni::ToNativeString(env, user))); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetNotesUrl(JNIEnv * env, jclass, jstring user) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_editor_OsmOAuth_nativeGetNotesUrl(JNIEnv * env, jclass, jstring user) { return jni::ToJavaString(env, OsmOAuth::ServerAuth().GetNotesURL(jni::ToNativeString(env, user))); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/isolines/IsolinesManager.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/isolines/IsolinesManager.cpp index 72c462f47..e51f63d07 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/isolines/IsolinesManager.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/isolines/IsolinesManager.cpp @@ -7,39 +7,34 @@ using namespace std::placeholders; extern "C" { -static void IsolinesStateChanged(IsolinesManager::IsolinesState state, - std::shared_ptr const & listener) +static void IsolinesStateChanged(IsolinesManager::IsolinesState state, std::shared_ptr const & listener) { LOG(LINFO, (static_cast(state))); JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(*listener, - jni::GetMethodID(env, *listener, "onStateChanged", "(I)V"), - static_cast(state)); + env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener, "onStateChanged", "(I)V"), static_cast(state)); } - -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeAddListener(JNIEnv * env, + jclass clazz, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); - g_framework->SetIsolinesListener(std::bind(&IsolinesStateChanged, - std::placeholders::_1, - jni::make_global_ref(listener))); + g_framework->SetIsolinesListener( + std::bind(&IsolinesStateChanged, std::placeholders::_1, jni::make_global_ref(listener))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeRemoveListener(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeRemoveListener(JNIEnv * env, + jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); g_framework->SetIsolinesListener(nullptr); } JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeShouldShowNotification(JNIEnv *env, - jclass clazz) +Java_app_organicmaps_sdk_maplayer_isolines_IsolinesManager_nativeShouldShowNotification(JNIEnv * env, jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); - auto const &manager = g_framework->NativeFramework()->GetIsolinesManager(); + auto const & manager = g_framework->NativeFramework()->GetIsolinesManager(); auto const visible = manager.IsVisible(); auto const enabled = manager.GetState() == IsolinesManager::IsolinesState::Enabled; return static_cast(!visible && enabled); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.cpp index b26cc51e1..27485def9 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.cpp @@ -7,10 +7,7 @@ namespace android { -ConfigComparator::ConfigComparator(EGLDisplay display) - : m_display(display) -{ -} +ConfigComparator::ConfigComparator(EGLDisplay display) : m_display(display) {} bool ConfigComparator::operator()(EGLConfig const & l, EGLConfig const & r) const { @@ -28,14 +25,10 @@ int ConfigComparator::configWeight(EGLConfig const & config) const switch (val) { - case EGL_NONE: - return 0; - case EGL_SLOW_CONFIG: - return 1; - case EGL_NON_CONFORMANT_CONFIG: - return 2; - default: - return 0; + case EGL_NONE: return 0; + case EGL_SLOW_CONFIG: return 1; + case EGL_NON_CONFORMANT_CONFIG: return 2; + default: return 0; } } @@ -53,21 +46,21 @@ std::string GetEglError(EGLint error) { switch (error) { - case EGL_NOT_INITIALIZED : return "EGL_NOT_INITIALIZED"; - case EGL_BAD_ACCESS : return "EGL_BAD_ACCESS"; - case EGL_BAD_ALLOC : return "EGL_BAD_ALLOC"; - case EGL_BAD_ATTRIBUTE : return "EGL_BAD_ATTRIBUTE"; - case EGL_BAD_CONFIG : return "EGL_BAD_CONFIG"; - case EGL_BAD_CONTEXT : return "EGL_BAD_CONTEXT"; - case EGL_BAD_CURRENT_SURFACE : return "EGL_BAD_CURRENT_SURFACE"; - case EGL_BAD_DISPLAY : return "EGL_BAD_DISPLAY"; - case EGL_BAD_MATCH : return "EGL_BAD_MATCH"; - case EGL_BAD_NATIVE_PIXMAP : return "EGL_BAD_NATIVE_PIXMAP"; - case EGL_BAD_NATIVE_WINDOW : return "EGL_BAD_NATIVE_WINDOW"; - case EGL_BAD_PARAMETER : return "EGL_BAD_PARAMETER"; - case EGL_BAD_SURFACE : return "EGL_BAD_SURFACE"; - case EGL_CONTEXT_LOST : return "EGL_CONTEXT_LOST"; - default: return strings::to_string(error); + case EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; + case EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; + case EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; + case EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; + case EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; + case EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; + case EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; + case EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; + case EGL_BAD_MATCH: return "EGL_BAD_MATCH"; + case EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; + case EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; + case EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; + case EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; + case EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; + default: return strings::to_string(error); } } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.hpp index 9ee372ca7..77148cb63 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/android_gl_utils.hpp @@ -25,5 +25,16 @@ private: void CheckEGL(base::SrcPoint const & src); } // namespace android -#define CHECK_EGL(x) do { (x); android::CheckEGL(SRC());} while(false); -#define CHECK_EGL_CALL() do { android::CheckEGL(SRC());} while (false); +#define CHECK_EGL(x) \ + do \ + { \ + (x); \ + android::CheckEGL(SRC()); \ + } \ + while (false); +#define CHECK_EGL_CALL() \ + do \ + { \ + android::CheckEGL(SRC()); \ + } \ + while (false); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.cpp index bfe5b3841..381e33796 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.cpp @@ -10,15 +10,12 @@ namespace android static EGLint * getContextAttributesList() { - static EGLint contextAttrList[] = { - EGL_CONTEXT_CLIENT_VERSION, 3, - EGL_NONE - }; + static EGLint contextAttrList[] = {EGL_CONTEXT_CLIENT_VERSION, 3, EGL_NONE}; return contextAttrList; } -AndroidOGLContext::AndroidOGLContext(EGLDisplay display, EGLSurface surface, - EGLConfig config, AndroidOGLContext * contextToShareWith) +AndroidOGLContext::AndroidOGLContext(EGLDisplay display, EGLSurface surface, EGLConfig config, + AndroidOGLContext * contextToShareWith) : m_nativeContext(EGL_NO_CONTEXT) , m_surface(surface) , m_display(display) @@ -82,8 +79,7 @@ bool AndroidOGLContext::Validate() { if (!m_presentAvailable) return false; - return eglGetCurrentDisplay() != EGL_NO_DISPLAY && - eglGetCurrentSurface(EGL_DRAW) != EGL_NO_SURFACE && + return eglGetCurrentDisplay() != EGL_NO_DISPLAY && eglGetCurrentSurface(EGL_DRAW) != EGL_NO_SURFACE && eglGetCurrentContext() != EGL_NO_CONTEXT; } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.hpp index 6f7885b64..6fb9679eb 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontext.hpp @@ -10,8 +10,7 @@ namespace android class AndroidOGLContext : public dp::OGLContext { public: - AndroidOGLContext(EGLDisplay display, EGLSurface surface, - EGLConfig config, AndroidOGLContext * contextToShareWith); + AndroidOGLContext(EGLDisplay display, EGLSurface surface, EGLConfig config, AndroidOGLContext * contextToShareWith); ~AndroidOGLContext(); void MakeCurrent() override; diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.cpp index 4cdedf081..71861d5df 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.cpp @@ -22,17 +22,23 @@ namespace { static EGLint * getConfigAttributesListRGB8() { - static EGLint attr_list[] = { - EGL_RED_SIZE, 8, - EGL_GREEN_SIZE, 8, - EGL_BLUE_SIZE, 8, - EGL_ALPHA_SIZE, 0, - EGL_STENCIL_SIZE, 0, - EGL_DEPTH_SIZE, 16, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT, - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT | EGL_WINDOW_BIT, - EGL_NONE - }; + static EGLint attr_list[] = {EGL_RED_SIZE, + 8, + EGL_GREEN_SIZE, + 8, + EGL_BLUE_SIZE, + 8, + EGL_ALPHA_SIZE, + 0, + EGL_STENCIL_SIZE, + 0, + EGL_DEPTH_SIZE, + 16, + EGL_RENDERABLE_TYPE, + EGL_OPENGL_ES3_BIT, + EGL_SURFACE_TYPE, + EGL_PBUFFER_BIT | EGL_WINDOW_BIT, + EGL_NONE}; return attr_list; } @@ -42,8 +48,8 @@ bool IsSupportedRGB8(EGLDisplay display) { EGLConfig configs[kMaxConfigCount]; int count = 0; - return eglChooseConfig(display, getConfigAttributesListRGB8(), configs, - kMaxConfigCount, &count) == EGL_TRUE && count != 0; + return eglChooseConfig(display, getConfigAttributesListRGB8(), configs, kMaxConfigCount, &count) == EGL_TRUE && + count != 0; } size_t constexpr kGLThreadsCount = 2; @@ -189,8 +195,7 @@ int AndroidOGLContextFactory::GetHeight() const void AndroidOGLContextFactory::UpdateSurfaceSize(int w, int h) { ASSERT(IsValid(), ()); - if ((m_surfaceWidth != w && m_surfaceWidth != h) || - (m_surfaceHeight != w && m_surfaceHeight != h)) + if ((m_surfaceWidth != w && m_surfaceWidth != h) || (m_surfaceHeight != w && m_surfaceHeight != h)) { LOG(LINFO, ("Surface size changed and must be re-queried.")); if (!QuerySurfaceSize()) @@ -231,10 +236,7 @@ dp::GraphicsContext * AndroidOGLContextFactory::GetDrawContext() ASSERT(IsValid(), ()); ASSERT(m_windowSurface != EGL_NO_SURFACE, ()); if (m_drawContext == nullptr) - { - m_drawContext = new AndroidOGLContext(m_display, m_windowSurface, - m_config, m_uploadContext); - } + m_drawContext = new AndroidOGLContext(m_display, m_windowSurface, m_config, m_uploadContext); return m_drawContext; } @@ -243,10 +245,7 @@ dp::GraphicsContext * AndroidOGLContextFactory::GetResourcesUploadContext() ASSERT(IsValid(), ()); ASSERT(m_pixelbufferSurface != EGL_NO_SURFACE, ()); if (m_uploadContext == nullptr) - { - m_uploadContext = new AndroidOGLContext(m_display, m_pixelbufferSurface, - m_config, m_drawContext); - } + m_uploadContext = new AndroidOGLContext(m_display, m_pixelbufferSurface, m_config, m_drawContext); return m_uploadContext; } @@ -288,8 +287,7 @@ bool AndroidOGLContextFactory::CreateWindowSurface() { EGLConfig configs[kMaxConfigCount]; int count = 0; - if (eglChooseConfig(m_display, getConfigAttributesListRGB8(), configs, - kMaxConfigCount, &count) == EGL_TRUE) + if (eglChooseConfig(m_display, getConfigAttributesListRGB8(), configs, kMaxConfigCount, &count) == EGL_TRUE) { CHECK(IsSupportedRGB8(m_display), ("RGB8 is not suported on this device")); LOG(LDEBUG, ("Backbuffer format: RGB8")); @@ -309,7 +307,7 @@ bool AndroidOGLContextFactory::CreateWindowSurface() eglGetConfigAttrib(m_display, currentConfig, EGL_NATIVE_VISUAL_ID, &format); ANativeWindow_setBuffersGeometry(m_nativeWindow, 0, 0, format); - EGLint surfaceAttributes[] = { EGL_RENDER_BUFFER, EGL_BACK_BUFFER, EGL_NONE }; + EGLint surfaceAttributes[] = {EGL_RENDER_BUFFER, EGL_BACK_BUFFER, EGL_NONE}; m_windowSurface = eglCreateWindowSurface(m_display, currentConfig, m_nativeWindow, surfaceAttributes); if (m_windowSurface == EGL_NO_SURFACE) continue; @@ -330,14 +328,10 @@ bool AndroidOGLContextFactory::CreateWindowSurface() bool AndroidOGLContextFactory::CreatePixelbufferSurface() { - //ASSERT(m_config != NULL, ()); + // ASSERT(m_config != NULL, ()); - const GLuint size = 1; // yes, 1 is the correct size, we dont really draw on it - static EGLint surfaceConfig[] = { - EGL_WIDTH, size, - EGL_HEIGHT, size, - EGL_NONE - }; + GLuint const size = 1; // yes, 1 is the correct size, we dont really draw on it + static EGLint surfaceConfig[] = {EGL_WIDTH, size, EGL_HEIGHT, size, EGL_NONE}; m_pixelbufferSurface = eglCreatePbufferSurface(m_display, m_config, surfaceConfig); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp index 44015dcb0..764544e1c 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/androidoglcontextfactory.hpp @@ -1,7 +1,7 @@ #pragma once -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "androidoglcontext.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "drape/graphics_context_factory.hpp" #include "base/src_point.hpp" @@ -45,7 +45,7 @@ private: EGLSurface m_windowSurface; EGLSurface m_pixelbufferSurface; - EGLConfig m_config; + EGLConfig m_config; ANativeWindow * m_nativeWindow; EGLDisplay m_display; diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.cpp index 73651a432..4fa24998f 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.cpp @@ -16,327 +16,289 @@ #include "gl3stub.h" -GLboolean gl3stubInit() { - #define FIND_PROC(s) s = reinterpret_cast(eglGetProcAddress(#s)) - FIND_PROC(glReadBuffer); - FIND_PROC(glDrawRangeElements); - FIND_PROC(glTexImage3D); - FIND_PROC(glTexSubImage3D); - FIND_PROC(glCopyTexSubImage3D); - FIND_PROC(glCompressedTexImage3D); - FIND_PROC(glCompressedTexSubImage3D); - FIND_PROC(glGenQueries); - FIND_PROC(glDeleteQueries); - FIND_PROC(glIsQuery); - FIND_PROC(glBeginQuery); - FIND_PROC(glEndQuery); - FIND_PROC(glGetQueryiv); - FIND_PROC(glGetQueryObjectuiv); - FIND_PROC(glUnmapBuffer); - FIND_PROC(glGetBufferPointerv); - FIND_PROC(glDrawBuffers); - FIND_PROC(glUniformMatrix2x3fv); - FIND_PROC(glUniformMatrix3x2fv); - FIND_PROC(glUniformMatrix2x4fv); - FIND_PROC(glUniformMatrix4x2fv); - FIND_PROC(glUniformMatrix3x4fv); - FIND_PROC(glUniformMatrix4x3fv); - FIND_PROC(glBlitFramebuffer); - FIND_PROC(glRenderbufferStorageMultisample); - FIND_PROC(glFramebufferTextureLayer); - FIND_PROC(glMapBufferRange); - FIND_PROC(glFlushMappedBufferRange); - FIND_PROC(glBindVertexArray); - FIND_PROC(glDeleteVertexArrays); - FIND_PROC(glGenVertexArrays); - FIND_PROC(glIsVertexArray); - FIND_PROC(glGetIntegeri_v); - FIND_PROC(glBeginTransformFeedback); - FIND_PROC(glEndTransformFeedback); - FIND_PROC(glBindBufferRange); - FIND_PROC(glBindBufferBase); - FIND_PROC(glTransformFeedbackVaryings); - FIND_PROC(glGetTransformFeedbackVarying); - FIND_PROC(glVertexAttribIPointer); - FIND_PROC(glGetVertexAttribIiv); - FIND_PROC(glGetVertexAttribIuiv); - FIND_PROC(glVertexAttribI4i); - FIND_PROC(glVertexAttribI4ui); - FIND_PROC(glVertexAttribI4iv); - FIND_PROC(glVertexAttribI4uiv); - FIND_PROC(glGetUniformuiv); - FIND_PROC(glGetFragDataLocation); - FIND_PROC(glUniform1ui); - FIND_PROC(glUniform2ui); - FIND_PROC(glUniform3ui); - FIND_PROC(glUniform4ui); - FIND_PROC(glUniform1uiv); - FIND_PROC(glUniform2uiv); - FIND_PROC(glUniform3uiv); - FIND_PROC(glUniform4uiv); - FIND_PROC(glClearBufferiv); - FIND_PROC(glClearBufferuiv); - FIND_PROC(glClearBufferfv); - FIND_PROC(glClearBufferfi); - FIND_PROC(glGetStringi); - FIND_PROC(glCopyBufferSubData); - FIND_PROC(glGetUniformIndices); - FIND_PROC(glGetActiveUniformsiv); - FIND_PROC(glGetUniformBlockIndex); - FIND_PROC(glGetActiveUniformBlockiv); - FIND_PROC(glGetActiveUniformBlockName); - FIND_PROC(glUniformBlockBinding); - FIND_PROC(glDrawArraysInstanced); - FIND_PROC(glDrawElementsInstanced); - FIND_PROC(glFenceSync); - FIND_PROC(glIsSync); - FIND_PROC(glDeleteSync); - FIND_PROC(glClientWaitSync); - FIND_PROC(glWaitSync); - FIND_PROC(glGetInteger64v); - FIND_PROC(glGetSynciv); - FIND_PROC(glGetInteger64i_v); - FIND_PROC(glGetBufferParameteri64v); - FIND_PROC(glGenSamplers); - FIND_PROC(glDeleteSamplers); - FIND_PROC(glIsSampler); - FIND_PROC(glBindSampler); - FIND_PROC(glSamplerParameteri); - FIND_PROC(glSamplerParameteriv); - FIND_PROC(glSamplerParameterf); - FIND_PROC(glSamplerParameterfv); - FIND_PROC(glGetSamplerParameteriv); - FIND_PROC(glGetSamplerParameterfv); - FIND_PROC(glVertexAttribDivisor); - FIND_PROC(glBindTransformFeedback); - FIND_PROC(glDeleteTransformFeedbacks); - FIND_PROC(glGenTransformFeedbacks); - FIND_PROC(glIsTransformFeedback); - FIND_PROC(glPauseTransformFeedback); - FIND_PROC(glResumeTransformFeedback); - FIND_PROC(glGetProgramBinary); - FIND_PROC(glProgramBinary); - FIND_PROC(glProgramParameteri); - FIND_PROC(glInvalidateFramebuffer); - FIND_PROC(glInvalidateSubFramebuffer); - FIND_PROC(glTexStorage2D); - FIND_PROC(glTexStorage3D); - FIND_PROC(glGetInternalformativ); - #undef FIND_PROC +GLboolean gl3stubInit() +{ +#define FIND_PROC(s) s = reinterpret_cast(eglGetProcAddress(#s)) + FIND_PROC(glReadBuffer); + FIND_PROC(glDrawRangeElements); + FIND_PROC(glTexImage3D); + FIND_PROC(glTexSubImage3D); + FIND_PROC(glCopyTexSubImage3D); + FIND_PROC(glCompressedTexImage3D); + FIND_PROC(glCompressedTexSubImage3D); + FIND_PROC(glGenQueries); + FIND_PROC(glDeleteQueries); + FIND_PROC(glIsQuery); + FIND_PROC(glBeginQuery); + FIND_PROC(glEndQuery); + FIND_PROC(glGetQueryiv); + FIND_PROC(glGetQueryObjectuiv); + FIND_PROC(glUnmapBuffer); + FIND_PROC(glGetBufferPointerv); + FIND_PROC(glDrawBuffers); + FIND_PROC(glUniformMatrix2x3fv); + FIND_PROC(glUniformMatrix3x2fv); + FIND_PROC(glUniformMatrix2x4fv); + FIND_PROC(glUniformMatrix4x2fv); + FIND_PROC(glUniformMatrix3x4fv); + FIND_PROC(glUniformMatrix4x3fv); + FIND_PROC(glBlitFramebuffer); + FIND_PROC(glRenderbufferStorageMultisample); + FIND_PROC(glFramebufferTextureLayer); + FIND_PROC(glMapBufferRange); + FIND_PROC(glFlushMappedBufferRange); + FIND_PROC(glBindVertexArray); + FIND_PROC(glDeleteVertexArrays); + FIND_PROC(glGenVertexArrays); + FIND_PROC(glIsVertexArray); + FIND_PROC(glGetIntegeri_v); + FIND_PROC(glBeginTransformFeedback); + FIND_PROC(glEndTransformFeedback); + FIND_PROC(glBindBufferRange); + FIND_PROC(glBindBufferBase); + FIND_PROC(glTransformFeedbackVaryings); + FIND_PROC(glGetTransformFeedbackVarying); + FIND_PROC(glVertexAttribIPointer); + FIND_PROC(glGetVertexAttribIiv); + FIND_PROC(glGetVertexAttribIuiv); + FIND_PROC(glVertexAttribI4i); + FIND_PROC(glVertexAttribI4ui); + FIND_PROC(glVertexAttribI4iv); + FIND_PROC(glVertexAttribI4uiv); + FIND_PROC(glGetUniformuiv); + FIND_PROC(glGetFragDataLocation); + FIND_PROC(glUniform1ui); + FIND_PROC(glUniform2ui); + FIND_PROC(glUniform3ui); + FIND_PROC(glUniform4ui); + FIND_PROC(glUniform1uiv); + FIND_PROC(glUniform2uiv); + FIND_PROC(glUniform3uiv); + FIND_PROC(glUniform4uiv); + FIND_PROC(glClearBufferiv); + FIND_PROC(glClearBufferuiv); + FIND_PROC(glClearBufferfv); + FIND_PROC(glClearBufferfi); + FIND_PROC(glGetStringi); + FIND_PROC(glCopyBufferSubData); + FIND_PROC(glGetUniformIndices); + FIND_PROC(glGetActiveUniformsiv); + FIND_PROC(glGetUniformBlockIndex); + FIND_PROC(glGetActiveUniformBlockiv); + FIND_PROC(glGetActiveUniformBlockName); + FIND_PROC(glUniformBlockBinding); + FIND_PROC(glDrawArraysInstanced); + FIND_PROC(glDrawElementsInstanced); + FIND_PROC(glFenceSync); + FIND_PROC(glIsSync); + FIND_PROC(glDeleteSync); + FIND_PROC(glClientWaitSync); + FIND_PROC(glWaitSync); + FIND_PROC(glGetInteger64v); + FIND_PROC(glGetSynciv); + FIND_PROC(glGetInteger64i_v); + FIND_PROC(glGetBufferParameteri64v); + FIND_PROC(glGenSamplers); + FIND_PROC(glDeleteSamplers); + FIND_PROC(glIsSampler); + FIND_PROC(glBindSampler); + FIND_PROC(glSamplerParameteri); + FIND_PROC(glSamplerParameteriv); + FIND_PROC(glSamplerParameterf); + FIND_PROC(glSamplerParameterfv); + FIND_PROC(glGetSamplerParameteriv); + FIND_PROC(glGetSamplerParameterfv); + FIND_PROC(glVertexAttribDivisor); + FIND_PROC(glBindTransformFeedback); + FIND_PROC(glDeleteTransformFeedbacks); + FIND_PROC(glGenTransformFeedbacks); + FIND_PROC(glIsTransformFeedback); + FIND_PROC(glPauseTransformFeedback); + FIND_PROC(glResumeTransformFeedback); + FIND_PROC(glGetProgramBinary); + FIND_PROC(glProgramBinary); + FIND_PROC(glProgramParameteri); + FIND_PROC(glInvalidateFramebuffer); + FIND_PROC(glInvalidateSubFramebuffer); + FIND_PROC(glTexStorage2D); + FIND_PROC(glTexStorage3D); + FIND_PROC(glGetInternalformativ); +#undef FIND_PROC - if (!glReadBuffer || - !glDrawRangeElements || - !glTexImage3D || - !glTexSubImage3D || - !glCopyTexSubImage3D || - !glCompressedTexImage3D || - !glCompressedTexSubImage3D || - !glGenQueries || - !glDeleteQueries || - !glIsQuery || - !glBeginQuery || - !glEndQuery || - !glGetQueryiv || - !glGetQueryObjectuiv || - !glUnmapBuffer || - !glGetBufferPointerv || - !glDrawBuffers || - !glUniformMatrix2x3fv || - !glUniformMatrix3x2fv || - !glUniformMatrix2x4fv || - !glUniformMatrix4x2fv || - !glUniformMatrix3x4fv || - !glUniformMatrix4x3fv || - !glBlitFramebuffer || - !glRenderbufferStorageMultisample || - !glFramebufferTextureLayer || - !glMapBufferRange || - !glFlushMappedBufferRange || - !glBindVertexArray || - !glDeleteVertexArrays || - !glGenVertexArrays || - !glIsVertexArray || - !glGetIntegeri_v || - !glBeginTransformFeedback || - !glEndTransformFeedback || - !glBindBufferRange || - !glBindBufferBase || - !glTransformFeedbackVaryings || - !glGetTransformFeedbackVarying || - !glVertexAttribIPointer || - !glGetVertexAttribIiv || - !glGetVertexAttribIuiv || - !glVertexAttribI4i || - !glVertexAttribI4ui || - !glVertexAttribI4iv || - !glVertexAttribI4uiv || - !glGetUniformuiv || - !glGetFragDataLocation || - !glUniform1ui || - !glUniform2ui || - !glUniform3ui || - !glUniform4ui || - !glUniform1uiv || - !glUniform2uiv || - !glUniform3uiv || - !glUniform4uiv || - !glClearBufferiv || - !glClearBufferuiv || - !glClearBufferfv || - !glClearBufferfi || - !glGetStringi || - !glCopyBufferSubData || - !glGetUniformIndices || - !glGetActiveUniformsiv || - !glGetUniformBlockIndex || - !glGetActiveUniformBlockiv || - !glGetActiveUniformBlockName || - !glUniformBlockBinding || - !glDrawArraysInstanced || - !glDrawElementsInstanced || - !glFenceSync || - !glIsSync || - !glDeleteSync || - !glClientWaitSync || - !glWaitSync || - !glGetInteger64v || - !glGetSynciv || - !glGetInteger64i_v || - !glGetBufferParameteri64v || - !glGenSamplers || - !glDeleteSamplers || - !glIsSampler || - !glBindSampler || - !glSamplerParameteri || - !glSamplerParameteriv || - !glSamplerParameterf || - !glSamplerParameterfv || - !glGetSamplerParameteriv || - !glGetSamplerParameterfv || - !glVertexAttribDivisor || - !glBindTransformFeedback || - !glDeleteTransformFeedbacks || - !glGenTransformFeedbacks || - !glIsTransformFeedback || - !glPauseTransformFeedback || - !glResumeTransformFeedback || - !glGetProgramBinary || - !glProgramBinary || - !glProgramParameteri || - !glInvalidateFramebuffer || - !glInvalidateSubFramebuffer || - !glTexStorage2D || - !glTexStorage3D || - !glGetInternalformativ) - { - return GL_FALSE; - } + if (!glReadBuffer || !glDrawRangeElements || !glTexImage3D || !glTexSubImage3D || !glCopyTexSubImage3D || + !glCompressedTexImage3D || !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries || !glIsQuery || + !glBeginQuery || !glEndQuery || !glGetQueryiv || !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv || + !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv || !glUniformMatrix2x4fv || + !glUniformMatrix4x2fv || !glUniformMatrix3x4fv || !glUniformMatrix4x3fv || !glBlitFramebuffer || + !glRenderbufferStorageMultisample || !glFramebufferTextureLayer || !glMapBufferRange || + !glFlushMappedBufferRange || !glBindVertexArray || !glDeleteVertexArrays || !glGenVertexArrays || + !glIsVertexArray || !glGetIntegeri_v || !glBeginTransformFeedback || !glEndTransformFeedback || + !glBindBufferRange || !glBindBufferBase || !glTransformFeedbackVaryings || !glGetTransformFeedbackVarying || + !glVertexAttribIPointer || !glGetVertexAttribIiv || !glGetVertexAttribIuiv || !glVertexAttribI4i || + !glVertexAttribI4ui || !glVertexAttribI4iv || !glVertexAttribI4uiv || !glGetUniformuiv || + !glGetFragDataLocation || !glUniform1ui || !glUniform2ui || !glUniform3ui || !glUniform4ui || !glUniform1uiv || + !glUniform2uiv || !glUniform3uiv || !glUniform4uiv || !glClearBufferiv || !glClearBufferuiv || !glClearBufferfv || + !glClearBufferfi || !glGetStringi || !glCopyBufferSubData || !glGetUniformIndices || !glGetActiveUniformsiv || + !glGetUniformBlockIndex || !glGetActiveUniformBlockiv || !glGetActiveUniformBlockName || !glUniformBlockBinding || + !glDrawArraysInstanced || !glDrawElementsInstanced || !glFenceSync || !glIsSync || !glDeleteSync || + !glClientWaitSync || !glWaitSync || !glGetInteger64v || !glGetSynciv || !glGetInteger64i_v || + !glGetBufferParameteri64v || !glGenSamplers || !glDeleteSamplers || !glIsSampler || !glBindSampler || + !glSamplerParameteri || !glSamplerParameteriv || !glSamplerParameterf || !glSamplerParameterfv || + !glGetSamplerParameteriv || !glGetSamplerParameterfv || !glVertexAttribDivisor || !glBindTransformFeedback || + !glDeleteTransformFeedbacks || !glGenTransformFeedbacks || !glIsTransformFeedback || !glPauseTransformFeedback || + !glResumeTransformFeedback || !glGetProgramBinary || !glProgramBinary || !glProgramParameteri || + !glInvalidateFramebuffer || !glInvalidateSubFramebuffer || !glTexStorage2D || !glTexStorage3D || + !glGetInternalformativ) + { + return GL_FALSE; + } - return GL_TRUE; + return GL_TRUE; } /* Function pointer definitions */ -GL_APICALL void (* GL_APIENTRY glReadBuffer) (GLenum mode); -GL_APICALL void (* GL_APIENTRY glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices); -GL_APICALL void (* GL_APIENTRY glTexImage3D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void (* GL_APIENTRY glTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); -GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); -GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); -GL_APICALL void (* GL_APIENTRY glGenQueries) (GLsizei n, GLuint* ids); -GL_APICALL void (* GL_APIENTRY glDeleteQueries) (GLsizei n, const GLuint* ids); -GL_APICALL GLboolean (* GL_APIENTRY glIsQuery) (GLuint id); -GL_APICALL void (* GL_APIENTRY glBeginQuery) (GLenum target, GLuint id); -GL_APICALL void (* GL_APIENTRY glEndQuery) (GLenum target); -GL_APICALL void (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params); -GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params); -GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer) (GLenum target); -GL_APICALL void (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params); -GL_APICALL void (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs); -GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length); -GL_APICALL void (* GL_APIENTRY glBindVertexArray) (GLuint array); -GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays) (GLsizei n, const GLuint* arrays); -GL_APICALL void (* GL_APIENTRY glGenVertexArrays) (GLsizei n, GLuint* arrays); -GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray) (GLuint array); -GL_APICALL void (* GL_APIENTRY glGetIntegeri_v) (GLenum target, GLuint index, GLint* data); -GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback) (GLenum primitiveMode); -GL_APICALL void (* GL_APIENTRY glEndTransformFeedback) (void); -GL_APICALL void (* GL_APIENTRY glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -GL_APICALL void (* GL_APIENTRY glBindBufferBase) (GLenum target, GLuint index, GLuint buffer); -GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); -GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name); -GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); -GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv) (GLuint index, GLenum pname, GLint* params); -GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv) (GLuint index, GLenum pname, GLuint* params); -GL_APICALL void (* GL_APIENTRY glVertexAttribI4i) (GLuint index, GLint x, GLint y, GLint z, GLint w); -GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv) (GLuint index, const GLint* v); -GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv) (GLuint index, const GLuint* v); -GL_APICALL void (* GL_APIENTRY glGetUniformuiv) (GLuint program, GLint location, GLuint* params); -GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation) (GLuint program, const GLchar *name); -GL_APICALL void (* GL_APIENTRY glUniform1ui) (GLint location, GLuint v0); -GL_APICALL void (* GL_APIENTRY glUniform2ui) (GLint location, GLuint v0, GLuint v1); -GL_APICALL void (* GL_APIENTRY glUniform3ui) (GLint location, GLuint v0, GLuint v1, GLuint v2); -GL_APICALL void (* GL_APIENTRY glUniform4ui) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -GL_APICALL void (* GL_APIENTRY glUniform1uiv) (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void (* GL_APIENTRY glUniform2uiv) (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void (* GL_APIENTRY glUniform3uiv) (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void (* GL_APIENTRY glUniform4uiv) (GLint location, GLsizei count, const GLuint* value); -GL_APICALL void (* GL_APIENTRY glClearBufferiv) (GLenum buffer, GLint drawbuffer, const GLint* value); -GL_APICALL void (* GL_APIENTRY glClearBufferuiv) (GLenum buffer, GLint drawbuffer, const GLuint* value); -GL_APICALL void (* GL_APIENTRY glClearBufferfv) (GLenum buffer, GLint drawbuffer, const GLfloat* value); -GL_APICALL void (* GL_APIENTRY glClearBufferfi) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi) (GLenum name, GLuint index); -GL_APICALL void (* GL_APIENTRY glCopyBufferSubData) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); -GL_APICALL void (* GL_APIENTRY glGetUniformIndices) (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices); -GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); -GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex) (GLuint program, const GLchar* uniformBlockName); -GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); -GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); -GL_APICALL void (* GL_APIENTRY glUniformBlockBinding) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); -GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced) (GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); -GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount); -GL_APICALL GLsync (* GL_APIENTRY glFenceSync) (GLenum condition, GLbitfield flags); -GL_APICALL GLboolean (* GL_APIENTRY glIsSync) (GLsync sync); -GL_APICALL void (* GL_APIENTRY glDeleteSync) (GLsync sync); -GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void (* GL_APIENTRY glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); -GL_APICALL void (* GL_APIENTRY glGetInteger64v) (GLenum pname, GLint64* params); -GL_APICALL void (* GL_APIENTRY glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values); -GL_APICALL void (* GL_APIENTRY glGetInteger64i_v) (GLenum target, GLuint index, GLint64* data); -GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v) (GLenum target, GLenum pname, GLint64* params); -GL_APICALL void (* GL_APIENTRY glGenSamplers) (GLsizei count, GLuint* samplers); -GL_APICALL void (* GL_APIENTRY glDeleteSamplers) (GLsizei count, const GLuint* samplers); -GL_APICALL GLboolean (* GL_APIENTRY glIsSampler) (GLuint sampler); -GL_APICALL void (* GL_APIENTRY glBindSampler) (GLuint unit, GLuint sampler); -GL_APICALL void (* GL_APIENTRY glSamplerParameteri) (GLuint sampler, GLenum pname, GLint param); -GL_APICALL void (* GL_APIENTRY glSamplerParameteriv) (GLuint sampler, GLenum pname, const GLint* param); -GL_APICALL void (* GL_APIENTRY glSamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param); -GL_APICALL void (* GL_APIENTRY glSamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat* param); -GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint* params); -GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat* params); -GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor) (GLuint index, GLuint divisor); -GL_APICALL void (* GL_APIENTRY glBindTransformFeedback) (GLenum target, GLuint id); -GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks) (GLsizei n, const GLuint* ids); -GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks) (GLsizei n, GLuint* ids); -GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback) (GLuint id); -GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback) (void); -GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback) (void); -GL_APICALL void (* GL_APIENTRY glGetProgramBinary) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary); -GL_APICALL void (* GL_APIENTRY glProgramBinary) (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length); -GL_APICALL void (* GL_APIENTRY glProgramParameteri) (GLuint program, GLenum pname, GLint value); -GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments); -GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); -GL_APICALL void (* GL_APIENTRY glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); -GL_APICALL void (* GL_APIENTRY glTexStorage3D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); -GL_APICALL void (* GL_APIENTRY glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); +GL_APICALL void (*GL_APIENTRY glReadBuffer)(GLenum mode); +GL_APICALL void (*GL_APIENTRY glDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, + GLvoid const * indices); +GL_APICALL void (*GL_APIENTRY glTexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, + GLvoid const * pixels); +GL_APICALL void (*GL_APIENTRY glTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + GLvoid const * pixels); +GL_APICALL void (*GL_APIENTRY glCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void (*GL_APIENTRY glCompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, + GLvoid const * data); +GL_APICALL void (*GL_APIENTRY glCompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, GLvoid const * data); +GL_APICALL void (*GL_APIENTRY glGenQueries)(GLsizei n, GLuint * ids); +GL_APICALL void (*GL_APIENTRY glDeleteQueries)(GLsizei n, GLuint const * ids); +GL_APICALL GLboolean (*GL_APIENTRY glIsQuery)(GLuint id); +GL_APICALL void (*GL_APIENTRY glBeginQuery)(GLenum target, GLuint id); +GL_APICALL void (*GL_APIENTRY glEndQuery)(GLenum target); +GL_APICALL void (*GL_APIENTRY glGetQueryiv)(GLenum target, GLenum pname, GLint * params); +GL_APICALL void (*GL_APIENTRY glGetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params); +GL_APICALL GLboolean (*GL_APIENTRY glUnmapBuffer)(GLenum target); +GL_APICALL void (*GL_APIENTRY glGetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params); +GL_APICALL void (*GL_APIENTRY glDrawBuffers)(GLsizei n, GLenum const * bufs); +GL_APICALL void (*GL_APIENTRY glUniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glUniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glUniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glUniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glUniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glUniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, + GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glBlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, + GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GL_APICALL void (*GL_APIENTRY glRenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, + GLsizei width, GLsizei height); +GL_APICALL void (*GL_APIENTRY glFramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, + GLint layer); +GL_APICALL GLvoid * (*GL_APIENTRY glMapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, + GLbitfield access); +GL_APICALL void (*GL_APIENTRY glFlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); +GL_APICALL void (*GL_APIENTRY glBindVertexArray)(GLuint array); +GL_APICALL void (*GL_APIENTRY glDeleteVertexArrays)(GLsizei n, GLuint const * arrays); +GL_APICALL void (*GL_APIENTRY glGenVertexArrays)(GLsizei n, GLuint * arrays); +GL_APICALL GLboolean (*GL_APIENTRY glIsVertexArray)(GLuint array); +GL_APICALL void (*GL_APIENTRY glGetIntegeri_v)(GLenum target, GLuint index, GLint * data); +GL_APICALL void (*GL_APIENTRY glBeginTransformFeedback)(GLenum primitiveMode); +GL_APICALL void (*GL_APIENTRY glEndTransformFeedback)(void); +GL_APICALL void (*GL_APIENTRY glBindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, + GLsizeiptr size); +GL_APICALL void (*GL_APIENTRY glBindBufferBase)(GLenum target, GLuint index, GLuint buffer); +GL_APICALL void (*GL_APIENTRY glTransformFeedbackVaryings)(GLuint program, GLsizei count, + GLchar const * const * varyings, GLenum bufferMode); +GL_APICALL void (*GL_APIENTRY glGetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei * length, GLsizei * size, GLenum * type, + GLchar * name); +GL_APICALL void (*GL_APIENTRY glVertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, + GLvoid const * pointer); +GL_APICALL void (*GL_APIENTRY glGetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params); +GL_APICALL void (*GL_APIENTRY glGetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params); +GL_APICALL void (*GL_APIENTRY glVertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void (*GL_APIENTRY glVertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GL_APICALL void (*GL_APIENTRY glVertexAttribI4iv)(GLuint index, GLint const * v); +GL_APICALL void (*GL_APIENTRY glVertexAttribI4uiv)(GLuint index, GLuint const * v); +GL_APICALL void (*GL_APIENTRY glGetUniformuiv)(GLuint program, GLint location, GLuint * params); +GL_APICALL GLint (*GL_APIENTRY glGetFragDataLocation)(GLuint program, GLchar const * name); +GL_APICALL void (*GL_APIENTRY glUniform1ui)(GLint location, GLuint v0); +GL_APICALL void (*GL_APIENTRY glUniform2ui)(GLint location, GLuint v0, GLuint v1); +GL_APICALL void (*GL_APIENTRY glUniform3ui)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void (*GL_APIENTRY glUniform4ui)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void (*GL_APIENTRY glUniform1uiv)(GLint location, GLsizei count, GLuint const * value); +GL_APICALL void (*GL_APIENTRY glUniform2uiv)(GLint location, GLsizei count, GLuint const * value); +GL_APICALL void (*GL_APIENTRY glUniform3uiv)(GLint location, GLsizei count, GLuint const * value); +GL_APICALL void (*GL_APIENTRY glUniform4uiv)(GLint location, GLsizei count, GLuint const * value); +GL_APICALL void (*GL_APIENTRY glClearBufferiv)(GLenum buffer, GLint drawbuffer, GLint const * value); +GL_APICALL void (*GL_APIENTRY glClearBufferuiv)(GLenum buffer, GLint drawbuffer, GLuint const * value); +GL_APICALL void (*GL_APIENTRY glClearBufferfv)(GLenum buffer, GLint drawbuffer, GLfloat const * value); +GL_APICALL void (*GL_APIENTRY glClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GL_APICALL const GLubyte * (*GL_APIENTRY glGetStringi)(GLenum name, GLuint index); +GL_APICALL void (*GL_APIENTRY glCopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, + GLintptr writeOffset, GLsizeiptr size); +GL_APICALL void (*GL_APIENTRY glGetUniformIndices)(GLuint program, GLsizei uniformCount, + GLchar const * const * uniformNames, GLuint * uniformIndices); +GL_APICALL void (*GL_APIENTRY glGetActiveUniformsiv)(GLuint program, GLsizei uniformCount, + GLuint const * uniformIndices, GLenum pname, GLint * params); +GL_APICALL GLuint (*GL_APIENTRY glGetUniformBlockIndex)(GLuint program, GLchar const * uniformBlockName); +GL_APICALL void (*GL_APIENTRY glGetActiveUniformBlockiv)(GLuint program, GLuint uniformBlockIndex, GLenum pname, + GLint * params); +GL_APICALL void (*GL_APIENTRY glGetActiveUniformBlockName)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, + GLsizei * length, GLchar * uniformBlockName); +GL_APICALL void (*GL_APIENTRY glUniformBlockBinding)(GLuint program, GLuint uniformBlockIndex, + GLuint uniformBlockBinding); +GL_APICALL void (*GL_APIENTRY glDrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); +GL_APICALL void (*GL_APIENTRY glDrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, GLvoid const * indices, + GLsizei instanceCount); +GL_APICALL GLsync (*GL_APIENTRY glFenceSync)(GLenum condition, GLbitfield flags); +GL_APICALL GLboolean (*GL_APIENTRY glIsSync)(GLsync sync); +GL_APICALL void (*GL_APIENTRY glDeleteSync)(GLsync sync); +GL_APICALL GLenum (*GL_APIENTRY glClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void (*GL_APIENTRY glWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void (*GL_APIENTRY glGetInteger64v)(GLenum pname, GLint64 * params); +GL_APICALL void (*GL_APIENTRY glGetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, + GLint * values); +GL_APICALL void (*GL_APIENTRY glGetInteger64i_v)(GLenum target, GLuint index, GLint64 * data); +GL_APICALL void (*GL_APIENTRY glGetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params); +GL_APICALL void (*GL_APIENTRY glGenSamplers)(GLsizei count, GLuint * samplers); +GL_APICALL void (*GL_APIENTRY glDeleteSamplers)(GLsizei count, GLuint const * samplers); +GL_APICALL GLboolean (*GL_APIENTRY glIsSampler)(GLuint sampler); +GL_APICALL void (*GL_APIENTRY glBindSampler)(GLuint unit, GLuint sampler); +GL_APICALL void (*GL_APIENTRY glSamplerParameteri)(GLuint sampler, GLenum pname, GLint param); +GL_APICALL void (*GL_APIENTRY glSamplerParameteriv)(GLuint sampler, GLenum pname, GLint const * param); +GL_APICALL void (*GL_APIENTRY glSamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); +GL_APICALL void (*GL_APIENTRY glSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat const * param); +GL_APICALL void (*GL_APIENTRY glGetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params); +GL_APICALL void (*GL_APIENTRY glGetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params); +GL_APICALL void (*GL_APIENTRY glVertexAttribDivisor)(GLuint index, GLuint divisor); +GL_APICALL void (*GL_APIENTRY glBindTransformFeedback)(GLenum target, GLuint id); +GL_APICALL void (*GL_APIENTRY glDeleteTransformFeedbacks)(GLsizei n, GLuint const * ids); +GL_APICALL void (*GL_APIENTRY glGenTransformFeedbacks)(GLsizei n, GLuint * ids); +GL_APICALL GLboolean (*GL_APIENTRY glIsTransformFeedback)(GLuint id); +GL_APICALL void (*GL_APIENTRY glPauseTransformFeedback)(void); +GL_APICALL void (*GL_APIENTRY glResumeTransformFeedback)(void); +GL_APICALL void (*GL_APIENTRY glGetProgramBinary)(GLuint program, GLsizei bufSize, GLsizei * length, + GLenum * binaryFormat, GLvoid * binary); +GL_APICALL void (*GL_APIENTRY glProgramBinary)(GLuint program, GLenum binaryFormat, GLvoid const * binary, + GLsizei length); +GL_APICALL void (*GL_APIENTRY glProgramParameteri)(GLuint program, GLenum pname, GLint value); +GL_APICALL void (*GL_APIENTRY glInvalidateFramebuffer)(GLenum target, GLsizei numAttachments, + GLenum const * attachments); +GL_APICALL void (*GL_APIENTRY glInvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, + GLenum const * attachments, GLint x, GLint y, GLsizei width, + GLsizei height); +GL_APICALL void (*GL_APIENTRY glTexStorage2D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height); +GL_APICALL void (*GL_APIENTRY glTexStorage3D)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +GL_APICALL void (*GL_APIENTRY glGetInternalformativ)(GLenum target, GLenum internalformat, GLenum pname, + GLsizei bufSize, GLint * params); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.cpp index 67754578e..dde89ade5 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.cpp @@ -22,17 +22,15 @@ std::string Platform::GetMemoryInfo() const if (env == nullptr) return std::string(); - static std::shared_ptr classLogsManager = jni::make_global_ref(env->FindClass("app/organicmaps/sdk/util/log/LogsManager")); + static std::shared_ptr classLogsManager = + jni::make_global_ref(env->FindClass("app/organicmaps/sdk/util/log/LogsManager")); ASSERT(classLogsManager, ()); jobject context = android::Platform::Instance().GetContext(); - static jmethodID const getMemoryInfoId - = jni::GetStaticMethodID(env, - static_cast(*classLogsManager), - "getMemoryInfo", - "(Landroid/content/Context;)Ljava/lang/String;"); - jstring const memInfoString = static_cast(env->CallStaticObjectMethod( - static_cast(*classLogsManager), getMemoryInfoId, context)); + static jmethodID const getMemoryInfoId = jni::GetStaticMethodID( + env, static_cast(*classLogsManager), "getMemoryInfo", "(Landroid/content/Context;)Ljava/lang/String;"); + jstring const memInfoString = static_cast( + env->CallStaticObjectMethod(static_cast(*classLogsManager), getMemoryInfoId, context)); ASSERT(memInfoString, ()); return jni::ToNativeString(env, memInfoString); @@ -41,20 +39,18 @@ std::string Platform::GetMemoryInfo() const std::string Platform::DeviceName() const { JNIEnv * env = jni::GetEnv(); - static jmethodID const getDeviceNameId = jni::GetStaticMethodID(env, g_utilsClazz, "getDeviceName", - "()Ljava/lang/String;"); - auto const deviceName = static_cast(env->CallStaticObjectMethod(g_utilsClazz, - getDeviceNameId)); + static jmethodID const getDeviceNameId = + jni::GetStaticMethodID(env, g_utilsClazz, "getDeviceName", "()Ljava/lang/String;"); + auto const deviceName = static_cast(env->CallStaticObjectMethod(g_utilsClazz, getDeviceNameId)); return jni::ToNativeString(env, deviceName); } std::string Platform::DeviceModel() const { JNIEnv * env = jni::GetEnv(); - static jmethodID const getDeviceModelId = jni::GetStaticMethodID(env, g_utilsClazz, "getDeviceModel", - "()Ljava/lang/String;"); - auto const deviceModel = static_cast(env->CallStaticObjectMethod(g_utilsClazz, - getDeviceModelId)); + static jmethodID const getDeviceModelId = + jni::GetStaticMethodID(env, g_utilsClazz, "getDeviceModel", "()Ljava/lang/String;"); + auto const deviceModel = static_cast(env->CallStaticObjectMethod(g_utilsClazz, getDeviceModelId)); return jni::ToNativeString(env, deviceModel); } @@ -79,11 +75,14 @@ Platform::EConnectionType Platform::ConnectionStatus() if (env == nullptr) return EConnectionType::CONNECTION_NONE; - static std::shared_ptr clazzConnectionState = jni::make_global_ref(env->FindClass("app/organicmaps/sdk/util/ConnectionState")); + static std::shared_ptr clazzConnectionState = + jni::make_global_ref(env->FindClass("app/organicmaps/sdk/util/ConnectionState")); ASSERT(clazzConnectionState, ()); - static jmethodID const getConnectionMethodId = jni::GetStaticMethodID(env, static_cast(*clazzConnectionState), "getConnectionState", "()B"); - return static_cast(env->CallStaticByteMethod(static_cast(*clazzConnectionState), getConnectionMethodId)); + static jmethodID const getConnectionMethodId = + jni::GetStaticMethodID(env, static_cast(*clazzConnectionState), "getConnectionState", "()B"); + return static_cast( + env->CallStaticByteMethod(static_cast(*clazzConnectionState), getConnectionMethodId)); } Platform::ChargingStatus Platform::GetChargingStatus() @@ -92,8 +91,7 @@ Platform::ChargingStatus Platform::GetChargingStatus() if (env == nullptr) return Platform::ChargingStatus::Unknown; - static jclass const clazzBatteryState = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/BatteryState"); + static jclass const clazzBatteryState = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/BatteryState"); ASSERT(clazzBatteryState, ()); static jmethodID const getChargingMethodId = @@ -109,8 +107,7 @@ uint8_t Platform::GetBatteryLevel() if (env == nullptr) return 100; - static auto const clazzBatteryState = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/BatteryState"); + static auto const clazzBatteryState = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/BatteryState"); ASSERT(clazzBatteryState, ()); static auto const getLevelMethodId = @@ -123,22 +120,21 @@ namespace platform { platform::NetworkPolicy GetCurrentNetworkPolicy() { - JNIEnv *env = jni::GetEnv(); + JNIEnv * env = jni::GetEnv(); return platform::NetworkPolicy(network_policy::GetCurrentNetworkUsageStatus(env)); } -} +} // namespace platform namespace android { Platform::~Platform() { - JNIEnv *env = jni::GetEnv(); + JNIEnv * env = jni::GetEnv(); env->DeleteGlobalRef(m_context); } -void Platform::Initialize(JNIEnv * env, jobject context, jstring apkPath, - jstring writablePath, jstring privatePath, jstring tmpPath, - jstring flavorName, jstring buildType, bool isTablet) +void Platform::Initialize(JNIEnv * env, jobject context, jstring apkPath, jstring writablePath, jstring privatePath, + jstring tmpPath, jstring flavorName, jstring buildType, bool isTablet) { m_context = env->NewGlobalRef(context); m_guiThread = std::make_unique(); @@ -156,12 +152,10 @@ void Platform::Initialize(JNIEnv * env, jobject context, jstring apkPath, LOG(LINFO, ("Temporary path = ", m_tmpDir)); // IMPORTANT: This method SHOULD be called from UI thread to cache static jni ID-s inside. - (void) ConnectionStatus(); + (void)ConnectionStatus(); } -void Platform::OnExternalStorageStatusChanged(bool isAvailable) -{ -} +void Platform::OnExternalStorageStatusChanged(bool isAvailable) {} void Platform::SetWritableDir(std::string const & dir) { @@ -173,7 +167,7 @@ void Platform::SetSettingsDir(std::string const & dir) { m_settingsDir = dir; // Logger is not fully initialized here. - //LOG(LINFO, ("Settings path = ", m_settingsDir)); + // LOG(LINFO, ("Settings path = ", m_settingsDir)); } bool Platform::HasAvailableSpaceForWriting(uint64_t size) const @@ -209,13 +203,11 @@ void Platform::AndroidSecureStorage::Save(std::string const & key, std::string c Init(env); - static jmethodID const saveMethodId = - jni::GetStaticMethodID(env, m_secureStorageClass, "save", - "(Landroid/content/Context;Ljava/lang/String;" - "Ljava/lang/String;)V"); + static jmethodID const saveMethodId = jni::GetStaticMethodID(env, m_secureStorageClass, "save", + "(Landroid/content/Context;Ljava/lang/String;" + "Ljava/lang/String;)V"); jobject context = android::Platform::Instance().GetContext(); - env->CallStaticVoidMethod(m_secureStorageClass, saveMethodId, - context, + env->CallStaticVoidMethod(m_secureStorageClass, saveMethodId, context, jni::TScopedLocalRef(env, jni::ToJavaString(env, key)).get(), jni::TScopedLocalRef(env, jni::ToJavaString(env, value)).get()); } @@ -228,14 +220,12 @@ bool Platform::AndroidSecureStorage::Load(std::string const & key, std::string & Init(env); - static jmethodID const loadMethodId = - jni::GetStaticMethodID(env, m_secureStorageClass, "load", - "(Landroid/content/Context;Ljava/lang/String;)" - "Ljava/lang/String;"); + static jmethodID const loadMethodId = jni::GetStaticMethodID(env, m_secureStorageClass, "load", + "(Landroid/content/Context;Ljava/lang/String;)" + "Ljava/lang/String;"); jobject context = android::Platform::Instance().GetContext(); - auto const resultString = static_cast(env->CallStaticObjectMethod(m_secureStorageClass, - loadMethodId, context, - jni::TScopedLocalRef(env, jni::ToJavaString(env, key)).get())); + auto const resultString = static_cast(env->CallStaticObjectMethod( + m_secureStorageClass, loadMethodId, context, jni::TScopedLocalRef(env, jni::ToJavaString(env, key)).get())); if (resultString == nullptr) return false; @@ -252,8 +242,7 @@ void Platform::AndroidSecureStorage::Remove(std::string const & key) Init(env); static jmethodID const removeMethodId = - jni::GetStaticMethodID(env, m_secureStorageClass, "remove", - "(Landroid/content/Context;Ljava/lang/String;)V"); + jni::GetStaticMethodID(env, m_secureStorageClass, "remove", "(Landroid/content/Context;Ljava/lang/String;)V"); jobject context = android::Platform::Instance().GetContext(); env->CallStaticVoidMethod(m_secureStorageClass, removeMethodId, context, jni::TScopedLocalRef(env, jni::ToJavaString(env, key)).get()); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.hpp index 4a4b34f27..08d13a2c3 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/AndroidPlatform.hpp @@ -20,8 +20,7 @@ public: ~Platform() override; void Initialize(JNIEnv * env, jobject functorProcessObject, jstring apkPath, jstring writablePath, - jstring privatePath, jstring tmpPath, jstring flavorName, - jstring buildType, bool isTablet); + jstring privatePath, jstring tmpPath, jstring flavorName, jstring buildType, bool isTablet); void OnExternalStorageStatusChanged(bool isAvailable); @@ -53,4 +52,4 @@ private: AndroidSecureStorage m_secureStorage; jobject m_context; }; -} // namespace android +} // namespace android diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/HttpThread.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/HttpThread.cpp index 534f9414b..41f90a737 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/HttpThread.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/HttpThread.cpp @@ -11,12 +11,8 @@ private: jclass m_klass; public: - HttpThread(std::string const & url, - downloader::IHttpThreadCallback & cb, - int64_t beg, - int64_t end, - int64_t expectedFileSize, - std::string const & pb) + HttpThread(std::string const & url, downloader::IHttpThreadCallback & cb, int64_t beg, int64_t end, + int64_t expectedFileSize, std::string const & pb) { JNIEnv * env = jni::GetEnv(); static jclass const klass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/downloader/ChunkTask"); @@ -35,14 +31,9 @@ public: } jni::TScopedLocalRef jUrl(env, jni::ToJavaString(env, url.c_str())); - jni::TScopedLocalRef localSelf(env, env->NewObject(klass, - initMethodId, - reinterpret_cast(&cb), - jUrl.get(), - static_cast(beg), - static_cast(end), - static_cast(expectedFileSize), - postBody.get())); + jni::TScopedLocalRef localSelf( + env, env->NewObject(klass, initMethodId, reinterpret_cast(&cb), jUrl.get(), static_cast(beg), + static_cast(end), static_cast(expectedFileSize), postBody.get())); m_self = env->NewGlobalRef(localSelf.get()); ASSERT(m_self, ()); @@ -60,29 +51,26 @@ public: namespace downloader { - HttpThread * CreateNativeHttpThread(std::string const & url, - downloader::IHttpThreadCallback & cb, - int64_t beg, - int64_t end, - int64_t size, - std::string const & pb) - { - return new HttpThread(url, cb, beg, end, size, pb); - } +HttpThread * CreateNativeHttpThread(std::string const & url, downloader::IHttpThreadCallback & cb, int64_t beg, + int64_t end, int64_t size, std::string const & pb) +{ + return new HttpThread(url, cb, beg, end, size, pb); +} - void DeleteNativeHttpThread(HttpThread * request) - { - delete request; - } +void DeleteNativeHttpThread(HttpThread * request) +{ + delete request; +} } // namespace downloader extern "C" { -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_downloader_ChunkTask_nativeOnWrite(JNIEnv * env, jclass clazz, jlong httpCallbackID, jlong beg, jbyteArray data, jlong size) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_downloader_ChunkTask_nativeOnWrite(JNIEnv * env, jclass clazz, + jlong httpCallbackID, jlong beg, + jbyteArray data, jlong size) { - downloader::IHttpThreadCallback * cb = reinterpret_cast(httpCallbackID); + downloader::IHttpThreadCallback * cb = reinterpret_cast(httpCallbackID); jbyte * buf = env->GetByteArrayElements(data, 0); ASSERT(buf, ()); @@ -100,10 +88,12 @@ Java_app_organicmaps_sdk_downloader_ChunkTask_nativeOnWrite(JNIEnv * env, jclass return ret; } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_downloader_ChunkTask_nativeOnFinish(JNIEnv * env, jclass clazz, jlong httpCallbackID, jlong httpCode, jlong beg, jlong end) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_downloader_ChunkTask_nativeOnFinish(JNIEnv * env, jclass clazz, + jlong httpCallbackID, + jlong httpCode, jlong beg, + jlong end) { - downloader::IHttpThreadCallback * cb = reinterpret_cast(httpCallbackID); + downloader::IHttpThreadCallback * cb = reinterpret_cast(httpCallbackID); cb->OnFinish(static_cast(httpCode), beg, end); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Language.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Language.cpp index 9c24f2f95..38035bddc 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Language.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Language.cpp @@ -1,5 +1,5 @@ -#include "android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp" #include "android/sdk/src/main/cpp/app/organicmaps/sdk/core/ScopedLocalRef.hpp" +#include "android/sdk/src/main/cpp/app/organicmaps/sdk/core/jni_helper.hpp" #include "platform/locale.hpp" @@ -22,11 +22,12 @@ std::string GetAndroidSystemLanguage() } static jclass const languageClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/util/Language"); - static jmethodID const getDefaultLocaleId = jni::GetStaticMethodID(env, languageClass, "getDefaultLocale", "()Ljava/lang/String;"); + static jmethodID const getDefaultLocaleId = + jni::GetStaticMethodID(env, languageClass, "getDefaultLocale", "()Ljava/lang/String;"); jni::TScopedLocalRef localeRef(env, env->CallStaticObjectMethod(languageClass, getDefaultLocaleId)); - std::string res = jni::ToNativeString(env, (jstring) localeRef.get()); + std::string res = jni::ToNativeString(env, (jstring)localeRef.get()); if (res.empty()) res = DEFAULT_LANG; @@ -38,24 +39,24 @@ namespace platform Locale GetCurrentLocale() { JNIEnv * env = jni::GetEnv(); - static jmethodID const getLanguageCodeId = jni::GetStaticMethodID(env, g_utilsClazz, "getLanguageCode", - "()Ljava/lang/String;"); + static jmethodID const getLanguageCodeId = + jni::GetStaticMethodID(env, g_utilsClazz, "getLanguageCode", "()Ljava/lang/String;"); jni::ScopedLocalRef languageCode(env, env->CallStaticObjectMethod(g_utilsClazz, getLanguageCodeId)); - static jmethodID const getCountryCodeId = jni::GetStaticMethodID(env, g_utilsClazz, "getCountryCode", - "()Ljava/lang/String;"); + static jmethodID const getCountryCodeId = + jni::GetStaticMethodID(env, g_utilsClazz, "getCountryCode", "()Ljava/lang/String;"); jni::ScopedLocalRef countryCode(env, env->CallStaticObjectMethod(g_utilsClazz, getCountryCodeId)); - static jmethodID const getCurrencyCodeId = jni::GetStaticMethodID(env, g_utilsClazz, "getCurrencyCode", - "()Ljava/lang/String;"); + static jmethodID const getCurrencyCodeId = + jni::GetStaticMethodID(env, g_utilsClazz, "getCurrencyCode", "()Ljava/lang/String;"); jni::ScopedLocalRef currencyCode(env, env->CallStaticObjectMethod(g_utilsClazz, getCurrencyCodeId)); - static jmethodID const getDecimalSeparatorId = jni::GetStaticMethodID(env, g_utilsClazz, "getDecimalSeparator", - "()Ljava/lang/String;"); - jni::ScopedLocalRef decimalSeparatorChar(env, env->CallStaticObjectMethod(g_utilsClazz, getDecimalSeparatorId)); + static jmethodID const getDecimalSeparatorId = + jni::GetStaticMethodID(env, g_utilsClazz, "getDecimalSeparator", "()Ljava/lang/String;"); + jni::ScopedLocalRef decimalSeparatorChar(env, env->CallStaticObjectMethod(g_utilsClazz, getDecimalSeparatorId)); - static jmethodID const getGroupingSeparatorId = jni::GetStaticMethodID(env, g_utilsClazz, "getGroupingSeparator", - "()Ljava/lang/String;"); + static jmethodID const getGroupingSeparatorId = + jni::GetStaticMethodID(env, g_utilsClazz, "getGroupingSeparator", "()Ljava/lang/String;"); jni::ScopedLocalRef groupingSeparatorChar(env, env->CallStaticObjectMethod(g_utilsClazz, getGroupingSeparatorId)); return {jni::ToNativeString(env, static_cast(languageCode.get())), diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Localization.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Localization.cpp index 11229602c..2441c73ed 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Localization.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/Localization.cpp @@ -1,7 +1,7 @@ #include -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/core/ScopedLocalRef.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/platform/AndroidPlatform.hpp" #include "platform/localization.hpp" @@ -23,8 +23,7 @@ std::string GetLocalizedStringByUtil(jmethodID const & methodId, std::string con jni::TScopedLocalRef strRef(env, jni::ToJavaString(env, str)); jobject context = android::Platform::Instance().GetContext(); - jni::TScopedLocalRef localizedStrRef(env, env->CallStaticObjectMethod(g_utilsClazz, methodId, - context, strRef.get())); + jni::TScopedLocalRef localizedStrRef(env, env->CallStaticObjectMethod(g_utilsClazz, methodId, context, strRef.get())); return jni::ToNativeString(env, static_cast(localizedStrRef.get())); } } // namespace @@ -52,12 +51,11 @@ std::string GetLocalizedString(std::string const & key) std::string GetCurrencySymbol(std::string const & currencyCode) { JNIEnv * env = jni::GetEnv(); - static auto const methodId = jni::GetStaticMethodID(env, g_utilsClazz, "getCurrencySymbol", - "(Ljava/lang/String;)Ljava/lang/String;"); + static auto const methodId = + jni::GetStaticMethodID(env, g_utilsClazz, "getCurrencySymbol", "(Ljava/lang/String;)Ljava/lang/String;"); jni::TScopedLocalRef currencyCodeRef(env, jni::ToJavaString(env, currencyCode)); - jni::TScopedLocalRef localizedStrRef( - env, env->CallStaticObjectMethod(g_utilsClazz, methodId, currencyCodeRef.get())); + jni::TScopedLocalRef localizedStrRef(env, env->CallStaticObjectMethod(g_utilsClazz, methodId, currencyCodeRef.get())); return jni::ToNativeString(env, static_cast(localizedStrRef.get())); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/SocketImpl.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/SocketImpl.cpp index e9c7e0f75..49610e9db 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/SocketImpl.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/platform/SocketImpl.cpp @@ -30,8 +30,7 @@ public: bool Open(std::string const & host, uint16_t port) { JNIEnv * env = jni::GetEnv(); - static jmethodID const openMethod = - jni::GetMethodID(env, m_self, "open", "(Ljava/lang/String;I)Z"); + static jmethodID const openMethod = jni::GetMethodID(env, m_self, "open", "(Ljava/lang/String;I)Z"); jni::TScopedLocalRef hostRef(env, jni::ToJavaString(env, host)); jboolean result = env->CallBooleanMethod(m_self, openMethod, hostRef.get(), static_cast(port)); if (jni::HandleJavaException(env)) @@ -55,7 +54,7 @@ public: jboolean result = env->CallBooleanMethod(m_self, readMethod, array, static_cast(count)); if (jni::HandleJavaException(env)) return false; - //this call copies java byte array to native buffer + // this call copies java byte array to native buffer env->GetByteArrayRegion(array, 0, count, reinterpret_cast(data)); if (jni::HandleJavaException(env)) return false; @@ -66,8 +65,8 @@ public: { JNIEnv * env = jni::GetEnv(); jni::TScopedLocalByteArrayRef arrayRef(env, env->NewByteArray(count)); - //this call copies native buffer to java byte array - env->SetByteArrayRegion(arrayRef.get(), 0, count, reinterpret_cast(data)); + // this call copies native buffer to java byte array + env->SetByteArrayRegion(arrayRef.get(), 0, count, reinterpret_cast(data)); static jmethodID const writeMethod = jni::GetMethodID(env, m_self, "write", "([BI)Z"); jboolean result = env->CallBooleanMethod(m_self, writeMethod, arrayRef.get(), static_cast(count)); if (jni::HandleJavaException(env)) @@ -81,11 +80,14 @@ public: static jmethodID const setTimeoutMethod = jni::GetMethodID(env, m_self, "setTimeout", "(I)V"); env->CallVoidMethod(m_self, setTimeoutMethod, static_cast(milliseconds)); jni::HandleJavaException(env); - }; + } private: jobject m_self; }; -std::unique_ptr CreateSocket() { return std::make_unique(); } +std::unique_ptr CreateSocket() +{ + return std::make_unique(); } +} // namespace platform diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/JunctionInfo.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/JunctionInfo.hpp index be93da80f..e73a3f52a 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/JunctionInfo.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/JunctionInfo.hpp @@ -14,9 +14,8 @@ jobjectArray CreateJunctionInfoArray(JNIEnv * env, std::vectorNewObject(junctionClazz, junctionConstructor, mercator::YToLat(point.y), - mercator::XToLon(point.x)); - }); + { + auto & point = pointWithAltitude.GetPoint(); + return env->NewObject(junctionClazz, junctionConstructor, mercator::YToLat(point.y), mercator::XToLon(point.x)); + }); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RouteMarkData.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RouteMarkData.hpp index 7599841b9..951b18a22 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RouteMarkData.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RouteMarkData.hpp @@ -13,17 +13,15 @@ jobjectArray CreateRouteMarkDataArray(JNIEnv * env, std::vector c // int intermediateIndex, boolean isVisible, boolean isMyPosition, // boolean isPassed, double lat, double lon) static jmethodID const pointConstructor = - jni::GetConstructorID(env, pointClazz, "(Ljava/lang/String;Ljava/lang/String;IIZZZDD)V"); - return jni::ToJavaArray(env, pointClazz, points, - [&](JNIEnv * jEnv, RouteMarkData const & data) - { - jni::TScopedLocalRef const title(env, jni::ToJavaString(env, data.m_title)); - jni::TScopedLocalRef const subtitle(env, jni::ToJavaString(env, data.m_subTitle)); - return env->NewObject( - pointClazz, pointConstructor, title.get(), subtitle.get(), - static_cast(data.m_pointType), static_cast(data.m_intermediateIndex), - static_cast(data.m_isVisible), static_cast(data.m_isMyPosition), - static_cast(data.m_isPassed), mercator::YToLat(data.m_position.y), - mercator::XToLon(data.m_position.x)); - }); + jni::GetConstructorID(env, pointClazz, "(Ljava/lang/String;Ljava/lang/String;IIZZZDD)V"); + return jni::ToJavaArray(env, pointClazz, points, [&](JNIEnv * jEnv, RouteMarkData const & data) + { + jni::TScopedLocalRef const title(env, jni::ToJavaString(env, data.m_title)); + jni::TScopedLocalRef const subtitle(env, jni::ToJavaString(env, data.m_subTitle)); + return env->NewObject(pointClazz, pointConstructor, title.get(), subtitle.get(), + static_cast(data.m_pointType), static_cast(data.m_intermediateIndex), + static_cast(data.m_isVisible), static_cast(data.m_isMyPosition), + static_cast(data.m_isPassed), mercator::YToLat(data.m_position.y), + mercator::XToLon(data.m_position.x)); + }); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RoutingInfo.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RoutingInfo.hpp index d200d93bf..3dc84846f 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RoutingInfo.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/RoutingInfo.hpp @@ -15,21 +15,21 @@ jobject CreateRoutingInfo(JNIEnv * env, routing::FollowingInfo const & info, Rou // vehicleNextTurnOrdinal, int pedestrianTurnOrdinal, int exitNum, // int totalTime, SingleLaneInfo[] lanes) static jmethodID const ctorRouteInfoID = - jni::GetConstructorID(env, klass, - "(Lapp/organicmaps/sdk/util/Distance;Lapp/organicmaps/sdk/util/Distance;" - "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;DIIIII" - "[Lapp/organicmaps/sdk/routing/SingleLaneInfo;DZZ)V"); + jni::GetConstructorID(env, klass, + "(Lapp/organicmaps/sdk/util/Distance;Lapp/organicmaps/sdk/util/Distance;" + "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;DIIIII" + "[Lapp/organicmaps/sdk/routing/SingleLaneInfo;DZZ)V"); jobjectArray jLanes = CreateLanesInfo(env, info.m_lanes); auto const isSpeedCamLimitExceeded = rm.IsSpeedCamLimitExceeded(); auto const shouldPlaySignal = rm.GetSpeedCamManager().ShouldPlayBeepSignal(); jobject const result = env->NewObject( - klass, ctorRouteInfoID, ToJavaDistance(env, info.m_distToTarget), ToJavaDistance(env, info.m_distToTurn), - jni::ToJavaString(env, info.m_currentStreetName), jni::ToJavaString(env, info.m_nextStreetName), - jni::ToJavaString(env, info.m_nextNextStreetName), info.m_completionPercent, info.m_turn, info.m_nextTurn, - info.m_pedestrianTurn, info.m_exitNum, info.m_time, jLanes, info.m_speedLimitMps, - static_cast(isSpeedCamLimitExceeded), static_cast(shouldPlaySignal)); + klass, ctorRouteInfoID, ToJavaDistance(env, info.m_distToTarget), ToJavaDistance(env, info.m_distToTurn), + jni::ToJavaString(env, info.m_currentStreetName), jni::ToJavaString(env, info.m_nextStreetName), + jni::ToJavaString(env, info.m_nextNextStreetName), info.m_completionPercent, info.m_turn, info.m_nextTurn, + info.m_pedestrianTurn, info.m_exitNum, info.m_time, jLanes, info.m_speedLimitMps, + static_cast(isSpeedCamLimitExceeded), static_cast(shouldPlaySignal)); ASSERT(result, (jni::DescribeException())); return result; } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/SingleLaneInfo.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/SingleLaneInfo.hpp index 8574e4c99..2852d2f3d 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/SingleLaneInfo.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/SingleLaneInfo.hpp @@ -25,7 +25,7 @@ jobjectArray CreateLanesInfo(JNIEnv * env, std::vectorSetByteArrayRegion(singleLane.get(), 0, laneSize, lanes[j].m_lane.data()); jni::TScopedLocalRef singleLaneInfo( - env, env->NewObject(laneClass, ctorSingleLaneInfoID, singleLane.get(), lanes[j].m_isRecommended)); + env, env->NewObject(laneClass, ctorSingleLaneInfoID, singleLane.get(), lanes[j].m_isRecommended)); ASSERT(singleLaneInfo.get(), (jni::DescribeException())); env->SetObjectArrayElement(jLanes, j, singleLaneInfo.get()); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitRouteInfo.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitRouteInfo.hpp index c2ef0afb8..48b813c97 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitRouteInfo.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitRouteInfo.hpp @@ -11,16 +11,16 @@ jobject CreateTransitRouteInfo(JNIEnv * env, TransitRouteInfo const & routeInfo) jobjectArray steps = CreateTransitStepInfoArray(env, routeInfo.m_steps); static jclass const transitRouteInfoClass = - jni::GetGlobalClassRef(env, "app/organicmaps/sdk/routing/TransitRouteInfo"); + jni::GetGlobalClassRef(env, "app/organicmaps/sdk/routing/TransitRouteInfo"); // Java signature : TransitRouteInfo(@NonNull String totalDistance, @NonNull String totalDistanceUnits, // int totalTimeInSec, @NonNull String totalPedestrianDistance, @NonNull String // totalPedestrianDistanceUnits, int totalPedestrianTimeInSec, @NonNull // TransitStepInfo[] steps) static jmethodID const transitRouteInfoConstructor = - jni::GetConstructorID(env, transitRouteInfoClass, - "(Ljava/lang/String;Ljava/lang/String;I" - "Ljava/lang/String;Ljava/lang/String;I" - "[Lapp/organicmaps/sdk/routing/TransitStepInfo;)V"); + jni::GetConstructorID(env, transitRouteInfoClass, + "(Ljava/lang/String;Ljava/lang/String;I" + "Ljava/lang/String;Ljava/lang/String;I" + "[Lapp/organicmaps/sdk/routing/TransitStepInfo;)V"); jni::TScopedLocalRef const distance(env, jni::ToJavaString(env, routeInfo.m_totalDistanceStr)); jni::TScopedLocalRef const distanceUnits(env, jni::ToJavaString(env, routeInfo.m_totalDistanceUnitsSuffix)); jni::TScopedLocalRef const distancePedestrian(env, jni::ToJavaString(env, routeInfo.m_totalPedestrianDistanceStr)); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitStepInfo.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitStepInfo.hpp index 37f3776e2..5e7395700 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitStepInfo.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/routing/TransitStepInfo.hpp @@ -12,17 +12,15 @@ jobjectArray CreateTransitStepInfoArray(JNIEnv * env, std::vectorNewObject(transitStepClass, transitStepConstructor, static_cast(stepInfo.m_type), - distance.get(), distanceUnits.get(), static_cast(stepInfo.m_timeInSec), number.get(), - static_cast(stepInfo.m_colorARGB), static_cast(stepInfo.m_intermediateIndex)); - }); + return jni::ToJavaArray(env, transitStepClass, steps, [&](JNIEnv * jEnv, TransitStepInfo const & stepInfo) + { + jni::TScopedLocalRef const distance(env, jni::ToJavaString(env, stepInfo.m_distanceStr)); + jni::TScopedLocalRef const distanceUnits(env, jni::ToJavaString(env, stepInfo.m_distanceUnitsSuffix)); + jni::TScopedLocalRef const number(env, jni::ToJavaString(env, stepInfo.m_number)); + return env->NewObject(transitStepClass, transitStepConstructor, static_cast(stepInfo.m_type), distance.get(), + distanceUnits.get(), static_cast(stepInfo.m_timeInSec), number.get(), + static_cast(stepInfo.m_colorARGB), static_cast(stepInfo.m_intermediateIndex)); + }); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/search/DisplayedCategories.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/search/DisplayedCategories.cpp index 65706b500..5b2490dab 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/search/DisplayedCategories.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/search/DisplayedCategories.cpp @@ -13,8 +13,9 @@ JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_search_DisplayedCategori return jni::ToJavaStringArray(env, categories.GetKeys()); } -JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_DisplayedCategories_nativeIsLangSupported( - JNIEnv * env, jclass, jstring langCode) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_DisplayedCategories_nativeIsLangSupported(JNIEnv * env, + jclass, + jstring langCode) { return search::DisplayedCategories::IsLanguageSupported(jni::ToNativeString(env, langCode)); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/search/SearchEngine.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/search/SearchEngine.cpp index db983caac..25147b5a7 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/search/SearchEngine.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/search/SearchEngine.cpp @@ -65,13 +65,12 @@ bool PopularityHasHigherPriority(bool hasPosition, double distanceInMeters) return !hasPosition || distanceInMeters > search::Result::kPopularityHighPriorityMinDistance; } -jobject ToJavaResult(Result const & result, search::ProductInfo const & productInfo, - bool hasPosition, double lat, double lon) +jobject ToJavaResult(Result const & result, search::ProductInfo const & productInfo, bool hasPosition, double lat, + double lon) { JNIEnv * env = jni::GetEnv(); - jni::TScopedLocalIntArrayRef ranges( - env, env->NewIntArray(static_cast(result.GetHighlightRangesCount() * 2))); + jni::TScopedLocalIntArrayRef ranges(env, env->NewIntArray(static_cast(result.GetHighlightRangesCount() * 2))); jint * rawArr = env->GetIntArrayElements(ranges, nullptr); for (size_t i = 0; i < result.GetHighlightRangesCount(); i++) { @@ -81,8 +80,8 @@ jobject ToJavaResult(Result const & result, search::ProductInfo const & productI } env->ReleaseIntArrayElements(ranges.get(), rawArr, 0); - jni::TScopedLocalIntArrayRef descRanges(env, env->NewIntArray( - static_cast(result.GetDescHighlightRangesCount() * 2))); + jni::TScopedLocalIntArrayRef descRanges( + env, env->NewIntArray(static_cast(result.GetDescHighlightRangesCount() * 2))); jint * rawArr2 = env->GetIntArrayElements(descRanges, nullptr); for (size_t i = 0; i < result.GetDescHighlightRangesCount(); i++) { @@ -100,7 +99,8 @@ jobject ToJavaResult(Result const & result, search::ProductInfo const & productI { jni::TScopedLocalRef name(env, jni::ToJavaString(env, result.GetString())); jni::TScopedLocalRef suggest(env, jni::ToJavaString(env, result.GetSuggestionString())); - return env->NewObject(g_resultClass, g_suggestConstructor, name.get(), suggest.get(), ll.m_lat, ll.m_lon, ranges.get(),descRanges.get()); + return env->NewObject(g_resultClass, g_suggestConstructor, name.get(), suggest.get(), ll.m_lat, ll.m_lon, + ranges.get(), descRanges.get()); } platform::Distance distance; @@ -113,34 +113,31 @@ jobject ToJavaResult(Result const & result, search::ProductInfo const & productI bool const popularityHasHigherPriority = PopularityHasHigherPriority(hasPosition, distanceInMeters); bool const isFeature = result.GetResultType() == Result::Type::Feature; - jni::TScopedLocalRef featureId(env, usermark_helper::CreateFeatureId(env, isFeature ? - result.GetFeatureID() : - kEmptyFeatureId)); + jni::TScopedLocalRef featureId( + env, usermark_helper::CreateFeatureId(env, isFeature ? result.GetFeatureID() : kEmptyFeatureId)); jni::TScopedLocalRef featureType(env, jni::ToJavaString(env, result.GetLocalizedFeatureType())); jni::TScopedLocalRef address(env, jni::ToJavaString(env, result.GetAddress())); jni::TScopedLocalRef dist(env, ToJavaDistance(env, distance)); jni::TScopedLocalRef description(env, jni::ToJavaString(env, result.GetFeatureDescription())); - jni::TScopedLocalRef desc(env, env->NewObject(g_descriptionClass, g_descriptionConstructor, - featureId.get(), featureType.get(), address.get(), - dist.get(), description.get(), - static_cast(result.IsOpenNow()), - result.GetMinutesUntilOpen(),result.GetMinutesUntilClosed(), - static_cast(popularityHasHigherPriority))); + jni::TScopedLocalRef desc( + env, + env->NewObject(g_descriptionClass, g_descriptionConstructor, featureId.get(), featureType.get(), address.get(), + dist.get(), description.get(), static_cast(result.IsOpenNow()), result.GetMinutesUntilOpen(), + result.GetMinutesUntilClosed(), static_cast(popularityHasHigherPriority))); jni::TScopedLocalRef name(env, jni::ToJavaString(env, result.GetString())); - jni::TScopedLocalRef popularity(env, env->NewObject(g_popularityClass, - g_popularityConstructor, + jni::TScopedLocalRef popularity(env, env->NewObject(g_popularityClass, g_popularityConstructor, /// @todo Restore when popularity will be available - 0/*static_cast(result.GetRankingInfo().m_popularity)*/)); + 0 /*static_cast(result.GetRankingInfo().m_popularity)*/)); - return env->NewObject(g_resultClass, g_resultConstructor, name.get(), desc.get(), ll.m_lat, ll.m_lon, - ranges.get(), descRanges.get(), popularity.get()); + return env->NewObject(g_resultClass, g_resultConstructor, name.get(), desc.get(), ll.m_lat, ll.m_lon, ranges.get(), + descRanges.get(), popularity.get()); } -jobjectArray BuildSearchResults(vector const & productInfo, - bool hasPosition, double lat, double lon) +jobjectArray BuildSearchResults(vector const & productInfo, bool hasPosition, double lat, + double lon) { JNIEnv * env = jni::GetEnv(); @@ -154,8 +151,8 @@ jobjectArray BuildSearchResults(vector const & productInfo, return jResults; } -void OnResults(Results results, vector const & productInfo, - jlong timestamp, bool isMapAndTable, bool hasPosition, double lat, double lon) +void OnResults(Results results, vector const & productInfo, jlong timestamp, bool isMapAndTable, + bool hasPosition, double lat, double lon) { // Ignore results from obsolete searches. if (g_queryTimestamp > timestamp) @@ -203,8 +200,8 @@ void OnMapSearchResults(storage::DownloaderSearchResults const & results, long l JNIEnv * env = jni::GetEnv(); jni::TScopedLocalObjectArrayRef jResults(env, BuildJavaMapResults(results.m_results)); - env->CallVoidMethod(g_javaListener, g_mapResultsMethod, jResults.get(), - static_cast(timestamp), results.m_endMarker); + env->CallVoidMethod(g_javaListener, g_mapResultsMethod, jResults.get(), static_cast(timestamp), + results.m_endMarker); } void OnBookmarksSearchResults(search::BookmarksSearchParams::Results results, @@ -221,8 +218,8 @@ void OnBookmarksSearchResults(search::BookmarksSearchParams::Results results, vector const tmp(results.cbegin(), results.cend()); env->SetLongArrayRegion(jResults.get(), 0, static_cast(tmp.size()), tmp.data()); - auto const method = (status == search::BookmarksSearchParams::Status::InProgress) ? - g_updateBookmarksResultsId : g_endBookmarksResultsId; + auto const method = (status == search::BookmarksSearchParams::Status::InProgress) ? g_updateBookmarksResultsId + : g_endBookmarksResultsId; env->CallVoidMethod(g_javaListener, method, jResults.get(), static_cast(timestamp)); } @@ -231,151 +228,139 @@ void OnBookmarksSearchResults(search::BookmarksSearchParams::Results results, extern "C" { - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeInit(JNIEnv * env, jobject thiz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeInit(JNIEnv * env, jobject thiz) +{ + g_javaListener = env->NewGlobalRef(thiz); + // public void onResultsUpdate(@NonNull SearchResult[] results, long timestamp) + g_updateResultsId = + jni::GetMethodID(env, g_javaListener, "onResultsUpdate", "([Lapp/organicmaps/sdk/search/SearchResult;J)V"); + // public void onResultsEnd(long timestamp) + g_endResultsId = jni::GetMethodID(env, g_javaListener, "onResultsEnd", "(J)V"); + g_resultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult"); + g_resultConstructor = + jni::GetConstructorID(env, g_resultClass, + "(Ljava/lang/String;Lapp/organicmaps/sdk/search/SearchResult$Description;DD[I[I" + "Lapp/organicmaps/sdk/search/Popularity;)V"); + g_suggestConstructor = jni::GetConstructorID(env, g_resultClass, "(Ljava/lang/String;Ljava/lang/String;DD[I[I)V"); + g_descriptionClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult$Description"); + /* + Description(FeatureId featureId, String featureType, String region, Distance distance, + String description, int openNow, int minutesUntilOpen, int minutesUntilClosed, + boolean hasPopularityHigherPriority) + */ + g_descriptionConstructor = + jni::GetConstructorID(env, g_descriptionClass, + "(Lapp/organicmaps/sdk/bookmarks/data/FeatureId;" + "Ljava/lang/String;Ljava/lang/String;Lapp/organicmaps/sdk/util/Distance;" + "Ljava/lang/String;IIIZ)V"); + + g_popularityClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity"); + g_popularityConstructor = jni::GetConstructorID(env, g_popularityClass, "(I)V"); + + g_mapResultsMethod = jni::GetMethodID(env, g_javaListener, "onMapSearchResults", + "([Lapp/organicmaps/sdk/search/MapSearchListener$Result;JZ)V"); + g_mapResultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/MapSearchListener$Result"); + g_mapResultCtor = jni::GetConstructorID(env, g_mapResultClass, "(Ljava/lang/String;Ljava/lang/String;)V"); + + g_updateBookmarksResultsId = jni::GetMethodID(env, g_javaListener, "onBookmarkSearchResultsUpdate", "([JJ)V"); + g_endBookmarksResultsId = jni::GetMethodID(env, g_javaListener, "onBookmarkSearchResultsEnd", "([JJ)V"); +} + +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearch( + JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory, jstring lang, jlong timestamp, + jboolean hasPosition, jdouble lat, jdouble lon) +{ + search::EverywhereSearchParams params{jni::ToNativeString(env, bytes), + jni::ToNativeString(env, lang), + {}, // default timeout + static_cast(isCategory), + bind(&OnResults, _1, _2, timestamp, false, hasPosition, lat, lon)}; + bool const searchStarted = g_framework->NativeFramework()->GetSearchAPI().SearchEverywhere(std::move(params)); + if (searchStarted) + g_queryTimestamp = timestamp; + return searchStarted; +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunInteractiveSearch( + JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory, jstring lang, jlong timestamp, + jboolean isMapAndTable, jboolean hasPosition, jdouble lat, jdouble lon) +{ + search::ViewportSearchParams vparams{ + jni::ToNativeString(env, bytes), + jni::ToNativeString(env, lang), + {}, // Default timeout + static_cast(isCategory), + {}, // Empty m_onStarted callback + {}, // Empty m_onCompleted callback + }; + + // TODO (@alexzatsepin): set up vparams.m_onCompleted here and use + // HotelsClassifier for hotel queries detection. + // Don't move vparams here, because it's used below. + g_framework->NativeFramework()->GetSearchAPI().SearchInViewport(vparams); + + if (isMapAndTable) { - g_javaListener = env->NewGlobalRef(thiz); - // public void onResultsUpdate(@NonNull SearchResult[] results, long timestamp) - g_updateResultsId = jni::GetMethodID(env, g_javaListener, "onResultsUpdate", - "([Lapp/organicmaps/sdk/search/SearchResult;J)V"); - // public void onResultsEnd(long timestamp) - g_endResultsId = jni::GetMethodID(env, g_javaListener, "onResultsEnd", "(J)V"); - g_resultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult"); - g_resultConstructor = jni::GetConstructorID( - env, g_resultClass, - "(Ljava/lang/String;Lapp/organicmaps/sdk/search/SearchResult$Description;DD[I[I" - "Lapp/organicmaps/sdk/search/Popularity;)V"); - g_suggestConstructor = jni::GetConstructorID(env, g_resultClass, "(Ljava/lang/String;Ljava/lang/String;DD[I[I)V"); - g_descriptionClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/SearchResult$Description"); - /* - Description(FeatureId featureId, String featureType, String region, Distance distance, - String description, int openNow, int minutesUntilOpen, int minutesUntilClosed, - boolean hasPopularityHigherPriority) - */ - g_descriptionConstructor = jni::GetConstructorID(env, g_descriptionClass, - "(Lapp/organicmaps/sdk/bookmarks/data/FeatureId;" - "Ljava/lang/String;Ljava/lang/String;Lapp/organicmaps/sdk/util/Distance;" - "Ljava/lang/String;IIIZ)V"); + search::EverywhereSearchParams eparams{std::move(vparams.m_query), + std::move(vparams.m_inputLocale), + {}, // default timeout + static_cast(isCategory), + bind(&OnResults, _1, _2, timestamp, isMapAndTable, hasPosition, lat, lon)}; - g_popularityClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/Popularity"); - g_popularityConstructor = jni::GetConstructorID(env, g_popularityClass, "(I)V"); - - g_mapResultsMethod = jni::GetMethodID(env, g_javaListener, "onMapSearchResults", - "([Lapp/organicmaps/sdk/search/MapSearchListener$Result;JZ)V"); - g_mapResultClass = jni::GetGlobalClassRef(env, "app/organicmaps/sdk/search/MapSearchListener$Result"); - g_mapResultCtor = jni::GetConstructorID(env, g_mapResultClass, "(Ljava/lang/String;Ljava/lang/String;)V"); - - g_updateBookmarksResultsId = - jni::GetMethodID(env, g_javaListener, "onBookmarkSearchResultsUpdate", "([JJ)V"); - g_endBookmarksResultsId = - jni::GetMethodID(env, g_javaListener, "onBookmarkSearchResultsEnd", "([JJ)V"); - } - - JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearch( - JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory, - jstring lang, jlong timestamp, jboolean hasPosition, jdouble lat, jdouble lon) - { - search::EverywhereSearchParams params{ - jni::ToNativeString(env, bytes), - jni::ToNativeString(env, lang), - {}, // default timeout - static_cast(isCategory), - bind(&OnResults, _1, _2, timestamp, false, hasPosition, lat, lon) - }; - bool const searchStarted = g_framework->NativeFramework()->GetSearchAPI().SearchEverywhere(std::move(params)); - if (searchStarted) - g_queryTimestamp = timestamp; - return searchStarted; - } - - JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunInteractiveSearch( - JNIEnv * env, jclass clazz, jbyteArray bytes, jboolean isCategory, - jstring lang, jlong timestamp, jboolean isMapAndTable, jboolean hasPosition, jdouble lat, jdouble lon) - { - search::ViewportSearchParams vparams{ - jni::ToNativeString(env, bytes), - jni::ToNativeString(env, lang), - {}, // Default timeout - static_cast(isCategory), - {}, // Empty m_onStarted callback - {}, // Empty m_onCompleted callback - }; - - // TODO (@alexzatsepin): set up vparams.m_onCompleted here and use - // HotelsClassifier for hotel queries detection. - // Don't move vparams here, because it's used below. - g_framework->NativeFramework()->GetSearchAPI().SearchInViewport(vparams); - - if (isMapAndTable) - { - search::EverywhereSearchParams eparams{ - std::move(vparams.m_query), - std::move(vparams.m_inputLocale), - {}, // default timeout - static_cast(isCategory), - bind(&OnResults, _1, _2, timestamp, isMapAndTable, hasPosition, lat, lon) - }; - - if (g_framework->NativeFramework()->GetSearchAPI().SearchEverywhere(std::move(eparams))) - g_queryTimestamp = timestamp; - } - } - - JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchMaps( - JNIEnv * env, jclass clazz, jbyteArray bytes, jstring lang, jlong timestamp) - { - storage::DownloaderSearchParams params{ - jni::ToNativeString(env, bytes), - jni::ToNativeString(env, lang), - bind(&OnMapSearchResults, _1, timestamp) - }; - - if (g_framework->NativeFramework()->GetSearchAPI().SearchInDownloader(std::move(params))) + if (g_framework->NativeFramework()->GetSearchAPI().SearchEverywhere(std::move(eparams))) g_queryTimestamp = timestamp; } +} - JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchInBookmarks( - JNIEnv * env, jclass clazz, jbyteArray query, jlong catId, jlong timestamp) - { - search::BookmarksSearchParams params{ - jni::ToNativeString(env, query), - static_cast(catId), - bind(&OnBookmarksSearchResults, _1, _2, timestamp) - }; +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchMaps(JNIEnv * env, jclass clazz, + jbyteArray bytes, jstring lang, + jlong timestamp) +{ + storage::DownloaderSearchParams params{jni::ToNativeString(env, bytes), jni::ToNativeString(env, lang), + bind(&OnMapSearchResults, _1, timestamp)}; - bool const searchStarted = g_framework->NativeFramework()->GetSearchAPI().SearchInBookmarks(std::move(params)); - if (searchStarted) - g_queryTimestamp = timestamp; - return searchStarted; - } + if (g_framework->NativeFramework()->GetSearchAPI().SearchInDownloader(std::move(params))) + g_queryTimestamp = timestamp; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeShowResult(JNIEnv * env, jclass clazz, jint index) - { - g_framework->NativeFramework()->ShowSearchResult(g_results[index]); - } +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeRunSearchInBookmarks( + JNIEnv * env, jclass clazz, jbyteArray query, jlong catId, jlong timestamp) +{ + search::BookmarksSearchParams params{jni::ToNativeString(env, query), static_cast(catId), + bind(&OnBookmarksSearchResults, _1, _2, timestamp)}; - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelInteractiveSearch(JNIEnv * env, jclass clazz) - { - g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Viewport); - } + bool const searchStarted = g_framework->NativeFramework()->GetSearchAPI().SearchInBookmarks(std::move(params)); + if (searchStarted) + g_queryTimestamp = timestamp; + return searchStarted; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelEverywhereSearch(JNIEnv * env, jclass clazz) - { - g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Everywhere); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeShowResult(JNIEnv * env, jclass clazz, + jint index) +{ + g_framework->NativeFramework()->ShowSearchResult(g_results[index]); +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelAllSearches(JNIEnv * env, jclass clazz) - { - g_framework->NativeFramework()->GetSearchAPI().CancelAllSearches(); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelInteractiveSearch(JNIEnv * env, + jclass clazz) +{ + g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Viewport); +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_search_SearchEngine_nativeUpdateViewportWithLastResults(JNIEnv * env, jclass clazz) - { - g_framework->NativeFramework()->UpdateViewport(g_results); - } -} // extern "C" +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelEverywhereSearch(JNIEnv * env, + jclass clazz) +{ + g_framework->NativeFramework()->GetSearchAPI().CancelSearch(search::Mode::Everywhere); +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeCancelAllSearches(JNIEnv * env, jclass clazz) +{ + g_framework->NativeFramework()->GetSearchAPI().CancelAllSearches(); +} + +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_search_SearchEngine_nativeUpdateViewportWithLastResults(JNIEnv * env, + jclass clazz) +{ + g_framework->NativeFramework()->UpdateViewport(g_results); +} +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/MapLanguageCode.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/MapLanguageCode.cpp index f384c6cd7..c3ad1f7c5 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/MapLanguageCode.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/MapLanguageCode.cpp @@ -6,14 +6,13 @@ extern "C" { -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_settings_MapLanguageCode_setMapLanguageCode(JNIEnv * env, jobject, jstring languageCode) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_settings_MapLanguageCode_setMapLanguageCode(JNIEnv * env, jobject, + jstring languageCode) { g_framework->SetMapLanguageCode(jni::ToNativeString(env, languageCode)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_settings_MapLanguageCode_getMapLanguageCode(JNIEnv * env, jobject) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_settings_MapLanguageCode_getMapLanguageCode(JNIEnv * env, jobject) { return jni::ToJavaString(env, g_framework->GetMapLanguageCode()); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/UnitLocale.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/UnitLocale.cpp index 4c5dd801d..918dc8d67 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/UnitLocale.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/settings/UnitLocale.cpp @@ -5,19 +5,17 @@ extern "C" { - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_settings_UnitLocale_setCurrentUnits(JNIEnv * env, jobject thiz, jint units) - { - measurement_utils::Units const u = static_cast(units); - settings::Set(settings::kMeasurementUnits, u); - g_framework->SetupMeasurementSystem(); - } - - JNIEXPORT jint JNICALL - Java_app_organicmaps_sdk_settings_UnitLocale_getCurrentUnits(JNIEnv * env, jobject thiz) - { - measurement_utils::Units u; - return static_cast( - settings::Get(settings::kMeasurementUnits, u) ? u : measurement_utils::Units::Metric); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_settings_UnitLocale_setCurrentUnits(JNIEnv * env, jobject thiz, + jint units) +{ + measurement_utils::Units const u = static_cast(units); + settings::Set(settings::kMeasurementUnits, u); + g_framework->SetupMeasurementSystem(); +} + +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_settings_UnitLocale_getCurrentUnits(JNIEnv * env, jobject thiz) +{ + measurement_utils::Units u; + return static_cast(settings::Get(settings::kMeasurementUnits, u) ? u : measurement_utils::Units::Metric); +} } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/sound/tts.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/sound/tts.cpp index a40287c90..5c77cfe22 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/sound/tts.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/sound/tts.cpp @@ -7,32 +7,30 @@ extern "C" { -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_sound_TtsPlayer_nativeEnableTurnNotifications(JNIEnv *, jclass, jboolean enable) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_sound_TtsPlayer_nativeEnableTurnNotifications(JNIEnv *, jclass, + jboolean enable) { return frm()->GetRoutingManager().EnableTurnNotifications(static_cast(enable)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_sound_TtsPlayer_nativeAreTurnNotificationsEnabled(JNIEnv *, jclass) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_sound_TtsPlayer_nativeAreTurnNotificationsEnabled(JNIEnv *, jclass) { return static_cast(frm()->GetRoutingManager().AreTurnNotificationsEnabled()); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_sound_TtsPlayer_nativeSetTurnNotificationsLocale(JNIEnv * env, jclass, jstring jLocale) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_sound_TtsPlayer_nativeSetTurnNotificationsLocale(JNIEnv * env, jclass, + jstring jLocale) { frm()->GetRoutingManager().SetTurnNotificationsLocale(jni::ToNativeString(env, jLocale)); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_sound_TtsPlayer_nativeGetTurnNotificationsLocale(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_sound_TtsPlayer_nativeGetTurnNotificationsLocale(JNIEnv * env, + jclass) { return jni::ToJavaString(env, frm()->GetRoutingManager().GetTurnNotificationsLocale()); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_sound_TtsPlayer_nativeGetSupportedLanguages(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_sound_TtsPlayer_nativeGetSupportedLanguages(JNIEnv * env, jclass) { auto const & supportedLanguages = routing::turns::sound::kLanguageList; diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/subway/SubwayManager.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/subway/SubwayManager.cpp index fe70b9a58..cb79bc7b1 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/subway/SubwayManager.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/subway/SubwayManager.cpp @@ -9,22 +9,21 @@ static void TransitSchemeStateChanged(TransitReadManager::TransitSchemeState sta std::shared_ptr const & listener) { JNIEnv * env = jni::GetEnv(); - env->CallVoidMethod(*listener, - jni::GetMethodID(env, *listener, "onTransitStateChanged", "(I)V"), + env->CallVoidMethod(*listener, jni::GetMethodID(env, *listener, "onTransitStateChanged", "(I)V"), static_cast(state)); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_subway_SubwayManager_nativeAddListener(JNIEnv *env, jclass clazz, jobject listener) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_subway_SubwayManager_nativeAddListener(JNIEnv * env, + jclass clazz, + jobject listener) { CHECK(g_framework, ("Framework isn't created yet!")); - g_framework->SetTransitSchemeListener(std::bind(&TransitSchemeStateChanged, - std::placeholders::_1, - jni::make_global_ref(listener))); + g_framework->SetTransitSchemeListener( + std::bind(&TransitSchemeStateChanged, std::placeholders::_1, jni::make_global_ref(listener))); } -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_maplayer_subway_SubwayManager_nativeRemoveListener(JNIEnv * env, jclass clazz) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_maplayer_subway_SubwayManager_nativeRemoveListener(JNIEnv * env, + jclass clazz) { CHECK(g_framework, ("Framework isn't created yet!")); g_framework->SetTransitSchemeListener(TransitReadManager::TransitStateChangedFn()); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp index 02a3b4e50..e9fba5f82 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Config.cpp @@ -1,126 +1,122 @@ -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/Framework.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "platform/settings.hpp" extern "C" { - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_util_Config_nativeHasConfigValue(JNIEnv * env, jclass thiz, jstring name) - { - std::string value; - return settings::Get(jni::ToNativeString(env, name), value); - } +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_Config_nativeHasConfigValue(JNIEnv * env, jclass thiz, + jstring name) +{ + std::string value; + return settings::Get(jni::ToNativeString(env, name), value); +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeDeleteConfigValue(JNIEnv * env, jclass thiz, jstring name) - { - settings::Delete(jni::ToNativeString(env, name)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeDeleteConfigValue(JNIEnv * env, jclass thiz, + jstring name) +{ + settings::Delete(jni::ToNativeString(env, name)); +} - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetBoolean(JNIEnv * env, jclass thiz, jstring name, jboolean defaultVal) - { - bool val; - if (settings::Get(jni::ToNativeString(env, name), val)) - return static_cast(val); +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetBoolean(JNIEnv * env, jclass thiz, + jstring name, jboolean defaultVal) +{ + bool val; + if (settings::Get(jni::ToNativeString(env, name), val)) + return static_cast(val); - return defaultVal; - } + return defaultVal; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetBoolean(JNIEnv * env, jclass thiz, jstring name, jboolean val) - { - (void)settings::Set(jni::ToNativeString(env, name), static_cast(val)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetBoolean(JNIEnv * env, jclass thiz, jstring name, + jboolean val) +{ + (void)settings::Set(jni::ToNativeString(env, name), static_cast(val)); +} - JNIEXPORT jint JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetInt(JNIEnv * env, jclass thiz, jstring name, jint defaultValue) - { - int32_t value; - if (settings::Get(jni::ToNativeString(env, name), value)) - return static_cast(value); +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetInt(JNIEnv * env, jclass thiz, jstring name, + jint defaultValue) +{ + int32_t value; + if (settings::Get(jni::ToNativeString(env, name), value)) + return static_cast(value); - return defaultValue; - } + return defaultValue; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetInt(JNIEnv * env, jclass thiz, jstring name, jint value) - { - (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetInt(JNIEnv * env, jclass thiz, jstring name, + jint value) +{ + (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); +} - JNIEXPORT jlong JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetLong(JNIEnv * env, jclass thiz, jstring name, jlong defaultValue) - { - int64_t value; - if (settings::Get(jni::ToNativeString(env, name), value)) - return static_cast(value); +JNIEXPORT jlong JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetLong(JNIEnv * env, jclass thiz, jstring name, + jlong defaultValue) +{ + int64_t value; + if (settings::Get(jni::ToNativeString(env, name), value)) + return static_cast(value); - return defaultValue; - } + return defaultValue; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetLong(JNIEnv * env, jclass thiz, jstring name, jlong value) - { - (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetLong(JNIEnv * env, jclass thiz, jstring name, + jlong value) +{ + (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); +} - JNIEXPORT jdouble JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetDouble(JNIEnv * env, jclass thiz, jstring name, jdouble defaultValue) - { - double value; - if (settings::Get(jni::ToNativeString(env, name), value)) - return static_cast(value); +JNIEXPORT jdouble JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetDouble(JNIEnv * env, jclass thiz, jstring name, + jdouble defaultValue) +{ + double value; + if (settings::Get(jni::ToNativeString(env, name), value)) + return static_cast(value); - return defaultValue; - } + return defaultValue; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetDouble(JNIEnv * env, jclass thiz, jstring name, jdouble value) - { - (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetDouble(JNIEnv * env, jclass thiz, jstring name, + jdouble value) +{ + (void)settings::Set(jni::ToNativeString(env, name), static_cast(value)); +} - JNIEXPORT jstring JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetString(JNIEnv * env, jclass thiz, jstring name, jstring defaultValue) - { - std::string value; - if (settings::Get(jni::ToNativeString(env, name), value)) - return jni::ToJavaString(env, value); +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetString(JNIEnv * env, jclass thiz, jstring name, + jstring defaultValue) +{ + std::string value; + if (settings::Get(jni::ToNativeString(env, name), value)) + return jni::ToJavaString(env, value); - return defaultValue; - } + return defaultValue; +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetString(JNIEnv * env, jclass thiz, jstring name, jstring value) - { - (void)settings::Set(jni::ToNativeString(env, name), jni::ToNativeString(env, value)); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetString(JNIEnv * env, jclass thiz, jstring name, + jstring value) +{ + (void)settings::Set(jni::ToNativeString(env, name), jni::ToNativeString(env, value)); +} - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetLargeFontsSize(JNIEnv * env, jclass thiz) - { - return frm()->LoadLargeFontsSize(); - } +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetLargeFontsSize(JNIEnv * env, jclass thiz) +{ + return frm()->LoadLargeFontsSize(); +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetLargeFontsSize(JNIEnv * env, jclass thiz, - jboolean value) - { - frm()->SetLargeFontsSize(value); - } +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetLargeFontsSize(JNIEnv * env, jclass thiz, + jboolean value) +{ + frm()->SetLargeFontsSize(value); +} - JNIEXPORT jboolean JNICALL - Java_app_organicmaps_sdk_util_Config_nativeGetTransliteration(JNIEnv * env, jclass thiz) - { - return frm()->LoadTransliteration(); - } +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_Config_nativeGetTransliteration(JNIEnv * env, jclass thiz) +{ + return frm()->LoadTransliteration(); +} - JNIEXPORT void JNICALL - Java_app_organicmaps_sdk_util_Config_nativeSetTransliteration(JNIEnv * env, jclass thiz, - jboolean value) - { - frm()->SaveTransliteration(value); - frm()->AllowTransliteration(value); - } -} // extern "C" +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_Config_nativeSetTransliteration(JNIEnv * env, jclass thiz, + jboolean value) +{ + frm()->SaveTransliteration(value); + frm()->AllowTransliteration(value); +} +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Distance.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Distance.hpp index fbe8676a1..c6399b9f7 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Distance.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Distance.hpp @@ -10,9 +10,9 @@ inline jobject ToJavaDistance(JNIEnv * env, platform::Distance const & distance) static jmethodID const distanceConstructor = jni::GetConstructorID(env, distanceClass, "(DLjava/lang/String;B)V"); - jobject distanceObject = env->NewObject( - distanceClass, distanceConstructor, - distance.GetDistance(), jni::ToJavaString(env, distance.GetDistanceString()), static_cast(distance.GetUnits())); + jobject distanceObject = + env->NewObject(distanceClass, distanceConstructor, distance.GetDistance(), + jni::ToJavaString(env, distance.GetDistanceString()), static_cast(distance.GetUnits())); return distanceObject; } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/GeoUtils.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/GeoUtils.cpp index bf8d03f36..3a3b3b1d8 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/GeoUtils.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/GeoUtils.cpp @@ -4,9 +4,8 @@ extern "C" { -JNIEXPORT jobject JNICALL - Java_app_organicmaps_sdk_util_GeoUtils_nativeToLatLon( - JNIEnv * env, jobject thiz, jdouble mercX, jdouble mercY) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_GeoUtils_nativeToLatLon(JNIEnv * env, jobject thiz, + jdouble mercX, jdouble mercY) { auto const mercPoint = m2::PointD(static_cast(mercX), static_cast(mercY)); auto const latLon = mercator::ToLatLon(mercPoint); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/HttpClient.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/HttpClient.cpp index ca49c6354..8b22f3d0b 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/HttpClient.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/HttpClient.cpp @@ -23,9 +23,9 @@ SOFTWARE. *******************************************************************************/ #include -#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "app/organicmaps/sdk/core/ScopedEnv.hpp" #include "app/organicmaps/sdk/core/ScopedLocalRef.hpp" +#include "app/organicmaps/sdk/core/jni_helper.hpp" #include "platform/http_client.hpp" @@ -33,8 +33,8 @@ SOFTWARE. #include "base/exception.hpp" #include "base/logging.hpp" -#include #include +#include #include DECLARE_EXCEPTION(JniException, RootException); @@ -51,8 +51,7 @@ void RethrowOnJniException(ScopedEnv & env) MYTHROW(JniException, ()); } -jfieldID GetHttpParamsFieldId(ScopedEnv & env, const char * name, - const char * signature = "Ljava/lang/String;") +jfieldID GetHttpParamsFieldId(ScopedEnv & env, char const * name, char const * signature = "Ljava/lang/String;") { return env->GetFieldID(g_httpParamsClazz, name, signature); } @@ -85,8 +84,8 @@ void SetInt(ScopedEnv & env, jobject params, jfieldID const fieldId, int const v // Get string value from HttpClient.Params object, throws JniException. void GetString(ScopedEnv & env, jobject const params, jfieldID const fieldId, std::string & result) { - jni::ScopedLocalRef const wrappedValue( - env.get(), static_cast(env->GetObjectField(params, fieldId))); + jni::ScopedLocalRef const wrappedValue(env.get(), + static_cast(env->GetObjectField(params, fieldId))); RethrowOnJniException(env); if (wrappedValue) result = jni::ToNativeString(env.get(), wrappedValue.get()); @@ -103,8 +102,8 @@ void SetHeaders(ScopedEnv & env, jobject const params, platform::HttpClient::Hea if (headers.empty()) return; - static jmethodID const setHeaders = env->GetMethodID( - g_httpParamsClazz, "setHeaders", "([Lapp/organicmaps/sdk/util/KeyValue;)V"); + static jmethodID const setHeaders = + env->GetMethodID(g_httpParamsClazz, "setHeaders", "([Lapp/organicmaps/sdk/util/KeyValue;)V"); RethrowOnJniException(env); @@ -115,8 +114,7 @@ void SetHeaders(ScopedEnv & env, jobject const params, platform::HttpClient::Hea void LoadHeaders(ScopedEnv & env, jobject const params, platform::HttpClient::Headers & headers) { - static jmethodID const getHeaders = - env->GetMethodID(g_httpParamsClazz, "getHeaders", "()[Ljava/lang/Object;"); + static jmethodID const getHeaders = env->GetMethodID(g_httpParamsClazz, "getHeaders", "()[Ljava/lang/Object;"); jni::ScopedLocalRef const headersArray( env.get(), static_cast(env->CallObjectMethod(params, getHeaders))); @@ -134,16 +132,15 @@ class Ids public: explicit Ids(ScopedEnv & env) { - m_fieldIds = - {{"httpMethod", GetHttpParamsFieldId(env, "httpMethod")}, - {"inputFilePath", GetHttpParamsFieldId(env, "inputFilePath")}, - {"outputFilePath", GetHttpParamsFieldId(env, "outputFilePath")}, - {"cookies", GetHttpParamsFieldId(env, "cookies")}, - {"receivedUrl", GetHttpParamsFieldId(env, "receivedUrl")}, - {"followRedirects", GetHttpParamsFieldId(env, "followRedirects", "Z")}, - {"loadHeaders", GetHttpParamsFieldId(env, "loadHeaders", "Z")}, - {"httpResponseCode", GetHttpParamsFieldId(env, "httpResponseCode", "I")}, - {"timeoutMillisec", GetHttpParamsFieldId(env, "timeoutMillisec", "I")}}; + m_fieldIds = {{"httpMethod", GetHttpParamsFieldId(env, "httpMethod")}, + {"inputFilePath", GetHttpParamsFieldId(env, "inputFilePath")}, + {"outputFilePath", GetHttpParamsFieldId(env, "outputFilePath")}, + {"cookies", GetHttpParamsFieldId(env, "cookies")}, + {"receivedUrl", GetHttpParamsFieldId(env, "receivedUrl")}, + {"followRedirects", GetHttpParamsFieldId(env, "followRedirects", "Z")}, + {"loadHeaders", GetHttpParamsFieldId(env, "loadHeaders", "Z")}, + {"httpResponseCode", GetHttpParamsFieldId(env, "httpResponseCode", "I")}, + {"timeoutMillisec", GetHttpParamsFieldId(env, "timeoutMillisec", "I")}}; } jfieldID GetId(std::string const & fieldName) const @@ -173,8 +170,7 @@ bool HttpClient::RunHttpRequest() static Ids ids(env); // Create and fill request params. - jni::ScopedLocalRef const jniUrl(env.get(), - jni::ToJavaString(env.get(), m_urlRequested)); + jni::ScopedLocalRef const jniUrl(env.get(), jni::ToJavaString(env.get(), m_urlRequested)); if (jni::HandleJavaException(env.get())) return false; @@ -190,14 +186,14 @@ bool HttpClient::RunHttpRequest() static jfieldID const dataField = env->GetFieldID(g_httpParamsClazz, "data", "[B"); if (!m_bodyData.empty()) { - jni::ScopedLocalRef const jniPostData( - env.get(), env->NewByteArray(static_cast(m_bodyData.size()))); + jni::ScopedLocalRef const jniPostData(env.get(), + env->NewByteArray(static_cast(m_bodyData.size()))); if (jni::HandleJavaException(env.get())) return false; env->SetByteArrayRegion(jniPostData.get(), 0, static_cast(m_bodyData.size()), - reinterpret_cast(m_bodyData.data())); + reinterpret_cast(m_bodyData.data())); if (jni::HandleJavaException(env.get())) return false; @@ -216,8 +212,7 @@ bool HttpClient::RunHttpRequest() SetString(env, httpParamsObject.get(), ids.GetId("cookies"), m_cookies); SetBoolean(env, httpParamsObject.get(), ids.GetId("followRedirects"), m_followRedirects); SetBoolean(env, httpParamsObject.get(), ids.GetId("loadHeaders"), m_loadHeaders); - SetInt(env, httpParamsObject.get(), ids.GetId("timeoutMillisec"), - static_cast(m_timeoutSec * 1000)); + SetInt(env, httpParamsObject.get(), ids.GetId("timeoutMillisec"), static_cast(m_timeoutSec * 1000)); SetHeaders(env, httpParamsObject.get(), m_headers); } @@ -226,12 +221,12 @@ bool HttpClient::RunHttpRequest() return false; } - static jmethodID const httpClientClassRun = - env->GetStaticMethodID(g_httpClientClazz, "run", - "(Lapp/organicmaps/sdk/util/HttpClient$Params;)Lapp/organicmaps/sdk/util/HttpClient$Params;"); + static jmethodID const httpClientClassRun = env->GetStaticMethodID( + g_httpClientClazz, "run", + "(Lapp/organicmaps/sdk/util/HttpClient$Params;)Lapp/organicmaps/sdk/util/HttpClient$Params;"); - jni::ScopedLocalRef const response(env.get(), env->CallStaticObjectMethod(g_httpClientClazz, - httpClientClassRun, httpParamsObject.get())); + jni::ScopedLocalRef const response( + env.get(), env->CallStaticObjectMethod(g_httpClientClazz, httpClientClassRun, httpParamsObject.get())); if (jni::HandleJavaException(env.get())) return false; @@ -247,8 +242,8 @@ bool HttpClient::RunHttpRequest() } // dataField is already cached above. - jni::ScopedLocalRef const jniData( - env.get(), static_cast(env->GetObjectField(response, dataField))); + jni::ScopedLocalRef const jniData(env.get(), + static_cast(env->GetObjectField(response, dataField))); if (jni::HandleJavaException(env.get())) return false; if (jniData) @@ -256,7 +251,7 @@ bool HttpClient::RunHttpRequest() jbyte * buffer = env->GetByteArrayElements(jniData.get(), nullptr); if (buffer) { - m_serverResponse.assign(reinterpret_cast(buffer), env->GetArrayLength(jniData.get())); + m_serverResponse.assign(reinterpret_cast(buffer), env->GetArrayLength(jniData.get())); env->ReleaseByteArrayElements(jniData.get(), buffer, JNI_ABORT); } } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Language.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Language.cpp index 6b0bd0353..800ff30d2 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Language.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/Language.cpp @@ -3,8 +3,8 @@ extern "C" { -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_util_Language_nativeNormalize(JNIEnv *env, jclass type, jstring lang) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_util_Language_nativeNormalize(JNIEnv * env, jclass type, + jstring lang) { std::string locale = languages::Normalize(jni::ToNativeString(env, lang)); return jni::ToJavaString(env, locale); diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/LogsManager.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/LogsManager.cpp index 272c94eda..1f35552e8 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/LogsManager.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/LogsManager.cpp @@ -1,10 +1,11 @@ #include #include "app/organicmaps/sdk/core/logging.hpp" -extern "C" { -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_util_log_LogsManager_nativeToggleCoreDebugLogs( - JNIEnv * /*env*/, jclass /*clazz*/, jboolean enabled) +extern "C" +{ +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_log_LogsManager_nativeToggleCoreDebugLogs(JNIEnv * /*env*/, + jclass /*clazz*/, + jboolean enabled) { jni::ToggleDebugLogs(enabled); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.cpp index 585bf6837..48aa184b7 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.cpp @@ -4,15 +4,14 @@ namespace network_policy { bool GetNetworkPolicyStatus(JNIEnv * env, jobject obj) { - static jmethodID const networkPolicyCanUseMethod = - jni::GetMethodID(env, obj, "canUseNetwork", "()Z"); + static jmethodID const networkPolicyCanUseMethod = jni::GetMethodID(env, obj, "canUseNetwork", "()Z"); return env->CallBooleanMethod(obj, networkPolicyCanUseMethod); } bool GetCurrentNetworkUsageStatus(JNIEnv * env) { static jmethodID const method = - jni::GetStaticMethodID(env, g_networkPolicyClazz, "getCurrentNetworkUsageStatus", "()Z"); + jni::GetStaticMethodID(env, g_networkPolicyClazz, "getCurrentNetworkUsageStatus", "()Z"); return env->CallStaticBooleanMethod(g_networkPolicyClazz, method); } } // namespace network_policy diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.hpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.hpp index 8c6bed5d7..684a4bdf7 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.hpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/NetworkPolicy.hpp @@ -4,4 +4,4 @@ namespace network_policy { bool GetNetworkPolicyStatus(JNIEnv * env, jobject obj); bool GetCurrentNetworkUsageStatus(JNIEnv * env); -} +} // namespace network_policy diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/StringUtils.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/StringUtils.cpp index a72f9e2d2..56e5b7ff4 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/StringUtils.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/StringUtils.cpp @@ -20,20 +20,21 @@ jobject MakeJavaPair(JNIEnv * env, std::string const & first, std::string const extern "C" { -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeIsHtml(JNIEnv * env, jclass thiz, jstring text) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeIsHtml(JNIEnv * env, jclass thiz, + jstring text) { return strings::IsHTML(jni::ToNativeString(env, text)); } -JNIEXPORT jboolean JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeContainsNormalized(JNIEnv * env, jclass thiz, jstring str, jstring substr) +JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeContainsNormalized(JNIEnv * env, jclass thiz, + jstring str, + jstring substr) { return search::ContainsNormalized(jni::ToNativeString(env, str), jni::ToNativeString(env, substr)); } -JNIEXPORT jobjectArray JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeFilterContainsNormalized(JNIEnv * env, jclass thiz, jobjectArray src, jstring jSubstr) +JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFilterContainsNormalized( + JNIEnv * env, jclass thiz, jobjectArray src, jstring jSubstr) { std::string const substr = jni::ToNativeString(env, jSubstr); int const length = env->GetArrayLength(src); @@ -49,43 +50,42 @@ Java_app_organicmaps_sdk_util_StringUtils_nativeFilterContainsNormalized(JNIEnv return jni::ToJavaStringArray(env, filtered); } -JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFormatSpeed( - JNIEnv * env, jclass thiz, jdouble metersPerSecond) +JNIEXPORT jint JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFormatSpeed(JNIEnv * env, jclass thiz, + jdouble metersPerSecond) { return measurement_utils::FormatSpeed(metersPerSecond, measurement_utils::GetMeasurementUnits()); } -JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFormatSpeedAndUnits( - JNIEnv * env, jclass thiz, jdouble metersPerSecond) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFormatSpeedAndUnits(JNIEnv * env, jclass thiz, + jdouble metersPerSecond) { auto const units = measurement_utils::GetMeasurementUnits(); return MakeJavaPair(env, measurement_utils::FormatSpeedNumeric(metersPerSecond, units), platform::GetLocalizedSpeedUnits(units)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeFormatDistance(JNIEnv * env, jclass, jdouble distanceInMeters) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeFormatDistance(JNIEnv * env, jclass, + jdouble distanceInMeters) { return ToJavaDistance(env, platform::Distance::CreateFormatted(distanceInMeters)); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedDistanceUnits(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedDistanceUnits(JNIEnv * env, + jclass) { auto const localizedUnits = platform::GetLocalizedDistanceUnits(); return MakeJavaPair(env, localizedUnits.m_high, localizedUnits.m_low); } -JNIEXPORT jobject JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedAltitudeUnits(JNIEnv * env, jclass) +JNIEXPORT jobject JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedAltitudeUnits(JNIEnv * env, + jclass) { auto const localizedUnits = platform::GetLocalizedAltitudeUnits(); return MakeJavaPair(env, localizedUnits.m_high, localizedUnits.m_low); } -JNIEXPORT jstring JNICALL -Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedSpeedUnits(JNIEnv * env, jclass) +JNIEXPORT jstring JNICALL Java_app_organicmaps_sdk_util_StringUtils_nativeGetLocalizedSpeedUnits(JNIEnv * env, jclass) { return jni::ToJavaString(env, platform::GetLocalizedSpeedUnits()); } -} // extern "C" +} // extern "C" diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/UiThread.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/UiThread.cpp index a6c313620..0072910ed 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/util/UiThread.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/util/UiThread.cpp @@ -4,8 +4,8 @@ extern "C" { // static void nativeProcessTask(long taskPointer); -JNIEXPORT void JNICALL -Java_app_organicmaps_sdk_util_concurrency_UiThread_nativeProcessTask(JNIEnv * env, jclass clazz, jlong taskPointer) +JNIEXPORT void JNICALL Java_app_organicmaps_sdk_util_concurrency_UiThread_nativeProcessTask(JNIEnv * env, jclass clazz, + jlong taskPointer) { android::GuiThread::ProcessTask(taskPointer); } diff --git a/android/sdk/src/main/cpp/app/organicmaps/sdk/vulkan/android_vulkan_context_factory.cpp b/android/sdk/src/main/cpp/app/organicmaps/sdk/vulkan/android_vulkan_context_factory.cpp index 07551d254..4f72a8595 100644 --- a/android/sdk/src/main/cpp/app/organicmaps/sdk/vulkan/android_vulkan_context_factory.cpp +++ b/android/sdk/src/main/cpp/app/organicmaps/sdk/vulkan/android_vulkan_context_factory.cpp @@ -43,8 +43,7 @@ void AndroidVulkanContextFactory::SetVulkanSurface() createInfo.window = m_nativeWindow; VkResult statusCode; - statusCode = vkCreateAndroidSurfaceKHR(m_vulkanInstance, &createInfo, nullptr, - &m_surface); + statusCode = vkCreateAndroidSurfaceKHR(m_vulkanInstance, &createInfo, nullptr, &m_surface); if (statusCode != VK_SUCCESS) { LOG_ERROR_VK_CALL(vkCreateAndroidSurfaceKHR, statusCode); diff --git a/dev_sandbox/imgui_renderer.cpp b/dev_sandbox/imgui_renderer.cpp index 689b2cb47..3d676f03e 100644 --- a/dev_sandbox/imgui_renderer.cpp +++ b/dev_sandbox/imgui_renderer.cpp @@ -12,8 +12,7 @@ #include #include -ImguiRenderer::ImguiRenderer() - : m_state(df::CreateRenderState(gpu::Program::ImGui, df::DepthLayer::GuiLayer)) +ImguiRenderer::ImguiRenderer() : m_state(df::CreateRenderState(gpu::Program::ImGui, df::DepthLayer::GuiLayer)) { m_state.SetDepthTestEnabled(false); m_state.SetBlending(dp::Blending(true)); @@ -91,21 +90,20 @@ void ImguiRenderer::Render(ref_ptr context, ref_ptrPushDebugLabel("ImGui Rendering"); - m_mesh->Render(context, gpuProgram, m_state, programManager->GetParamsSetter(), params, - [&, this]() - { - context->SetCullingEnabled(false); - for (auto const & drawCall : dataBuffer.m_drawCalls) - { - uint32_t y = drawCall.clipRect.y; - if (context->GetApiVersion() == dp::ApiVersion::OpenGLES3) - y = dataBuffer.m_height - y - drawCall.clipRect.w; - context->SetScissor(drawCall.clipRect.x, y, drawCall.clipRect.z, drawCall.clipRect.w); - m_mesh->DrawPrimitivesSubsetIndexed(context, drawCall.indexCount, drawCall.startIndex); - } - context->SetCullingEnabled(true); - context->SetScissor(0, 0, dataBuffer.m_width, dataBuffer.m_height); - }); + m_mesh->Render(context, gpuProgram, m_state, programManager->GetParamsSetter(), params, [&, this]() + { + context->SetCullingEnabled(false); + for (auto const & drawCall : dataBuffer.m_drawCalls) + { + uint32_t y = drawCall.clipRect.y; + if (context->GetApiVersion() == dp::ApiVersion::OpenGLES3) + y = dataBuffer.m_height - y - drawCall.clipRect.w; + context->SetScissor(drawCall.clipRect.x, y, drawCall.clipRect.z, drawCall.clipRect.w); + m_mesh->DrawPrimitivesSubsetIndexed(context, drawCall.indexCount, drawCall.startIndex); + } + context->SetCullingEnabled(true); + context->SetScissor(0, 0, dataBuffer.m_width, dataBuffer.m_height); + }); context->PopDebugLabel(); } @@ -209,7 +207,7 @@ void ImguiRenderer::UpdateBuffers() for (int cmdIndex = 0; cmdIndex < cmdList->CmdBuffer.Size; ++cmdIndex) { - const ImDrawCmd cmd = cmdList->CmdBuffer[cmdIndex]; + ImDrawCmd const cmd = cmdList->CmdBuffer[cmdIndex]; ImVec2 clipMin((cmd.ClipRect.x - clipOff.x) * clipScale.x, (cmd.ClipRect.y - clipOff.y) * clipScale.y); ImVec2 clipMax((cmd.ClipRect.z - clipOff.x) * clipScale.x, (cmd.ClipRect.w - clipOff.y) * clipScale.y); if (clipMin.x < 0.0f) diff --git a/dev_sandbox/imgui_renderer.hpp b/dev_sandbox/imgui_renderer.hpp index 6e048c8e0..c68d70e27 100644 --- a/dev_sandbox/imgui_renderer.hpp +++ b/dev_sandbox/imgui_renderer.hpp @@ -18,8 +18,7 @@ class ImguiRenderer { public: ImguiRenderer(); - void Render(ref_ptr context, - ref_ptr textureManager, + void Render(ref_ptr context, ref_ptr textureManager, ref_ptr programManager); void Update(std::function const & uiCallback); void Reset(); diff --git a/dev_sandbox/main.cpp b/dev_sandbox/main.cpp index e1ce599fb..ebeb0dbb2 100644 --- a/dev_sandbox/main.cpp +++ b/dev_sandbox/main.cpp @@ -7,9 +7,9 @@ #include "coding/reader.hpp" -#include "base/math.hpp" #include "base/logging.hpp" #include "base/macros.hpp" +#include "base/math.hpp" #include "std/target_os.hpp" @@ -81,7 +81,10 @@ bool ValidateLogAbortLevel(char const * flagname, std::string const & value) bool const g_logAbortLevelDummy = gflags::RegisterFlagValidator(&FLAGS_log_abort_level, &ValidateLogAbortLevel); -void errorCallback(int error, char const * description) { LOG(LERROR, ("GLFW (", error, "):", description)); } +void errorCallback(int error, char const * description) +{ + LOG(LERROR, ("GLFW (", error, "):", description)); +} struct WindowHandlers { @@ -143,7 +146,7 @@ void FormatMapSize(uint64_t sizeInBytes, std::string & units, size_t & sizeToDow std::string_view GetMyPoisitionText(location::EMyPositionMode mode) { - switch(mode) + switch (mode) { case location::EMyPositionMode::PendingPosition: return "Pending"; case location::EMyPositionMode::NotFollowNoPosition: return "No position"; @@ -157,9 +160,12 @@ std::string_view GetMyPoisitionText(location::EMyPositionMode mode) dp::ApiVersion GetApiVersion(char const * apiLabel) { std::string_view v(apiLabel); - if (v == "Metal") return dp::ApiVersion::Metal; - if (v == "Vulkan") return dp::ApiVersion::Vulkan; - if (v == "OpenGL") return dp::ApiVersion::OpenGLES3; + if (v == "Metal") + return dp::ApiVersion::Metal; + if (v == "Vulkan") + return dp::ApiVersion::Vulkan; + if (v == "OpenGL") + return dp::ApiVersion::OpenGLES3; return dp::ApiVersion::Invalid; } @@ -231,17 +237,14 @@ int main(int argc, char * argv[]) // Init GLFW. glfwSetErrorCallback(errorCallback); if (!glfwInit()) - { return -1; - } glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); #if defined(OMIM_OS_WINDOWS) glfwWindowHint(GLFW_SCALE_TO_MONITOR, GLFW_TRUE); #endif auto monitor = glfwGetPrimaryMonitor(); auto mode = glfwGetVideoMode(monitor); - GLFWwindow * window = - glfwCreateWindow(mode->width, mode->height, "Developer Render Sandbox", nullptr, nullptr); + GLFWwindow * window = glfwCreateWindow(mode->width, mode->height, "Developer Render Sandbox", nullptr, nullptr); int fbWidth = 0, fbHeight = 0; glfwGetFramebufferSize(window, &fbWidth, &fbHeight); float xs = 1.0f, ys = 1.0f; @@ -277,16 +280,14 @@ int main(int argc, char * argv[]) .m_visualScale = visualScale, .m_surfaceWidth = fbWidth, .m_surfaceHeight = fbHeight, - .m_renderInjectionHandler = [&](ref_ptr context, - ref_ptr textureManager, - ref_ptr programManager, - bool shutdown) - { - if (shutdown) - imguiRenderer.Reset(); - else - imguiRenderer.Render(context, textureManager, programManager); - }}; + .m_renderInjectionHandler = [&](ref_ptr context, ref_ptr textureManager, + ref_ptr programManager, bool shutdown) + { + if (shutdown) + imguiRenderer.Reset(); + else + imguiRenderer.Render(context, textureManager, programManager); + }}; gui::Skin guiSkin(gui::ResolveGuiSkinFile("default"), visualScale); guiSkin.Resize(fbWidth, fbHeight); guiSkin.ForEach([&](gui::EWidget widget, gui::Position const & pos) { drapeParams.m_widgetsInitInfo[widget] = pos; }); @@ -301,7 +302,7 @@ int main(int argc, char * argv[]) drapeParams.m_surfaceHeight = fbHeight; contextFactory = CreateContextFactory(window, drapeParams.m_apiVersion, m2::PointU(static_cast(drapeParams.m_surfaceWidth), - static_cast(drapeParams.m_surfaceHeight))); + static_cast(drapeParams.m_surfaceHeight))); auto params = drapeParams; framework.CreateDrapeEngine(make_ref(contextFactory), std::move(params)); OnCreateDrapeEngine(window, version, make_ref(contextFactory)); @@ -360,10 +361,8 @@ int main(int argc, char * argv[]) framework.OnSize(fbWidth, fbHeight); } }; - glfwSetWindowContentScaleCallback(window, [](GLFWwindow *, float xscale, float yscale) - { - handlers.onContentScale(xscale, yscale); - }); + glfwSetWindowContentScaleCallback( + window, [](GLFWwindow *, float xscale, float yscale) { handlers.onContentScale(xscale, yscale); }); // Location handler std::optional lastLatLon; @@ -384,9 +383,7 @@ int main(int argc, char * argv[]) .m_horizontalAccuracy = 10, .m_bearing = bearingEnabled ? bearing : -1.0f}); if (bearingEnabled) - { framework.OnCompassUpdate(location::CompassInfo{.m_bearing = math::DegToRad(bearing)}); - } } }; @@ -436,19 +433,17 @@ int main(int argc, char * argv[]) framework.GetStorage().Subscribe( [&](storage::CountryId const & countryId) - { - // Storage also calls notifications for parents, but we are interested in leafs only. - if (framework.GetStorage().IsLeaf(countryId)) - onCountryChanged(countryId); - }, - [&](storage::CountryId const & countryId, downloader::Progress const & progress) - { - std::stringstream str; - str << "Downloading (" << countryId << ") " << (progress.m_bytesDownloaded * 100 / progress.m_bytesTotal) - << "%"; - downloadStatusLabel = str.str(); - framework.MakeFrameActive(); - }); + { + // Storage also calls notifications for parents, but we are interested in leafs only. + if (framework.GetStorage().IsLeaf(countryId)) + onCountryChanged(countryId); + }, [&](storage::CountryId const & countryId, downloader::Progress const & progress) + { + std::stringstream str; + str << "Downloading (" << countryId << ") " << (progress.m_bytesDownloaded * 100 / progress.m_bytesTotal) << "%"; + downloadStatusLabel = str.str(); + framework.MakeFrameActive(); + }); // Handle mouse buttons. bool touchActive = false; @@ -491,13 +486,12 @@ int main(int argc, char * argv[]) touchMods = 0; } }; - glfwSetMouseButtonCallback(window, - [](GLFWwindow * wnd, int button, int action, int mods) - { - double x, y; - glfwGetCursorPos(wnd, &x, &y); - handlers.onMouseButton(x, y, button, action, mods); - }); + glfwSetMouseButtonCallback(window, [](GLFWwindow * wnd, int button, int action, int mods) + { + double x, y; + glfwGetCursorPos(wnd, &x, &y); + handlers.onMouseButton(x, y, button, action, mods); + }); // Handle mouse moving. handlers.onMouseMove = [&](double x, double y) @@ -509,19 +503,13 @@ int main(int argc, char * argv[]) framework.MakeFrameActive(); if (touchActive) - { #if defined(OMIM_OS_MAC) x *= visualScale; - y *= visualScale; + y *= visualScale; #endif - framework.TouchEvent( - GetTouchEvent(framework, x, y, touchMods, df::TouchEvent::TOUCH_MOVE)); - } + framework.TouchEvent(GetTouchEvent(framework, x, y, touchMods, df::TouchEvent::TOUCH_MOVE)); }; - glfwSetCursorPosCallback(window, [](GLFWwindow *, double x, double y) - { - handlers.onMouseMove(x, y); - }); + glfwSetCursorPosCallback(window, [](GLFWwindow *, double x, double y) { handlers.onMouseMove(x, y); }); // Handle scroll. handlers.onScroll = [&](double x, double y, double xOffset, double yOffset) @@ -543,20 +531,17 @@ int main(int argc, char * argv[]) double const factor = yOffset * kSensitivity; framework.Scale(exp(factor), m2::PointD(x, y), false); }; - glfwSetScrollCallback(window, - [](GLFWwindow * wnd, double xoffset, double yoffset) - { - double x, y; - glfwGetCursorPos(wnd, &x, &y); - handlers.onScroll(x, y, xoffset, yoffset); - }); + glfwSetScrollCallback(window, [](GLFWwindow * wnd, double xoffset, double yoffset) + { + double x, y; + glfwGetCursorPos(wnd, &x, &y); + handlers.onScroll(x, y, xoffset, yoffset); + }); // Keys. handlers.onKeyboardButton = [&](int key, int scancode, int action, int mods) {}; glfwSetKeyCallback(window, [](GLFWwindow *, int key, int scancode, int action, int mods) - { - handlers.onKeyboardButton(key, scancode, action, mods); - }); + { handlers.onKeyboardButton(key, scancode, action, mods); }); // imGui UI bool enableDebugRectRendering = false; @@ -569,12 +554,9 @@ int main(int argc, char * argv[]) // Drape controls char const * apiLabels[] = { #if defined(OMIM_OS_MAC) - "Metal", - "Vulkan", - "OpenGL" + "Metal", "Vulkan", "OpenGL" #elif defined(OMIM_OS_LINUX) - "Vulkan", - "OpenGL" + "Vulkan", "OpenGL" #endif }; static int currentAPI = 0; @@ -656,7 +638,7 @@ int main(int argc, char * argv[]) // Render imGui UI ImGui_ImplGlfw_NewFrame(); - ImGuiIO& io = ImGui::GetIO(); + ImGuiIO & io = ImGui::GetIO(); #if defined(OMIM_OS_LINUX) // Apply correct visual scale on Linux // In glfw for Linux, window size and framebuffer size are the same, diff --git a/dev_sandbox/main_linux.cpp b/dev_sandbox/main_linux.cpp index 40dd14873..2cdaf897b 100644 --- a/dev_sandbox/main_linux.cpp +++ b/dev_sandbox/main_linux.cpp @@ -8,8 +8,8 @@ #define GLFW_EXPOSE_NATIVE_X11 #include -#include #include +#include #include // Workaround for TestFunction::Always compilation issue: @@ -80,23 +80,23 @@ public: // Based on: https://github.com/glfw/glfw/blob/master/src/glx_context.c #define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 -#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 -#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 -#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 -#define GLX_PBUFFER_HEIGHT 0x8040 -#define GLX_PBUFFER_WIDTH 0x8041 -#define GLX_DOUBLEBUFFER 5 -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PBUFFER_BIT 0x00000004 -#define GLX_RGBA_BIT 0x00000001 -#define GLX_RED_SIZE 8 -#define GLX_GREEN_SIZE 9 -#define GLX_BLUE_SIZE 10 -#define GLX_ALPHA_SIZE 11 -#define GLX_DEPTH_SIZE 12 -#define GLX_STENCIL_SIZE 13 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_DOUBLEBUFFER 5 +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 typedef XID GLXDrawable; typedef struct __GLXcontext * GLXContext; @@ -104,13 +104,13 @@ typedef XID GLXPbuffer; typedef struct __GLXFBConfig * GLXFBConfig; typedef void (*__GLXextproc)(void); -typedef __GLXextproc (*PFNGLXGETPROCADDRESSPROC)(const GLubyte * procName); +typedef __GLXextproc (*PFNGLXGETPROCADDRESSPROC)(GLubyte const * procName); typedef int (*PFNXFREE)(void *); -typedef GLXFBConfig * (*PFNGLXCHOOSEFBCONFIGPROC)(Display *, int, const int *, int *); -typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARB)(Display *, GLXFBConfig, GLXContext, Bool, const int *); +typedef GLXFBConfig * (*PFNGLXCHOOSEFBCONFIGPROC)(Display *, int, int const *, int *); +typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARB)(Display *, GLXFBConfig, GLXContext, Bool, int const *); typedef void (*PFNGLXDESTROYCONTEXT)(Display *, GLXContext); -typedef GLXPbuffer (*PFNGLXCREATEPBUFFERPROC)(Display *, GLXFBConfig, const int *); +typedef GLXPbuffer (*PFNGLXCREATEPBUFFERPROC)(Display *, GLXFBConfig, int const *); typedef void (*PFNGLXDESTROYPBUFFER)(Display *, GLXPbuffer); typedef Bool (*PFNGLXMAKECURRENTPROC)(Display *, GLXDrawable, GLXContext); typedef void (*PFNGLXSWAPBUFFERSPROC)(Display *, GLXDrawable); @@ -129,9 +129,7 @@ struct GLXFunctions { m_module = dlopen(lib, RTLD_LAZY | RTLD_LOCAL); if (m_module) - { break; - } } CHECK(m_module != nullptr, ("Failed to initialize GLX")); @@ -154,9 +152,7 @@ struct GLXFunctions ~GLXFunctions() { if (m_module) - { dlclose(m_module); - } } PFNXFREE XFree = nullptr; @@ -201,30 +197,41 @@ class LinuxGLContext : public dp::OGLContext public: LinuxGLContext(GLXFunctions const & glx, Display * display, Window window, LinuxGLContext * contextToShareWith, bool usePixelBuffer) - : m_glx(glx), m_display(display), m_window(window) + : m_glx(glx) + , m_display(display) + , m_window(window) { - int visualAttribs[] = { - GLX_DOUBLEBUFFER, True, - GLX_RENDER_TYPE, GLX_RGBA_BIT, - GLX_DRAWABLE_TYPE, (usePixelBuffer ? GLX_PBUFFER_BIT : GLX_WINDOW_BIT), - GLX_RED_SIZE, 8, - GLX_GREEN_SIZE, 8, - GLX_BLUE_SIZE, 8, - GLX_ALPHA_SIZE, 8, - GLX_DEPTH_SIZE, 24, - GLX_STENCIL_SIZE, 8, - None - }; - int contextAttribs[] = { - GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, - GLX_CONTEXT_MAJOR_VERSION_ARB, 4, - GLX_CONTEXT_MINOR_VERSION_ARB, 1, - None}; + int visualAttribs[] = {GLX_DOUBLEBUFFER, + True, + GLX_RENDER_TYPE, + GLX_RGBA_BIT, + GLX_DRAWABLE_TYPE, + (usePixelBuffer ? GLX_PBUFFER_BIT : GLX_WINDOW_BIT), + GLX_RED_SIZE, + 8, + GLX_GREEN_SIZE, + 8, + GLX_BLUE_SIZE, + 8, + GLX_ALPHA_SIZE, + 8, + GLX_DEPTH_SIZE, + 24, + GLX_STENCIL_SIZE, + 8, + None}; + int contextAttribs[] = {GLX_CONTEXT_PROFILE_MASK_ARB, + GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + GLX_CONTEXT_MAJOR_VERSION_ARB, + 4, + GLX_CONTEXT_MINOR_VERSION_ARB, + 1, + None}; int fbcount = 0; if (GLXFBConfig * config = m_glx.glXChooseFBConfig(display, DefaultScreen(display), visualAttribs, &fbcount)) { - m_context = - m_glx.glXCreateContextAttribsARB(display, config[0], contextToShareWith ? contextToShareWith->m_context : 0, True, contextAttribs); + m_context = m_glx.glXCreateContextAttribsARB( + display, config[0], contextToShareWith ? contextToShareWith->m_context : 0, True, contextAttribs); CHECK(m_context != nullptr, ("Failed to create GLX context")); if (usePixelBuffer) @@ -368,9 +375,7 @@ drape_ptr CreateContextFactory(GLFWwindow * window, } if (api == dp::ApiVersion::OpenGLES3) - { return make_unique_dp(glfwGetX11Display(), glfwGetX11Window(window)); - } ASSERT(false, ("API is not available yet")); return nullptr; diff --git a/generator/address_enricher.cpp b/generator/address_enricher.cpp index 4fdc59696..438ac270d 100644 --- a/generator/address_enricher.cpp +++ b/generator/address_enricher.cpp @@ -34,22 +34,19 @@ std::pair AddressEnricher::RawEntryBase::GetHNRange() const if (f.m_type != Token::TYPE_NUMBER || t.m_type != Token::TYPE_NUMBER) return kInvalidRange; - return { ToUInt(f.m_value), ToUInt(t.m_value) }; + return {ToUInt(f.m_value), ToUInt(t.m_value)}; } std::string DebugPrint(AddressEnricher::Stats const & s) { - return - "{ m_noStreet = " + std::to_string(s.m_noStreet) + - "; m_existInterpol = " + std::to_string(s.m_existInterpol) + - "; m_existSingle = " + std::to_string(s.m_existSingle) + - "; m_enoughAddrs = " + std::to_string(s.m_enoughAddrs) + - "; m_addedSingle = " + std::to_string(s.m_addedSingle) + - "; m_addedBegEnd = " + std::to_string(s.m_addedBegEnd) + - "; m_addedInterpol = " + std::to_string(s.m_addedInterpol) + " }"; + return "{ m_noStreet = " + std::to_string(s.m_noStreet) + "; m_existInterpol = " + std::to_string(s.m_existInterpol) + + "; m_existSingle = " + std::to_string(s.m_existSingle) + + "; m_enoughAddrs = " + std::to_string(s.m_enoughAddrs) + + "; m_addedSingle = " + std::to_string(s.m_addedSingle) + + "; m_addedBegEnd = " + std::to_string(s.m_addedBegEnd) + + "; m_addedInterpol = " + std::to_string(s.m_addedInterpol) + " }"; } - AddressEnricher::AddressEnricher() { auto const & cl = classif(); @@ -223,7 +220,7 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const std::vector> eSegs; eSegs.reserve(e.m_points.size() - 1); for (size_t i = 1; i < e.m_points.size(); ++i) - eSegs.emplace_back(e.m_points[i-1], e.m_points[i]); + eSegs.emplace_back(e.m_points[i - 1], e.m_points[i]); /// @todo Check nodes distance for now. Should make more honest algo. auto const isClose = [&e, &eSegs](feature::FeatureBuilder const & fb) @@ -237,9 +234,7 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const auto const ll = mercator::ToLatLon(p); auto const check = [&ll](m2::PointD const & p) - { - return ms::DistanceOnEarth(ll, mercator::ToLatLon(p)) < kDistanceThresholdM; - }; + { return ms::DistanceOnEarth(ll, mercator::ToLatLon(p)) < kDistanceThresholdM; }; if (!eSegs.empty()) { @@ -268,7 +263,7 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const // First of all - compare street's name. strings::UniString fbStreetKey = search::GetNormalizedStreetName(params.GetStreet()); - std::string streetName; // original street's name, valid if isStreet == true + std::string streetName; // original street's name, valid if isStreet == true if (isStreet) { // Fancy object, highway=pedestrian with addr: https://www.openstreetmap.org/way/415336229 @@ -323,7 +318,7 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const auto const & geom = fb.GetOuterGeometry(); for (size_t i = 1; i < geom.size(); ++i) { - m2::ParametrizedSegment seg(geom[i-1], geom[i]); + m2::ParametrizedSegment seg(geom[i - 1], geom[i]); /// @todo Calculate e.m_points LL once? for (auto const & p : e.m_points) if (mercator::DistanceOnEarth(p, seg.ClosestPointTo(p)) < kDistanceThresholdM) @@ -349,8 +344,8 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const size_t const i = hnRange.find(':'); CHECK(i != std::string::npos, (hnRange)); uint64_t left, right; - CHECK(strings::to_uint(hnRange.substr(0, i), left) && - strings::to_uint(hnRange.substr(i + 1), right), (hnRange)); + CHECK(strings::to_uint(hnRange.substr(0, i), left) && strings::to_uint(hnRange.substr(i + 1), right), + (hnRange)); res.interpol = !(left >= range.second || right <= range.first); } @@ -360,4 +355,4 @@ AddressEnricher::FoundT AddressEnricher::Match(Entry & e) const return res; } -} // namespace generator +} // namespace generator diff --git a/generator/address_enricher.hpp b/generator/address_enricher.hpp index 75d54537d..b8df2d8f3 100644 --- a/generator/address_enricher.hpp +++ b/generator/address_enricher.hpp @@ -32,7 +32,8 @@ public: std::pair GetHNRange() const; /// @} - template void Save(TSink & sink) const + template + void Save(TSink & sink) const { rw::Write(sink, m_from); rw::Write(sink, m_to); @@ -42,7 +43,8 @@ public: WriteToSink(sink, static_cast(m_interpol)); } - template void Load(TSource & src) + template + void Load(TSource & src) { rw::Read(src, m_from); rw::Read(src, m_to); @@ -62,7 +64,7 @@ public: void AddSrc(feature::FeatureBuilder && fb); - using TFBCollectFn = std::function; + using TFBCollectFn = std::function; void ProcessRawEntries(std::string const & path, TFBCollectFn const & fn); // Public for tests. @@ -99,4 +101,4 @@ private: std::map m_interpolType; }; -} // namespace generator +} // namespace generator diff --git a/generator/address_parser/address_parser_tests/parser_tests.cpp b/generator/address_parser/address_parser_tests/parser_tests.cpp index a2566a98c..d293151a7 100644 --- a/generator/address_parser/address_parser_tests/parser_tests.cpp +++ b/generator/address_parser/address_parser_tests/parser_tests.cpp @@ -25,7 +25,9 @@ UNIT_TEST(TigerParser_Smoke) TEST(tiger::ParseLine("9587;9619;all;;Platte;MO;64152;LINESTRING(-94.691917 39.210393,-94.692370 39.210351)", e), ()); e = {}; - TEST(tiger::ParseLine("698;600;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.970484 39.464604,-77.970540 39.464630)", e), ()); + TEST(tiger::ParseLine("698;600;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.970484 39.464604,-77.970540 39.464630)", + e), + ()); TEST_EQUAL(e.m_from, "600", ()); TEST_EQUAL(e.m_to, "698", ()); TEST_EQUAL(e.m_street, "Boston St", ()); @@ -33,10 +35,14 @@ UNIT_TEST(TigerParser_Smoke) TEST_EQUAL(e.m_interpol, feature::InterpolType::Any, ()); TEST_EQUAL(e.m_geom.size(), 1, ()); - TEST(ms::LatLon((39.464604 + 39.464630) / 2.0, (-77.970484 -77.970540) / 2.0).EqualDxDy(e.m_geom.back(), kEpsLL), ()); + TEST(ms::LatLon((39.464604 + 39.464630) / 2.0, (-77.970484 - 77.970540) / 2.0).EqualDxDy(e.m_geom.back(), kEpsLL), + ()); e = {}; - TEST(tiger::ParseLine("798;700;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.968929 39.463906,-77.969118 39.463990,-77.969427 39.464129,-77.969946 39.464353,-77.970027 39.464389)", e), ()); + TEST(tiger::ParseLine("798;700;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.968929 39.463906,-77.969118 " + "39.463990,-77.969427 39.464129,-77.969946 39.464353,-77.970027 39.464389)", + e), + ()); TEST_EQUAL(e.m_from, "700", ()); TEST_EQUAL(e.m_to, "798", ()); TEST_EQUAL(e.m_street, "Boston St", ()); @@ -47,7 +53,11 @@ UNIT_TEST(TigerParser_Smoke) TEST(ms::LatLon(39.463906, -77.968929).EqualDxDy(e.m_geom.back(), kEpsLL), ()); TEST(ms::LatLon(39.464389, -77.970027).EqualDxDy(e.m_geom.front(), kEpsLL), ()); - TEST(tiger::ParseLine("0;98;even;Austin Ln;Mifflin;PA;17044;LINESTRING(-77.634119 40.597239,-77.634200 40.597288,-77.634679 40.598169,-77.634835 40.598393,-77.635116 40.598738,-77.635518 40.599388,-77.635718 40.599719,-77.635833 40.599871,-77.635856 40.599920)", e), ()); + TEST(tiger::ParseLine("0;98;even;Austin Ln;Mifflin;PA;17044;LINESTRING(-77.634119 40.597239,-77.634200 " + "40.597288,-77.634679 40.598169,-77.634835 40.598393,-77.635116 40.598738,-77.635518 " + "40.599388,-77.635718 40.599719,-77.635833 40.599871,-77.635856 40.599920)", + e), + ()); TEST_EQUAL(e.m_from, "0", ()); TEST_EQUAL(e.m_to, "98", ()); } @@ -55,6 +65,7 @@ UNIT_TEST(TigerParser_Smoke) class TmpDir { std::string const m_path = "./addrs"; + public: std::string const & Get() const { return m_path; } @@ -63,10 +74,7 @@ public: (void)Platform::RmDirRecursively(m_path); TEST(Platform::MkDirChecked(m_path), ()); } - ~TmpDir() - { - TEST(Platform::RmDirRecursively(m_path), ()); - } + ~TmpDir() { TEST(Platform::RmDirRecursively(m_path), ()); } }; UNIT_TEST(Processor_Smoke) @@ -160,7 +168,9 @@ UNIT_CLASS_TEST(TestFixture, Generator_Smoke) { std::stringstream ss; ss << "698;600;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.970484 39.464604,-77.970540 39.464630)" << "\n" - << "798;700;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.968929 39.463906,-77.969118 39.463990,-77.969427 39.464129,-77.969946 39.464353,-77.970027 39.464389)" << "\n"; + << "798;700;all;Boston St;Berkeley;WV;25401;LINESTRING(-77.968929 39.463906,-77.969118 39.463990,-77.969427 " + "39.464129,-77.969946 39.464353,-77.970027 39.464389)" + << "\n"; Parse(ss); @@ -170,7 +180,8 @@ UNIT_CLASS_TEST(TestFixture, Generator_Smoke) UNIT_CLASS_TEST(TestFixture, Generator_Filter_SF1) { std::stringstream ss; - ss << "601;699;all;Francisco St;San Francisco;CA;94133;LINESTRING(-122.416189 37.804256,-122.416526 37.804215)" << "\n"; + ss << "601;699;all;Francisco St;San Francisco;CA;94133;LINESTRING(-122.416189 37.804256,-122.416526 37.804215)" + << "\n"; Parse(ss); @@ -190,8 +201,10 @@ UNIT_CLASS_TEST(TestFixture, Generator_Filter_NY) UNIT_CLASS_TEST(TestFixture, Generator_Filter_SF2) { std::stringstream ss; - ss << "744;752;all;Francisco St;San Francisco;CA;94133;LINESTRING(-122.417593 37.804248,-122.417686 37.804236)" << "\n" - << "754;798;even;Francisco St;San Francisco;CA;94133;LINESTRING(-122.417933 37.804205,-122.418204 37.804171)" << "\n"; + ss << "744;752;all;Francisco St;San Francisco;CA;94133;LINESTRING(-122.417593 37.804248,-122.417686 37.804236)" + << "\n" + << "754;798;even;Francisco St;San Francisco;CA;94133;LINESTRING(-122.417933 37.804205,-122.418204 37.804171)" + << "\n"; Parse(ss); @@ -201,8 +214,12 @@ UNIT_CLASS_TEST(TestFixture, Generator_Filter_SF2) UNIT_CLASS_TEST(TestFixture, Generator_Street_Name) { std::stringstream ss; - ss << "599;501;odd;Seventh St;Marshall;MN;56757;LINESTRING(-96.878165 48.451707,-96.878047 48.451722,-96.877150 48.451844,-96.877034 48.451860)" << "\n" - << "598;500;even;Seventh St;Marshall;MN;56757;LINESTRING(-96.878214 48.451868,-96.878097 48.451884,-96.877200 48.452006,-96.877084 48.452022)" << "\n"; + ss << "599;501;odd;Seventh St;Marshall;MN;56757;LINESTRING(-96.878165 48.451707,-96.878047 48.451722,-96.877150 " + "48.451844,-96.877034 48.451860)" + << "\n" + << "598;500;even;Seventh St;Marshall;MN;56757;LINESTRING(-96.878214 48.451868,-96.878097 48.451884,-96.877200 " + "48.452006,-96.877084 48.452022)" + << "\n"; Parse(ss); @@ -240,4 +257,4 @@ UNIT_CLASS_TEST(TestFixture, Generator_Street_Name) TEST_EQUAL(count, 2, ()); } -} // namespace addr_parser_tests +} // namespace addr_parser_tests diff --git a/generator/address_parser/parser_tool.cpp b/generator/address_parser/parser_tool.cpp index 2b91daff5..073284f0e 100644 --- a/generator/address_parser/parser_tool.cpp +++ b/generator/address_parser/parser_tool.cpp @@ -8,16 +8,15 @@ #include - DEFINE_string(data_path, "./data", "Data path with 'borders' folder inside"); DEFINE_string(output_path, "", "Output files path"); DEFINE_uint64(threads_count, 0, "Desired number of threads. 0 - number of threads is set automatically"); - MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) { std::string usage("Tiger addresses processor. Sample usage:\n"); - gflags::SetUsageMessage(usage + "tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | " + argv[0] + " --output_path=... "); + gflags::SetUsageMessage(usage + "tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | " + argv[0] + + " --output_path=... "); gflags::ParseCommandLineFlags(&argc, &argv, true); diff --git a/generator/address_parser/processor.cpp b/generator/address_parser/processor.cpp index b3c3a1b2d..230761c01 100644 --- a/generator/address_parser/processor.cpp +++ b/generator/address_parser/processor.cpp @@ -10,7 +10,6 @@ #include "defines.hpp" - namespace addr_generator { @@ -18,8 +17,7 @@ Processor::Processor(std::string const & dataPath, std::string const & outputPat : m_affiliation(dataPath, true /* haveBordersForWholeWorld */) , m_workers(numThreads) , m_outputPath(outputPath) -{ -} +{} FileWriter & Processor::GetWriter(std::string const & country) { @@ -90,4 +88,4 @@ void Processor::Run(std::istream & is) LOG(LINFO, ("Total entries:", total, "Incomplete:", incomplete)); } -} // namespace addr_generator +} // namespace addr_generator diff --git a/generator/address_parser/processor.hpp b/generator/address_parser/processor.hpp index db9b1e687..920937db2 100644 --- a/generator/address_parser/processor.hpp +++ b/generator/address_parser/processor.hpp @@ -29,4 +29,4 @@ public: void Run(std::istream & is); }; -} // namespace addr_generator +} // namespace addr_generator diff --git a/generator/address_parser/tiger_parser.cpp b/generator/address_parser/tiger_parser.cpp index 2a5dbbfbf..aefa9cbbd 100644 --- a/generator/address_parser/tiger_parser.cpp +++ b/generator/address_parser/tiger_parser.cpp @@ -30,7 +30,7 @@ void ParseGeometry(std::string_view s, std::vector & geom) CHECK(i != std::string_view::npos, (s)); CHECK(to_double(s.substr(0, i), last.m_lon), (s)); - CHECK(to_double(s.substr(i+1), last.m_lat), (s)); + CHECK(to_double(s.substr(i + 1), last.m_lat), (s)); if (!skipPoint()) geom.push_back(last); @@ -42,7 +42,7 @@ void ParseGeometry(std::string_view s, std::vector & geom) if (geom.size() == 1) { // Set one middle point address. - back = ms::LatLon{ (back.m_lat + last.m_lat) / 2.0, (back.m_lon + last.m_lon) / 2.0 }; + back = ms::LatLon{(back.m_lat + last.m_lat) / 2.0, (back.m_lon + last.m_lon) / 2.0}; } else { @@ -71,15 +71,21 @@ bool ParseLine(std::string_view line, AddressEntry & e) if (std::count(line.begin(), line.end(), ';') != 7) return false; - TokenizeIterator it( - line.begin(), line.end(), ";"); + TokenizeIterator it(line.begin(), + line.end(), ";"); - e.m_from = *it; ++it; - e.m_to = *it; ++it; - e.m_interpol = ParseInterpolation(*it); ++it; - e.m_street = *it; ++it; - ++it; ++it; - e.m_postcode = *it; ++it; + e.m_from = *it; + ++it; + e.m_to = *it; + ++it; + e.m_interpol = ParseInterpolation(*it); + ++it; + e.m_street = *it; + ++it; + ++it; + ++it; + e.m_postcode = *it; + ++it; ParseGeometry(*it, e.m_geom); if (e.m_interpol == feature::InterpolType::None || e.m_geom.empty()) @@ -99,7 +105,7 @@ bool ParseLine(std::string_view line, AddressEntry & e) return true; } -} // namespace tiger +} // namespace tiger namespace feature { @@ -114,4 +120,4 @@ std::string DebugPrint(InterpolType type) } UNREACHABLE(); } -} // namespace feature +} // namespace feature diff --git a/generator/address_parser/tiger_parser.hpp b/generator/address_parser/tiger_parser.hpp index 05ced61c4..2dfb2682c 100644 --- a/generator/address_parser/tiger_parser.hpp +++ b/generator/address_parser/tiger_parser.hpp @@ -18,9 +18,9 @@ struct AddressEntry : public generator::AddressEnricher::RawEntryBase void ParseGeometry(std::string_view s, std::vector & geom); feature::InterpolType ParseInterpolation(std::string_view s); bool ParseLine(std::string_view line, AddressEntry & e); -} // namespace tiger +} // namespace tiger namespace feature { std::string DebugPrint(InterpolType type); -} // namespace feature +} // namespace feature diff --git a/generator/addresses_collector.cpp b/generator/addresses_collector.cpp index ed3281674..6355278e9 100644 --- a/generator/addresses_collector.cpp +++ b/generator/addresses_collector.cpp @@ -24,7 +24,7 @@ uint64_t GetOsmID(FeatureBuilder const & fb) AddressesHolder::AddressInfo FromFB(FeatureBuilder const & fb) { auto const & params = fb.GetParams(); - return { params.house.Get(), std::string(params.GetStreet()), std::string(params.GetPostcode()), {} }; + return {params.house.Get(), std::string(params.GetStreet()), std::string(params.GetPostcode()), {}}; } // Current stats: @@ -35,8 +35,7 @@ void LogWarning(std::string const & msg, uint64_t id) { LOG(LWARNING, ("addr:interpolation: " + msg, id)); } -} // namespace - +} // namespace std::string AddressesHolder::AddressInfo::FormatRange() const { @@ -81,7 +80,6 @@ std::string AddressesHolder::AddressInfo::FormatRange() const } } - void AddressesHolder::Add(FeatureBuilder const & fb) { CHECK(fb.IsPoint(), ()); @@ -160,11 +158,7 @@ void AddressesHolder::Deserialize(std::string const & filePath) } } - -AddressesCollector::AddressesCollector(std::string const & filename) - : CollectorInterface(filename) -{ -} +AddressesCollector::AddressesCollector(std::string const & filename) : CollectorInterface(filename) {} std::shared_ptr AddressesCollector::Clone(IDRInterfacePtr const & cache) const { @@ -231,4 +225,4 @@ void AddressesCollector::MergeInto(AddressesCollector & collector) const collector.m_interpolWays.emplace(e.first, e.second); } -} // namespace generator +} // namespace generator diff --git a/generator/addresses_collector.hpp b/generator/addresses_collector.hpp index 5e877ed50..1e4ee3e36 100644 --- a/generator/addresses_collector.hpp +++ b/generator/addresses_collector.hpp @@ -12,7 +12,7 @@ public: struct AddressInfo { std::string m_house, m_street, m_postcode; - std::string m_house2; // end point house number for the 2nd stage + std::string m_house2; // end point house number for the 2nd stage std::string FormatRange() const; }; @@ -64,4 +64,4 @@ public: void MergeInto(AddressesCollector & collector) const; }; -} // namespace generator +} // namespace generator diff --git a/generator/affiliation.cpp b/generator/affiliation.cpp index 423112e91..2ed1bca47 100644 --- a/generator/affiliation.cpp +++ b/generator/affiliation.cpp @@ -9,10 +9,9 @@ #include -#include "std/boost_geometry.hpp" -#include #include - +#include +#include "std/boost_geometry.hpp" BOOST_GEOMETRY_REGISTER_POINT_2D(m2::PointD, double, boost::geometry::cs::cartesian, x, y) BOOST_GEOMETRY_REGISTER_RING(std::vector) @@ -34,16 +33,16 @@ template m2::RectD GetLimitRect(T && t) { using Type = RemoveCvrefT; - if constexpr(std::is_same_v) + if constexpr (std::is_same_v) return t.GetLimitRect(); - if constexpr(std::is_same_v>) + if constexpr (std::is_same_v>) { m2::RectD r; for (auto const & p : t) r.Add(p); return r; } - if constexpr(std::is_same_v) + if constexpr (std::is_same_v) return m2::RectD(t, t); UNREACHABLE(); @@ -53,11 +52,11 @@ template bool ForAnyPoint(T && t, F && f) { using Type = RemoveCvrefT; - if constexpr(std::is_same_v) + if constexpr (std::is_same_v) return t.ForAnyPoint(f); - if constexpr(std::is_same_v>) + if constexpr (std::is_same_v>) return base::AnyOf(t, f); - if constexpr(std::is_same_v) + if constexpr (std::is_same_v) return f(t); UNREACHABLE(); @@ -67,9 +66,9 @@ template void ForEachPoint(T && t, F && f) { using Type = RemoveCvrefT; - if constexpr(std::is_same_v) + if constexpr (std::is_same_v) t.ForEachPoint(std::forward(f)); - else if constexpr(std::is_same_v) + else if constexpr (std::is_same_v) f(std::forward(t)); else UNREACHABLE(); @@ -77,16 +76,13 @@ void ForEachPoint(T && t, F && f) // An implementation for CountriesFilesAffiliation class. template -std::vector GetAffiliations(T const & t, - borders::CountryPolygonsCollection const & countryPolygonsTree, +std::vector GetAffiliations(T const & t, borders::CountryPolygonsCollection const & countryPolygonsTree, bool haveBordersForWholeWorld) { std::vector countries; std::vector> countriesContainer; - countryPolygonsTree.ForEachCountryInRect(GetLimitRect(t), [&](auto const & countryPolygons) - { - countriesContainer.emplace_back(countryPolygons); - }); + countryPolygonsTree.ForEachCountryInRect( + GetLimitRect(t), [&](auto const & countryPolygons) { countriesContainer.emplace_back(countryPolygons); }); // todo(m.andrianov): We need to explore this optimization better. There is a hypothesis: some // elements belong to a rectangle, but do not belong to the exact boundary. @@ -99,10 +95,7 @@ std::vector GetAffiliations(T const & t, for (borders::CountryPolygons const & countryPolygons : countriesContainer) { - auto const need = ForAnyPoint(t, [&](auto const & point) - { - return countryPolygons.Contains(point); - }); + auto const need = ForAnyPoint(t, [&](auto const & point) { return countryPolygons.Contains(point); }); if (need) countries.emplace_back(countryPolygons.GetName()); @@ -119,23 +112,19 @@ CountriesFilesIndexAffiliation::Box MakeBox(m2::RectD const & rect) return {rect.LeftBottom(), rect.RightTop()}; } -std::optional IsOneCountryForLimitRect(m2::RectD const & limitRect, - IndexSharedPtr const & index) +std::optional IsOneCountryForLimitRect(m2::RectD const & limitRect, IndexSharedPtr const & index) { borders::CountryPolygons const * country = nullptr; std::vector values; auto const bbox = MakeBox(limitRect); - boost::geometry::index::query(*index, boost::geometry::index::covers(bbox), - std::back_inserter(values)); + boost::geometry::index::query(*index, boost::geometry::index::covers(bbox), std::back_inserter(values)); for (auto const & v : values) { for (borders::CountryPolygons const & c : v.second) - { if (!country) country = &c; else if (country != &c) return {}; - } } return country ? country->GetName() : std::optional{}; } @@ -145,10 +134,10 @@ std::vector GetHonestAffiliations(T && t, IndexSharedPtr const & in { std::vector affiliations; std::unordered_set countires; - ForEachPoint(t, [&](auto const & point) { + ForEachPoint(t, [&](auto const & point) + { std::vector values; - boost::geometry::index::query(*index, boost::geometry::index::covers(point), - std::back_inserter(values)); + boost::geometry::index::query(*index, boost::geometry::index::covers(point), std::back_inserter(values)); for (auto const & v : values) { if (v.second.size() == 1) @@ -160,10 +149,8 @@ std::vector GetHonestAffiliations(T && t, IndexSharedPtr const & in else { for (borders::CountryPolygons const & cp : v.second) - { if (cp.Contains(point) && countires.insert(&cp).second) affiliations.emplace_back(cp.GetName()); - } } } }); @@ -182,8 +169,7 @@ std::vector GetAffiliations(T && t, IndexSharedPtr const & index) CountriesFilesAffiliation::CountriesFilesAffiliation(std::string const & borderPath, bool haveBordersForWholeWorld) : m_countryPolygonsTree(borders::GetOrCreateCountryPolygonsTree(borderPath)) , m_haveBordersForWholeWorld(haveBordersForWholeWorld) -{ -} +{} std::vector CountriesFilesAffiliation::GetAffiliations(FeatureBuilder const & fb) const { @@ -222,8 +208,7 @@ CountriesFilesIndexAffiliation::CountriesFilesIndexAffiliation(std::string const return; } - auto const net = generator::cells_merger::MakeNet(0.2 /* step */, - mercator::Bounds::kMinX, mercator::Bounds::kMinY, + auto const net = generator::cells_merger::MakeNet(0.2 /* step */, mercator::Bounds::kMinX, mercator::Bounds::kMinY, mercator::Bounds::kMaxX, mercator::Bounds::kMaxY); auto const index = BuildIndex(net); m_index = index; @@ -240,8 +225,8 @@ std::vector CountriesFilesIndexAffiliation::GetAffiliations(m2::Poi return affiliation::GetAffiliations(point, m_index); } -std::shared_ptr -CountriesFilesIndexAffiliation::BuildIndex(const std::vector & net) +std::shared_ptr CountriesFilesIndexAffiliation::BuildIndex( + std::vector const & net) { std::unordered_map> countriesRects; std::mutex countriesRectsMutex; @@ -252,11 +237,11 @@ CountriesFilesIndexAffiliation::BuildIndex(const std::vector & net) base::ComputationalThreadPool pool(numThreads); for (auto const & rect : net) { - pool.SubmitWork([&, rect]() { + pool.SubmitWork([&, rect]() + { std::vector> countries; - m_countryPolygonsTree.ForEachCountryInRect(rect, [&](auto const & country) { - countries.emplace_back(country); - }); + m_countryPolygonsTree.ForEachCountryInRect(rect, + [&](auto const & country) { countries.emplace_back(country); }); if (m_haveBordersForWholeWorld && countries.size() == 1) { borders::CountryPolygons const & country = countries.front(); @@ -269,7 +254,8 @@ CountriesFilesIndexAffiliation::BuildIndex(const std::vector & net) std::vector> interCountries; for (borders::CountryPolygons const & cp : countries) { - cp.ForAnyPolygon([&](auto const & polygon) { + cp.ForAnyPolygon([&](auto const & polygon) + { if (!boost::geometry::intersects(polygon.Data(), box)) return false; interCountries.emplace_back(cp); @@ -297,7 +283,8 @@ CountriesFilesIndexAffiliation::BuildIndex(const std::vector & net) base::ComputationalThreadPool pool(numThreads); for (auto & pair : countriesRects) { - pool.SubmitWork([&, countryPtr{pair.first}, rects{std::move(pair.second)}]() mutable { + pool.SubmitWork([&, countryPtr{pair.first}, rects{std::move(pair.second)}]() mutable + { generator::cells_merger::CellsMerger merger(std::move(rects)); auto const merged = merger.Merge(); for (auto const & rect : merged) @@ -312,10 +299,7 @@ CountriesFilesIndexAffiliation::BuildIndex(const std::vector & net) return std::make_shared(treeCells); } -SingleAffiliation::SingleAffiliation(std::string const & filename) - : m_filename(filename) -{ -} +SingleAffiliation::SingleAffiliation(std::string const & filename) : m_filename(filename) {} std::vector SingleAffiliation::GetAffiliations(FeatureBuilder const &) const { @@ -327,8 +311,7 @@ bool SingleAffiliation::HasCountryByName(std::string const & name) const return name == m_filename; } -std::vector -SingleAffiliation::GetAffiliations(m2::PointD const &) const +std::vector SingleAffiliation::GetAffiliations(m2::PointD const &) const { return {m_filename}; } diff --git a/generator/affiliation.hpp b/generator/affiliation.hpp index ce92f8c61..65cc67338 100644 --- a/generator/affiliation.hpp +++ b/generator/affiliation.hpp @@ -20,7 +20,6 @@ public: virtual std::vector GetAffiliations(m2::PointD const & point) const = 0; virtual bool HasCountryByName(std::string const & name) const = 0; - }; class CountriesFilesAffiliation : public AffiliationInterface diff --git a/generator/altitude_generator.cpp b/generator/altitude_generator.cpp index e30c0a7ce..68f15a438 100644 --- a/generator/altitude_generator.cpp +++ b/generator/altitude_generator.cpp @@ -35,10 +35,7 @@ public: explicit SrtmGetter(std::string const & srtmDir) : m_srtmManager(srtmDir) {} // AltitudeGetter overrides: - Altitude GetAltitude(m2::PointD const & p) override - { - return m_srtmManager.GetAltitude(mercator::ToLatLon(p)); - } + Altitude GetAltitude(m2::PointD const & p) override { return m_srtmManager.GetAltitude(mercator::ToLatLon(p)); } void PrintStatsAndPurge() override { @@ -56,18 +53,18 @@ public: struct FeatureAltitude { FeatureAltitude(uint32_t featureId, geometry::Altitudes && altitudes) - : m_featureId(featureId), m_altitudes(std::move(altitudes)) - { - } + : m_featureId(featureId) + , m_altitudes(std::move(altitudes)) + {} uint32_t m_featureId; feature::Altitudes m_altitudes; }; explicit Processor(AltitudeGetter & altitudeGetter) - : m_minAltitude(geometry::kInvalidAltitude), m_altitudeGetter(altitudeGetter) - { - } + : m_minAltitude(geometry::kInvalidAltitude) + , m_altitudeGetter(altitudeGetter) + {} void operator()(FeatureType & f, uint32_t id) { @@ -75,8 +72,7 @@ public: CHECK_EQUAL(id, m_altitudeAvailabilityBuilder.size(), ()); bool hasAltitude = false; - SCOPE_GUARD(altitudeAvailabilityBuilding, - [&]() { m_altitudeAvailabilityBuilder.push_back(hasAltitude); }); + SCOPE_GUARD(altitudeAvailabilityBuilding, [&]() { m_altitudeAvailabilityBuilder.push_back(hasAltitude); }); if (!routing::IsRoad(feature::TypesHolder(f))) return; diff --git a/generator/borders.cpp b/generator/borders.cpp index b9bcc1f39..55e2a6db0 100644 --- a/generator/borders.cpp +++ b/generator/borders.cpp @@ -39,8 +39,7 @@ template void ForEachCountry(std::string const & baseDir, ToDo && toDo) { std::string const bordersDir = base::JoinPath(baseDir, BORDERS_DIR); - CHECK(Platform::IsFileExistsByFullPath(bordersDir), - ("Cannot read borders directory", bordersDir)); + CHECK(Platform::IsFileExistsByFullPath(bordersDir), ("Cannot read borders directory", bordersDir)); Platform::FilesList files; Platform::GetFilesByExt(bordersDir, BORDERS_EXTENSION, files); @@ -58,9 +57,7 @@ void ForEachCountry(std::string const & baseDir, ToDo && toDo) class PackedBordersGenerator { public: - explicit PackedBordersGenerator(std::string const & baseDir) : m_writer(baseDir + PACKED_POLYGONS_FILE) - { - } + explicit PackedBordersGenerator(std::string const & baseDir) : m_writer(baseDir + PACKED_POLYGONS_FILE) {} void operator()(std::string name, PolygonsList && borders) { @@ -138,9 +135,7 @@ bool ReadPolygon(std::istream & stream, Polygon & poly, std::string const & file bool CountryPolygons::Contains(m2::PointD const & point) const { return m_polygons.ForAnyInRect(m2::RectD(point, point), [&](auto const & rgn) - { - return rgn.Contains(point, ContainsCompareFn(GetContainsEpsilon())); - }); + { return rgn.Contains(point, ContainsCompareFn(GetContainsEpsilon())); }); } bool LoadBorders(std::string const & borderFile, PolygonsList & outBorders) @@ -165,8 +160,7 @@ bool LoadBorders(std::string const & borderFile, PolygonsList & outBorders) return true; } -bool GetBordersRect(std::string const & baseDir, std::string const & country, - m2::RectD & bordersRect) +bool GetBordersRect(std::string const & baseDir, std::string const & country, m2::RectD & bordersRect) { auto const bordersFile = base::JoinPath(baseDir, BORDERS_DIR, country + BORDERS_EXTENSION); if (!Platform::IsFileExistsByFullPath(bordersFile)) diff --git a/generator/borders.hpp b/generator/borders.hpp index 3ad6e38ad..49c899f3f 100644 --- a/generator/borders.hpp +++ b/generator/borders.hpp @@ -14,7 +14,7 @@ #include #include -#define BORDERS_DIR "borders/" +#define BORDERS_DIR "borders/" #define BORDERS_EXTENSION ".poly" namespace borders @@ -44,9 +44,9 @@ class CountryPolygons public: CountryPolygons() = default; explicit CountryPolygons(std::string && name, PolygonsTree && regions) - : m_name(std::move(name)), m_polygons(std::move(regions)) - { - } + : m_name(std::move(name)) + , m_polygons(std::move(regions)) + {} std::string const & GetName() const { return m_name; } bool IsEmpty() const { return m_polygons.IsEmpty(); } @@ -61,16 +61,12 @@ public: double m_eps, m_squareEps; public: - explicit ContainsCompareFn(double eps) : m_eps(eps), m_squareEps(eps*eps) {} + explicit ContainsCompareFn(double eps) : m_eps(eps), m_squareEps(eps * eps) {} bool EqualPoints(m2::PointD const & p1, m2::PointD const & p2) const { - return AlmostEqualAbs(p1.x, p2.x, m_eps) && - AlmostEqualAbs(p1.y, p2.y, m_eps); - } - bool EqualZeroSquarePrecision(double val) const - { - return AlmostEqualAbs(val, 0.0, m_squareEps); + return AlmostEqualAbs(p1.x, p2.x, m_eps) && AlmostEqualAbs(p1.y, p2.y, m_eps); } + bool EqualZeroSquarePrecision(double val) const { return AlmostEqualAbs(val, 0.0, m_squareEps); } }; static double GetContainsEpsilon() { return 1.0E-4; } @@ -108,9 +104,7 @@ public: auto const & inserted = res.first->second; inserted.ForEachPolygon([&inserted, this](Polygon const & polygon) - { - m_regionsTree.Add(inserted, polygon.GetRect()); - }); + { m_regionsTree.Add(inserted, polygon.GetRect()); }); } size_t GetSize() const { return m_countryPolygonsMap.size(); } @@ -126,10 +120,7 @@ public: }); } - bool HasRegionByName(std::string const & name) const - { - return m_countryPolygonsMap.count(name) != 0; - } + bool HasRegionByName(std::string const & name) const { return m_countryPolygonsMap.count(name) != 0; } CountryPolygons const & GetRegionByName(std::string const & name) const { @@ -139,7 +130,7 @@ public: } private: - m4::Tree> m_regionsTree; + m4::Tree> m_regionsTree; std::unordered_map m_countryPolygonsMap; }; @@ -148,8 +139,7 @@ using PolygonsList = std::vector; /// @return false if borderFile can't be opened bool LoadBorders(std::string const & borderFile, PolygonsList & outBorders); -bool GetBordersRect(std::string const & baseDir, std::string const & country, - m2::RectD & bordersRect); +bool GetBordersRect(std::string const & baseDir, std::string const & country, m2::RectD & bordersRect); bool LoadCountriesList(std::string const & baseDir, CountryPolygonsCollection & countries); diff --git a/generator/boundary_postcodes_enricher.cpp b/generator/boundary_postcodes_enricher.cpp index 54045ddc4..e7b6488af 100644 --- a/generator/boundary_postcodes_enricher.cpp +++ b/generator/boundary_postcodes_enricher.cpp @@ -28,8 +28,7 @@ BoundaryPostcodesEnricher::BoundaryPostcodesEnricher(std::string const & boundar CHECK(!postcode.empty() && !geometry.empty(), ()); m_boundaryPostcodes.emplace_back(std::move(postcode), std::move(geometry)); - m_boundariesTree.Add(m_boundaryPostcodes.size() - 1, - m_boundaryPostcodes.back().second.GetRect()); + m_boundariesTree.Add(m_boundaryPostcodes.size() - 1, m_boundaryPostcodes.back().second.GetRect()); } } diff --git a/generator/brands_loader.cpp b/generator/brands_loader.cpp index 43be651e3..1bc49a939 100644 --- a/generator/brands_loader.cpp +++ b/generator/brands_loader.cpp @@ -23,7 +23,7 @@ using std::pair, std::string, std::unordered_map, std::vector; DECLARE_EXCEPTION(ParsingError, RootException); static void ParseFeatureToBrand(json_t * root, string const & field, GeoObjectId::Type type, - vector> & result) + vector> & result) { auto arr = base::GetJSONOptionalField(root, field); if (arr == nullptr) @@ -42,8 +42,7 @@ static void ParseFeatureToBrand(json_t * root, string const & field, GeoObjectId } } -void ParseTranslations(json_t * root, std::set const & keys, - unordered_map & idToKey) +void ParseTranslations(json_t * root, std::set const & keys, unordered_map & idToKey) { string const empty; auto getKey = [&](string & translation) -> string const & diff --git a/generator/camera_info_collector.cpp b/generator/camera_info_collector.cpp index 486e7bbd4..016e98f59 100644 --- a/generator/camera_info_collector.cpp +++ b/generator/camera_info_collector.cpp @@ -18,8 +18,7 @@ namespace generator { -CamerasInfoCollector::CamerasInfoCollector(std::string const & dataFilePath, - std::string const & camerasInfoPath, +CamerasInfoCollector::CamerasInfoCollector(std::string const & dataFilePath, std::string const & camerasInfoPath, std::string const & osmIdsToFeatureIdsPath) { routing::OsmIdToFeatureIds osmIdToFeatureIds; @@ -90,8 +89,8 @@ void CamerasInfoCollector::Serialize(FileWriter & writer) const camera.Serialize(writer, prevFeatureId); } -bool CamerasInfoCollector::ParseIntermediateInfo( - std::string const & camerasInfoPath, routing::OsmIdToFeatureIds const & osmIdToFeatureIds) +bool CamerasInfoCollector::ParseIntermediateInfo(std::string const & camerasInfoPath, + routing::OsmIdToFeatureIds const & osmIdToFeatureIds) { FileReader reader(camerasInfoPath); ReaderSource src(reader); @@ -131,8 +130,8 @@ bool CamerasInfoCollector::ParseIntermediateInfo( if (relatedWaysNumber > std::numeric_limits::max()) { badCamera = true; - LOG(LERROR, ("Number of related to camera ways should be interval from 0 to 255.", - "lat(", lat, "), lon(", lon, ")")); + LOG(LERROR, + ("Number of related to camera ways should be interval from 0 to 255.", "lat(", lat, "), lon(", lon, ")")); } std::vector ways; @@ -159,8 +158,7 @@ bool CamerasInfoCollector::ParseIntermediateInfo( return true; } -void CamerasInfoCollector::Camera::FindClosestSegment(FrozenDataSource const & dataSource, - MwmSet::MwmId const & mwmId) +void CamerasInfoCollector::Camera::FindClosestSegment(FrozenDataSource const & dataSource, MwmSet::MwmId const & mwmId) { if (!m_data.m_ways.empty() && FindClosestSegmentInInnerWays(dataSource, mwmId)) return; @@ -168,7 +166,6 @@ void CamerasInfoCollector::Camera::FindClosestSegment(FrozenDataSource const & d FindClosestSegmentWithGeometryIndex(dataSource); } - bool CamerasInfoCollector::Camera::FindClosestSegmentInInnerWays(FrozenDataSource const & dataSource, MwmSet::MwmId const & mwmId) { @@ -201,7 +198,8 @@ void CamerasInfoCollector::Camera::FindClosestSegmentWithGeometryIndex(FrozenDat double bestCoef = 0.0; // Look at each segment of roads and find the closest. - auto const updateClosestFeatureCallback = [&](FeatureType & ft) { + auto const updateClosestFeatureCallback = [&](FeatureType & ft) + { if (ft.GetGeomType() != feature::GeomType::Line) return; @@ -243,30 +241,32 @@ void CamerasInfoCollector::Camera::FindClosestSegmentWithGeometryIndex(FrozenDat } }; - dataSource.ForEachInRect( - updateClosestFeatureCallback, - mercator::RectByCenterXYAndSizeInMeters(m_data.m_center, kSearchCameraRadiusMeters), - scales::GetUpperScale()); + dataSource.ForEachInRect(updateClosestFeatureCallback, + mercator::RectByCenterXYAndSizeInMeters(m_data.m_center, kSearchCameraRadiusMeters), + scales::GetUpperScale()); if (found) m_data.m_ways.emplace_back(bestFeatureId, bestSegmentId, bestCoef); } -std::optional> CamerasInfoCollector::Camera::FindMyself( - uint32_t wayFeatureId, FrozenDataSource const & dataSource, MwmSet::MwmId const & mwmId) const +std::optional> CamerasInfoCollector::Camera::FindMyself(uint32_t wayFeatureId, + FrozenDataSource const & dataSource, + MwmSet::MwmId const & mwmId) const { double coef = 0.0; bool isRoad = true; uint32_t result = 0; bool cannotFindMyself = false; - auto const readFeature = [&](FeatureType & ft) { + auto const readFeature = [&](FeatureType & ft) + { bool found = false; isRoad = routing::IsRoad(feature::TypesHolder(ft)); if (!isRoad) return; - auto const findPoint = [&result, &found, this](m2::PointD const & pt) { + auto const findPoint = [&result, &found, this](m2::PointD const & pt) + { if (found) return; @@ -317,14 +317,12 @@ std::optional> CamerasInfoCollector::Camera::FindMys return {}; } -void CamerasInfoCollector::Camera::Serialize(FileWriter & writer, - uint32_t & prevFeatureId) const +void CamerasInfoCollector::Camera::Serialize(FileWriter & writer, uint32_t & prevFeatureId) const { routing::SerializeSpeedCamera(writer, m_data, prevFeatureId); } -void BuildCamerasInfo(std::string const & dataFilePath, - std::string const & camerasInfoPath, +void BuildCamerasInfo(std::string const & dataFilePath, std::string const & camerasInfoPath, std::string const & osmIdsToFeatureIdsPath) { LOG(LINFO, ("Generating cameras info for", dataFilePath)); diff --git a/generator/camera_info_collector.hpp b/generator/camera_info_collector.hpp index e4c321f81..3770c0505 100644 --- a/generator/camera_info_collector.hpp +++ b/generator/camera_info_collector.hpp @@ -32,8 +32,7 @@ private: Camera(m2::PointD const & center, uint8_t maxSpeed, std::vector && ways) : m_data(center, maxSpeed, std::move(ways)) - { - } + {} void ParseDirection() { @@ -56,8 +55,7 @@ private: // Returns empty object, if current feature - |wayId| is not the car road. // Otherwise returns id of segment from feature with id - |wayId|, which starts (or ends) at camera's // center and coefficient - where it placed at the segment: 0.0 (or 1.0). - std::optional> FindMyself(uint32_t wayFeatureId, - FrozenDataSource const & dataSource, + std::optional> FindMyself(uint32_t wayFeatureId, FrozenDataSource const & dataSource, MwmSet::MwmId const & mwmId) const; void Serialize(FileWriter & writer, uint32_t & prevFeatureId) const; @@ -68,8 +66,7 @@ private: inline static double constexpr kMaxDistFromCameraToClosestSegmentMeters = 20.0; inline static double constexpr kSearchCameraRadiusMeters = 10.0; - bool ParseIntermediateInfo(std::string const & camerasInfoPath, - routing::OsmIdToFeatureIds const & osmIdToFeatureIds); + bool ParseIntermediateInfo(std::string const & camerasInfoPath, routing::OsmIdToFeatureIds const & osmIdToFeatureIds); std::vector m_cameras; }; diff --git a/generator/cells_merger.cpp b/generator/cells_merger.cpp index fd6ff45bf..87da41156 100644 --- a/generator/cells_merger.cpp +++ b/generator/cells_merger.cpp @@ -11,18 +11,16 @@ namespace double GetMinX(std::vector const & cells) { CHECK(!cells.empty(), ()); - auto const minElementX = - std::min_element(std::cbegin(cells), std::cend(cells), - [](auto const & l, auto const & r) { return l.minX() < r.minX(); }); + auto const minElementX = std::min_element(std::cbegin(cells), std::cend(cells), + [](auto const & l, auto const & r) { return l.minX() < r.minX(); }); return minElementX->minX(); } double GetMinY(std::vector const & cells) { CHECK(!cells.empty(), ()); - auto const minElementY = - std::min_element(std::cbegin(cells), std::cend(cells), - [](auto const & l, auto const & r) { return l.minY() < r.minY(); }); + auto const minElementY = std::min_element(std::cbegin(cells), std::cend(cells), + [](auto const & l, auto const & r) { return l.minY() < r.minY(); }); return minElementY->minY(); } } // namespace @@ -70,10 +68,9 @@ void CellsMerger::CalcSum() if (!Has(x, y)) continue; auto & cell = Get(x, y); - cell.SetBottomLeft( - std::min({TryGet(x - 1, y).GetBottomLeft(), TryGet(x, y - 1).GetBottomLeft(), - TryGet(x - 1, y - 1).GetBottomLeft()}) + - 1); + cell.SetBottomLeft(std::min({TryGet(x - 1, y).GetBottomLeft(), TryGet(x, y - 1).GetBottomLeft(), + TryGet(x - 1, y - 1).GetBottomLeft()}) + + 1); } } // Bottom right @@ -84,10 +81,9 @@ void CellsMerger::CalcSum() if (!Has(x, y)) continue; auto & cell = Get(x, y); - cell.SetBottomRight( - std::min({TryGet(x + 1, y).GetBottomRight(), TryGet(x, y - 1).GetBottomRight(), - TryGet(x + 1, y - 1).GetBottomRight()}) + - 1); + cell.SetBottomRight(std::min({TryGet(x + 1, y).GetBottomRight(), TryGet(x, y - 1).GetBottomRight(), + TryGet(x + 1, y - 1).GetBottomRight()}) + + 1); } } // Top left @@ -98,9 +94,9 @@ void CellsMerger::CalcSum() if (!Has(x, y)) continue; auto & cell = Get(x, y); - cell.SetTopLeft(std::min({TryGet(x - 1, y).GetTopLeft(), TryGet(x, y + 1).GetTopLeft(), - TryGet(x - 1, y + 1).GetTopLeft()}) + - 1); + cell.SetTopLeft( + std::min({TryGet(x - 1, y).GetTopLeft(), TryGet(x, y + 1).GetTopLeft(), TryGet(x - 1, y + 1).GetTopLeft()}) + + 1); } } // Top right @@ -127,10 +123,12 @@ CellWrapper & CellsMerger::Get(m2::PointI const & xy) return it->second; } -CellWrapper & CellsMerger::Get(int32_t x, int32_t y) { return Get({x, y}); } +CellWrapper & CellsMerger::Get(int32_t x, int32_t y) +{ + return Get({x, y}); +} -CellWrapper const & CellsMerger::TryGet(int32_t x, int32_t y, - CellWrapper const & defaultValue) const +CellWrapper const & CellsMerger::TryGet(int32_t x, int32_t y, CellWrapper const & defaultValue) const { auto const it = m_matrix.find({x, y}); return it == std::cend(m_matrix) ? defaultValue : it->second; @@ -144,16 +142,12 @@ m2::PointI CellsMerger::FindBigSquare(m2::PointI const & xy, m2::PointI const & { auto const xMinMax = std::minmax(currXy.x, xy.x); for (int32_t x = xMinMax.first; x <= xMinMax.second; ++x) - { if (!Has({x, currXy.y})) return prevXy; - } auto const yMinMax = std::minmax(currXy.y, xy.y); for (int32_t y = yMinMax.first; y <= yMinMax.second; ++y) - { if (!Has({currXy.x, y})) return prevXy; - } prevXy = currXy; currXy += direction; } @@ -163,16 +157,14 @@ std::optional CellsMerger::FindDirection(m2::PointI const & startXy) { std::array, 4> directionsWithWeight; std::array const directions{{{1, 1}, {-1, 1}, {1, -1}, {-1, -1}}}; - base::Transform(directions, std::begin(directionsWithWeight), - [&](auto const & direction) { - return std::make_pair( - TryGet(startXy.x + direction.x, startXy.y).GetSum() + - TryGet(startXy.x, startXy.y + direction.y).GetSum() + - TryGet(startXy.x + direction.x, startXy.y + direction.y).GetSum(), - direction); - }); - auto const direction = - std::max_element(std::cbegin(directionsWithWeight), std::cend(directionsWithWeight))->second; + base::Transform(directions, std::begin(directionsWithWeight), [&](auto const & direction) + { + return std::make_pair(TryGet(startXy.x + direction.x, startXy.y).GetSum() + + TryGet(startXy.x, startXy.y + direction.y).GetSum() + + TryGet(startXy.x + direction.x, startXy.y + direction.y).GetSum(), + direction); + }); + auto const direction = std::max_element(std::cbegin(directionsWithWeight), std::cend(directionsWithWeight))->second; return Has(startXy + direction) ? direction : std::optional{}; } @@ -181,15 +173,19 @@ void CellsMerger::Remove(m2::PointI const & minXy, m2::PointI const & maxXy) auto const xMinMax = std::minmax(minXy.x, maxXy.x); auto const yMinMax = std::minmax(minXy.y, maxXy.y); for (int32_t x = xMinMax.first; x <= xMinMax.second; ++x) - { for (int32_t y = yMinMax.first; y <= yMinMax.second; ++y) m_matrix.erase({x, y}); - } } -bool CellsMerger::Has(int32_t x, int32_t y) const { return m_matrix.count({x, y}) != 0; } +bool CellsMerger::Has(int32_t x, int32_t y) const +{ + return m_matrix.count({x, y}) != 0; +} -bool CellsMerger::Has(const m2::PointI & xy) const { return Has(xy.x, xy.y); } +bool CellsMerger::Has(m2::PointI const & xy) const +{ + return Has(xy.x, xy.y); +} std::optional CellsMerger::FindMax() const { diff --git a/generator/cells_merger.hpp b/generator/cells_merger.hpp index 86b97dba0..05b4979cd 100644 --- a/generator/cells_merger.hpp +++ b/generator/cells_merger.hpp @@ -58,8 +58,7 @@ private: bool Has(m2::PointI const & xy) const; CellWrapper & Get(m2::PointI const & xy); CellWrapper & Get(int32_t x, int32_t y); - CellWrapper const & TryGet(int32_t x, int32_t y, - CellWrapper const & defaultValue = CellWrapper::kEmpty) const; + CellWrapper const & TryGet(int32_t x, int32_t y, CellWrapper const & defaultValue = CellWrapper::kEmpty) const; void CalcSum(); std::optional FindMax() const; diff --git a/generator/centers_table_builder.cpp b/generator/centers_table_builder.cpp index 1fd1574cc..88ef1f6fd 100644 --- a/generator/centers_table_builder.cpp +++ b/generator/centers_table_builder.cpp @@ -35,10 +35,7 @@ bool BuildCentersTableFromDataFile(std::string const & filename, bool forceRebui FeaturesVector const features(rcont, header, table.get(), nullptr); builder.SetGeometryParams(header.GetBounds()); - features.ForEach([&](FeatureType & ft, uint32_t featureId) - { - builder.Put(featureId, feature::GetCenter(ft)); - }); + features.ForEach([&](FeatureType & ft, uint32_t featureId) { builder.Put(featureId, feature::GetCenter(ft)); }); } { diff --git a/generator/check_model.cpp b/generator/check_model.cpp index e4581a025..8992169da 100644 --- a/generator/check_model.cpp +++ b/generator/check_model.cpp @@ -2,9 +2,9 @@ #include "defines.hpp" -#include "indexer/features_vector.hpp" #include "indexer/classificator.hpp" #include "indexer/feature_visibility.hpp" +#include "indexer/features_vector.hpp" #include "base/logging.hpp" @@ -44,4 +44,4 @@ void ReadFeatures(std::string const & fName) LOG(LINFO, ("OK")); } -} // namespace check_model +} // namespace check_model diff --git a/generator/cities_boundaries_builder.hpp b/generator/cities_boundaries_builder.hpp index cfa854692..16e8be990 100644 --- a/generator/cities_boundaries_builder.hpp +++ b/generator/cities_boundaries_builder.hpp @@ -10,8 +10,7 @@ namespace generator { // todo(@m) Make test ids a new source in base::GeoObjectId? -using OsmIdToBoundariesTable = - base::ClusteringMap; +using OsmIdToBoundariesTable = base::ClusteringMap; using TestIdToBoundariesTable = base::ClusteringMap; bool BuildCitiesBoundaries(std::string const & dataPath, OsmIdToBoundariesTable & table); diff --git a/generator/cities_boundaries_checker.cpp b/generator/cities_boundaries_checker.cpp index c56e23f98..428d062b8 100644 --- a/generator/cities_boundaries_checker.cpp +++ b/generator/cities_boundaries_checker.cpp @@ -13,7 +13,8 @@ CitiesBoundariesChecker::CitiesBoundariesChecker(CitiesBoundaries const & cities bool CitiesBoundariesChecker::InCity(m2::PointD const & point) const { bool result = false; - m_tree.ForEachInRect(m2::RectD(point, point), [&](indexer::CityBoundary const & cityBoundary) { + m_tree.ForEachInRect(m2::RectD(point, point), [&](indexer::CityBoundary const & cityBoundary) + { if (result) return; diff --git a/generator/cities_ids_builder.cpp b/generator/cities_ids_builder.cpp index c8b6a5fd7..8552ae05e 100644 --- a/generator/cities_ids_builder.cpp +++ b/generator/cities_ids_builder.cpp @@ -11,8 +11,8 @@ #include "search/localities_source.hpp" #include "search/mwm_context.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include "base/cancellable.hpp" #include "base/checked_cast.hpp" @@ -44,7 +44,8 @@ void WriteCitiesIdsSectionToFile(std::string const & dataPath, { indexer::FeatureIdToGeoObjectIdBimapMem map; auto const localities = generator::GetLocalities(dataPath); - localities.ForEach([&](uint64_t fid64) { + localities.ForEach([&](uint64_t fid64) + { auto const fid = base::checked_cast(fid64); auto const it = mapping.find(fid); if (it == mapping.end()) @@ -58,10 +59,9 @@ void WriteCitiesIdsSectionToFile(std::string const & dataPath, auto const hasOldOsmId = map.GetValue(fid, oldOsmId); auto const hasOldFid = map.GetKey(osmId, oldFid); - LOG(LWARNING, - ("Could not add the pair (", fid, ",", osmId, - ") to the cities ids section; old fid:", (hasOldFid ? DebugPrint(oldFid) : "none"), - "old osmId:", (hasOldOsmId ? DebugPrint(oldOsmId) : "none"))); + LOG(LWARNING, ("Could not add the pair (", fid, ",", osmId, + ") to the cities ids section; old fid:", (hasOldFid ? DebugPrint(oldFid) : "none"), + "old osmId:", (hasOldOsmId ? DebugPrint(oldOsmId) : "none"))); } }); @@ -73,8 +73,7 @@ void WriteCitiesIdsSectionToFile(std::string const & dataPath, indexer::FeatureIdToGeoObjectIdSerDes::Serialize(*sink, map); auto const pos1 = sink->Pos(); - LOG(LINFO, - ("Serialized cities ids. Number of entries:", map.Size(), "Size in bytes:", pos1 - pos0)); + LOG(LINFO, ("Serialized cities ids. Number of entries:", map.Size(), "Size in bytes:", pos1 - pos0)); } } // namespace diff --git a/generator/city_roads_generator.cpp b/generator/city_roads_generator.cpp index 89b401612..6437cd94e 100644 --- a/generator/city_roads_generator.cpp +++ b/generator/city_roads_generator.cpp @@ -23,8 +23,7 @@ namespace routing_builder using generator::CitiesBoundariesChecker; using std::string, std::vector; -void LoadCitiesBoundariesGeometry(string const & boundariesPath, - CitiesBoundariesChecker::CitiesBoundaries & result) +void LoadCitiesBoundariesGeometry(string const & boundariesPath, CitiesBoundariesChecker::CitiesBoundaries & result) { if (!Platform::IsFileExistsByFullPath(boundariesPath)) { @@ -44,8 +43,8 @@ void LoadCitiesBoundariesGeometry(string const & boundariesPath, { ++points; double const radiusM = ftypes::GetRadiusByPopulationForRouting(loc.GetPopulation(), loc.GetPlace()); - result.emplace_back(ms::CreateCircleGeometryOnEarth( - mercator::ToLatLon(loc.m_center), radiusM, 30.0 /* angleStepDegree */)); + result.emplace_back( + ms::CreateCircleGeometryOnEarth(mercator::ToLatLon(loc.m_center), radiusM, 30.0 /* angleStepDegree */)); } else { @@ -63,7 +62,6 @@ void LoadCitiesBoundariesGeometry(string const & boundariesPath, /// according to |table|. vector CalcRoadFeatureIds(string const & dataPath, string const & boundariesPath) { - CitiesBoundariesChecker::CitiesBoundaries citiesBoundaries; LoadCitiesBoundariesGeometry(boundariesPath, citiesBoundaries); CitiesBoundariesChecker const checker(citiesBoundaries); @@ -80,10 +78,8 @@ vector CalcRoadFeatureIds(string const & dataPath, string const & boun size_t inCityPointsCounter = 0; size_t const count = ft.GetPointsCount(); for (size_t i = 0; i < count; ++i) - { if (checker.InCity(ft.GetPoint(i))) ++inCityPointsCounter; - } // Our approximation of boundary overestimates it, because of different // bounding boxes (in order to increase performance). So we don't want diff --git a/generator/cluster_finder.hpp b/generator/cluster_finder.hpp index fa1cc6b3f..2b24b7f0b 100644 --- a/generator/cluster_finder.hpp +++ b/generator/cluster_finder.hpp @@ -14,7 +14,8 @@ namespace generator { // The class ClustersFinder finds clusters of objects for which IsSameFunc returns true. // RadiusFunc should return the same radius for all objects in one cluster. -template class ClustersFinder +template +class ClustersFinder { public: using PtrT = T const *; @@ -22,7 +23,9 @@ public: using IsSameFunc = std::function; ClustersFinder(std::vector const & container, RadiusFunc radiusFunc, IsSameFunc isSameFunc) - : m_container(container), m_radiusFunc(std::move(radiusFunc)), m_isSameFunc(std::move(isSameFunc)) + : m_container(container) + , m_radiusFunc(std::move(radiusFunc)) + , m_isSameFunc(std::move(isSameFunc)) { for (auto const & e : m_container) m_tree.Add(&e); @@ -78,10 +81,7 @@ private: { m2::RectD bbox; auto const dist = m_radiusFunc(*p); - GetLimitRect(*p).ForEachCorner([&](auto const & p) - { - bbox.Add(mercator::RectByCenterXYAndSizeInMeters(p, dist)); - }); + GetLimitRect(*p).ForEachCorner([&](auto const & p) { bbox.Add(mercator::RectByCenterXYAndSizeInMeters(p, dist)); }); return bbox; } @@ -93,7 +93,8 @@ private: /// @return Vector of equal place clusters, like pointers from input \a container. template -std::vector> GetClusters(std::vector const & container, RadiusFnT && radiusFunc, IsSameFnT && isSameFunc) +std::vector> GetClusters(std::vector const & container, RadiusFnT && radiusFunc, + IsSameFnT && isSameFunc) { return ClustersFinder(container, std::forward(radiusFunc), std::forward(isSameFunc)).Find(); } diff --git a/generator/coastlines_generator.cpp b/generator/coastlines_generator.cpp index 2e4441027..e6f19e432 100644 --- a/generator/coastlines_generator.cpp +++ b/generator/coastlines_generator.cpp @@ -15,7 +15,6 @@ #include #include - namespace coastlines_generator { using RegionT = m2::RegionI; @@ -53,9 +52,12 @@ class DoAddToTree : public FeatureEmitterIFace public: explicit DoAddToTree(CoastlineFeaturesGenerator & rMain) - : m_rMain(rMain), m_notMergedCoastsCount(0), m_totalNotMergedCoastsPoints(0) {} + : m_rMain(rMain) + , m_notMergedCoastsCount(0) + , m_totalNotMergedCoastsPoints(0) + {} - virtual void operator() (feature::FeatureBuilder const & fb) + virtual void operator()(feature::FeatureBuilder const & fb) { if (fb.IsGeometryClosed()) m_rMain.AddRegionToTree(fb); @@ -64,30 +66,20 @@ public: base::GeoObjectId const firstWay = fb.GetFirstOsmId(); base::GeoObjectId const lastWay = fb.GetLastOsmId(); if (firstWay == lastWay) - LOG(LINFO, ("Not merged coastline, way", firstWay.GetSerialId(), "(", fb.GetPointsCount(), - "points)")); + LOG(LINFO, ("Not merged coastline, way", firstWay.GetSerialId(), "(", fb.GetPointsCount(), "points)")); else - LOG(LINFO, ("Not merged coastline, ways", firstWay.GetSerialId(), "to", - lastWay.GetSerialId(), "(", fb.GetPointsCount(), "points)")); + LOG(LINFO, ("Not merged coastline, ways", firstWay.GetSerialId(), "to", lastWay.GetSerialId(), "(", + fb.GetPointsCount(), "points)")); ++m_notMergedCoastsCount; m_totalNotMergedCoastsPoints += fb.GetPointsCount(); } } - bool HasNotMergedCoasts() const - { - return m_notMergedCoastsCount != 0; - } + bool HasNotMergedCoasts() const { return m_notMergedCoastsCount != 0; } - size_t GetNotMergedCoastsCount() const - { - return m_notMergedCoastsCount; - } + size_t GetNotMergedCoastsCount() const { return m_notMergedCoastsCount; } - size_t GetNotMergedCoastsPoints() const - { - return m_totalNotMergedCoastsPoints; - } + size_t GetNotMergedCoastsPoints() const { return m_totalNotMergedCoastsPoints; } }; class DoDifference @@ -129,8 +121,8 @@ public: m_res[i].ForEachPoint([&points](PointT const & p) { - points.push_back(PointUToPointD( - m2::PointU(static_cast(p.x), static_cast(p.y)), kPointCoordBits)); + points.push_back( + PointUToPointD(m2::PointU(static_cast(p.x), static_cast(p.y)), kPointCoordBits)); }); fb.AddPolygon(std::move(points)); @@ -139,8 +131,7 @@ public: }; } // namespace coastlines_generator -CoastlineFeaturesGenerator::CoastlineFeaturesGenerator() - : m_merger(kPointCoordBits) {} +CoastlineFeaturesGenerator::CoastlineFeaturesGenerator() : m_merger(kPointCoordBits) {} void CoastlineFeaturesGenerator::AddRegionToTree(feature::FeatureBuilder const & fb) { @@ -206,13 +197,10 @@ protected: Context & m_ctx; TIndex const & m_index; - RegionInCellSplitter(Context & ctx,TIndex const & index) - : m_ctx(ctx), m_index(index) - {} + RegionInCellSplitter(Context & ctx, TIndex const & index) : m_ctx(ctx), m_index(index) {} public: - static bool Process(size_t numThreads, size_t baseScale, TIndex const & index, - TProcessResultFunc funcResult) + static bool Process(size_t numThreads, size_t baseScale, TIndex const & index, TProcessResultFunc funcResult) { /// @todo Replace with base::ComputationalThreadPool @@ -246,8 +234,8 @@ public: using namespace coastlines_generator; // create rect region - PointT arr[] = {D2I(m2::PointD(minX, minY)), D2I(m2::PointD(minX, maxY)), - D2I(m2::PointD(maxX, maxY)), D2I(m2::PointD(maxX, minY))}; + PointT arr[] = {D2I(m2::PointD(minX, minY)), D2I(m2::PointD(minX, maxY)), D2I(m2::PointD(maxX, maxY)), + D2I(m2::PointD(maxX, minY))}; RegionT rectR(arr, arr + ARRAY_SIZE(arr)); // Do 'and' with all regions and accumulate the result, including bound region. @@ -269,7 +257,7 @@ public: while (true) { std::unique_lock lock(m_ctx.mutexTasks); - m_ctx.listCondVar.wait(lock, [&]{return (!m_ctx.listTasks.empty() || m_ctx.inWork == 0);}); + m_ctx.listCondVar.wait(lock, [&] { return (!m_ctx.listTasks.empty() || m_ctx.inWork == 0); }); if (m_ctx.listTasks.empty()) break; @@ -283,10 +271,8 @@ public: lock.lock(); // return to queue not ready cells if (!done) - { for (int8_t i = 0; i < TCell::MAX_CHILDREN; ++i) m_ctx.listTasks.push_back(currentCell.Child(i)); - } --m_ctx.inWork; m_ctx.listCondVar.notify_all(); } @@ -300,23 +286,24 @@ std::vector CoastlineFeaturesGenerator::GetFeatures(siz std::vector features; std::mutex featuresMutex; - RegionInCellSplitter::Process(maxThreads, RegionInCellSplitter::kStartLevel, m_tree, + RegionInCellSplitter::Process( + maxThreads, RegionInCellSplitter::kStartLevel, m_tree, [&](RegionInCellSplitter::TCell const & cell, coastlines_generator::DoDifference & cellData) - { - feature::FeatureBuilder fb; - fb.SetCoastCell(cell.ToInt64(RegionInCellSplitter::kHighLevel + 1)); + { + feature::FeatureBuilder fb; + fb.SetCoastCell(cell.ToInt64(RegionInCellSplitter::kHighLevel + 1)); - cellData.AssignGeometry(fb); - fb.SetArea(); - fb.AddType(coastType); + cellData.AssignGeometry(fb); + fb.SetArea(); + fb.AddType(coastType); - // Should represent non-empty geometry - CHECK_GREATER(fb.GetPolygonsCount(), 0, ()); - CHECK_GREATER_OR_EQUAL(fb.GetPointsCount(), 3, ()); + // Should represent non-empty geometry + CHECK_GREATER(fb.GetPolygonsCount(), 0, ()); + CHECK_GREATER_OR_EQUAL(fb.GetPointsCount(), 3, ()); - std::lock_guard lock(featuresMutex); - features.emplace_back(std::move(fb)); - }); + std::lock_guard lock(featuresMutex); + features.emplace_back(std::move(fb)); + }); return features; } diff --git a/generator/coastlines_generator.hpp b/generator/coastlines_generator.hpp index 6dbebe03c..0deb4b8ac 100644 --- a/generator/coastlines_generator.hpp +++ b/generator/coastlines_generator.hpp @@ -2,8 +2,8 @@ #include "generator/feature_merger.hpp" -#include "geometry/tree4d.hpp" #include "geometry/region2d.hpp" +#include "geometry/tree4d.hpp" #include @@ -35,4 +35,4 @@ namespace coastlines_generator { /// @param[in] poly Closed polygon where poly.frotn() == poly.back() like in FeatureBuilder. m2::RegionI CreateRegionI(std::vector const & poly); -} // namespace coastlines_generator +} // namespace coastlines_generator diff --git a/generator/collection_base.hpp b/generator/collection_base.hpp index 94acb8c32..e62ba453d 100644 --- a/generator/collection_base.hpp +++ b/generator/collection_base.hpp @@ -9,26 +9,16 @@ template class CollectionBase { public: - void Append(T const & collector) - { - m_collection.push_back(collector); - } + void Append(T const & collector) { m_collection.push_back(collector); } void AddCollection(CollectionBase const & collection) { - std::copy(std::begin(collection.m_collection), std::end(collection.m_collection), - std::back_inserter(m_collection)); + std::copy(std::begin(collection.m_collection), std::end(collection.m_collection), std::back_inserter(m_collection)); } - std::vector const & GetCollection() const - { - return m_collection; - } + std::vector const & GetCollection() const { return m_collection; } - bool Empty() const - { - return m_collection.empty(); - } + bool Empty() const { return m_collection.empty(); } protected: std::vector m_collection; diff --git a/generator/collector_boundary_postcode.cpp b/generator/collector_boundary_postcode.cpp index 726913b0d..d5f5c25b7 100644 --- a/generator/collector_boundary_postcode.cpp +++ b/generator/collector_boundary_postcode.cpp @@ -14,8 +14,7 @@ BoundaryPostcodeCollector::BoundaryPostcodeCollector(std::string const & filenam : CollectorInterface(filename) , m_cache(cache) , m_featureMakerSimple(cache) -{ -} +{} std::shared_ptr BoundaryPostcodeCollector::Clone(IDRInterfacePtr const & cache) const { diff --git a/generator/collector_building_parts.cpp b/generator/collector_building_parts.cpp index af3cbaba8..901bd56e7 100644 --- a/generator/collector_building_parts.cpp +++ b/generator/collector_building_parts.cpp @@ -59,8 +59,7 @@ void BuildingPartsCollector::BuildingParts::Write(FileWriter & writer, BuildingP } // static -BuildingPartsCollector::BuildingParts BuildingPartsCollector::BuildingParts::Read( - ReaderSource & src) +BuildingPartsCollector::BuildingParts BuildingPartsCollector::BuildingParts::Read(ReaderSource & src) { BuildingParts bp; auto const first = base::GeoObjectId(ReadPrimitiveFromSource(src)); @@ -78,8 +77,7 @@ BuildingPartsCollector::BuildingPartsCollector(std::string const & filename, IDR : CollectorInterface(filename) , m_cache(cache) , m_writer(std::make_unique(GetTmpFilename())) -{ -} +{} std::shared_ptr BuildingPartsCollector::Clone(IDRInterfacePtr const & cache) const { @@ -107,8 +105,7 @@ void BuildingPartsCollector::CollectFeature(feature::FeatureBuilder const & fb, } } -std::vector BuildingPartsCollector::FindAllBuildingParts( - base::GeoObjectId const & id) +std::vector BuildingPartsCollector::FindAllBuildingParts(base::GeoObjectId const & id) { std::vector buildingParts; RelationElement relation; @@ -119,16 +116,12 @@ std::vector BuildingPartsCollector::FindAllBuildingParts( } for (auto const & v : relation.m_ways) - { if (v.second == "part") buildingParts.emplace_back(base::MakeOsmWay(v.first)); - } for (auto const & v : relation.m_relations) - { if (v.second == "part") buildingParts.emplace_back(base::MakeOsmRelation(v.first)); - } return buildingParts; } @@ -143,22 +136,23 @@ base::GeoObjectId BuildingPartsCollector::FindTopRelation(base::GeoObjectId elId if (elId.GetType() == base::GeoObjectId::Type::ObsoleteOsmWay) { m_cache->ForEachRelationByWayCached(serialId, wrapper); - it = base::FindIf(elements, [&](auto const & idRelation) { - return idRelation.second.GetWayRole(serialId) == "outline"; - }); + it = base::FindIf(elements, + [&](auto const & idRelation) { return idRelation.second.GetWayRole(serialId) == "outline"; }); } else if (elId.GetType() == base::GeoObjectId::Type::ObsoleteOsmRelation) { m_cache->ForEachRelationByRelationCached(serialId, wrapper); - it = base::FindIf(elements, [&](auto const & idRelation) { - return idRelation.second.GetRelationRole(serialId) == "outline"; - }); + it = base::FindIf( + elements, [&](auto const & idRelation) { return idRelation.second.GetRelationRole(serialId) == "outline"; }); } return it != std::end(elements) ? base::MakeOsmRelation(it->first) : base::GeoObjectId(); } -void BuildingPartsCollector::Finish() { m_writer.reset(); } +void BuildingPartsCollector::Finish() +{ + m_writer.reset(); +} void BuildingPartsCollector::Save() { @@ -197,8 +191,7 @@ BuildingToBuildingPartsMap::BuildingToBuildingPartsMap(std::string const & filen auto const buildingParts = BuildingPartsCollector::BuildingParts::Read(src); m_buildingParts.insert(std::end(m_buildingParts), std::begin(buildingParts.m_buildingParts), std::end(buildingParts.m_buildingParts)); - m_outlineToBuildingPart.emplace_back(buildingParts.m_id, - std::move(buildingParts.m_buildingParts)); + m_outlineToBuildingPart.emplace_back(buildingParts.m_id, std::move(buildingParts.m_buildingParts)); } m_outlineToBuildingPart.shrink_to_fit(); @@ -212,12 +205,10 @@ bool BuildingToBuildingPartsMap::HasBuildingPart(base::GeoObjectId const & id) return std::binary_search(std::cbegin(m_buildingParts), std::cend(m_buildingParts), id); } -std::vector const & BuildingToBuildingPartsMap::GetBuildingPartsByOutlineId( - CompositeId const & id) +std::vector const & BuildingToBuildingPartsMap::GetBuildingPartsByOutlineId(CompositeId const & id) { - auto const it = - std::lower_bound(std::cbegin(m_outlineToBuildingPart), std::cend(m_outlineToBuildingPart), id, - [](auto const & lhs, auto const & rhs) { return lhs.first < rhs; }); + auto const it = std::lower_bound(std::cbegin(m_outlineToBuildingPart), std::cend(m_outlineToBuildingPart), id, + [](auto const & lhs, auto const & rhs) { return lhs.first < rhs; }); if (it != std::cend(m_outlineToBuildingPart) && it->first == id) return it->second; diff --git a/generator/collector_camera.cpp b/generator/collector_camera.cpp index 80e3864ae..a56fec5d1 100644 --- a/generator/collector_camera.cpp +++ b/generator/collector_camera.cpp @@ -26,7 +26,6 @@ #include - namespace routing_builder { @@ -82,12 +81,10 @@ CameraCollector::CameraInfo CameraCollector::CameraInfo::Read(ReaderSource CameraCollector::Clone(IDRInterfacePtr const & cache) const { diff --git a/generator/collector_camera.hpp b/generator/collector_camera.hpp index 2662eba77..346bb6784 100644 --- a/generator/collector_camera.hpp +++ b/generator/collector_camera.hpp @@ -28,7 +28,6 @@ class TestCameraCollector; /// for more details about input string. std::optional GetMaxSpeedKmPH(std::string const & maxSpeedString); - class CameraCollector : public generator::CollectorInterface { friend class TestCameraCollector; @@ -72,7 +71,8 @@ protected: void FillCameraInWays(); - template void ForEachCamera(Fn && toDo) + template + void ForEachCamera(Fn && toDo) { for (auto & p : m_speedCameras) toDo(p.second); diff --git a/generator/collector_collection.hpp b/generator/collector_collection.hpp index fd82917ab..077596797 100644 --- a/generator/collector_collection.hpp +++ b/generator/collector_collection.hpp @@ -17,7 +17,9 @@ namespace generator { // This class allows you to work with a group of collectors as with one. -class CollectorCollection : public CollectionBase>, public CollectorInterface +class CollectorCollection + : public CollectionBase> + , public CollectorInterface { public: // CollectorInterface overrides: diff --git a/generator/collector_interface.hpp b/generator/collector_interface.hpp index 0cd14869c..c09a68b8c 100644 --- a/generator/collector_interface.hpp +++ b/generator/collector_interface.hpp @@ -82,8 +82,8 @@ private: }; } // namespace generator -#define IMPLEMENT_COLLECTOR_IFACE(className) \ - void Merge(CollectorInterface const & ci) override \ - { \ - dynamic_cast(ci).MergeInto(*this); \ +#define IMPLEMENT_COLLECTOR_IFACE(className) \ + void Merge(CollectorInterface const & ci) override \ + { \ + dynamic_cast(ci).MergeInto(*this); \ } diff --git a/generator/collector_mini_roundabout.cpp b/generator/collector_mini_roundabout.cpp index 7ecae1bd9..8b2270eb7 100644 --- a/generator/collector_mini_roundabout.cpp +++ b/generator/collector_mini_roundabout.cpp @@ -10,9 +10,9 @@ namespace generator using namespace feature; MiniRoundaboutCollector::MiniRoundaboutCollector(std::string const & filename, IDRInterfacePtr cache) - : generator::CollectorInterface(filename), m_cache(std::move(cache)) -{ -} + : generator::CollectorInterface(filename) + , m_cache(std::move(cache)) +{} std::shared_ptr MiniRoundaboutCollector::Clone(IDRInterfacePtr const & cache) const { @@ -39,8 +39,7 @@ void MiniRoundaboutCollector::Collect(OsmElement const & element) } } -void MiniRoundaboutCollector::CollectFeature(FeatureBuilder const & feature, - OsmElement const & element) +void MiniRoundaboutCollector::CollectFeature(FeatureBuilder const & feature, OsmElement const & element) { if (MiniRoundaboutInfo::IsProcessRoad(feature)) m_roads.AddWay(element); diff --git a/generator/collector_mini_roundabout.hpp b/generator/collector_mini_roundabout.hpp index 9c3e8f349..084681447 100644 --- a/generator/collector_mini_roundabout.hpp +++ b/generator/collector_mini_roundabout.hpp @@ -31,10 +31,8 @@ protected: void ForEachMiniRoundabout(Fn && toDo) { for (auto & p : m_miniRoundabouts) - { if (m_miniRoundaboutsExceptions.count(p.first) == 0) toDo(p.second); - } } private: diff --git a/generator/collector_routing_city_boundaries.cpp b/generator/collector_routing_city_boundaries.cpp index 3292e6676..e6f8be401 100644 --- a/generator/collector_routing_city_boundaries.cpp +++ b/generator/collector_routing_city_boundaries.cpp @@ -28,10 +28,10 @@ PlaceBoundariesHolder::Locality::Locality(std::string const & placeType, OsmElem , m_name(elem.GetTag("name")) , m_population(osm_element::GetPopulation(elem)) , m_place(ftypes::LocalityFromString(placeType)) -{ -} +{} -template void PlaceBoundariesHolder::Locality::Serialize(Sink & sink) const +template +void PlaceBoundariesHolder::Locality::Serialize(Sink & sink) const { CHECK(TestValid(), ()); @@ -49,7 +49,8 @@ template void PlaceBoundariesHolder::Locality::Serialize(Sink & sin rw::WriteVectorOfPOD(sink, e); } -template void PlaceBoundariesHolder::Locality::Deserialize(Source & src) +template +void PlaceBoundariesHolder::Locality::Deserialize(Source & src) { m_place = static_cast(ReadPrimitiveFromSource(src)); m_placeFromNode = static_cast(ReadPrimitiveFromSource(src)); @@ -228,8 +229,8 @@ int PlaceBoundariesHolder::GetIndex(IDType id) const return -1; } -PlaceBoundariesHolder::Locality const * -PlaceBoundariesHolder::GetBestBoundary(std::vector const & ids, m2::PointD const & center) const +PlaceBoundariesHolder::Locality const * PlaceBoundariesHolder::GetBestBoundary(std::vector const & ids, + m2::PointD const & center) const { Locality const * bestLoc = nullptr; @@ -311,8 +312,7 @@ void PlaceBoundariesBuilder::Save(std::string const & fileName) for (auto const & relID : ids) { auto const & loc = m_id2loc[relID]; - if ((best == nullptr || loc.IsBetterBoundary(*best, e.second.m_name)) && - loc.IsInBoundary(e.second.m_center)) + if ((best == nullptr || loc.IsBetterBoundary(*best, e.second.m_name)) && loc.IsInBoundary(e.second.m_center)) { best = &loc; bestID = relID; @@ -348,22 +348,20 @@ void PlaceBoundariesBuilder::Save(std::string const & fileName) // Add remaining localities. for (auto & e : m_id2loc) - { if (e.second.IsHonestCity()) holder.Add(e.first, std::move(e.second), IDType()); - } holder.Serialize(fileName); } // RoutingCityBoundariesCollector ------------------------------------------------------------------ -RoutingCityBoundariesCollector::RoutingCityBoundariesCollector(std::string const & filename, IDRInterfacePtr const & cache) +RoutingCityBoundariesCollector::RoutingCityBoundariesCollector(std::string const & filename, + IDRInterfacePtr const & cache) : CollectorInterface(filename) , m_cache(cache) , m_featureMakerSimple(cache) -{ -} +{} std::shared_ptr RoutingCityBoundariesCollector::Clone(IDRInterfacePtr const & cache) const { @@ -425,9 +423,7 @@ void RoutingCityBoundariesCollector::Collect(OsmElement const & elem) { switch (fb.GetGeomType()) { - case GeomType::Point: - loc.m_center = fb.GetKeyPoint(); - break; + case GeomType::Point: loc.m_center = fb.GetKeyPoint(); break; case GeomType::Area: /// @todo Move geometry or make parsing geometry without FeatureBuilder class. loc.m_boundary.push_back(fb.GetOuterGeometry()); diff --git a/generator/collector_routing_city_boundaries.hpp b/generator/collector_routing_city_boundaries.hpp index eace4fde3..7255313ed 100644 --- a/generator/collector_routing_city_boundaries.hpp +++ b/generator/collector_routing_city_boundaries.hpp @@ -20,8 +20,10 @@ public: Locality(std::string const & placeType, OsmElement const & elem); // Used in cpp module only. - template void Serialize(Sink & sink) const; - template void Deserialize(Source & src); + template + void Serialize(Sink & sink) const; + template + void Deserialize(Source & src); /// @param[in] placeName Original Node place's name if available to match. /// @return Is this boundary better than rhs. @@ -69,7 +71,8 @@ public: void Add(IDType id, Locality && loc, IDType nodeID); /// @note Mutable function! - template void ForEachLocality(FnT && fn) + template + void ForEachLocality(FnT && fn) { for (auto & loc : m_data) fn(loc); diff --git a/generator/collector_tag.cpp b/generator/collector_tag.cpp index 187c7ee92..79c34d127 100644 --- a/generator/collector_tag.cpp +++ b/generator/collector_tag.cpp @@ -14,8 +14,7 @@ namespace generator { -CollectorTag::CollectorTag(std::string const & filename, std::string const & tagKey, - Validator const & validator) +CollectorTag::CollectorTag(std::string const & filename, std::string const & tagKey, Validator const & validator) : CollectorInterface(filename) , m_tagKey(tagKey) , m_validator(validator) @@ -49,7 +48,10 @@ void CollectorTag::Save() CHECK(base::CopyFileX(GetTmpFilename(), GetFilename()), ()); } -void CollectorTag::OrderCollectedData() { OrderTextFileByLine(GetFilename()); } +void CollectorTag::OrderCollectedData() +{ + OrderTextFileByLine(GetFilename()); +} void CollectorTag::MergeInto(CollectorTag & collector) const { diff --git a/generator/collector_tag.hpp b/generator/collector_tag.hpp index 3ae6a997e..3317cd699 100644 --- a/generator/collector_tag.hpp +++ b/generator/collector_tag.hpp @@ -23,8 +23,7 @@ class CollectorTag : public CollectorInterface public: using Validator = std::function; - explicit CollectorTag(std::string const & filename, std::string const & tagKey, - Validator const & validator); + explicit CollectorTag(std::string const & filename, std::string const & tagKey, Validator const & validator); // CollectorInterface overrides: std::shared_ptr Clone(IDRInterfacePtr const & = {}) const override; diff --git a/generator/complex_generator/complex_generator.cpp b/generator/complex_generator/complex_generator.cpp index 806019aa9..0c4723a8d 100644 --- a/generator/complex_generator/complex_generator.cpp +++ b/generator/complex_generator/complex_generator.cpp @@ -45,8 +45,7 @@ #include -DEFINE_string(node_storage, "map", - "Type of storage for intermediate points representation. Available: raw, map, mem."); +DEFINE_string(node_storage, "map", "Type of storage for intermediate points representation. Available: raw, map, mem."); DEFINE_string(user_resource_path, "", "User defined resource path for classificator.txt and etc."); DEFINE_string(maps_build_path, "", "Directory of any of the previous map generations. It is assumed that it will " @@ -56,7 +55,8 @@ DEFINE_bool(popularity, false, "Build complexes for calculation of popularity of DEFINE_string(output, "", "Output filename"); DEFINE_bool(debug, false, "Debug mode."); -MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) { +MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) +{ CHECK(IsLittleEndian(), ("Only little-endian architectures are supported.")); Platform & pl = GetPlatform(); @@ -86,15 +86,9 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) { std::shared_ptr filter = std::make_shared(); if (FLAGS_debug) - { print = static_cast(generator::DebugPrint); - } else - { - print = [](auto const & entry) { - return generator::hierarchy::HierarchyEntryToCsvString(entry); - }; - } + print = [](auto const & entry) { return generator::hierarchy::HierarchyEntryToCsvString(entry); }; generator::RawGenerator rawGenerator(genInfo, threadsCount); auto processor = CreateProcessor(generator::ProcessorType::Complex, rawGenerator.GetQueue(), @@ -102,15 +96,14 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) { generator::cache::IntermediateDataObjectsCache objectsCache; auto const cache = std::make_shared(objectsCache, genInfo); auto translator = CreateTranslator(generator::TranslatorType::Complex, processor, cache, genInfo); - auto finalProcessor = std::make_shared( - genInfo.m_tmpDir, FLAGS_output, threadsCount); + auto finalProcessor = + std::make_shared(genInfo.m_tmpDir, FLAGS_output, threadsCount); finalProcessor->SetPrintFunction(print); finalProcessor->SetGetMainTypeFunction(getMainType); finalProcessor->SetGetNameFunction(generator::hierarchy::GetName); finalProcessor->SetFilter(filter); - finalProcessor->UseBuildingPartsInfo( - genInfo.GetIntermediateFileName(BUILDING_PARTS_MAPPING_FILE)); + finalProcessor->UseBuildingPartsInfo(genInfo.GetIntermediateFileName(BUILDING_PARTS_MAPPING_FILE)); if (FLAGS_popularity) { diff --git a/generator/complex_loader.cpp b/generator/complex_loader.cpp index 27b5978d2..5d96f4bc4 100644 --- a/generator/complex_loader.cpp +++ b/generator/complex_loader.cpp @@ -18,7 +18,8 @@ bool IsComplex(tree_node::types::Ptr const & tree) { size_t constexpr kNumRequiredTypes = 3; - return tree_node::CountIf(tree, [&](auto const & e) { + return tree_node::CountIf(tree, [&](auto const & e) + { auto const & isAttraction = ftypes::AttractionsChecker::Instance(); return isAttraction(e.m_type); }) >= kNumRequiredTypes; @@ -32,13 +33,12 @@ storage::CountryId GetCountry(tree_node::types::Ptr const & tree ComplexLoader::ComplexLoader(std::string const & filename) { auto trees = hierarchy::LoadHierachy(filename); - base::EraseIf(trees, [](auto const & e){ return !IsComplex(e); }); + base::EraseIf(trees, [](auto const & e) { return !IsComplex(e); }); for (auto const & tree : trees) m_forests[GetCountry(tree)].Append(tree); } -tree_node::Forest const & ComplexLoader::GetForest( - storage::CountryId const & country) const +tree_node::Forest const & ComplexLoader::GetForest(storage::CountryId const & country) const { static tree_node::Forest const kEmpty; auto const it = m_forests.find(country); @@ -48,10 +48,10 @@ tree_node::Forest const & ComplexLoader::GetForest( std::unordered_set ComplexLoader::GetIdsSet() const { std::unordered_set set; - ForEach([&](auto const &, auto const & forest) { - forest.ForEachTree([&](auto const & tree) { - tree_node::ForEach(tree, [&](auto const & entry) { set.emplace(entry.m_id); }); - }); + ForEach([&](auto const &, auto const & forest) + { + forest.ForEachTree([&](auto const & tree) + { tree_node::ForEach(tree, [&](auto const & entry) { set.emplace(entry.m_id); }); }); }); return set; } diff --git a/generator/complex_loader.hpp b/generator/complex_loader.hpp index 876050b55..4da0f99b3 100644 --- a/generator/complex_loader.hpp +++ b/generator/complex_loader.hpp @@ -54,13 +54,10 @@ storage::CountryId GetCountry(tree_node::types::Ptr const & tree ComplexLoader const & GetOrCreateComplexLoader(std::string const & filename); template -tree_node::Forest TraformToIdsForest( - tree_node::Forest const & forest, Fn && fn) +tree_node::Forest TraformToIdsForest(tree_node::Forest const & forest, Fn && fn) { tree_node::Forest res; - forest.ForEachTree([&](auto const & tree) { - res.Append(tree_node::TransformToTree(tree, std::forward(fn))); - }); + forest.ForEachTree([&](auto const & tree) { res.Append(tree_node::TransformToTree(tree, std::forward(fn))); }); return res; } } // namespace generator diff --git a/generator/composite_id.cpp b/generator/composite_id.cpp index f81399c79..a47ea1592 100644 --- a/generator/composite_id.cpp +++ b/generator/composite_id.cpp @@ -14,14 +14,11 @@ CompositeId::CompositeId(std::string const & str) } CompositeId::CompositeId(base::GeoObjectId mainId, base::GeoObjectId additionalId) - : m_mainId(mainId), m_additionalId(additionalId) -{ -} + : m_mainId(mainId) + , m_additionalId(additionalId) +{} -CompositeId::CompositeId(base::GeoObjectId mainId) - : CompositeId(mainId, base::GeoObjectId() /* additionalId */) -{ -} +CompositeId::CompositeId(base::GeoObjectId mainId) : CompositeId(mainId, base::GeoObjectId() /* additionalId */) {} bool CompositeId::operator<(CompositeId const & other) const { diff --git a/generator/composite_id.hpp b/generator/composite_id.hpp index e61a52bcd..c85bacd2f 100644 --- a/generator/composite_id.hpp +++ b/generator/composite_id.hpp @@ -34,9 +34,6 @@ namespace std template <> struct hash { - size_t operator()(generator::CompositeId const & id) const - { - return math::Hash(id.m_mainId, id.m_additionalId); - } + size_t operator()(generator::CompositeId const & id) const { return math::Hash(id.m_mainId, id.m_additionalId); } }; } // namespace std diff --git a/generator/cross_mwm_osm_ways_collector.cpp b/generator/cross_mwm_osm_ways_collector.cpp index 265db028d..d01cb20e0 100644 --- a/generator/cross_mwm_osm_ways_collector.cpp +++ b/generator/cross_mwm_osm_ways_collector.cpp @@ -18,19 +18,17 @@ namespace generator { // CrossMwmOsmWaysCollector ------------------------------------------------------------------------ -CrossMwmOsmWaysCollector::CrossMwmOsmWaysCollector( - std::string intermediateDir, AffiliationInterfacePtr affiliation) - : m_intermediateDir(std::move(intermediateDir)), m_affiliation(std::move(affiliation)) -{ -} +CrossMwmOsmWaysCollector::CrossMwmOsmWaysCollector(std::string intermediateDir, AffiliationInterfacePtr affiliation) + : m_intermediateDir(std::move(intermediateDir)) + , m_affiliation(std::move(affiliation)) +{} std::shared_ptr CrossMwmOsmWaysCollector::Clone(IDRInterfacePtr const &) const { return std::make_shared(m_intermediateDir, m_affiliation); } -void CrossMwmOsmWaysCollector::CollectFeature(feature::FeatureBuilder const & fb, - OsmElement const & element) +void CrossMwmOsmWaysCollector::CollectFeature(feature::FeatureBuilder const & fb, OsmElement const & element) { if (element.m_type != OsmElement::EntityType::Way) return; @@ -84,26 +82,18 @@ void CrossMwmOsmWaysCollector::CollectFeature(feature::FeatureBuilder const & fb // And belongs to both. So we consider such segment as cross mwm segment. // So the condition that segment certainly lies inside of mwm is: // both points inside and both points belong to only this mwm. - if (prevPointIn && curPointIn && - pointsAffiliationsNumber[i] == 1 && pointsAffiliationsNumber[i - 1] == 1) - { + if (prevPointIn && curPointIn && pointsAffiliationsNumber[i] == 1 && pointsAffiliationsNumber[i - 1] == 1) continue; - } bool forwardIsEnter; if (prevPointIn != curPointIn) - { forwardIsEnter = curPointIn; - } + else if (pointsAffiliationsNumber[i - 1] != 1) + forwardIsEnter = curPointIn; + else if (pointsAffiliationsNumber[i] != 1) + forwardIsEnter = !prevPointIn; else - { - if (pointsAffiliationsNumber[i - 1] != 1) - forwardIsEnter = curPointIn; - else if (pointsAffiliationsNumber[i] != 1) - forwardIsEnter = !prevPointIn; - else - UNREACHABLE(); - } + UNREACHABLE(); prevPointIn = curPointIn; crossMwmSegments.emplace_back(i - 1 /* segmentId */, forwardIsEnter); } @@ -171,8 +161,8 @@ void CrossMwmOsmWaysCollector::CrossMwmInfo::Dump(CrossMwmInfo const & info, std } // static -std::set -CrossMwmOsmWaysCollector::CrossMwmInfo::LoadFromFileToSet(std::string const & path) +std::set CrossMwmOsmWaysCollector::CrossMwmInfo::LoadFromFileToSet( + std::string const & path) { std::ifstream input(path); if (!input) diff --git a/generator/cross_mwm_osm_ways_collector.hpp b/generator/cross_mwm_osm_ways_collector.hpp index 2901599b1..4001bf3c0 100644 --- a/generator/cross_mwm_osm_ways_collector.hpp +++ b/generator/cross_mwm_osm_ways_collector.hpp @@ -21,8 +21,7 @@ public: struct SegmentInfo { SegmentInfo() = default; - SegmentInfo(uint32_t id, bool forwardIsEnter) - : m_segmentId(id), m_forwardIsEnter(forwardIsEnter) {} + SegmentInfo(uint32_t id, bool forwardIsEnter) : m_segmentId(id), m_forwardIsEnter(forwardIsEnter) {} uint32_t m_segmentId = 0; bool m_forwardIsEnter = false; @@ -30,7 +29,9 @@ public: explicit CrossMwmInfo(uint64_t osmId) : m_osmId(osmId) {} CrossMwmInfo(uint64_t osmId, std::vector crossMwmSegments) - : m_osmId(osmId), m_crossMwmSegments(std::move(crossMwmSegments)) {} + : m_osmId(osmId) + , m_crossMwmSegments(std::move(crossMwmSegments)) + {} bool operator<(CrossMwmInfo const & rhs) const; diff --git a/generator/descriptions_section_builder.cpp b/generator/descriptions_section_builder.cpp index 67be16254..49aae076a 100644 --- a/generator/descriptions_section_builder.cpp +++ b/generator/descriptions_section_builder.cpp @@ -6,8 +6,8 @@ #include "platform/platform.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include "coding/string_utf8_multilang.hpp" #include "base/file_name_utils.hpp" @@ -78,23 +78,22 @@ std::string DescriptionsCollectionBuilderStat::LangStatisticsToString() const if (m_langsStat[code] == 0) continue; - stream << StringUtf8Multilang::GetLangByCode(static_cast(code)) - << ":" << m_langsStat[code] << " "; + stream << StringUtf8Multilang::GetLangByCode(static_cast(code)) << ":" << m_langsStat[code] << " "; } return stream.str(); } -void DescriptionsCollector::operator() (FeatureType & ft, uint32_t featureId) +void DescriptionsCollector::operator()(FeatureType & ft, uint32_t featureId) { -// auto const & attractionsChecker = ftypes::AttractionsChecker::Instance(); -// if (!attractionsChecker(ft)) -// return; + // auto const & attractionsChecker = ftypes::AttractionsChecker::Instance(); + // if (!attractionsChecker(ft)) + // return; (*this)(ft.GetMetadata().GetWikiURL(), featureId); } -void DescriptionsCollector::operator() (std::string const & wikiUrl, uint32_t featureId) +void DescriptionsCollector::operator()(std::string const & wikiUrl, uint32_t featureId) { descriptions::LangMeta langsMeta; @@ -127,7 +126,7 @@ void DescriptionsCollector::operator() (std::string const & wikiUrl, uint32_t fe else m_stat.IncNumberWikidataIds(); - m_collection.m_features.push_back({ featureId, std::move(langsMeta) }); + m_collection.m_features.push_back({featureId, std::move(langsMeta)}); } // static @@ -143,8 +142,7 @@ std::string DescriptionsCollector::MakePathForWikipedia(std::string const & wiki } // static -std::string DescriptionsCollector::MakePathForWikidata(std::string const & wikipediaDir, - std::string const & wikidataId) +std::string DescriptionsCollector::MakePathForWikidata(std::string const & wikipediaDir, std::string const & wikidataId) { return base::JoinPath(wikipediaDir, "wikidata", wikidataId); } @@ -217,10 +215,8 @@ void DescriptionsSectionBuilder::BuildSection(std::string const & mwmFile, Descr { auto const & stat = collector.m_stat; size_t const size = stat.GetTotalSize(); - LOG(LINFO, ("Wiki descriptions for", mwmFile, - "Wikipedia urls =", stat.GetNumberOfWikipediaUrls(), - "Wikidata ids =", stat.GetNumberOfWikidataIds(), - "Total number of pages =", stat.GetNumberOfPages(), + LOG(LINFO, ("Wiki descriptions for", mwmFile, "Wikipedia urls =", stat.GetNumberOfWikipediaUrls(), + "Wikidata ids =", stat.GetNumberOfWikidataIds(), "Total number of pages =", stat.GetNumberOfPages(), "Total size of added pages (before writing to section) =", size, "bytes")); if (size == 0) { @@ -240,9 +236,7 @@ void DescriptionsSectionBuilder::BuildSection(std::string const & mwmFile, Descr sectionSize = writer->Pos() - sectionSize; } - LOG(LINFO, ("Section", DESCRIPTIONS_FILE_TAG, "is built.", - "Disk size =", sectionSize, "bytes", - "Compression ratio =", size / double(sectionSize), - stat.LangStatisticsToString())); + LOG(LINFO, ("Section", DESCRIPTIONS_FILE_TAG, "is built.", "Disk size =", sectionSize, "bytes", + "Compression ratio =", size / double(sectionSize), stat.LangStatisticsToString())); } } // namespace generator diff --git a/generator/descriptions_section_builder.hpp b/generator/descriptions_section_builder.hpp index 49c1b9c1f..0a74071b1 100644 --- a/generator/descriptions_section_builder.hpp +++ b/generator/descriptions_section_builder.hpp @@ -33,7 +33,7 @@ public: DescriptionsCollectionBuilderStat() { - CHECK_EQUAL(m_langsStat.size(), StringUtf8Multilang::kMaxSupportedLanguages , ()); + CHECK_EQUAL(m_langsStat.size(), StringUtf8Multilang::kMaxSupportedLanguages, ()); } std::string LangStatisticsToString() const; @@ -67,11 +67,13 @@ class DescriptionsCollector public: DescriptionsCollector(std::string const & wikipediaDir, std::string const & mwmFile, std::string const & idToWikidataPath = {}) - : m_wikidataHelper(mwmFile, idToWikidataPath), m_wikipediaDir(wikipediaDir), m_mwmFile(mwmFile) + : m_wikidataHelper(mwmFile, idToWikidataPath) + , m_wikipediaDir(wikipediaDir) + , m_mwmFile(mwmFile) {} - void operator() (FeatureType & ft, uint32_t featureId); - void operator() (std::string const & wikiUrl, uint32_t featureId); + void operator()(FeatureType & ft, uint32_t featureId); + void operator()(std::string const & wikiUrl, uint32_t featureId); static std::string MakePathForWikipedia(std::string const & wikipediaDir, std::string wikipediaUrl); static std::string MakePathForWikidata(std::string const & wikipediaDir, std::string const & wikidataId); diff --git a/generator/dumper.cpp b/generator/dumper.cpp index fdfc053ac..146696d44 100644 --- a/generator/dumper.cpp +++ b/generator/dumper.cpp @@ -4,8 +4,8 @@ #include "indexer/classificator.hpp" #include "indexer/feature_processor.hpp" -#include "indexer/trie_reader.hpp" #include "indexer/search_string_utils.hpp" +#include "indexer/trie_reader.hpp" #include "coding/string_utf8_multilang.hpp" @@ -50,167 +50,161 @@ struct SearchTokensCollector uint32_t m_currentCount; }; - class TypesCollector +class TypesCollector +{ + vector m_currFeatureTypes; + +public: + typedef std::map, size_t> value_type; + value_type m_stats; + size_t m_namesCount; + size_t m_totalCount; + + TypesCollector() : m_namesCount(0), m_totalCount(0) {} + + void operator()(FeatureType & f, uint32_t) { - vector m_currFeatureTypes; + ++m_totalCount; + auto const primary = f.GetReadableName(); + if (!primary.empty()) + ++m_namesCount; - public: - typedef std::map, size_t> value_type; - value_type m_stats; - size_t m_namesCount; - size_t m_totalCount; + m_currFeatureTypes.clear(); + f.ForEachType([this](uint32_t type) { m_currFeatureTypes.push_back(type); }); + CHECK(!m_currFeatureTypes.empty(), ("Feature without any type???")); - TypesCollector() : m_namesCount(0), m_totalCount(0) {} + auto found = m_stats.insert(make_pair(m_currFeatureTypes, 1)); + if (!found.second) + found.first->second++; + } +}; - void operator()(FeatureType & f, uint32_t) +template +static bool SortFunc(T const & first, T const & second) +{ + return first.second > second.second; +} + +void DumpTypes(string const & fPath) +{ + TypesCollector doClass; + feature::ForEachFeature(fPath, doClass); + + typedef pair, size_t> stats_elem_type; + typedef vector vec_to_sort; + vec_to_sort vecToSort(doClass.m_stats.begin(), doClass.m_stats.end()); + sort(vecToSort.begin(), vecToSort.end(), &SortFunc); + + for (auto const & el : vecToSort) + { + cout << el.second << " "; + for (uint32_t i : el.first) + cout << classif().GetFullObjectName(i) << " "; + cout << endl; + } + cout << "Total features: " << doClass.m_totalCount << endl; + cout << "Features with names: " << doClass.m_namesCount << endl; +} + +/////////////////////////////////////////////////////////////////// + +typedef std::map>> TokensContainerT; +class PrefixesCollector +{ +public: + TokensContainerT m_stats; + + void operator()(int8_t langCode, std::string_view name) + { + CHECK(!name.empty(), ("Feature name is empty")); + + auto const tokens = search::NormalizeAndTokenizeString(name); + for (size_t i = 1; i < tokens.size(); ++i) { - ++m_totalCount; - auto const primary = f.GetReadableName(); - if (!primary.empty()) - ++m_namesCount; - - m_currFeatureTypes.clear(); - f.ForEachType([this](uint32_t type) + strings::UniString s; + for (size_t numTokens = 0; numTokens < i; ++numTokens) { - m_currFeatureTypes.push_back(type); - }); - CHECK(!m_currFeatureTypes.empty(), ("Feature without any type???")); - - auto found = m_stats.insert(make_pair(m_currFeatureTypes, 1)); - if (!found.second) - found.first->second++; + s.append(tokens[numTokens].begin(), tokens[numTokens].end()); + s.push_back(' '); + } + auto [iter, found] = m_stats[langCode].emplace(s, std::make_pair(1U, name)); + if (!found) + iter->second.first++; } - }; - - template - static bool SortFunc(T const & first, T const & second) - { - return first.second > second.second; } - void DumpTypes(string const & fPath) + void operator()(FeatureType & f, uint32_t) { f.ForEachName(*this); } +}; + +static size_t constexpr MIN_OCCURRENCE = 3; + +void Print(int8_t langCode, TokensContainerT::mapped_type const & container) +{ + typedef pair> NameElemT; + typedef vector VecToSortT; + + VecToSortT v(container.begin(), container.end()); + std::sort(v.begin(), v.end(), &SortFunc); + + // do not display prefixes with low occurrences + if (v[0].second.first > MIN_OCCURRENCE) { - TypesCollector doClass; - feature::ForEachFeature(fPath, doClass); + cout << "Language code: " << StringUtf8Multilang::GetLangByCode(langCode) << endl; - typedef pair, size_t> stats_elem_type; - typedef vector vec_to_sort; - vec_to_sort vecToSort(doClass.m_stats.begin(), doClass.m_stats.end()); - sort(vecToSort.begin(), vecToSort.end(), &SortFunc); - - for (auto const & el : vecToSort) + for (auto const & el : v) { - cout << el.second << " "; - for (uint32_t i : el.first) - cout << classif().GetFullObjectName(i) << " "; - cout << endl; + if (el.second.first <= MIN_OCCURRENCE) + break; + cout << el.second.first << " " << strings::ToUtf8(el.first); + cout << " \"" << el.second.second << "\"" << endl; } - cout << "Total features: " << doClass.m_totalCount << endl; - cout << "Features with names: " << doClass.m_namesCount << endl; } +} - /////////////////////////////////////////////////////////////////// +void DumpPrefixes(string const & fPath) +{ + PrefixesCollector doClass; + feature::ForEachFeature(fPath, doClass); + for (auto const & [langCode, container] : doClass.m_stats) + Print(langCode, container); +} - typedef std::map > > TokensContainerT; - class PrefixesCollector +void DumpSearchTokens(string const & fPath, size_t maxTokensToShow) +{ + using Value = Uint64IndexValue; + + FilesContainerR container(std::make_unique(fPath)); + feature::DataHeader header(container); + + auto const trieRoot = trie::ReadTrie>(container.GetReader(SEARCH_INDEX_FILE_TAG), + SingleValueSerializer()); + + SearchTokensCollector f; + trie::ForEachRef(*trieRoot, f, strings::UniString()); + f.Finish(); + + for (size_t i = 0; i < std::min(maxTokensToShow, f.m_tokens.size()); ++i) { - public: - TokensContainerT m_stats; + auto const & s = f.m_tokens[i].second; + cout << f.m_tokens[i].first << " " << strings::ToUtf8(s) << endl; + } +} - void operator()(int8_t langCode, std::string_view name) +void DumpFeatureNames(string const & fPath, string const & lang) +{ + int8_t const langIndex = StringUtf8Multilang::GetLangIndex(lang); + + feature::ForEachFeature(fPath, [&](FeatureType & f, uint32_t) + { + f.ForEachName([&](int8_t langCode, std::string_view name) { CHECK(!name.empty(), ("Feature name is empty")); - auto const tokens = search::NormalizeAndTokenizeString(name); - for (size_t i = 1; i < tokens.size(); ++i) - { - strings::UniString s; - for (size_t numTokens = 0; numTokens < i; ++numTokens) - { - s.append(tokens[numTokens].begin(), tokens[numTokens].end()); - s.push_back(' '); - } - auto [iter, found] = m_stats[langCode].emplace(s, std::make_pair(1U, name)); - if (!found) - iter->second.first++; - } - } - - void operator()(FeatureType & f, uint32_t) - { - f.ForEachName(*this); - } - }; - - static size_t constexpr MIN_OCCURRENCE = 3; - - void Print(int8_t langCode, TokensContainerT::mapped_type const & container) - { - typedef pair > NameElemT; - typedef vector VecToSortT; - - VecToSortT v(container.begin(), container.end()); - std::sort(v.begin(), v.end(), &SortFunc); - - // do not display prefixes with low occurrences - if (v[0].second.first > MIN_OCCURRENCE) - { - cout << "Language code: " << StringUtf8Multilang::GetLangByCode(langCode) << endl; - - for (auto const & el : v) - { - if (el.second.first <= MIN_OCCURRENCE) - break; - cout << el.second.first << " " << strings::ToUtf8(el.first); - cout << " \"" << el.second.second << "\"" << endl; - } - } - } - - void DumpPrefixes(string const & fPath) - { - PrefixesCollector doClass; - feature::ForEachFeature(fPath, doClass); - for (auto const & [langCode, container] : doClass.m_stats) - Print(langCode, container); - } - - void DumpSearchTokens(string const & fPath, size_t maxTokensToShow) - { - using Value = Uint64IndexValue; - - FilesContainerR container(std::make_unique(fPath)); - feature::DataHeader header(container); - - auto const trieRoot = trie::ReadTrie>( - container.GetReader(SEARCH_INDEX_FILE_TAG), SingleValueSerializer()); - - SearchTokensCollector f; - trie::ForEachRef(*trieRoot, f, strings::UniString()); - f.Finish(); - - for (size_t i = 0; i < std::min(maxTokensToShow, f.m_tokens.size()); ++i) - { - auto const & s = f.m_tokens[i].second; - cout << f.m_tokens[i].first << " " << strings::ToUtf8(s) << endl; - } - } - - void DumpFeatureNames(string const & fPath, string const & lang) - { - int8_t const langIndex = StringUtf8Multilang::GetLangIndex(lang); - - feature::ForEachFeature(fPath, [&](FeatureType & f, uint32_t) - { - f.ForEachName([&](int8_t langCode, std::string_view name) - { - CHECK(!name.empty(), ("Feature name is empty")); - - if (langIndex == StringUtf8Multilang::kUnsupportedLanguageCode) - cout << StringUtf8Multilang::GetLangByCode(langCode) << ' ' << name << endl; - else if (langCode == langIndex) - cout << name << endl; - }); + if (langIndex == StringUtf8Multilang::kUnsupportedLanguageCode) + cout << StringUtf8Multilang::GetLangByCode(langCode) << ' ' << name << endl; + else if (langCode == langIndex) + cout << name << endl; }); - } -} // namespace features_dumper + }); +} +} // namespace features_dumper diff --git a/generator/dumper.hpp b/generator/dumper.hpp index 7f900b9e4..db37dc268 100644 --- a/generator/dumper.hpp +++ b/generator/dumper.hpp @@ -4,16 +4,16 @@ namespace features_dumper { - void DumpTypes(std::string const & fPath); - void DumpPrefixes(std::string const & fPath); +void DumpTypes(std::string const & fPath); +void DumpPrefixes(std::string const & fPath); - // Writes top maxTokensToShow tokens sorted by their - // frequency, i.e. by the number of features in - // an mwm that contain the token in their name. - void DumpSearchTokens(std::string const & fPath, size_t maxTokensToShow); +// Writes top maxTokensToShow tokens sorted by their +// frequency, i.e. by the number of features in +// an mwm that contain the token in their name. +void DumpSearchTokens(std::string const & fPath, size_t maxTokensToShow); - // Writes the names of all features in the locale provided by lang - // (e.g. "en", "ru", "sv"). If the locale is not recognized, writes all names - // preceded by their locales. - void DumpFeatureNames(std::string const & fPath, std::string const & lang); -} +// Writes the names of all features in the locale provided by lang +// (e.g. "en", "ru", "sv"). If the locale is not recognized, writes all names +// preceded by their locales. +void DumpFeatureNames(std::string const & fPath, std::string const & lang); +} // namespace features_dumper diff --git a/generator/factory_utils.hpp b/generator/factory_utils.hpp index fbb0f9622..7752d0c62 100644 --- a/generator/factory_utils.hpp +++ b/generator/factory_utils.hpp @@ -6,16 +6,14 @@ namespace generator { template -std::enable_if_t::value, std::shared_ptr> -create(Args&&... args) +std::enable_if_t::value, std::shared_ptr> create(Args &&... args) { return std::make_shared(std::forward(args)...); } // impossible to construct template -std::enable_if_t::value, std::shared_ptr> -create(Args&&... ) +std::enable_if_t::value, std::shared_ptr> create(Args &&...) { return nullptr; } diff --git a/generator/feature_builder.cpp b/generator/feature_builder.cpp index 38bf4a934..47e7880b2 100644 --- a/generator/feature_builder.cpp +++ b/generator/feature_builder.cpp @@ -39,9 +39,7 @@ bool IsEqual(m2::PointD const & p1, m2::PointD const & p2) bool IsEqual(m2::RectD const & r1, m2::RectD const & r2) { - return (IsEqual(r1.minX(), r2.minX()) && - IsEqual(r1.minY(), r2.minY()) && - IsEqual(r1.maxX(), r2.maxX()) && + return (IsEqual(r1.minX(), r2.minX()) && IsEqual(r1.minY(), r2.minY()) && IsEqual(r1.maxX(), r2.maxX()) && IsEqual(r1.maxY(), r2.maxY())); } @@ -52,10 +50,7 @@ bool IsEqual(std::vector const & v1, std::vector const & } } // namespace -FeatureBuilder::FeatureBuilder() - : m_coastCell(-1) -{ -} +FeatureBuilder::FeatureBuilder() : m_coastCell(-1) {} bool FeatureBuilder::IsGeometryClosed() const { @@ -76,14 +71,10 @@ m2::PointD FeatureBuilder::GetKeyPoint() const { switch (GetGeomType()) { - case GeomType::Point: - return m_center; + case GeomType::Point: return m_center; case GeomType::Line: - case GeomType::Area: - return GetGeometryCenter(); - default: - CHECK(false, ()); - return m2::PointD(); + case GeomType::Area: return GetGeometryCenter(); + default: CHECK(false, ()); return m2::PointD(); } } @@ -128,7 +119,7 @@ void FeatureBuilder::AssignArea(PointSeq && outline, Geometry const & holes) for (PointSeq const & points : holes) { - ASSERT ( !points.empty(), (*this) ); + ASSERT(!points.empty(), (*this)); size_t j = 0; size_t const count = points.size(); @@ -222,10 +213,8 @@ bool FeatureBuilder::PreSerialize() auto const & types = GetTypes(); if (ftypes::IsMotorwayJunctionChecker::Instance()(types) || (m_params.name.IsEmpty() && - (ftypes::IsPostPoiChecker::Instance()(types) || - ftypes::IsRailwaySubwayEntranceChecker::Instance()(types) || - ftypes::IsEntranceChecker::Instance()(types) || - ftypes::IsAerowayGateChecker::Instance()(types) || + (ftypes::IsPostPoiChecker::Instance()(types) || ftypes::IsRailwaySubwayEntranceChecker::Instance()(types) || + ftypes::IsEntranceChecker::Instance()(types) || ftypes::IsAerowayGateChecker::Instance()(types) || ftypes::IsPlatformChecker::Instance()(types)))) { m_params.name.AddString(StringUtf8Multilang::kDefaultCode, m_params.ref); @@ -253,11 +242,8 @@ bool FeatureBuilder::PreSerialize() if (!m_params.ref.empty()) { auto const & types = GetTypes(); - if (m_params.name.IsEmpty() && - (ftypes::IsPlatformChecker::Instance()(types))) - { + if (m_params.name.IsEmpty() && (ftypes::IsPlatformChecker::Instance()(types))) m_params.name.AddString(StringUtf8Multilang::kDefaultCode, m_params.ref); - } m_params.ref.clear(); } @@ -265,8 +251,7 @@ bool FeatureBuilder::PreSerialize() m_params.rank = 0; break; - default: - return false; + default: return false; } // Stats shows that 1706197 POIs out of 2258011 have name == brand. @@ -298,7 +283,7 @@ bool FeatureBuilder::PreSerializeAndRemoveUselessNamesForIntermediate() // Clear name for features with invisible texts. // AlexZ: Commented this line to enable captions on subway exits, which // are not drawn but should be visible in balloons and search results - //RemoveNameIfInvisible(); + // RemoveNameIfInvisible(); RemoveUselessNames(); return true; @@ -312,7 +297,7 @@ void FeatureBuilder::RemoveUselessNames() // AFAIR, they were very messy in search because they contain places' names. auto const typeRemover = [](uint32_t type) { - static TypeSetChecker const checkBoundary({ "boundary", "administrative" }); + static TypeSetChecker const checkBoundary({"boundary", "administrative"}); return checkBoundary.IsEqual(type); }; @@ -367,10 +352,8 @@ bool FeatureBuilder::operator==(FeatureBuilder const & fb) const return false; for (auto i = m_polygons.cbegin(), j = fb.m_polygons.cbegin(); i != m_polygons.cend(); ++i, ++j) - { if (!IsEqual(*i, *j)) return false; - } return true; } @@ -380,8 +363,8 @@ bool FeatureBuilder::IsExactEq(FeatureBuilder const & fb) const if (m_params.GetGeomType() == GeomType::Point && m_center != fb.m_center) return false; - return (m_polygons == fb.m_polygons && m_limitRect == fb.m_limitRect && - m_osmIds == fb.m_osmIds && m_params == fb.m_params && m_coastCell == fb.m_coastCell); + return (m_polygons == fb.m_polygons && m_limitRect == fb.m_limitRect && m_osmIds == fb.m_osmIds && + m_params == fb.m_params && m_coastCell == fb.m_coastCell); } void FeatureBuilder::SerializeForIntermediate(Buffer & data) const @@ -485,7 +468,7 @@ void FeatureBuilder::SerializeAccuratelyForIntermediate(Buffer & data) const Buffer tmp(data); FeatureBuilder fb; fb.DeserializeAccuratelyFromIntermediate(tmp); - ASSERT ( fb == *this, ("Source feature: ", *this, "Deserialized feature: ", fb) ); + ASSERT(fb == *this, ("Source feature: ", *this, "Deserialized feature: ", fb)); #endif } @@ -522,9 +505,15 @@ void FeatureBuilder::DeserializeAccuratelyFromIntermediate(Buffer & data) CHECK(IsValid(), (*this)); } -void FeatureBuilder::AddOsmId(base::GeoObjectId id) { m_osmIds.push_back(id); } +void FeatureBuilder::AddOsmId(base::GeoObjectId id) +{ + m_osmIds.push_back(id); +} -void FeatureBuilder::SetOsmId(base::GeoObjectId id) { m_osmIds.assign(1, id); } +void FeatureBuilder::SetOsmId(base::GeoObjectId id) +{ + m_osmIds.assign(1, id); +} base::GeoObjectId FeatureBuilder::GetFirstOsmId() const { @@ -597,10 +586,8 @@ bool FeatureBuilder::IsDrawableInRange(int lowScale, int highScale) const { auto const types = GetTypesHolder(); while (lowScale <= highScale) - { if (IsDrawableForIndex(types, m_limitRect, lowScale++)) return true; - } return false; } @@ -636,8 +623,7 @@ bool FeatureBuilder::PreSerializeAndRemoveUselessNamesForMwm(SupportingData cons return true; } -void FeatureBuilder::SerializeForMwm(SupportingData & data, - serial::GeometryCodingParams const & params) const +void FeatureBuilder::SerializeForMwm(SupportingData & data, serial::GeometryCodingParams const & params) const { data.m_buffer.clear(); @@ -654,7 +640,7 @@ void FeatureBuilder::SerializeForMwm(SupportingData & data, uint8_t trgCount = base::asserted_cast(data.m_innerTrg.size()); if (trgCount > 0) { - ASSERT_GREATER ( trgCount, 2, () ); + ASSERT_GREATER(trgCount, 2, ()); trgCount -= 2; } @@ -735,10 +721,8 @@ bool FeatureBuilder::IsValid() const return false; for (auto const & points : geom) - { if (points.size() < 3) return false; - } } return true; @@ -756,9 +740,8 @@ std::string DebugPrint(FeatureBuilder const & fb) default: out << "ERROR: unknown geometry type"; break; } - out << " " << DebugPrint(mercator::ToLatLon(fb.GetLimitRect())) - << " " << DebugPrint(fb.GetParams()) - << " " << fb.DebugPrintIDs(); + out << " " << DebugPrint(mercator::ToLatLon(fb.GetLimitRect())) << " " << DebugPrint(fb.GetParams()) << " " + << fb.DebugPrintIDs(); return out.str(); } diff --git a/generator/feature_builder.hpp b/generator/feature_builder.hpp index ec21926c1..c8a6342bc 100644 --- a/generator/feature_builder.hpp +++ b/generator/feature_builder.hpp @@ -70,10 +70,7 @@ public: bool IsGeometryClosed() const; static m2::PointD GetGeometryCenter(PointSeq const & pts); - m2::PointD GetGeometryCenter() const - { - return GetGeometryCenter(GetOuterGeometry()); - } + m2::PointD GetGeometryCenter() const { return GetGeometryCenter(GetOuterGeometry()); } m2::PointD GetKeyPoint() const; size_t GetPointsCount() const; size_t GetPolygonsCount() const { return m_polygons.size(); } @@ -89,10 +86,8 @@ public: else { for (auto const & points : m_polygons) - { for (auto const & pt : points) toDo(pt); - } } } @@ -103,10 +98,8 @@ public: return toDo(m_center); for (auto const & points : m_polygons) - { if (base::AnyOf(points, std::forward(toDo))) return true; - } return false; } @@ -236,24 +229,16 @@ using TypeSerializationVersion = typename std::underlying_type(SerializationVersion::MinSize); + auto static const kSerializationVersion = static_cast(SerializationVersion::MinSize); - static void Serialize(FeatureBuilder const & fb, FeatureBuilder::Buffer & data) - { - fb.SerializeForIntermediate(data); - } + static void Serialize(FeatureBuilder const & fb, FeatureBuilder::Buffer & data) { fb.SerializeForIntermediate(data); } - static void Deserialize(FeatureBuilder & fb, FeatureBuilder::Buffer & data) - { - fb.DeserializeFromIntermediate(data); - } + static void Deserialize(FeatureBuilder & fb, FeatureBuilder::Buffer & data) { fb.DeserializeFromIntermediate(data); } }; struct MaxAccuracy { - auto static const kSerializationVersion = - static_cast(SerializationVersion::MinSize); + auto static const kSerializationVersion = static_cast(SerializationVersion::MinSize); static void Serialize(FeatureBuilder const & fb, FeatureBuilder::Buffer & data) { @@ -321,10 +306,8 @@ std::vector ReadAllDatRawFormat(std::string const & fileName) // Happens in tests when World or Country file is empty (no valid Features to emit). if (Platform::IsFileExistsByFullPath(fileName)) { - ForEachFeatureRawFormat(fileName, [&](FeatureBuilder && fb, uint64_t) - { - fbs.emplace_back(std::move(fb)); - }); + ForEachFeatureRawFormat( + fileName, [&](FeatureBuilder && fb, uint64_t) { fbs.emplace_back(std::move(fb)); }); } return fbs; } @@ -333,12 +316,11 @@ template (m_mangleName ? m_filename + "_" : m_filename, op)) + , m_writer(std::make_unique(m_mangleName ? m_filename + "_" : m_filename, op)) { // TODO(maksimandrianov): I would like to support the verification of serialization versions, // but this requires reworking of FeatureCollector class and its derived classes. It is in @@ -346,11 +328,9 @@ public: // static_cast(SerializationPolicy::kSerializationVersion)); } - explicit FeatureBuilderWriter(std::string const & filename, - FileWriter::Op op) + explicit FeatureBuilderWriter(std::string const & filename, FileWriter::Op op) : FeatureBuilderWriter(filename, false /* mangleName */, op) - { - } + {} ~FeatureBuilderWriter() { @@ -363,10 +343,7 @@ public: } } - void Write(FeatureBuilder const & fb) - { - Write(*m_writer, fb); - } + void Write(FeatureBuilder const & fb) { Write(*m_writer, fb); } template static void Write(Sink & writer, FeatureBuilder const & fb) diff --git a/generator/feature_emitter_iface.hpp b/generator/feature_emitter_iface.hpp index 7a4df4d68..148fbc352 100644 --- a/generator/feature_emitter_iface.hpp +++ b/generator/feature_emitter_iface.hpp @@ -8,9 +8,10 @@ class FeatureBuilder; class FeatureEmitterIFace { // Disable deletion via this interface, because some dtors in derived classes are noexcept(false). + protected: ~FeatureEmitterIFace() = default; public: - virtual void operator() (feature::FeatureBuilder const &) = 0; + virtual void operator()(feature::FeatureBuilder const &) = 0; }; diff --git a/generator/feature_generator.cpp b/generator/feature_generator.cpp index 5df2a18e5..23185cef6 100644 --- a/generator/feature_generator.cpp +++ b/generator/feature_generator.cpp @@ -5,9 +5,9 @@ #include "generator/intermediate_data.hpp" #include "generator/intermediate_elements.hpp" +#include "geometry/mercator.hpp" #include "indexer/cell_id.hpp" #include "indexer/data_header.hpp" -#include "geometry/mercator.hpp" #include "coding/varint.hpp" @@ -27,9 +27,9 @@ namespace feature { FeaturesCollector::FeaturesCollector(std::string const & fName, FileWriter::Op op) - : m_dataFile(fName, op), m_writeBuffer(kBufferSize) -{ -} + : m_dataFile(fName, op) + , m_writeBuffer(kBufferSize) +{} FeaturesCollector::~FeaturesCollector() { @@ -77,7 +77,8 @@ void FeaturesCollector::Write(char const * src, size_t size) m_writePosition += part_size; size -= part_size; src += part_size; - } while (size > 0); + } + while (size > 0); } uint32_t FeaturesCollector::WriteFeatureBase(std::vector const & bytes, FeatureBuilder const & fb) @@ -104,7 +105,9 @@ uint32_t FeaturesCollector::Collect(FeatureBuilder const & fb) FeaturesAndRawGeometryCollector::FeaturesAndRawGeometryCollector(std::string const & featuresFileName, std::string const & rawGeometryFileName) - : FeaturesCollector(featuresFileName), m_rawGeometryFileStream(rawGeometryFileName) {} + : FeaturesCollector(featuresFileName) + , m_rawGeometryFileStream(rawGeometryFileName) +{} FeaturesAndRawGeometryCollector::~FeaturesAndRawGeometryCollector() { @@ -128,8 +131,7 @@ uint32_t FeaturesAndRawGeometryCollector::Collect(FeatureBuilder const & fb) { uint64_t numPoints = points.size(); m_rawGeometryFileStream.Write(&numPoints, sizeof(numPoints)); - m_rawGeometryFileStream.Write(points.data(), - sizeof(FeatureBuilder::PointSeq::value_type) * points.size()); + m_rawGeometryFileStream.Write(points.data(), sizeof(FeatureBuilder::PointSeq::value_type) * points.size()); } return featureId; } diff --git a/generator/feature_generator.hpp b/generator/feature_generator.hpp index 0f20816da..eae09de7c 100644 --- a/generator/feature_generator.hpp +++ b/generator/feature_generator.hpp @@ -52,8 +52,7 @@ class FeaturesAndRawGeometryCollector : public FeaturesCollector size_t m_rawGeometryCounter = 0; public: - FeaturesAndRawGeometryCollector(std::string const & featuresFileName, - std::string const & rawGeometryFileName); + FeaturesAndRawGeometryCollector(std::string const & featuresFileName, std::string const & rawGeometryFileName); ~FeaturesAndRawGeometryCollector() override; uint32_t Collect(FeatureBuilder const & f) override; diff --git a/generator/feature_helpers.cpp b/generator/feature_helpers.cpp index 08a7bcfd8..3a03cb956 100644 --- a/generator/feature_helpers.cpp +++ b/generator/feature_helpers.cpp @@ -12,9 +12,7 @@ namespace feature CalculateMidPoints::CalculateMidPoints() { m_minDrawableScaleFn = [](FeatureBuilder const & fb) - { - return GetMinDrawableScale(fb.GetTypesHolder(), fb.GetLimitRect()); - }; + { return GetMinDrawableScale(fb.GetTypesHolder(), fb.GetLimitRect()); }; } void CalculateMidPoints::operator()(FeatureBuilder const & ft, uint64_t pos) diff --git a/generator/feature_helpers.hpp b/generator/feature_helpers.hpp index 57b4b9aff..8faf3251c 100644 --- a/generator/feature_helpers.hpp +++ b/generator/feature_helpers.hpp @@ -25,7 +25,7 @@ class CalculateMidPoints { public: using CellAndOffset = std::pair; - using MinDrawableScaleFn = std::function; + using MinDrawableScaleFn = std::function; CalculateMidPoints(); @@ -68,10 +68,8 @@ public: // p is close to the borders of |m_rect|, in which case returns a very large number. double operator()(m2::PointD const & a, m2::PointD const & b, m2::PointD const & p) const { - if (AlmostEqualAbs(p.x, m_rect.minX(), m_eps) || - AlmostEqualAbs(p.x, m_rect.maxX(), m_eps) || - AlmostEqualAbs(p.y, m_rect.minY(), m_eps) || - AlmostEqualAbs(p.y, m_rect.maxY(), m_eps)) + if (AlmostEqualAbs(p.x, m_rect.minX(), m_eps) || AlmostEqualAbs(p.x, m_rect.maxX(), m_eps) || + AlmostEqualAbs(p.y, m_rect.minY(), m_eps) || AlmostEqualAbs(p.y, m_rect.maxY(), m_eps)) { // Points near rect should be in a result simplified vector. return std::numeric_limits::max(); diff --git a/generator/feature_maker.cpp b/generator/feature_maker.cpp index 762ad1c59..8a4e56225 100644 --- a/generator/feature_maker.cpp +++ b/generator/feature_maker.cpp @@ -11,7 +11,6 @@ #include "geometry/mercator.hpp" - namespace generator { using namespace feature; @@ -24,8 +23,7 @@ std::shared_ptr FeatureMakerSimple::Clone() const void FeatureMakerSimple::ParseParams(FeatureBuilderParams & params, OsmElement & p) const { auto const & cl = classif(); - ftype::GetNameAndType(&p, params, - [&cl] (uint32_t type) { return cl.IsTypeValid(type); }, + ftype::GetNameAndType(&p, params, [&cl](uint32_t type) { return cl.IsTypeValid(type); }, [this](OsmElement const * p) { return GetOrigin(*p); }); } @@ -59,10 +57,8 @@ std::optional FeatureMakerSimple::GetOrigin(OsmElement const & e) co return {}; } for (auto const & m : e.m_members) - { if (m.m_type == OsmElement::EntityType::Node) return ReadNode(m.m_ref); - } for (auto const & m : e.m_members) { @@ -149,17 +145,12 @@ bool FeatureMakerSimple::BuildFromRelation(OsmElement & p, FeatureBuilderParams m_queue.push(std::move(fb)); }; - helper.GetOuter().ForEachArea(true /* collectID */, [&](auto && pts, auto && ids) - { - createFB(std::move(pts), ids); - }); + helper.GetOuter().ForEachArea(true /* collectID */, [&](auto && pts, auto && ids) { createFB(std::move(pts), ids); }); return size != m_queue.size(); } - -FeatureMaker::FeatureMaker(IDRInterfacePtr const & cache) - : FeatureMakerSimple(cache) +FeatureMaker::FeatureMaker(IDRInterfacePtr const & cache) : FeatureMakerSimple(cache) { m_placeClass = classif().GetTypeByPath({"place"}); } @@ -171,8 +162,7 @@ std::shared_ptr FeatureMaker::Clone() const void FeatureMaker::ParseParams(FeatureBuilderParams & params, OsmElement & p) const { - ftype::GetNameAndType(&p, params, &feature::IsUsefulType, - [this](OsmElement const * p) { return GetOrigin(*p); }); + ftype::GetNameAndType(&p, params, &feature::IsUsefulType, [this](OsmElement const * p) { return GetOrigin(*p); }); } bool FeatureMaker::BuildFromRelation(OsmElement & p, FeatureBuilderParams const & params) diff --git a/generator/feature_maker.hpp b/generator/feature_maker.hpp index a05a573e7..b90c7241b 100644 --- a/generator/feature_maker.hpp +++ b/generator/feature_maker.hpp @@ -2,14 +2,13 @@ #include "generator/feature_maker_base.hpp" - struct OsmElement; namespace generator { // FeatureMakerSimple is suitable for most cases for simple features. // It filters features for bad geometry only. -class FeatureMakerSimple: public FeatureMakerBase +class FeatureMakerSimple : public FeatureMakerBase { public: using FeatureMakerBase::FeatureMakerBase; diff --git a/generator/feature_maker_base.cpp b/generator/feature_maker_base.cpp index b2db19a89..3ee594104 100644 --- a/generator/feature_maker_base.cpp +++ b/generator/feature_maker_base.cpp @@ -17,14 +17,10 @@ bool FeatureMakerBase::Add(OsmElement & element) ParseParams(params, element); switch (element.m_type) { - case OsmElement::EntityType::Node: - return BuildFromNode(element, params); - case OsmElement::EntityType::Way: - return BuildFromWay(element, params); - case OsmElement::EntityType::Relation: - return BuildFromRelation(element, params); - default: - return false; + case OsmElement::EntityType::Node: return BuildFromNode(element, params); + case OsmElement::EntityType::Way: return BuildFromWay(element, params); + case OsmElement::EntityType::Relation: return BuildFromRelation(element, params); + default: return false; } } diff --git a/generator/feature_merger.cpp b/generator/feature_merger.cpp index c4f20552c..8f6b9b8bf 100644 --- a/generator/feature_merger.cpp +++ b/generator/feature_merger.cpp @@ -8,8 +8,7 @@ using namespace feature; -MergedFeatureBuilder::MergedFeatureBuilder(FeatureBuilder const & fb) - : FeatureBuilder(fb), m_isRound(false) +MergedFeatureBuilder::MergedFeatureBuilder(FeatureBuilder const & fb) : FeatureBuilder(fb), m_isRound(false) { m_params.FinishAddingTypes(); } @@ -60,18 +59,15 @@ void MergedFeatureBuilder::AppendFeature(MergedFeatureBuilder const & fb, bool f CalcRect(fbG.begin(), fbG.end() - 1, m_limitRect); } } + else if (toBack) + { + thisG.insert(thisG.end(), fbG.rbegin() + 1, fbG.rend()); + CalcRect(fbG.rbegin() + 1, fbG.rend(), m_limitRect); + } else { - if (toBack) - { - thisG.insert(thisG.end(), fbG.rbegin() + 1, fbG.rend()); - CalcRect(fbG.rbegin() + 1, fbG.rend(), m_limitRect); - } - else - { - thisG.insert(thisG.begin(), fbG.rbegin(), fbG.rend() - 1); - CalcRect(fbG.rbegin(), fbG.rend() - 1, m_limitRect); - } + thisG.insert(thisG.begin(), fbG.rbegin(), fbG.rend() - 1); + CalcRect(fbG.rbegin(), fbG.rend() - 1, m_limitRect); } } @@ -100,7 +96,7 @@ std::pair MergedFeatureBuilder::GetKeyPoint(size_t i) const i -= sz; // 4. return last point - ASSERT_EQUAL ( i, 0, () ); + ASSERT_EQUAL(i, 0, ()); return std::make_pair(LastPoint(), true); } @@ -115,27 +111,23 @@ double MergedFeatureBuilder::GetSquaredLength() const double sqLen = 0.0; for (size_t i = 1; i < poly.size(); ++i) - sqLen += poly[i-1].SquaredLength(poly[i]); + sqLen += poly[i - 1].SquaredLength(poly[i]); return sqLen; } - FeatureMergeProcessor::Key FeatureMergeProcessor::GetKey(m2::PointD const & p) { return PointToInt64Obsolete(p, m_coordBits); } -FeatureMergeProcessor::FeatureMergeProcessor(uint32_t coordBits) -: m_coordBits(coordBits) +FeatureMergeProcessor::FeatureMergeProcessor(uint32_t coordBits) : m_coordBits(coordBits) {} + +void FeatureMergeProcessor::operator()(FeatureBuilder const & fb) { + this->operator()(new MergedFeatureBuilder(fb)); } -void FeatureMergeProcessor::operator() (FeatureBuilder const & fb) -{ - this->operator() (new MergedFeatureBuilder(fb)); -} - -void FeatureMergeProcessor::operator() (MergedFeatureBuilder * p) +void FeatureMergeProcessor::operator()(MergedFeatureBuilder * p) { Key const k1 = GetKey(p->FirstPoint()); Key const k2 = GetKey(p->LastPoint()); @@ -166,7 +158,8 @@ void FeatureMergeProcessor::Remove(Key key, MergedFeatureBuilder const * p) { MergedFeatureBuilders & v = i->second; v.erase(remove(v.begin(), v.end(), p), v.end()); - if (v.empty()) m_map.erase(i); + if (v.empty()) + m_map.erase(i); } } @@ -180,7 +173,7 @@ void FeatureMergeProcessor::Remove(MergedFeatureBuilder const * p) Remove(k2, p); else { - ASSERT ( p->IsRound(), () ); + ASSERT(p->IsRound(), ()); p->ForEachMiddlePoints(std::bind(&FeatureMergeProcessor::Remove1, this, std::placeholders::_1, p)); } @@ -276,7 +269,8 @@ void FeatureMergeProcessor::DoMerge(FeatureEmitterIFace & emitter) } // Delete if the feature was removed from map. - if (isRemoved) delete p; + if (isRemoved) + delete p; } if (m_last.NotEmpty()) @@ -292,7 +286,8 @@ uint32_t FeatureTypesProcessor::GetType(char const * arr[], size_t n) void FeatureTypesProcessor::CorrectType(uint32_t & t) const { - if (m_dontNormalize.count(t) > 0) return; + if (m_dontNormalize.count(t) > 0) + return; // 1. get normalized type: // highway-motorway-bridge => highway-motorway @@ -309,7 +304,7 @@ void FeatureTypesProcessor::SetMappingTypes(char const * arr1[2], char const * a m_mapping[GetType(arr1, 2)] = GetType(arr2, 2); } -MergedFeatureBuilder * FeatureTypesProcessor::operator() (FeatureBuilder const & fb) +MergedFeatureBuilder * FeatureTypesProcessor::operator()(FeatureBuilder const & fb) { MergedFeatureBuilder * p = new MergedFeatureBuilder(fb); @@ -340,22 +335,13 @@ protected: public: int m_lowScale, m_upScale; - TypeCheckBase(int lowScale, int upScale) - : m_lowScale(lowScale), m_upScale(upScale) - { - } + TypeCheckBase(int lowScale, int upScale) : m_lowScale(lowScale), m_upScale(upScale) {} using RangeT = std::pair; - static RangeT GetScaleRange(uint32_t type) - { - return feature::GetDrawableScaleRange(type); - } + static RangeT GetScaleRange(uint32_t type) { return feature::GetDrawableScaleRange(type); } static bool IsEmptyRange(RangeT const & range) { return range.first == -1; } - bool IsBadRange(RangeT const & range) const - { - return (range.first > m_upScale || range.second < m_lowScale); - } + bool IsBadRange(RangeT const & range) const { return (range.first > m_upScale || range.second < m_lowScale); } }; class TypeCheckWorld : public TypeCheckBase @@ -363,12 +349,10 @@ class TypeCheckWorld : public TypeCheckBase public: bool m_isRegion = false; - TypeCheckWorld() : TypeCheckBase(0, scales::GetUpperWorldScale()) - { - } + TypeCheckWorld() : TypeCheckBase(0, scales::GetUpperWorldScale()) {} /// @return true If |type| should be removed. - bool operator() (uint32_t type) + bool operator()(uint32_t type) { // Keep place=region types in World.mwm for search, even when they are not visible. if (type == GetRegionType()) @@ -385,12 +369,10 @@ public: class TypeCheckCountry : public TypeCheckBase { public: - TypeCheckCountry() : TypeCheckBase(scales::GetUpperWorldScale() + 1, scales::GetUpperStyleScale()) - { - } + TypeCheckCountry() : TypeCheckBase(scales::GetUpperWorldScale() + 1, scales::GetUpperStyleScale()) {} /// @return true If |type| should be removed. - bool operator() (uint32_t type) const + bool operator()(uint32_t type) const { // Do not keep place=region in countries. if (type == GetRegionType()) @@ -427,4 +409,4 @@ bool PreprocessForCountryMap(FeatureBuilder & fb) { return !fb.RemoveTypesIf(TypeCheckCountry()); } -} // namespace feature +} // namespace feature diff --git a/generator/feature_merger.hpp b/generator/feature_merger.hpp index 0392ff0c5..f53b9319a 100644 --- a/generator/feature_merger.hpp +++ b/generator/feature_merger.hpp @@ -1,7 +1,7 @@ #pragma once -#include "generator/feature_emitter_iface.hpp" #include "generator/feature_builder.hpp" +#include "generator/feature_emitter_iface.hpp" #include #include @@ -35,16 +35,18 @@ public: inline bool PopAnyType(uint32_t & type) { return m_params.PopAnyType(type); } - template void ForEachChangeTypes(ToDo toDo) + template + void ForEachChangeTypes(ToDo toDo) { for_each(m_params.m_types.begin(), m_params.m_types.end(), toDo); m_params.FinishAddingTypes(); } - template void ForEachMiddlePoints(ToDo toDo) const + template + void ForEachMiddlePoints(ToDo toDo) const { PointSeq const & poly = GetOuterGeometry(); - for (size_t i = 1; i < poly.size()-1; ++i) + for (size_t i = 1; i < poly.size() - 1; ++i) toDo(poly[i]); } @@ -58,7 +60,7 @@ public: /// Feature merger. class FeatureMergeProcessor { - using Key = int64_t ; + using Key = int64_t; Key GetKey(m2::PointD const & p); MergedFeatureBuilder m_last; @@ -70,10 +72,7 @@ class FeatureMergeProcessor void Insert(m2::PointD const & pt, MergedFeatureBuilder * p); void Remove(Key key, MergedFeatureBuilder const * p); - inline void Remove1(m2::PointD const & pt, MergedFeatureBuilder const * p) - { - Remove(GetKey(pt), p); - } + inline void Remove1(m2::PointD const & pt, MergedFeatureBuilder const * p) { Remove(GetKey(pt), p); } void Remove(MergedFeatureBuilder const * p); uint8_t m_coordBits; @@ -81,13 +80,12 @@ class FeatureMergeProcessor public: FeatureMergeProcessor(uint32_t coordBits); - void operator() (feature::FeatureBuilder const & fb); - void operator() (MergedFeatureBuilder * p); + void operator()(feature::FeatureBuilder const & fb); + void operator()(MergedFeatureBuilder * p); void DoMerge(FeatureEmitterIFace & emitter); }; - /// Feature types corrector. class FeatureTypesProcessor { @@ -101,9 +99,10 @@ class FeatureTypesProcessor class do_change_types { FeatureTypesProcessor const & m_pr; + public: do_change_types(FeatureTypesProcessor const & pr) : m_pr(pr) {} - void operator() (uint32_t & t) { m_pr.CorrectType(t); } + void operator()(uint32_t & t) { m_pr.CorrectType(t); } }; public: @@ -111,19 +110,20 @@ public: void SetMappingTypes(char const * arr1[2], char const * arr2[2]); /// Leave original types, for example: boundary-administrative-2. - template void SetDontNormalizeType(char const * (&arr)[N]) + template + void SetDontNormalizeType(char const * (&arr)[N]) { m_dontNormalize.insert(GetType(arr, N)); } - MergedFeatureBuilder * operator() (feature::FeatureBuilder const & fb); + MergedFeatureBuilder * operator()(feature::FeatureBuilder const & fb); }; namespace feature { - /// @return false If fb became invalid (no any suitable types). - //@{ - bool PreprocessForWorldMap(FeatureBuilder & fb); - bool PreprocessForCountryMap(FeatureBuilder & fb); - //@} -} +/// @return false If fb became invalid (no any suitable types). +//@{ +bool PreprocessForWorldMap(FeatureBuilder & fb); +bool PreprocessForCountryMap(FeatureBuilder & fb); +//@} +} // namespace feature diff --git a/generator/feature_processing_layers.cpp b/generator/feature_processing_layers.cpp index cd8439b79..6bf0aa13b 100644 --- a/generator/feature_processing_layers.cpp +++ b/generator/feature_processing_layers.cpp @@ -63,8 +63,8 @@ void LayerBase::Add(std::shared_ptr next) void RepresentationLayer::Handle(FeatureBuilder & fb) { -// if (m_complexFeaturesMixer) -// m_complexFeaturesMixer->Process([&](FeatureBuilder & fb){ LayerBase::Handle(fb); }, fb); + // if (m_complexFeaturesMixer) + // m_complexFeaturesMixer->Process([&](FeatureBuilder & fb){ LayerBase::Handle(fb); }, fb); auto const sourceType = fb.GetMostGenericOsmId().GetType(); auto const geomType = fb.GetGeomType(); @@ -73,9 +73,7 @@ void RepresentationLayer::Handle(FeatureBuilder & fb) auto const params = fb.GetParams(); switch (sourceType) { - case base::GeoObjectId::Type::ObsoleteOsmNode: - LayerBase::Handle(fb); - break; + case base::GeoObjectId::Type::ObsoleteOsmNode: LayerBase::Handle(fb); break; case base::GeoObjectId::Type::ObsoleteOsmWay: { switch (geomType) @@ -104,12 +102,8 @@ void RepresentationLayer::Handle(FeatureBuilder & fb) } break; } - case GeomType::Line: - LayerBase::Handle(fb); - break; - default: - UNREACHABLE(); - break; + case GeomType::Line: LayerBase::Handle(fb); break; + default: UNREACHABLE(); break; } break; } @@ -117,22 +111,14 @@ void RepresentationLayer::Handle(FeatureBuilder & fb) { switch (geomType) { - case GeomType::Area: - HandleArea(fb, params); - break; + case GeomType::Area: HandleArea(fb, params); break; // We transform place relations into points (see BuildFromRelation). - case GeomType::Point: - LayerBase::Handle(fb); - break; - default: - UNREACHABLE(); - break; + case GeomType::Point: LayerBase::Handle(fb); break; + default: UNREACHABLE(); break; } break; } - default: - UNREACHABLE(); - break; + default: UNREACHABLE(); break; } } @@ -185,31 +171,22 @@ void RepresentationCoastlineLayer::Handle(FeatureBuilder & fb) auto const geomType = fb.GetGeomType(); switch (sourceType) { - case base::GeoObjectId::Type::ObsoleteOsmNode: - break; + case base::GeoObjectId::Type::ObsoleteOsmNode: break; case base::GeoObjectId::Type::ObsoleteOsmWay: { switch (geomType) { case GeomType::Area: - case GeomType::Line: - LayerBase::Handle(fb); - break; - default: - UNREACHABLE(); - break; + case GeomType::Line: LayerBase::Handle(fb); break; + default: UNREACHABLE(); break; } break; } - case base::GeoObjectId::Type::ObsoleteOsmRelation: - break; - default: - UNREACHABLE(); - break; + case base::GeoObjectId::Type::ObsoleteOsmRelation: break; + default: UNREACHABLE(); break; } } - void PrepareCoastlineFeatureLayer::Handle(FeatureBuilder & fb) { if (fb.IsArea()) @@ -225,10 +202,7 @@ void PrepareCoastlineFeatureLayer::Handle(FeatureBuilder & fb) LayerBase::Handle(fb); } -WorldLayer::WorldLayer(std::string const & popularityFilename) - : m_filter(popularityFilename) -{ -} +WorldLayer::WorldLayer(std::string const & popularityFilename) : m_filter(popularityFilename) {} void WorldLayer::Handle(FeatureBuilder & fb) { diff --git a/generator/feature_processing_layers.hpp b/generator/feature_processing_layers.hpp index e99933839..da15874db 100644 --- a/generator/feature_processing_layers.hpp +++ b/generator/feature_processing_layers.hpp @@ -50,7 +50,7 @@ public: private: void HandleArea(feature::FeatureBuilder & fb, FeatureBuilderParams const & params); - //std::shared_ptr m_complexFeaturesMixer; + // std::shared_ptr m_complexFeaturesMixer; }; // Responsibility of class PrepareFeatureLayer is the removal of unused types and names, @@ -112,7 +112,7 @@ class AffiliationsFeatureLayer : public LayerBase { public: AffiliationsFeatureLayer(size_t bufferSize, AffiliationInterfacePtr affiliation, - std::shared_ptr queue) + std::shared_ptr queue) : m_bufferSize(bufferSize) , m_affiliation(std::move(affiliation)) , m_queue(std::move(queue)) diff --git a/generator/feature_segments_checker/feature_segments_checker.cpp b/generator/feature_segments_checker/feature_segments_checker.cpp index 660b7dfae..ce8e79a75 100644 --- a/generator/feature_segments_checker/feature_segments_checker.cpp +++ b/generator/feature_segments_checker/feature_segments_checker.cpp @@ -44,16 +44,13 @@ int32_t Coord2RoughCoord(double d) struct RoughPoint { - explicit RoughPoint(m2::PointD const & point) - : x(Coord2RoughCoord(point.x)), y(Coord2RoughCoord(point.y)) - { - } + explicit RoughPoint(m2::PointD const & point) : x(Coord2RoughCoord(point.x)), y(Coord2RoughCoord(point.y)) {} int32_t x; int32_t y; }; -bool operator< (RoughPoint const & l, RoughPoint const & r) +bool operator<(RoughPoint const & l, RoughPoint const & r) { if (l.x != r.x) return l.x < r.x; @@ -61,8 +58,7 @@ bool operator< (RoughPoint const & l, RoughPoint const & r) } template -void PrintCont(Cont const & cont, std::string const & title, std::string const & msgText1, - std::string const & msgText2) +void PrintCont(Cont const & cont, std::string const & title, std::string const & msgText1, std::string const & msgText2) { std::cout << std::endl << title << std::endl; for (auto const & a : cont) @@ -78,13 +74,15 @@ void WriteCSV(Cont const & cont, std::string const & fileName) } /// \returns y = k * x + b. It's the expected altitude in meters. -double GetY(double k, double b, double x) { return k * x + b; } +double GetY(double k, double b, double x) +{ + return k * x + b; +} /// \brief Calculates factors |k| and |b| of a line using linear least squares method. /// \returns false in case of error (e.g. if the line is parallel to the vertical axis) /// and true otherwise. -bool LinearLeastSquaresFactors(std::vector const & xs, std::vector const & ys, double & k, - double & b) +bool LinearLeastSquaresFactors(std::vector const & xs, std::vector const & ys, double & k, double & b) { double constexpr kEpsilon = 1e-6; size_t const n = xs.size(); @@ -154,8 +152,7 @@ public: , m_emptyRoadCount(0) , m_roadPointCount(0) , m_notRoadCount(0) - { - } + {} void operator()(FeatureType & f, uint32_t const & id) { @@ -196,8 +193,7 @@ public: continue; } // Feature segment length. - double const segmentLengthMeters = - mercator::DistanceOnEarth(f.GetPoint(i - 1), f.GetPoint(i)); + double const segmentLengthMeters = mercator::DistanceOnEarth(f.GetPoint(i - 1), f.GetPoint(i)); distFromStartMeters += segmentLengthMeters; pointDists[i] = distFromStartMeters; } @@ -272,8 +268,7 @@ public: for (uint32_t i = 1; i + 1 < numPoints; ++i) { int32_t const deviation = - static_cast(GetY(k, startAltitude, pointDists[i])) - - pointAltitudes[i]; + static_cast(GetY(k, startAltitude, pointDists[i])) - pointAltitudes[i]; m_diffFromLinear[deviation]++; } @@ -337,8 +332,7 @@ int main(int argc, char ** argv) PrintCont(processor.m_featureLength, "Feature length.", " feature(s) with length ", " meter(s)"); WriteCSV(processor.m_featureLength, "feature_length.csv"); - PrintCont(processor.m_segLength, "Feature segment length.", " segment(s) with length ", - " meter(s)"); + PrintCont(processor.m_segLength, "Feature segment length.", " segment(s) with length ", " meter(s)"); PrintCont(processor.m_featureWave, "Wave factor", " feature(s) with wave factor ", ""); WriteCSV(processor.m_featureWave, "feature_wave.csv"); @@ -352,8 +346,7 @@ int main(int argc, char ** argv) PrintCont(processor.m_diffFromLinear, "Altitude deviation of internal feature points from linear model.", " internal feature point(s) deviate from linear model with ", " meter(s)"); - PrintCont(processor.m_leastSquaresDiff, - "Altitude deviation of feature points from least squares line.", + PrintCont(processor.m_leastSquaresDiff, "Altitude deviation of feature points from least squares line.", " internal feature point(s) deviate from linear model with ", " meter(s)"); using std::cout, std::endl; diff --git a/generator/feature_sorter.cpp b/generator/feature_sorter.cpp index 44f96c8e3..13f7ee080 100644 --- a/generator/feature_sorter.cpp +++ b/generator/feature_sorter.cpp @@ -35,7 +35,6 @@ #include #include - namespace feature { @@ -58,7 +57,8 @@ public: m_trgFile.push_back(std::make_unique(info.GetIntermediateFileName(name, TRIANGLE_FILE_TAG + postfix))); } - m_addrFile = std::make_unique(info.GetIntermediateFileName(name + DATA_FILE_EXTENSION, TEMP_ADDR_EXTENSION)); + m_addrFile = + std::make_unique(info.GetIntermediateFileName(name + DATA_FILE_EXTENSION, TEMP_ADDR_EXTENSION)); } void Finish() override @@ -104,8 +104,7 @@ public: header.m_featuresOffset = base::asserted_cast(w->Pos() - startOffset); ReaderSource src(std::make_unique(m_dataFile.GetName())); rw::ReadAndWrite(src, *w); - header.m_featuresSize = - base::asserted_cast(w->Pos() - header.m_featuresOffset - startOffset); + header.m_featuresSize = base::asserted_cast(w->Pos() - header.m_featuresOffset - startOffset); auto const endOffset = w->Pos(); w->Seek(startOffset); @@ -134,8 +133,7 @@ public: m_metadataBuilder.Freeze(*w); } - if (m_header.GetType() == DataHeader::MapType::Country || - m_header.GetType() == DataHeader::MapType::World) + if (m_header.GetType() == DataHeader::MapType::Country || m_header.GetType() == DataHeader::MapType::World) { FileWriter osm2ftWriter(m_filename + OSM2FEATURE_FILE_EXTENSION); m_osm2ft.Write(osm2ftWriter); @@ -219,8 +217,8 @@ public: } else { - LOG(LDEBUG, ("Area: too small or degenerate 1st (outer) polygon of", polys.size(), - ", points count", points.size(), "at scale", i, DebugPrint(fb))); + LOG(LDEBUG, ("Area: too small or degenerate 1st (outer) polygon of", polys.size(), ", points count", + points.size(), "at scale", i, DebugPrint(fb))); continue; } @@ -239,8 +237,8 @@ public: } else { - LOG(LDEBUG, ("Area: too small or degenerate 2nd+ (inner) polygon of", polys.size(), - ", points count", points.size(), "at scale", i, DebugPrint(fb))); + LOG(LDEBUG, ("Area: too small or degenerate 2nd+ (inner) polygon of", polys.size(), ", points count", + points.size(), "at scale", i, DebugPrint(fb))); } } @@ -255,11 +253,8 @@ public: /// @todo Probably, we should store and index OSM's short_name tag. if (indexer::SynonymsHolder::CanApply(fb.GetTypes())) { - int8_t const langs[] = { - StringUtf8Multilang::kDefaultCode, - StringUtf8Multilang::kEnglishCode, - StringUtf8Multilang::kInternationalCode - }; + int8_t const langs[] = {StringUtf8Multilang::kDefaultCode, StringUtf8Multilang::kEnglishCode, + StringUtf8Multilang::kInternationalCode}; bool added = false; for (int8_t lang : langs) @@ -314,9 +309,9 @@ private: class TmpFile { std::unique_ptr m_writer; + public: - explicit TmpFile(std::string const & filePath) - : m_writer(std::make_unique(filePath)) {} + explicit TmpFile(std::string const & filePath) : m_writer(std::make_unique(filePath)) {} FileWriter & GetWriter() { return *m_writer; } @@ -371,10 +366,7 @@ bool GenerateFinalFeatures(feature::GenerateInfo const & info, std::string const LOG(LINFO, ("Calculating middle points")); // Store cellIds for middle points. CalculateMidPoints midPoints; - ForEachFeatureRawFormat(srcFilePath, [&midPoints](FeatureBuilder const & fb, uint64_t pos) - { - midPoints(fb, pos); - }); + ForEachFeatureRawFormat(srcFilePath, [&midPoints](FeatureBuilder const & fb, uint64_t pos) { midPoints(fb, pos); }); // Sort features by their middle point. midPoints.Sort(); diff --git a/generator/features_processing_helpers.hpp b/generator/features_processing_helpers.hpp index 369ddbe83..863216346 100644 --- a/generator/features_processing_helpers.hpp +++ b/generator/features_processing_helpers.hpp @@ -6,8 +6,8 @@ #include #include -#include #include +#include #include namespace generator @@ -16,9 +16,10 @@ size_t static const kAffiliationsBufferSize = 512; struct ProcessedData { - explicit ProcessedData(feature::FeatureBuilder::Buffer && buffer, - std::vector && affiliations) - : m_buffer(std::move(buffer)), m_affiliations(std::move(affiliations)) {} + explicit ProcessedData(feature::FeatureBuilder::Buffer && buffer, std::vector && affiliations) + : m_buffer(std::move(buffer)) + , m_affiliations(std::move(affiliations)) + {} feature::FeatureBuilder::Buffer m_buffer; std::vector m_affiliations; diff --git a/generator/filter_collection.cpp b/generator/filter_collection.cpp index 9d136d397..da7556a35 100644 --- a/generator/filter_collection.cpp +++ b/generator/filter_collection.cpp @@ -14,11 +14,11 @@ std::shared_ptr FilterCollection::Clone() const bool FilterCollection::IsAccepted(OsmElement const & element) const { - return base::AllOf(m_collection, [&] (auto const & filter) { return filter->IsAccepted(element); }); + return base::AllOf(m_collection, [&](auto const & filter) { return filter->IsAccepted(element); }); } bool FilterCollection::IsAccepted(feature::FeatureBuilder const & feature) const { - return base::AllOf(m_collection, [&] (auto const & filter) { return filter->IsAccepted(feature); }); + return base::AllOf(m_collection, [&](auto const & filter) { return filter->IsAccepted(feature); }); } } // namespace generator diff --git a/generator/filter_collection.hpp b/generator/filter_collection.hpp index c53d65e74..29ff3492b 100644 --- a/generator/filter_collection.hpp +++ b/generator/filter_collection.hpp @@ -6,7 +6,9 @@ namespace generator { // This class allows you to work with a group of filters as with one. -class FilterCollection : public CollectionBase>, public FilterInterface +class FilterCollection + : public CollectionBase> + , public FilterInterface { public: // FilterInterface overrides: diff --git a/generator/filter_elements.cpp b/generator/filter_elements.cpp index 7248b54cb..2dbcd4fc3 100644 --- a/generator/filter_elements.cpp +++ b/generator/filter_elements.cpp @@ -22,10 +22,7 @@ public: return true; } - bool Contains(T const & key) const - { - return base::IsExist(m_vec, key); - } + bool Contains(T const & key) const { return base::IsExist(m_vec, key); } private: std::vector m_vec; @@ -36,10 +33,9 @@ namespace generator { bool FilterData::IsMatch(Tags const & elementTags, Tags const & tags) { - return base::AllOf(tags, [&](OsmElement::Tag const & t) { - auto const it = base::FindIf(elementTags, [&](OsmElement::Tag const & tag) { - return tag.m_key == t.m_key; - }); + return base::AllOf(tags, [&](OsmElement::Tag const & t) + { + auto const it = base::FindIf(elementTags, [&](OsmElement::Tag const & tag) { return tag.m_key == t.m_key; }); return it == std::end(elementTags) ? false : t.m_value == "*" || it->m_value == t.m_value; }); } @@ -149,8 +145,7 @@ bool FilterElements::ParseTags(json_t * json, FilterData & fdata) return true; } -FilterElements::FilterElements(std::string const & filename) - : m_filename(filename) +FilterElements::FilterElements(std::string const & filename) : m_filename(filename) { std::ifstream stream(m_filename); std::string str((std::istreambuf_iterator(stream)), std::istreambuf_iterator()); @@ -179,7 +174,7 @@ bool FilterElements::NeedSkip(OsmElement const & element) const } } -bool FilterElements::NeedSkip(OsmElement const & element, FilterData const & fdata) const +bool FilterElements::NeedSkip(OsmElement const & element, FilterData const & fdata) const { return fdata.NeedSkipWithId(element.m_id) || fdata.NeedSkipWithTags(element.Tags()); } diff --git a/generator/filter_elements.hpp b/generator/filter_elements.hpp index 6fefb387c..637de9e99 100644 --- a/generator/filter_elements.hpp +++ b/generator/filter_elements.hpp @@ -71,7 +71,7 @@ private: class FilterElements : public FilterInterface { public: - explicit FilterElements(const std::string & filename); + explicit FilterElements(std::string const & filename); // FilterInterface overrides: std::shared_ptr Clone() const override; diff --git a/generator/filter_world.cpp b/generator/filter_world.cpp index 73641b884..8308e18ee 100644 --- a/generator/filter_world.cpp +++ b/generator/filter_world.cpp @@ -31,9 +31,7 @@ bool FilterWorld::IsAccepted(feature::FeatureBuilder const & fb) const if (m_isCityTownVillage(fb.GetTypes())) return false; - return (IsGoodScale(fb) || - IsPopularAttraction(fb, m_popularityFilename) || - IsInternationalAirport(fb)); + return (IsGoodScale(fb) || IsPopularAttraction(fb, m_popularityFilename) || IsInternationalAirport(fb)); } // static diff --git a/generator/final_processor_cities.cpp b/generator/final_processor_cities.cpp index bf6099d0a..26fa489ca 100644 --- a/generator/final_processor_cities.cpp +++ b/generator/final_processor_cities.cpp @@ -1,6 +1,6 @@ #include "generator/final_processor_cities.hpp" -#include "generator/final_processor_utils.hpp" #include "generator/filter_world.hpp" +#include "generator/final_processor_utils.hpp" #include "generator/place_processor.hpp" #include @@ -8,14 +8,13 @@ namespace generator { -FinalProcessorCities::FinalProcessorCities(AffiliationInterfacePtr const & affiliation, - std::string const & mwmPath, size_t threadsCount) +FinalProcessorCities::FinalProcessorCities(AffiliationInterfacePtr const & affiliation, std::string const & mwmPath, + size_t threadsCount) : FinalProcessorIntermediateMwmInterface(FinalProcessorPriority::Places) , m_temporaryMwmPath(mwmPath) , m_affiliation(affiliation) , m_threadsCount(threadsCount) -{ -} +{} void FinalProcessorCities::Process() { @@ -52,10 +51,8 @@ void FinalProcessorCities::Process() FeatureBuilderWriter writer(base::JoinPath(m_temporaryMwmPath, WORLD_FILE_NAME DATA_FILE_EXTENSION_TMP), FileWriter::Op::OP_APPEND); for (auto const & fb : result) - { if (FilterWorld::IsGoodScale(fb)) writer.Write(fb); - } } if (!m_boundariesOutFile.empty()) @@ -65,4 +62,4 @@ void FinalProcessorCities::Process() } } -} // namespace generator +} // namespace generator diff --git a/generator/final_processor_cities.hpp b/generator/final_processor_cities.hpp index 74b29de14..009f61dfe 100644 --- a/generator/final_processor_cities.hpp +++ b/generator/final_processor_cities.hpp @@ -8,8 +8,8 @@ namespace generator class FinalProcessorCities : public FinalProcessorIntermediateMwmInterface { public: - FinalProcessorCities(AffiliationInterfacePtr const & affiliation, - std::string const & mwmPath, size_t threadsCount = 1); + FinalProcessorCities(AffiliationInterfacePtr const & affiliation, std::string const & mwmPath, + size_t threadsCount = 1); void SetCityBoundariesFiles(std::string const & collectorFile, std::string const & boundariesOutFile) { @@ -25,4 +25,4 @@ private: size_t m_threadsCount; }; -} // namespace generator +} // namespace generator diff --git a/generator/final_processor_coastline.cpp b/generator/final_processor_coastline.cpp index a6c3528c9..7a6abbb59 100644 --- a/generator/final_processor_coastline.cpp +++ b/generator/final_processor_coastline.cpp @@ -3,16 +3,15 @@ #include "generator/feature_builder.hpp" #include "generator/feature_generator.hpp" - namespace generator { using namespace feature; CoastlineFinalProcessor::CoastlineFinalProcessor(std::string const & filename, size_t threadsCount) : FinalProcessorIntermediateMwmInterface(FinalProcessorPriority::WorldCoasts) - , m_filename(filename), m_threadsCount(threadsCount) -{ -} + , m_filename(filename) + , m_threadsCount(threadsCount) +{} void CoastlineFinalProcessor::SetCoastlinesFilenames(std::string const & geomFilename, std::string const & rawGeomFilename) @@ -23,10 +22,8 @@ void CoastlineFinalProcessor::SetCoastlinesFilenames(std::string const & geomFil void CoastlineFinalProcessor::Process() { - ForEachFeatureRawFormat(m_filename, [this](FeatureBuilder const & fb, uint64_t) - { - m_generator.Process(fb); - }); + ForEachFeatureRawFormat( + m_filename, [this](FeatureBuilder const & fb, uint64_t) { m_generator.Process(fb); }); FeaturesAndRawGeometryCollector collector(m_coastlineGeomFilename, m_coastlineRawGeomFilename); // Check and stop if some coasts were not merged. diff --git a/generator/final_processor_coastline.hpp b/generator/final_processor_coastline.hpp index 6c4e82972..0051b9d8c 100644 --- a/generator/final_processor_coastline.hpp +++ b/generator/final_processor_coastline.hpp @@ -12,8 +12,7 @@ class CoastlineFinalProcessor : public FinalProcessorIntermediateMwmInterface public: CoastlineFinalProcessor(std::string const & filename, size_t threadsCount); - void SetCoastlinesFilenames(std::string const & geomFilename, - std::string const & rawGeomFilename); + void SetCoastlinesFilenames(std::string const & geomFilename, std::string const & rawGeomFilename); // FinalProcessorIntermediateMwmInterface overrides: void Process() override; diff --git a/generator/final_processor_complex.cpp b/generator/final_processor_complex.cpp index 0e18aa872..08b31f34b 100644 --- a/generator/final_processor_complex.cpp +++ b/generator/final_processor_complex.cpp @@ -13,14 +13,13 @@ using namespace feature; namespace generator { -ComplexFinalProcessor::ComplexFinalProcessor(std::string const & mwmTmpPath, - std::string const & outFilename, size_t threadsCount) +ComplexFinalProcessor::ComplexFinalProcessor(std::string const & mwmTmpPath, std::string const & outFilename, + size_t threadsCount) : FinalProcessorIntermediateMwmInterface(FinalProcessorPriority::Complex) , m_mwmTmpPath(mwmTmpPath) , m_outFilename(outFilename) , m_threadsCount(threadsCount) -{ -} +{} void ComplexFinalProcessor::SetGetMainTypeFunction(hierarchy::GetMainTypeFn const & getMainType) { @@ -42,8 +41,7 @@ void ComplexFinalProcessor::SetPrintFunction(hierarchy::PrintFn const & printFun m_printFunction = printFunction; } -void ComplexFinalProcessor::UseCentersEnricher(std::string const & mwmPath, - std::string const & osm2ftPath) +void ComplexFinalProcessor::UseCentersEnricher(std::string const & mwmPath, std::string const & osm2ftPath) { m_useCentersEnricher = true; m_mwmPath = mwmPath; @@ -70,7 +68,8 @@ void ComplexFinalProcessor::Process() std::mutex mutex; std::vector allLines; - ForEachMwmTmp(m_mwmTmpPath, [&](auto const & name, auto const & path) { + ForEachMwmTmp(m_mwmTmpPath, [&](auto const & name, auto const & path) + { // https://wiki.openstreetmap.org/wiki/Simple_3D_buildings // An object with tag 'building:part' is a part of a relation with outline 'building' or // is contained in an object with tag 'building'. We will split data and work with @@ -87,7 +86,8 @@ void ComplexFinalProcessor::Process() auto trees = hierarchy::BuildHierarchy(std::move(fbs), m_getMainType, m_filter); // We remove tree roots with tag 'building:part'. - base::EraseIf(trees, [](auto const & node) { + base::EraseIf(trees, [](auto const & node) + { static auto const & buildingPartChecker = ftypes::IsBuildingPartChecker::Instance(); return buildingPartChecker(node->GetData().GetTypes()); }); @@ -104,7 +104,8 @@ void ComplexFinalProcessor::Process() // In the end we add objects, which were saved by the collector. if (m_buildingToParts) { - hierarchy::AddChildrenTo(trees, [&](auto const & compositeId) { + hierarchy::AddChildrenTo(trees, [&](auto const & compositeId) + { auto const & ids = m_buildingToParts->GetBuildingPartsByOutlineId(compositeId); std::vector places; places.reserve(ids.size()); @@ -138,23 +139,22 @@ void ComplexFinalProcessor::Process() WriteLines(allLines); } -std::unordered_map -ComplexFinalProcessor::RemoveRelationBuildingParts(std::vector & fbs) +std::unordered_map ComplexFinalProcessor::RemoveRelationBuildingParts( + std::vector & fbs) { CHECK(m_buildingToParts, ()); - auto it = std::partition(std::begin(fbs), std::end(fbs), [&](auto const & fb) { - return !m_buildingToParts->HasBuildingPart(fb.GetMostGenericOsmId()); - }); + auto it = std::partition(std::begin(fbs), std::end(fbs), [&](auto const & fb) + { return !m_buildingToParts->HasBuildingPart(fb.GetMostGenericOsmId()); }); std::unordered_map buildingParts; buildingParts.reserve(static_cast(std::distance(it, std::end(fbs)))); - std::transform(it, std::end(fbs), std::inserter(buildingParts, std::begin(buildingParts)), - [](auto && fb) { - auto const id = fb.GetMostGenericOsmId(); - return std::make_pair(id, std::move(fb)); - }); + std::transform(it, std::end(fbs), std::inserter(buildingParts, std::begin(buildingParts)), [](auto && fb) + { + auto const id = fb.GetMostGenericOsmId(); + return std::make_pair(id, std::move(fb)); + }); fbs.resize(static_cast(std::distance(std::begin(fbs), it))); return buildingParts; diff --git a/generator/final_processor_complex.hpp b/generator/final_processor_complex.hpp index 17f09f72e..b5d8f7476 100644 --- a/generator/final_processor_complex.hpp +++ b/generator/final_processor_complex.hpp @@ -21,8 +21,7 @@ namespace generator class ComplexFinalProcessor : public FinalProcessorIntermediateMwmInterface { public: - ComplexFinalProcessor(std::string const & mwmTmpPath, std::string const & outFilename, - size_t threadsCount); + ComplexFinalProcessor(std::string const & mwmTmpPath, std::string const & outFilename, size_t threadsCount); void SetGetMainTypeFunction(hierarchy::GetMainTypeFn const & getMainType); void SetFilter(std::shared_ptr const & filter); @@ -36,8 +35,7 @@ public: void Process() override; private: - std::unique_ptr CreateEnricher( - std::string const & countryName) const; + std::unique_ptr CreateEnricher(std::string const & countryName) const; void WriteLines(std::vector const & lines); std::unordered_map RemoveRelationBuildingParts( std::vector & fbs); diff --git a/generator/final_processor_country.cpp b/generator/final_processor_country.cpp index 86ad25d01..40ea56841 100644 --- a/generator/final_processor_country.cpp +++ b/generator/final_processor_country.cpp @@ -1,7 +1,7 @@ #include "generator/final_processor_country.hpp" -#include "generator/addresses_collector.hpp" #include "generator/address_enricher.hpp" +#include "generator/addresses_collector.hpp" #include "generator/affiliation.hpp" #include "generator/coastlines_generator.hpp" #include "generator/feature_builder.hpp" @@ -20,13 +20,12 @@ #include "geometry/mercator.hpp" #include "geometry/region2d/binary_operators.hpp" - namespace generator { using namespace feature; -CountryFinalProcessor::CountryFinalProcessor(AffiliationInterfacePtr affiliations, - std::string const & temporaryMwmPath, size_t threadsCount) +CountryFinalProcessor::CountryFinalProcessor(AffiliationInterfacePtr affiliations, std::string const & temporaryMwmPath, + size_t threadsCount) : FinalProcessorIntermediateMwmInterface(FinalProcessorPriority::CountriesOrWorld) , m_temporaryMwmPath(temporaryMwmPath) , m_affiliations(std::move(affiliations)) @@ -42,7 +41,7 @@ bool CountryFinalProcessor::IsCountry(std::string const & filename) void CountryFinalProcessor::Process() { - //Order(); + // Order(); /// @todo Make "straight-way" processing. There is no need to make many functions and /// many read-write FeatureBuilder ops here. @@ -64,10 +63,10 @@ void CountryFinalProcessor::Process() if (!m_isolinesPath.empty()) AddIsolines(); - //DropProhibitedSpeedCameras(); + // DropProhibitedSpeedCameras(); ProcessBuildingParts(); - //Finish(); + // Finish(); } /* @@ -133,15 +132,11 @@ void CountryFinalProcessor::ProcessRoundabouts() // Adds new way features generated from mini-roundabout nodes with those nodes ids. // Transforms points on roads to connect them with these new roundabout junctions. - transformer.ProcessRoundabouts([&writer](FeatureBuilder const & fb) - { - writer.Write(fb); - }); + transformer.ProcessRoundabouts([&writer](FeatureBuilder const & fb) { writer.Write(fb); }); }, m_threadsCount); } -bool DoesBuildingConsistOfParts(FeatureBuilder const & fbBuilding, - m4::Tree const & buildingPartsKDTree) +bool DoesBuildingConsistOfParts(FeatureBuilder const & fbBuilding, m4::Tree const & buildingPartsKDTree) { m2::RegionI building; m2::MultiRegionI partsUnion; @@ -204,7 +199,7 @@ bool DoesBuildingConsistOfParts(FeatureBuilder const & fbBuilding, uint64_t const isectArea = m2::Area(m2::IntersectRegions(building, partsUnion)); // That doesn't work with *very* degenerated polygons like https://www.openstreetmap.org/way/629725974. - //CHECK(isectArea * 0.95 <= buildingArea, (isectArea, buildingArea, fbBuilding.DebugPrintIDs())); + // CHECK(isectArea * 0.95 <= buildingArea, (isectArea, buildingArea, fbBuilding.DebugPrintIDs())); // Consider building as consisting of parts if the building footprint is covered with parts at least by 90%. return isectArea >= 0.9 * buildingArea; @@ -236,9 +231,7 @@ void CountryFinalProcessor::ProcessBuildingParts() FeatureBuilderWriter writer(path, true /* mangleName */); ForEachFeatureRawFormat(path, [&](FeatureBuilder && fb, uint64_t) { - if (fb.IsArea() && - buildingChecker(fb.GetTypes()) && - DoesBuildingConsistOfParts(fb, buildingPartsKDTree)) + if (fb.IsArea() && buildingChecker(fb.GetTypes()) && DoesBuildingConsistOfParts(fb, buildingPartsKDTree)) { fb.AddType(buildingHasPartsChecker.GetType()); fb.GetParams().FinishAddingTypes(); @@ -280,10 +273,8 @@ void CountryFinalProcessor::AddAddresses() AddressEnricher enricher; // Collect existing addresses and streets. - ForEachFeatureRawFormat(path, [&](FeatureBuilder && fb, uint64_t) - { - enricher.AddSrc(std::move(fb)); - }); + ForEachFeatureRawFormat( + path, [&](FeatureBuilder && fb, uint64_t) { enricher.AddSrc(std::move(fb)); }); // Append new addresses. FeatureBuilderWriter writer(path, FileWriter::Op::OP_APPEND); diff --git a/generator/final_processor_country.hpp b/generator/final_processor_country.hpp index a0152287c..7f6b270ea 100644 --- a/generator/final_processor_country.hpp +++ b/generator/final_processor_country.hpp @@ -10,41 +10,22 @@ namespace generator class CountryFinalProcessor : public FinalProcessorIntermediateMwmInterface { public: - CountryFinalProcessor(AffiliationInterfacePtr affiliations, - std::string const & temporaryMwmPath, size_t threadsCount); + CountryFinalProcessor(AffiliationInterfacePtr affiliations, std::string const & temporaryMwmPath, + size_t threadsCount); - void SetCoastlines(std::string const & coastlineGeomFilename, - std::string const & worldCoastsFilename) + void SetCoastlines(std::string const & coastlineGeomFilename, std::string const & worldCoastsFilename) { m_coastlineGeomFilename = coastlineGeomFilename; m_worldCoastsFilename = worldCoastsFilename; } - void SetFakeNodes(std::string const & filename) - { - m_fakeNodesFilename = filename; - } - void SetMiniRoundabouts(std::string const & filename) - { - m_miniRoundaboutsFilename = filename; - } - void SetAddrInterpolation(std::string const & filename) - { - m_addrInterpolFilename = filename; - } + void SetFakeNodes(std::string const & filename) { m_fakeNodesFilename = filename; } + void SetMiniRoundabouts(std::string const & filename) { m_miniRoundaboutsFilename = filename; } + void SetAddrInterpolation(std::string const & filename) { m_addrInterpolFilename = filename; } - void SetIsolinesDir(std::string const & dir) - { - m_isolinesPath = dir; - } - void SetAddressesDir(std::string const & dir) - { - m_addressPath = dir; - } + void SetIsolinesDir(std::string const & dir) { m_isolinesPath = dir; } + void SetAddressesDir(std::string const & dir) { m_addressPath = dir; } - void SetCityBoundariesFiles(std::string const & collectorFile) - { - m_boundariesCollectorFile = collectorFile; - } + void SetCityBoundariesFiles(std::string const & collectorFile) { m_boundariesCollectorFile = collectorFile; } // FinalProcessorIntermediateMwmInterface overrides: void Process() override; @@ -52,14 +33,14 @@ public: void ProcessBuildingParts(); private: - //void Order(); + // void Order(); void ProcessCoastline(); void ProcessRoundabouts(); void AddFakeNodes(); void AddIsolines(); void AddAddresses(); void DropProhibitedSpeedCameras(); - //void Finish(); + // void Finish(); bool IsCountry(std::string const & filename); diff --git a/generator/final_processor_interface.hpp b/generator/final_processor_interface.hpp index 509229f84..ff055e395 100644 --- a/generator/final_processor_interface.hpp +++ b/generator/final_processor_interface.hpp @@ -20,18 +20,12 @@ enum class FinalProcessorPriority : uint8_t class FinalProcessorIntermediateMwmInterface { public: - explicit FinalProcessorIntermediateMwmInterface(FinalProcessorPriority priority) - : m_priority(priority) - { - } + explicit FinalProcessorIntermediateMwmInterface(FinalProcessorPriority priority) : m_priority(priority) {} virtual ~FinalProcessorIntermediateMwmInterface() = default; virtual void Process() = 0; - bool operator<(FinalProcessorIntermediateMwmInterface const & other) const - { - return m_priority < other.m_priority; - } + bool operator<(FinalProcessorIntermediateMwmInterface const & other) const { return m_priority < other.m_priority; } protected: FinalProcessorPriority m_priority; diff --git a/generator/final_processor_utils.cpp b/generator/final_processor_utils.cpp index 552358d7e..a9ae1f62a 100644 --- a/generator/final_processor_utils.cpp +++ b/generator/final_processor_utils.cpp @@ -24,11 +24,13 @@ bool Less(FeatureBuilder const & lhs, FeatureBuilder const & rhs) auto const lKeyPoint = lhs.GetKeyPoint(); auto const rKeyPoint = rhs.GetKeyPoint(); - return std::tie(lGeomType, lId, lPointsCount, lKeyPoint) < - std::tie(rGeomType, rId, rPointsCount, rKeyPoint); + return std::tie(lGeomType, lId, lPointsCount, lKeyPoint) < std::tie(rGeomType, rId, rPointsCount, rKeyPoint); } -void Order(std::vector & fbs) { std::sort(std::begin(fbs), std::end(fbs), Less); } +void Order(std::vector & fbs) +{ + std::sort(std::begin(fbs), std::end(fbs), Less); +} void OrderTextFileByLine(std::string const & filename) { @@ -50,8 +52,7 @@ void OrderTextFileByLine(std::string const & filename) } std::vector> GetAffiliations(std::vector const & fbs, - AffiliationInterface const & affiliation, - size_t threadsCount) + AffiliationInterface const & affiliation, size_t threadsCount) { base::ComputationalThreadPool pool(threadsCount); std::vector>> futuresAffiliations; diff --git a/generator/final_processor_utils.hpp b/generator/final_processor_utils.hpp index 8ce2d47af..4986144e9 100644 --- a/generator/final_processor_utils.hpp +++ b/generator/final_processor_utils.hpp @@ -33,23 +33,21 @@ void ForEachMwmTmp(std::string const & temporaryMwmPath, ToDo && toDo, size_t th } } -std::vector> GetAffiliations( - std::vector const & fbs, - feature::AffiliationInterface const & affiliation, size_t threadsCount); +std::vector> GetAffiliations(std::vector const & fbs, + feature::AffiliationInterface const & affiliation, + size_t threadsCount); // Writes |fbs| to countries mwm.tmp files. Returns affiliations - country matches for |fbs|. template std::vector> AppendToMwmTmp(std::vector const & fbs, - feature::AffiliationInterface const & affiliation, - std::string const & temporaryMwmPath, size_t threadsCount = 1) + feature::AffiliationInterface const & affiliation, + std::string const & temporaryMwmPath, size_t threadsCount = 1) { auto affiliations = GetAffiliations(fbs, affiliation, threadsCount); std::unordered_map> countryToFbsIndexes; for (size_t i = 0; i < fbs.size(); ++i) - { for (auto const & country : affiliations[i]) countryToFbsIndexes[country].emplace_back(i); - } base::ComputationalThreadPool pool(threadsCount); for (auto && p : countryToFbsIndexes) diff --git a/generator/final_processor_world.cpp b/generator/final_processor_world.cpp index ab420d238..4a6916eea 100644 --- a/generator/final_processor_world.cpp +++ b/generator/final_processor_world.cpp @@ -14,11 +14,9 @@ WorldFinalProcessor::WorldFinalProcessor(std::string const & temporaryMwmPath, std::string const & coastlineGeomFilename) : FinalProcessorIntermediateMwmInterface(FinalProcessorPriority::CountriesOrWorld) , m_temporaryMwmPath(temporaryMwmPath) - , m_worldTmpFilename(base::JoinPath(m_temporaryMwmPath, WORLD_FILE_NAME) + - DATA_FILE_EXTENSION_TMP) + , m_worldTmpFilename(base::JoinPath(m_temporaryMwmPath, WORLD_FILE_NAME) + DATA_FILE_EXTENSION_TMP) , m_coastlineGeomFilename(coastlineGeomFilename) -{ -} +{} void WorldFinalProcessor::Process() { diff --git a/generator/final_processor_world.hpp b/generator/final_processor_world.hpp index db1ef7dee..bb93587f4 100644 --- a/generator/final_processor_world.hpp +++ b/generator/final_processor_world.hpp @@ -16,10 +16,7 @@ public: /// @param[in] coastGeomFilename Can be empty if you don't care about cutting borders by water. WorldFinalProcessor(std::string const & temporaryMwmPath, std::string const & coastGeomFilename); - void SetPopularPlaces(std::string const & filename) - { - m_popularPlacesFilename = filename; - } + void SetPopularPlaces(std::string const & filename) { m_popularPlacesFilename = filename; } // FinalProcessorIntermediateMwmInterface overrides: void Process() override; diff --git a/generator/gen_mwm_info.cpp b/generator/gen_mwm_info.cpp index baab804a6..7bbdaf102 100644 --- a/generator/gen_mwm_info.cpp +++ b/generator/gen_mwm_info.cpp @@ -13,7 +13,10 @@ uint32_t const OsmID2FeatureID::kHeaderMagic; OsmID2FeatureID::OsmID2FeatureID() : m_version(Version::V1) {} -OsmID2FeatureID::Version OsmID2FeatureID::GetVersion() const { return m_version; } +OsmID2FeatureID::Version OsmID2FeatureID::GetVersion() const +{ + return m_version; +} bool OsmID2FeatureID::ReadFromFile(std::string const & filename) { @@ -25,8 +28,7 @@ bool OsmID2FeatureID::ReadFromFile(std::string const & filename) } catch (FileReader::Exception const & e) { - LOG(LERROR, ("Exception while reading osm id to feature id mapping from file", filename, - ". Msg:", e.Msg())); + LOG(LERROR, ("Exception while reading osm id to feature id mapping from file", filename, ". Msg:", e.Msg())); return false; } @@ -60,4 +62,3 @@ std::vector OsmID2FeatureID::GetFeatureIds(base::GeoObjectId mainId) c return ids; } } // namespace generator - diff --git a/generator/generate_info.hpp b/generator/generate_info.hpp index 8bdfe943a..8400352d8 100644 --- a/generator/generate_info.hpp +++ b/generator/generate_info.hpp @@ -96,20 +96,17 @@ struct GenerateInfo LOG(LCRITICAL, ("Incorrect node_storage type:", type)); } - std::string GetTmpFileName(std::string const & fileName, - std::string const & ext = DATA_FILE_EXTENSION_TMP) const + std::string GetTmpFileName(std::string const & fileName, std::string const & ext = DATA_FILE_EXTENSION_TMP) const { return base::JoinPath(m_tmpDir, fileName + ext); } - std::string GetTargetFileName(std::string const & fileName, - std::string const & ext = DATA_FILE_EXTENSION) const + std::string GetTargetFileName(std::string const & fileName, std::string const & ext = DATA_FILE_EXTENSION) const { return base::JoinPath(m_targetDir, fileName + ext); } - std::string GetIntermediateFileName(std::string const & fileName, - std::string const & ext = "") const + std::string GetIntermediateFileName(std::string const & fileName, std::string const & ext = "") const { return base::JoinPath(m_intermediateDir, fileName + ext); } diff --git a/generator/generator_integration_tests/features_tests.cpp b/generator/generator_integration_tests/features_tests.cpp index 31413d7fb..e42550da6 100644 --- a/generator/generator_integration_tests/features_tests.cpp +++ b/generator/generator_integration_tests/features_tests.cpp @@ -39,8 +39,8 @@ struct CountryFeaturesCounters CountryFeaturesCounters() = default; - constexpr CountryFeaturesCounters(int64_t fbs, int64_t geometryPoints, int64_t point, int64_t line, - int64_t area, int64_t poi, int64_t cityTownOrVillage) + constexpr CountryFeaturesCounters(int64_t fbs, int64_t geometryPoints, int64_t point, int64_t line, int64_t area, + int64_t poi, int64_t cityTownOrVillage) : m_fbs(fbs) , m_geometryPoints(geometryPoints) , m_point(point) @@ -48,28 +48,27 @@ struct CountryFeaturesCounters , m_area(area) , m_poi(poi) , m_cityTownOrVillage(cityTownOrVillage) - { - } + {} CountryFeaturesCounters operator+(CountryFeaturesCounters const & rhs) const { - return CountryFeaturesCounters(m_fbs + rhs.m_fbs, m_geometryPoints + rhs.m_geometryPoints, - m_point + rhs.m_point, m_line + rhs.m_line, m_area + rhs.m_area, - m_poi + rhs.m_poi, m_cityTownOrVillage + rhs.m_cityTownOrVillage); + return CountryFeaturesCounters(m_fbs + rhs.m_fbs, m_geometryPoints + rhs.m_geometryPoints, m_point + rhs.m_point, + m_line + rhs.m_line, m_area + rhs.m_area, m_poi + rhs.m_poi, + m_cityTownOrVillage + rhs.m_cityTownOrVillage); } CountryFeaturesCounters operator-(CountryFeaturesCounters const & rhs) const { - return CountryFeaturesCounters(m_fbs - rhs.m_fbs, m_geometryPoints - rhs.m_geometryPoints, - m_point - rhs.m_point, m_line - rhs.m_line, m_area - rhs.m_area, - m_poi - rhs.m_poi, m_cityTownOrVillage - rhs.m_cityTownOrVillage); + return CountryFeaturesCounters(m_fbs - rhs.m_fbs, m_geometryPoints - rhs.m_geometryPoints, m_point - rhs.m_point, + m_line - rhs.m_line, m_area - rhs.m_area, m_poi - rhs.m_poi, + m_cityTownOrVillage - rhs.m_cityTownOrVillage); } bool operator==(CountryFeaturesCounters const & rhs) const { - return m_fbs == rhs.m_fbs && m_geometryPoints == rhs.m_geometryPoints && - m_point == rhs.m_point && m_line == rhs.m_line && m_area == rhs.m_area && - m_poi == rhs.m_poi && m_cityTownOrVillage == rhs.m_cityTownOrVillage; + return m_fbs == rhs.m_fbs && m_geometryPoints == rhs.m_geometryPoints && m_point == rhs.m_point && + m_line == rhs.m_line && m_area == rhs.m_area && m_poi == rhs.m_poi && + m_cityTownOrVillage == rhs.m_cityTownOrVillage; } bool operator!=(CountryFeaturesCounters const & rhs) const { return !(*this == rhs); } @@ -79,9 +78,9 @@ struct CountryFeatureResults { CountryFeatureResults() = default; CountryFeatureResults(CountryFeaturesCounters actual, CountryFeaturesCounters expected) - : m_actual(actual), m_expected(expected) - { - } + : m_actual(actual) + , m_expected(expected) + {} CountryFeaturesCounters m_actual; CountryFeaturesCounters m_expected; @@ -93,9 +92,8 @@ void TestAndLogCountryFeatures(std::map cons { if (result.second.m_actual != result.second.m_expected) { - LOG(LINFO, ("Unexpectad result for", result.first, "actual:", result.second.m_actual, - "expected:", result.second.m_expected, - "the difference is:", result.second.m_actual - result.second.m_expected)); + LOG(LINFO, ("Unexpectad result for", result.first, "actual:", result.second.m_actual, "expected:", + result.second.m_expected, "the difference is:", result.second.m_actual - result.second.m_expected)); } } @@ -115,45 +113,45 @@ std::string DebugPrint(CountryFeaturesCounters const & cnt) return out.str(); } -CountryFeaturesCounters constexpr kWorldCounters(945 /* fbs */, 364406 /* geometryPoints */, - 334 /* point */, 598 /* line */, 13 /* area */, - 428 /* poi */, 172 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kWorldCounters(945 /* fbs */, 364406 /* geometryPoints */, 334 /* point */, + 598 /* line */, 13 /* area */, 428 /* poi */, + 172 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kNorthAucklandCounters( - 1812144 /* fbs */, 12195444 /* geometryPoints */, 1007580 /* point */, 205448 /* line */, - 599116 /* area */, 212424 /* poi */, 521 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kNorthAucklandCounters(1812144 /* fbs */, 12195444 /* geometryPoints */, + 1007580 /* point */, 205448 /* line */, 599116 /* area */, + 212424 /* poi */, 521 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kNorthWellingtonCounters( - 797814 /* fbs */, 7771530 /* geometryPoints */, 460560 /* point */, 86978 /* line */, - 250276 /* area */, 95863 /* poi */, 297 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kNorthWellingtonCounters(797814 /* fbs */, 7771530 /* geometryPoints */, + 460560 /* point */, 86978 /* line */, 250276 /* area */, + 95863 /* poi */, 297 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kSouthCanterburyCounters( - 637239 /* fbs */, 6984183 /* geometryPoints */, 397964 /* point */, 81688 /* line */, - 157587 /* area */, 89690 /* poi */, 331 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kSouthCanterburyCounters(637239 /* fbs */, 6984183 /* geometryPoints */, + 397964 /* point */, 81688 /* line */, 157587 /* area */, + 89690 /* poi */, 331 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kSouthSouthlandCounters( - 340644 /* fbs */, 5342380 /* geometryPoints */, 186000 /* point */, 40118 /* line */, - 114526 /* area */, 40671 /* poi */, 297 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kSouthSouthlandCounters(340644 /* fbs */, 5342380 /* geometryPoints */, + 186000 /* point */, 40118 /* line */, 114526 /* area */, + 40671 /* poi */, 297 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kSouthSouthlandMixedNodesCounters( - 2 /* fbs */, 2 /* geometryPoints */, 2 /* point */, 0 /* line */, 0 /* area */, 0 /* poi */, - 0 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kSouthSouthlandMixedNodesCounters(2 /* fbs */, 2 /* geometryPoints */, 2 /* point */, + 0 /* line */, 0 /* area */, 0 /* poi */, + 0 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kNorthAucklandComplexFeaturesCounters( - 288 /* fbs */, 16119 /* geometryPoints */, 0 /* point */, 252 /* line */, 36 /* area */, - 0 /* poi */, 0 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kNorthAucklandComplexFeaturesCounters(288 /* fbs */, 16119 /* geometryPoints */, + 0 /* point */, 252 /* line */, 36 /* area */, + 0 /* poi */, 0 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kNorthWellingtonComplexFeaturesCounters( - 254 /* fbs */, 18434 /* geometryPoints */, 0 /* point */, 244 /* line */, 10 /* area */, - 0 /* poi */, 0 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kNorthWellingtonComplexFeaturesCounters(254 /* fbs */, 18434 /* geometryPoints */, + 0 /* point */, 244 /* line */, 10 /* area */, + 0 /* poi */, 0 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kSouthCanterburyComplexFeaturesCounters( - 1037 /* fbs */, 73854 /* geometryPoints */, 0 /* point */, 1016 /* line */, 21 /* area */, - 0 /* poi */, 0 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kSouthCanterburyComplexFeaturesCounters(1037 /* fbs */, 73854 /* geometryPoints */, + 0 /* point */, 1016 /* line */, 21 /* area */, + 0 /* poi */, 0 /* cityTownOrVillage */); -CountryFeaturesCounters constexpr kSouthSouthlandComplexFeaturesCounters( - 1252 /* fbs */, 141706 /* geometryPoints */, 0 /* point */, 1245 /* line */, 7 /* area */, - 0 /* poi */, 0 /* cityTownOrVillage */); +CountryFeaturesCounters constexpr kSouthSouthlandComplexFeaturesCounters(1252 /* fbs */, 141706 /* geometryPoints */, + 0 /* point */, 1245 /* line */, 7 /* area */, + 0 /* poi */, 0 /* cityTownOrVillage */); class FeatureIntegrationTests { @@ -172,19 +170,14 @@ public: CHECK(Platform::RmDirRecursively(m_testPath), ()); CHECK(Platform::RemoveFileIfExists(m_mixedNodesFilenames.first), ()); CHECK(Platform::RemoveFileIfExists(m_mixedTagsFilenames.first), ()); - CHECK_EQUAL( - std::rename(m_mixedNodesFilenames.second.c_str(), m_mixedNodesFilenames.first.c_str()), 0, - ()); - CHECK_EQUAL( - std::rename(m_mixedTagsFilenames.second.c_str(), m_mixedTagsFilenames.first.c_str()), 0, - ()); + CHECK_EQUAL(std::rename(m_mixedNodesFilenames.second.c_str(), m_mixedNodesFilenames.first.c_str()), 0, ()); + CHECK_EQUAL(std::rename(m_mixedTagsFilenames.second.c_str(), m_mixedTagsFilenames.first.c_str()), 0, ()); } void BuildCoasts() { auto const worldCoastsGeom = m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME ".geom"); - auto const worldCoastsRawGeom = - m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME ".rawgeom"); + auto const worldCoastsRawGeom = m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME ".rawgeom"); CHECK(!Platform::IsFileExistsByFullPath(worldCoastsGeom), ()); CHECK(!Platform::IsFileExistsByFullPath(worldCoastsRawGeom), ()); @@ -235,8 +228,7 @@ public: void BuildCountries() { m_genInfo.m_emitCoasts = true; - m_genInfo.m_citiesBoundariesFilename = - m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); + m_genInfo.m_citiesBoundariesFilename = m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); auto const northAuckland = m_genInfo.GetTmpFileName("New Zealand North_Auckland"); auto const northWellington = m_genInfo.GetTmpFileName("New Zealand North_Wellington"); @@ -265,8 +257,7 @@ public: void BuildCountriesWithComplex() { m_genInfo.m_emitCoasts = true; - m_genInfo.m_citiesBoundariesFilename = - m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); + m_genInfo.m_citiesBoundariesFilename = m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); m_genInfo.m_complexHierarchyFilename = base::JoinPath(m_testPath, "hierarchy.csv"); auto const northAuckland = m_genInfo.GetTmpFileName("New Zealand North_Auckland"); @@ -282,26 +273,21 @@ public: TEST(rawGenerator.Execute(), ()); std::map results; - results["kNorthAucklandCounters + kNorthAucklandComplexFeaturesCounters"] = - CountryFeatureResults(GetCountersForCountry(northAuckland), - kNorthAucklandCounters + kNorthAucklandComplexFeaturesCounters); - results["kNorthWellingtonCounters + kNorthWellingtonComplexFeaturesCounters"] = - CountryFeatureResults(GetCountersForCountry(northWellington), - kNorthWellingtonCounters + kNorthWellingtonComplexFeaturesCounters); - results["kSouthCanterburyCounters + kSouthCanterburyComplexFeaturesCounters"] = - CountryFeatureResults(GetCountersForCountry(southCanterbury), - kSouthCanterburyCounters + kSouthCanterburyComplexFeaturesCounters); - results["kSouthSouthlandCounters + kSouthSouthlandComplexFeaturesCounters"] = - CountryFeatureResults(GetCountersForCountry(southSouthland), - kSouthSouthlandCounters + kSouthSouthlandComplexFeaturesCounters); + results["kNorthAucklandCounters + kNorthAucklandComplexFeaturesCounters"] = CountryFeatureResults( + GetCountersForCountry(northAuckland), kNorthAucklandCounters + kNorthAucklandComplexFeaturesCounters); + results["kNorthWellingtonCounters + kNorthWellingtonComplexFeaturesCounters"] = CountryFeatureResults( + GetCountersForCountry(northWellington), kNorthWellingtonCounters + kNorthWellingtonComplexFeaturesCounters); + results["kSouthCanterburyCounters + kSouthCanterburyComplexFeaturesCounters"] = CountryFeatureResults( + GetCountersForCountry(southCanterbury), kSouthCanterburyCounters + kSouthCanterburyComplexFeaturesCounters); + results["kSouthSouthlandCounters + kSouthSouthlandComplexFeaturesCounters"] = CountryFeatureResults( + GetCountersForCountry(southSouthland), kSouthSouthlandCounters + kSouthSouthlandComplexFeaturesCounters); TestAndLogCountryFeatures(results); } void CheckMixedTagsAndNodes() { m_genInfo.m_emitCoasts = true; - m_genInfo.m_citiesBoundariesFilename = - m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); + m_genInfo.m_citiesBoundariesFilename = m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); auto const northAuckland = m_genInfo.GetTmpFileName("New Zealand North_Auckland"); auto const northWellington = m_genInfo.GetTmpFileName("New Zealand North_Wellington"); @@ -325,9 +311,8 @@ public: CountryFeatureResults(GetCountersForCountry(northWellington), kNorthWellingtonCounters); results["kSouthCanterburyCounters"] = CountryFeatureResults(GetCountersForCountry(southCanterbury), kSouthCanterburyCounters); - results["kSouthSouthlandCounters + kSouthSouthlandMixedNodesCounters"] = - CountryFeatureResults(GetCountersForCountry(southSouthland), - kSouthSouthlandCounters + kSouthSouthlandMixedNodesCounters); + results["kSouthSouthlandCounters + kSouthSouthlandMixedNodesCounters"] = CountryFeatureResults( + GetCountersForCountry(southSouthland), kSouthSouthlandCounters + kSouthSouthlandMixedNodesCounters); results["kWorldCounters"] = CountryFeatureResults(GetCountersForCountry(world), kWorldCounters); TestAndLogCountryFeatures(results); @@ -336,8 +321,7 @@ public: void CheckGeneratedData() { m_genInfo.m_emitCoasts = true; - m_genInfo.m_citiesBoundariesFilename = - m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); + m_genInfo.m_citiesBoundariesFilename = m_genInfo.GetIntermediateFileName("citiesboundaries.bin"); auto const cameraToWays = m_genInfo.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME); auto const cityBoundaries = m_genInfo.GetIntermediateFileName(CITY_BOUNDARIES_COLLECTOR_FILENAME); auto const maxSpeeds = m_genInfo.GetIntermediateFileName(MAXSPEEDS_FILENAME); @@ -345,9 +329,8 @@ public: auto const restrictions = m_genInfo.GetIntermediateFileName(RESTRICTIONS_FILENAME); auto const roadAccess = m_genInfo.GetIntermediateFileName(ROAD_ACCESS_FILENAME); - for (auto const & generatedFile : - {cameraToWays, cityBoundaries, maxSpeeds, metalines, restrictions, roadAccess, - m_genInfo.m_citiesBoundariesFilename}) + for (auto const & generatedFile : {cameraToWays, cityBoundaries, maxSpeeds, metalines, restrictions, roadAccess, + m_genInfo.m_citiesBoundariesFilename}) { CHECK(!Platform::IsFileExistsByFullPath(generatedFile), (generatedFile)); } @@ -385,9 +368,9 @@ public: } private: - CountryFeaturesCounters GetCountersForCountry( - std::string const & path, std::function const & fn = - [](feature::FeatureBuilder const &) {}) + CountryFeaturesCounters GetCountersForCountry(std::string const & path, + std::function const & fn = + [](feature::FeatureBuilder const &) {}) { CHECK(Platform::IsFileExistsByFullPath(path), ()); auto const fbs = feature::ReadAllDatRawFormat(path); @@ -449,12 +432,8 @@ private: m_mixedTagsFilenames.first = base::JoinPath(platform.ResourcesDir(), MIXED_TAGS_FILE); m_mixedTagsFilenames.second = base::JoinPath(platform.ResourcesDir(), MIXED_TAGS_FILE "_"); - CHECK_EQUAL( - std::rename(m_mixedNodesFilenames.first.c_str(), m_mixedNodesFilenames.second.c_str()), 0, - ()); - CHECK_EQUAL( - std::rename(m_mixedTagsFilenames.first.c_str(), m_mixedTagsFilenames.second.c_str()), 0, - ()); + CHECK_EQUAL(std::rename(m_mixedNodesFilenames.first.c_str(), m_mixedNodesFilenames.second.c_str()), 0, ()); + CHECK_EQUAL(std::rename(m_mixedTagsFilenames.first.c_str(), m_mixedTagsFilenames.second.c_str()), 0, ()); } void WriteToFile(std::string const & filename, std::string const & data) diff --git a/generator/generator_integration_tests/mwm_playground.cpp b/generator/generator_integration_tests/mwm_playground.cpp index 676234961..bed88edac 100644 --- a/generator/generator_integration_tests/mwm_playground.cpp +++ b/generator/generator_integration_tests/mwm_playground.cpp @@ -18,10 +18,9 @@ namespace { platform::LocalCountryFile MakeFile(std::string name, int64_t version) { - return { GetPlatform().WritableDir() + std::to_string(version), - platform::CountryFile(std::move(name)), version }; + return {GetPlatform().WritableDir() + std::to_string(version), platform::CountryFile(std::move(name)), version}; } -} // namespace +} // namespace UNIT_TEST(CrossMwmWeights) { @@ -43,7 +42,7 @@ UNIT_TEST(CrossMwmWeights) builder.DeserializeTransitions(VehicleType::Car, reader); builder.DeserializeWeights(reader); - //std::vector weights(connector.GetNumEnters() * connector.GetNumExits()); + // std::vector weights(connector.GetNumEnters() * connector.GetNumExits()); using IdxWeightT = std::pair; std::vector idx2weight; @@ -54,7 +53,7 @@ UNIT_TEST(CrossMwmWeights) { uint32_t const idx = connector.GetWeightIndex(enterIdx, exitIdx); uint32_t const weight = connector.GetWeight(enterIdx, exitIdx); - //weights[idx] = weight; + // weights[idx] = weight; if (weight > 0) idx2weight.emplace_back(idx, weight); diff --git a/generator/generator_integration_tests/towns_tests.cpp b/generator/generator_integration_tests/towns_tests.cpp index 954c2f84c..ff4c7630b 100644 --- a/generator/generator_integration_tests/towns_tests.cpp +++ b/generator/generator_integration_tests/towns_tests.cpp @@ -48,12 +48,9 @@ class TestAffiliation : public feature::AffiliationInterface std::vector GetAffiliations(feature::FeatureBuilder const & fb) const override { return {}; } std::vector GetAffiliations(m2::PointD const & point) const override { return {}; } - bool HasCountryByName(std::string const & name) const override - { - return !name.starts_with("World"); - } + bool HasCountryByName(std::string const & name) const override { return !name.starts_with("World"); } }; -} // namespace +} // namespace UNIT_TEST(CountryFinalProcessor_ProcessBuildingParts) { diff --git a/generator/generator_tests/affiliation_tests.cpp b/generator/generator_tests/affiliation_tests.cpp index 018cd79e5..d1056e7b6 100644 --- a/generator/generator_tests/affiliation_tests.cpp +++ b/generator/generator_tests/affiliation_tests.cpp @@ -23,8 +23,8 @@ namespace class AffiliationTests { public: - static const std::string kOne; - static const std::string kTwo; + static std::string const kOne; + static std::string const kTwo; static constexpr m2::PointD kPointInsideOne1{3.0, 3.0}; static constexpr m2::PointD kPointInsideOne2{4.0, 4.0}; @@ -89,8 +89,8 @@ private: }; // static -const std::string AffiliationTests::kOne = "One"; -const std::string AffiliationTests::kTwo = "Two"; +std::string const AffiliationTests::kOne = "One"; +std::string const AffiliationTests::kTwo = "Two"; bool Test(std::vector && res, std::set const & answ) { @@ -104,41 +104,29 @@ bool Test(std::vector && res, std::set const & answ) void TestCountriesAffiliationInsideBorders(feature::AffiliationInterface const & affiliation) { - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOne1), - {AffiliationTests::kOne}), - ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOne2), - {AffiliationTests::kOne}), - ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointOnBorderOne), - {AffiliationTests::kOne}), - ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwo1), - {AffiliationTests::kTwo}), - ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwo2), - {AffiliationTests::kTwo}), - ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOne1), {AffiliationTests::kOne}), ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOne2), {AffiliationTests::kOne}), ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointOnBorderOne), {AffiliationTests::kOne}), ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwo1), {AffiliationTests::kTwo}), ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwo2), {AffiliationTests::kTwo}), ()); TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOneAndTwo1), {AffiliationTests::kOne, AffiliationTests::kTwo}), ()); TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOneAndTwo2), {AffiliationTests::kOne, AffiliationTests::kTwo}), ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointOnBorderTwo), - {AffiliationTests::kTwo}), - ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointOnBorderTwo), {AffiliationTests::kTwo}), ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::MakeLineFb( - {AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideOne2})), + TEST(Test(affiliation.GetAffiliations( + AffiliationTests::MakeLineFb({AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideOne2})), {AffiliationTests::kOne}), ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::MakeLineFb( - {AffiliationTests::kPointInsideTwo1, AffiliationTests::kPointInsideTwo2})), + TEST(Test(affiliation.GetAffiliations( + AffiliationTests::MakeLineFb({AffiliationTests::kPointInsideTwo1, AffiliationTests::kPointInsideTwo2})), {AffiliationTests::kTwo}), ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::MakeLineFb( - {AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideTwo1})), + TEST(Test(affiliation.GetAffiliations( + AffiliationTests::MakeLineFb({AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideTwo1})), {AffiliationTests::kOne, AffiliationTests::kTwo}), ()); } @@ -159,16 +147,12 @@ void TestCountriesFilesAffiliation(std::string const & borderPath) TestCountriesAffiliationInsideBorders(affiliation); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOneBoundingBox), - {AffiliationTests::kOne}), - ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwoBoundingBox), - {AffiliationTests::kTwo}), - ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOneBoundingBox), {AffiliationTests::kOne}), ()); + TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideTwoBoundingBox), {AffiliationTests::kTwo}), ()); } } -} // namespace +} // namespace UNIT_CLASS_TEST(AffiliationTests, SingleAffiliationTests) { @@ -179,8 +163,8 @@ UNIT_CLASS_TEST(AffiliationTests, SingleAffiliationTests) TEST(Test(affiliation.GetAffiliations(AffiliationTests::kPointInsideOneAndTwo1), {kName}), ()); - TEST(Test(affiliation.GetAffiliations(AffiliationTests::MakeLineFb( - {AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideTwo1})), + TEST(Test(affiliation.GetAffiliations( + AffiliationTests::MakeLineFb({AffiliationTests::kPointInsideOne1, AffiliationTests::kPointInsideTwo1})), {kName}), ()); @@ -190,14 +174,12 @@ UNIT_CLASS_TEST(AffiliationTests, SingleAffiliationTests) UNIT_CLASS_TEST(AffiliationTests, CountriesFilesAffiliationTests) { - TestCountriesFilesAffiliation( - AffiliationTests::GetBorderPath()); + TestCountriesFilesAffiliation(AffiliationTests::GetBorderPath()); } UNIT_CLASS_TEST(AffiliationTests, CountriesFilesIndexAffiliationTests) { - TestCountriesFilesAffiliation( - AffiliationTests::GetBorderPath()); + TestCountriesFilesAffiliation(AffiliationTests::GetBorderPath()); } UNIT_TEST(Lithuania_Belarus_Border) @@ -211,11 +193,11 @@ UNIT_TEST(Lithuania_Belarus_Border) for (auto const country : {"Lithuania_East", "Belarus_Hrodna Region"}) { std::vector regions; - LoadBorders(bordersDir + country + BORDERS_EXTENSION, regions); + LoadBorders(bordersDir + country + BORDERS_EXTENSION, regions); TEST_EQUAL(regions.size(), 1, ()); bool found = false; - for (auto const eps : { 1.0E-5, 5.0E-5, 1.0E-4 }) + for (auto const eps : {1.0E-5, 5.0E-5, 1.0E-4}) { if (regions[0].Contains(point, CountryPolygons::ContainsCompareFn(eps))) { diff --git a/generator/generator_tests/altitude_test.cpp b/generator/generator_tests/altitude_test.cpp index 055b4edf5..15e86b5f1 100644 --- a/generator/generator_tests/altitude_test.cpp +++ b/generator/generator_tests/altitude_test.cpp @@ -83,8 +83,7 @@ public: auto const it = m_altitudes.find(g.m_point); if (it != m_altitudes.cend()) { - CHECK_EQUAL(it->second, g.m_altitude, - ("Point", it->first, "is set with two different altitudes.")); + CHECK_EQUAL(it->second, g.m_altitude, ("Point", it->first, "is set with two different altitudes.")); continue; } m_altitudes[g.m_point] = g.m_altitude; @@ -104,7 +103,6 @@ public: } private: - TMockAltitudes m_altitudes; }; @@ -130,9 +128,8 @@ void BuildMwmWithoutAltitudes(std::vector const & roads, LocalCoun builder.Add(generator::tests_support::TestStreet(ExtractPoints(geom3D), std::string(), std::string())); } -void TestAltitudes(DataSource const & dataSource, MwmSet::MwmId const & mwmId, - std::string const & mwmPath, bool hasAltitudeExpected, - AltitudeGetter & expectedAltitudes) +void TestAltitudes(DataSource const & dataSource, MwmSet::MwmId const & mwmId, std::string const & mwmPath, + bool hasAltitudeExpected, AltitudeGetter & expectedAltitudes) { auto const handle = dataSource.GetMwmHandleById(mwmId); TEST(handle.IsAlive(), ()); @@ -157,8 +154,7 @@ void TestAltitudes(DataSource const & dataSource, MwmSet::MwmId const & mwmId, { geometry::Altitude const fromGetter = expectedAltitudes.GetAltitude(f.GetPoint(i)); geometry::Altitude const expected = - (fromGetter == geometry::kInvalidAltitude ? geometry::kDefaultAltitudeMeters - : fromGetter); + (fromGetter == geometry::kInvalidAltitude ? geometry::kDefaultAltitudeMeters : fromGetter); TEST_EQUAL(expected, altitudes[i], ("A wrong altitude")); } }; @@ -175,8 +171,7 @@ void TestAltitudesBuilding(std::vector const & roads, bool hasAlti // Building mwm without altitude section. LocalCountryFile country(testDirFullPath, CountryFile(kTestMwm), 1); ScopedDir testScopedDir(kTestDir); - ScopedFile testScopedMwm(base::JoinPath(kTestDir, kTestMwm + DATA_FILE_EXTENSION), - ScopedFile::Mode::Create); + ScopedFile testScopedMwm(base::JoinPath(kTestDir, kTestMwm + DATA_FILE_EXTENSION), ScopedFile::Mode::Create); BuildMwmWithoutAltitudes(roads, country); diff --git a/generator/generator_tests/brands_loader_test.cpp b/generator/generator_tests/brands_loader_test.cpp index 4720962c1..20e451c67 100644 --- a/generator/generator_tests/brands_loader_test.cpp +++ b/generator/generator_tests/brands_loader_test.cpp @@ -18,16 +18,16 @@ using platform::tests_support::ScopedFile; char const kBrandsJson[] = "{\n" "\"nodes\": {\n" - "\"2132500347\": 13,\n" - "\"5321137826\": 12\n" + "\"2132500347\": 13,\n" + "\"5321137826\": 12\n" "},\n" "\"ways\": {\n" - "\"440527172\": 13,\n" - "\"149816366\": 12\n" + "\"440527172\": 13,\n" + "\"149816366\": 12\n" "},\n" "\"relations\": {\n" - "\"6018309\": 13,\n" - "\"6228042\": 12\n" + "\"6018309\": 13,\n" + "\"6228042\": 12\n" "}\n" "}"; @@ -36,13 +36,13 @@ char const kBrandTranslationsJson[] = "\"12\": {\n" "\"en\": [\"subway\"],\n" "\"ru\": [\"\u0441\u0430\u0431\u0432\u044d\u0439\",\n" - "\"\u0441\u0430\u0431\u0432\u0435\u0439\"]\n" - "},\n" + "\"\u0441\u0430\u0431\u0432\u0435\u0439\"]\n" + "},\n" "\"13\": {\n" "\"en\": [\"mcdonalds\",\"mc donalds\"],\n" "\"ru\": [\"\u043c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u044c\u0434\u0441\",\n" - "\"\u043c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u0434\u0441\"]\n" - "}\n" + "\"\u043c\u0430\u043a\u0434\u043e\u043d\u0430\u043b\u0434\u0441\"]\n" + "}\n" "}"; UNIT_TEST(LoadBrands) @@ -52,11 +52,11 @@ UNIT_TEST(LoadBrands) std::unordered_map brands; TEST(LoadBrands(brandsFile.GetFullPath(), translationsFile.GetFullPath(), brands), ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmNode, 2132500347)], "mcdonalds", ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmWay, 440527172)], "mcdonalds", ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 6018309)], "mcdonalds", ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmNode, 5321137826)], "subway", ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmWay, 149816366)], "subway", ()); - TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 6228042)], "subway", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmNode, 2132500347)], "mcdonalds", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmWay, 440527172)], "mcdonalds", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 6018309)], "mcdonalds", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmNode, 5321137826)], "subway", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmWay, 149816366)], "subway", ()); + TEST_EQUAL(brands[GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 6228042)], "subway", ()); } } // namespace brands_loader_test diff --git a/generator/generator_tests/camera_collector_tests.cpp b/generator/generator_tests/camera_collector_tests.cpp index 4517a2a13..27e8fcaf6 100644 --- a/generator/generator_tests/camera_collector_tests.cpp +++ b/generator/generator_tests/camera_collector_tests.cpp @@ -13,8 +13,8 @@ #include "generator/translator.hpp" #include "indexer/classificator_loader.hpp" -#include "indexer/map_style_reader.hpp" #include "indexer/map_style.hpp" +#include "indexer/map_style_reader.hpp" #include "platform/platform.hpp" #include "platform/platform_tests_support/scoped_dir.hpp" @@ -25,7 +25,6 @@ #include "defines.hpp" - namespace routing_builder { using namespace generator; @@ -58,10 +57,7 @@ public: return {}; } - void Merge(TranslatorInterface const &) override - { - CHECK(false, ()); - } + void Merge(TranslatorInterface const &) override { CHECK(false, ()); } protected: using Translator::Translator; @@ -105,7 +101,8 @@ public: // Test load this data from cached file. generator::cache::IntermediateDataObjectsCache objectsCache; auto cache = std::make_shared(objectsCache, genInfo); - auto collector = std::make_shared(genInfo.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME), cache->GetCache()); + auto collector = + std::make_shared(genInfo.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME), cache->GetCache()); auto processor = CreateProcessor(ProcessorType::Noop); auto translator = std::make_shared(processor, cache); translator->SetCollector(collector); @@ -131,8 +128,8 @@ UNIT_CLASS_TEST(TestCameraCollector, test_1) { string const osmSourceXML = R"( - )" + kSpeedCameraTag + - R"()" + kSpeedCameraTag + + )" + + kSpeedCameraTag + R"()" + kSpeedCameraTag + R"()" + kSpeedCameraTag + R"( @@ -149,9 +146,7 @@ UNIT_CLASS_TEST(TestCameraCollector, test_1) )"; - std::set> trueAnswers = { - {1, 10}, {1, 20}, {2, 20}, {3, 20} - }; + std::set> trueAnswers = {{1, 10}, {1, 20}, {2, 20}, {3, 20}}; TEST(TestCameraCollector::Test(osmSourceXML, trueAnswers), ()); } @@ -160,8 +155,8 @@ UNIT_CLASS_TEST(TestCameraCollector, test_2) { string const osmSourceXML = R"( - )" + kSpeedCameraTag + - R"()" + kSpeedCameraTag + + )" + + kSpeedCameraTag + R"()" + kSpeedCameraTag + R"()" + kSpeedCameraTag + R"()" + kSpeedCameraTag + R"()" + kSpeedCameraTag + @@ -185,9 +180,8 @@ UNIT_CLASS_TEST(TestCameraCollector, test_2) )"; - std::set> trueAnswers = { - {1, 10}, {2, 10}, {1, 20}, {3, 20}, {1, 30}, {3, 30}, {4, 30}, {5, 30} - }; + std::set> trueAnswers = {{1, 10}, {2, 10}, {1, 20}, {3, 20}, + {1, 30}, {3, 30}, {4, 30}, {5, 30}}; TEST(TestCameraCollector::Test(osmSourceXML, trueAnswers), ()); } @@ -196,7 +190,8 @@ UNIT_CLASS_TEST(TestCameraCollector, test_3) { string const osmSourceXML = R"( - )" + kSpeedCameraTag + + )" + + kSpeedCameraTag + R"( @@ -211,9 +206,7 @@ UNIT_CLASS_TEST(TestCameraCollector, test_3) )"; - std::set> trueAnswers = { - {1, 10}, {1, 20} - }; + std::set> trueAnswers = {{1, 10}, {1, 20}}; TEST(TestCameraCollector::Test(osmSourceXML, trueAnswers), ()); } @@ -222,7 +215,8 @@ UNIT_CLASS_TEST(TestCameraCollector, test_4) { string const osmSourceXML = R"( - )" + kSpeedCameraTag + + )" + + kSpeedCameraTag + R"( @@ -252,4 +246,4 @@ UNIT_CLASS_TEST(TestCameraCollector, test_5) TEST(TestCameraCollector::Test(osmSourceXML, trueAnswers), ()); } -} // namespace routing_builder +} // namespace routing_builder diff --git a/generator/generator_tests/cells_merger_tests.cpp b/generator/generator_tests/cells_merger_tests.cpp index ab0c2b416..6992fd2b9 100644 --- a/generator/generator_tests/cells_merger_tests.cpp +++ b/generator/generator_tests/cells_merger_tests.cpp @@ -24,20 +24,16 @@ UNIT_TEST(CellsMerger_One) UNIT_TEST(CellsMerger_Two) { - generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, - {{1.0, 0.0}, {2.0, 1.0}}}); - std::vector expected{{{0.0, 0.0}, {1.0, 1.0}}, - {{1.0, 0.0}, {2.0, 1.0}}}; + generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, {{1.0, 0.0}, {2.0, 1.0}}}); + std::vector expected{{{0.0, 0.0}, {1.0, 1.0}}, {{1.0, 0.0}, {2.0, 1.0}}}; auto const result = merger.Merge(); TEST_EQUAL(result, expected, ()); } UNIT_TEST(CellsMerger_Four) { - generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, - {{1.0, 0.0}, {2.0, 1.0}}, - {{0.0, 1.0}, {1.0, 2.0}}, - {{1.0, 1.0}, {2.0, 2.0}}}); + generator::cells_merger::CellsMerger merger( + {{{0.0, 0.0}, {1.0, 1.0}}, {{1.0, 0.0}, {2.0, 1.0}}, {{0.0, 1.0}, {1.0, 2.0}}, {{1.0, 1.0}, {2.0, 2.0}}}); std::vector expected{{{0.0, 0.0}, {2.0, 2.0}}}; auto const result = merger.Merge(); TEST_EQUAL(result, expected, ()); @@ -45,23 +41,31 @@ UNIT_TEST(CellsMerger_Four) UNIT_TEST(CellsMerger_Six) { - generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, {{1.0, 0.0}, {2.0, 1.0}}, - {{0.0, 1.0}, {1.0, 2.0}}, {{1.0, 1.0}, {2.0, 2.0}}, - {{2.0, 0.0}, {3.0, 1.0}}, {{2.0, 1.0}, {3.0, 2.0}}}); - std::vector expected{{{1.0, 0.0}, {3.0, 2.0}}, {{0.0, 0.0}, {1.0, 1.0}}, - {{0.0, 1.0}, {1.0, 2.0}}}; + generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, + {{1.0, 0.0}, {2.0, 1.0}}, + {{0.0, 1.0}, {1.0, 2.0}}, + {{1.0, 1.0}, {2.0, 2.0}}, + {{2.0, 0.0}, {3.0, 1.0}}, + {{2.0, 1.0}, {3.0, 2.0}}}); + std::vector expected{{{1.0, 0.0}, {3.0, 2.0}}, {{0.0, 0.0}, {1.0, 1.0}}, {{0.0, 1.0}, {1.0, 2.0}}}; auto const result = merger.Merge(); TEST_EQUAL(result, expected, ()); } UNIT_TEST(CellsMerger_Eight) { - generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, {{1.0, 0.0}, {2.0, 1.0}}, - {{0.0, 1.0}, {1.0, 2.0}}, {{1.0, 1.0}, {2.0, 2.0}}, - {{2.0, 0.0}, {3.0, 1.0}}, {{2.0, 1.0}, {3.0, 2.0}}, - {{3.0, 0.0}, {4.0, 1.0}}, {{3.0, 1.0}, {4.0, 2.0}}}); - std::vector expected{{{1.0, 0.0}, {3.0, 2.0}}, {{0.0, 0.0}, {1.0, 1.0}}, - {{0.0, 1.0}, {1.0, 2.0}}, {{3.0, 0.0}, {4.0, 1.0}}, + generator::cells_merger::CellsMerger merger({{{0.0, 0.0}, {1.0, 1.0}}, + {{1.0, 0.0}, {2.0, 1.0}}, + {{0.0, 1.0}, {1.0, 2.0}}, + {{1.0, 1.0}, {2.0, 2.0}}, + {{2.0, 0.0}, {3.0, 1.0}}, + {{2.0, 1.0}, {3.0, 2.0}}, + {{3.0, 0.0}, {4.0, 1.0}}, + {{3.0, 1.0}, {4.0, 2.0}}}); + std::vector expected{{{1.0, 0.0}, {3.0, 2.0}}, + {{0.0, 0.0}, {1.0, 1.0}}, + {{0.0, 1.0}, {1.0, 2.0}}, + {{3.0, 0.0}, {4.0, 1.0}}, {{3.0, 1.0}, {4.0, 2.0}}}; auto const result = merger.Merge(); TEST_EQUAL(result, expected, ()); diff --git a/generator/generator_tests/cities_boundaries_checker_tests.cpp b/generator/generator_tests/cities_boundaries_checker_tests.cpp index a2a4691cf..953dacde0 100644 --- a/generator/generator_tests/cities_boundaries_checker_tests.cpp +++ b/generator/generator_tests/cities_boundaries_checker_tests.cpp @@ -14,8 +14,7 @@ using namespace indexer; UNIT_TEST(CitiesBoundariesChecker_Square) { - auto const checker = - CitiesBoundariesChecker({CityBoundary({{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}})}); + auto const checker = CitiesBoundariesChecker({CityBoundary({{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}, {0.0, 1.0}})}); TEST(checker.InCity({0.5, 0.5}), ()); TEST(checker.InCity({0.0001, 0.0001}), ()); @@ -42,9 +41,9 @@ UNIT_TEST(CitiesBoundariesChecker_NotConvexPolygon) UNIT_TEST(CitiesBoundariesChecker_IntersectedPolygons) { - auto const checker = CitiesBoundariesChecker( - {CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}}), - CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}})}); + auto const checker = + CitiesBoundariesChecker({CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}}), + CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}})}); TEST(checker.InCity({0.3, 0.3}), ()); TEST(checker.InCity({0.0001, 0.0001}), ()); @@ -57,10 +56,10 @@ UNIT_TEST(CitiesBoundariesChecker_IntersectedPolygons) UNIT_TEST(CitiesBoundariesChecker_SeveralPolygons) { - auto const checker = CitiesBoundariesChecker( - {CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}}), - CityBoundary({{10.0, 0.0}, {11.0, -1.0}, {10.5, 0.0}, {11.0, 1.0}, {10.0, 1.0}}), - CityBoundary({{0.0, 10.0}, {1.0, -11.0}, {0.5, 10.0}, {1.0, 11.0}, {0.0, 11.0}})}); + auto const checker = + CitiesBoundariesChecker({CityBoundary({{0.0, 0.0}, {1.0, -1.0}, {0.5, 0.0}, {1.0, 1.0}, {0.0, 1.0}}), + CityBoundary({{10.0, 0.0}, {11.0, -1.0}, {10.5, 0.0}, {11.0, 1.0}, {10.0, 1.0}}), + CityBoundary({{0.0, 10.0}, {1.0, -11.0}, {0.5, 10.0}, {1.0, 11.0}, {0.0, 11.0}})}); TEST(checker.InCity({0.3, 0.3}), ()); TEST(checker.InCity({0.0001, 0.0001}), ()); diff --git a/generator/generator_tests/cities_ids_tests.cpp b/generator/generator_tests/cities_ids_tests.cpp index 92fa9d895..ccf16449a 100644 --- a/generator/generator_tests/cities_ids_tests.cpp +++ b/generator/generator_tests/cities_ids_tests.cpp @@ -42,7 +42,8 @@ UNIT_CLASS_TEST(CitiesIdsTest, BuildCitiesIds) TestCity wien(m2::PointD(1, 1), "Wien", "de", 100 /* rank */); TestSea marCaribe(m2::PointD(2, 2), "Mar Caribe", "es"); - auto testWorldId = BuildWorld([&](TestMwmBuilder & builder) { + auto testWorldId = BuildWorld([&](TestMwmBuilder & builder) + { builder.Add(paris); builder.Add(wien); builder.Add(marCaribe); @@ -62,7 +63,8 @@ UNIT_CLASS_TEST(CitiesIdsTest, BuildCitiesIds) { size_t numFeatures = 0; size_t numLocalities = 0; - auto const test = [&](FeatureType & ft, uint32_t index) { + auto const test = [&](FeatureType & ft, uint32_t index) + { ++numFeatures; FeatureID const fid(testWorldId, index); base::GeoObjectId gid; @@ -90,4 +92,4 @@ UNIT_CLASS_TEST(CitiesIdsTest, BuildCitiesIds) } } -} // namespace cities_ids_tests +} // namespace cities_ids_tests diff --git a/generator/generator_tests/city_roads_tests.cpp b/generator/generator_tests/city_roads_tests.cpp index 2f05fe03f..91dbbd0c9 100644 --- a/generator/generator_tests/city_roads_tests.cpp +++ b/generator/generator_tests/city_roads_tests.cpp @@ -67,8 +67,7 @@ void TestCityRoadsBuilding(vector && cityRoadFeatureIds) string const writableDir = GetPlatform().WritableDir(); // Building empty mwm. - LocalCountryFile country(base::JoinPath(writableDir, kTestDir), CountryFile(kTestMwm), - 0 /* version */); + LocalCountryFile country(base::JoinPath(writableDir, kTestDir), CountryFile(kTestMwm), 0 /* version */); ScopedDir const scopedDir(kTestDir); string const mwmRelativePath = base::JoinPath(kTestDir, kTestMwm + DATA_FILE_EXTENSION); @@ -98,8 +97,7 @@ void TestCityRoadsBuilding(vector && cityRoadFeatureIds) // Note. 2 is added below to test all the if-branches of CityRoads::IsCityRoad() method. for (uint32_t fid = 0; fid < kMaxRoadFeatureId + 2; ++fid) { - bool const isCityRoad = - binary_search(originalCityRoadFeatureIds.cbegin(), originalCityRoadFeatureIds.cend(), fid); + bool const isCityRoad = binary_search(originalCityRoadFeatureIds.cbegin(), originalCityRoadFeatureIds.cend(), fid); TEST_EQUAL(cityRoads->IsCityRoad(fid), isCityRoad, (fid)); } } @@ -121,15 +119,13 @@ UNIT_TEST(CityRoadsGenerationTest_CommonCase) UNIT_TEST(CityRoadsGenerationTest_SortedIds1) { - TestCityRoadsBuilding( - vector({1000, 1203, 11004, 11008, 11009, 11010, 11011, 11012, 11013, 11014, 11015, - 11016, 11017, 11018, 11019, 11020, 11021, 11022, 11023, 11024, 11025})); + TestCityRoadsBuilding(vector({1000, 1203, 11004, 11008, 11009, 11010, 11011, 11012, 11013, 11014, 11015, + 11016, 11017, 11018, 11019, 11020, 11021, 11022, 11023, 11024, 11025})); } UNIT_TEST(CityRoadsGenerationTest_SortedIds2) { - TestCityRoadsBuilding( - vector({75000, 75001, 75004, 250000, 250001, 330003, 330007})); + TestCityRoadsBuilding(vector({75000, 75001, 75004, 250000, 250001, 330003, 330007})); } UNIT_TEST(CityRoadsGenerationTest_UnsortedIds) @@ -140,31 +136,27 @@ UNIT_TEST(CityRoadsGenerationTest_UnsortedIds) UNIT_TEST(CityRoadsGenerationTest_UnsortedIds2) { TestCityRoadsBuilding( - vector({1000, 1203, 1, 11004, 11, 11009, 11010, 1011, 11012, 11013, 4, 11015, + vector({1000, 1203, 1, 11004, 11, 11009, 11010, 1011, 11012, 11013, 4, 11015, 11016, 11017, 11018, 11019, 11020, 11021, 11022, 11023, 11024, 11025, 2})); } UNIT_TEST(CityRoadsGenerationTest_UnsortedIds3) { TestCityRoadsBuilding(vector( - {181998, 354195, 470394, 356217, 331537, 272789, 449031, 420305, 139273, 482371, 85866, - 142591, 105206, 217360, 380898, 390284, 96547, 110547, 201338, 428964, 246086, 29141, - 179975, 493052, 53822, 238723, 316810, 349592, 154010, 107966, 113307, 97285, 145351, - 1153, 433747, 3176, 294890, 52537, 412384, 67264, 102626, 129329, 49219, 289549, - 68559, 364318, 211462, 170032, 59900, 257505, 164691, 75922, 209439, 308889, 143329, - 140010, 17175, 385681, 147374, 362296, 483109, 257221, 78957, 246540, 111001, 150408, - 399397, 285220, 260539, 201792, 378034, 349308, 68275, 278584, 14869, 71593, 34209, - 146363, 177111, 319287, 25550, 39549, 130341, 225177, 175089, 458144, 108978, 289265, - 482825, 167725, 113023, 11551, 315969, 402715, 408055, 392033, 440099, 295901, 228495, - 297924, 89638, 214496, 207133, 362012, 397374, 424077, 343967, 84297, 230518, 159067, - 6210, 331991, 354649, 52253, 326650, 370671, 4187, 103637, 305287, 434759, 311923, - 180429, 442122, 157044, 145067, 415419, 237154, 404737, 269198, 308605, 57594, 310628, - 418737, 359989, 36231, 7505, 226473, 436781, 173066, 97001, 59617, 171771, 335309, - 477484, 183747, 64957, 155749, 383375, 333286, 116341, 134386, 447463, 141022, 193133, - 271221, 169748, 474166, 60912, 66253, 50231, 98297, 321309, 386693, 456121, 247835, - 372693, 365330, 20209, 55571, 82275, 2165, 242495, 388715, 317264, 164407, 490188, - 12846, 210451, 484847, 28868, 162385, 129045, 463485, 92956, 337331, 338627, 100319, - 182452, 303265, 73616, 262562, 62935, 294606, 466803, 215791, 468825, 76934, 18187, - 194429, 32913})); + {181998, 354195, 470394, 356217, 331537, 272789, 449031, 420305, 139273, 482371, 85866, 142591, 105206, 217360, + 380898, 390284, 96547, 110547, 201338, 428964, 246086, 29141, 179975, 493052, 53822, 238723, 316810, 349592, + 154010, 107966, 113307, 97285, 145351, 1153, 433747, 3176, 294890, 52537, 412384, 67264, 102626, 129329, + 49219, 289549, 68559, 364318, 211462, 170032, 59900, 257505, 164691, 75922, 209439, 308889, 143329, 140010, + 17175, 385681, 147374, 362296, 483109, 257221, 78957, 246540, 111001, 150408, 399397, 285220, 260539, 201792, + 378034, 349308, 68275, 278584, 14869, 71593, 34209, 146363, 177111, 319287, 25550, 39549, 130341, 225177, + 175089, 458144, 108978, 289265, 482825, 167725, 113023, 11551, 315969, 402715, 408055, 392033, 440099, 295901, + 228495, 297924, 89638, 214496, 207133, 362012, 397374, 424077, 343967, 84297, 230518, 159067, 6210, 331991, + 354649, 52253, 326650, 370671, 4187, 103637, 305287, 434759, 311923, 180429, 442122, 157044, 145067, 415419, + 237154, 404737, 269198, 308605, 57594, 310628, 418737, 359989, 36231, 7505, 226473, 436781, 173066, 97001, + 59617, 171771, 335309, 477484, 183747, 64957, 155749, 383375, 333286, 116341, 134386, 447463, 141022, 193133, + 271221, 169748, 474166, 60912, 66253, 50231, 98297, 321309, 386693, 456121, 247835, 372693, 365330, 20209, + 55571, 82275, 2165, 242495, 388715, 317264, 164407, 490188, 12846, 210451, 484847, 28868, 162385, 129045, + 463485, 92956, 337331, 338627, 100319, 182452, 303265, 73616, 262562, 62935, 294606, 466803, 215791, 468825, + 76934, 18187, 194429, 32913})); } } // namespace city_roads_tests diff --git a/generator/generator_tests/cluster_finder_tests.cpp b/generator/generator_tests/cluster_finder_tests.cpp index 07d2a152e..8e2c4b9d9 100644 --- a/generator/generator_tests/cluster_finder_tests.cpp +++ b/generator/generator_tests/cluster_finder_tests.cpp @@ -15,7 +15,12 @@ namespace cluster_finder_tests { -enum class Type { T1 = 1, T2, T3 }; +enum class Type +{ + T1 = 1, + T2, + T3 +}; std::string DebugPrint(Type const & t) { @@ -25,7 +30,10 @@ std::string DebugPrint(Type const & t) struct NamedPoint { NamedPoint(m2::PointD const & point, Type const & type, std::string const & name) - : m_point(point), m_type(type), m_name(name) {} + : m_point(point) + , m_type(type) + , m_name(name) + {} size_t m_id = m_counter++; m2::PointD m_point; @@ -55,7 +63,8 @@ std::string DebugPrint(NamedPoint const & t) auto const getRadiusMFunction = [](NamedPoint const & p) { - switch (p.m_type) { + switch (p.m_type) + { case Type::T1: return 4000; case Type::T2: return 8000; case Type::T3: return 16000; @@ -64,21 +73,14 @@ auto const getRadiusMFunction = [](NamedPoint const & p) }; auto const isSameFunction = [](NamedPoint const & left, NamedPoint const & right) -{ - return left.m_name == right.m_name && left.m_type == right.m_type; -}; +{ return left.m_name == right.m_name && left.m_type == right.m_type; }; using ClusterT = std::vector; void Sort(std::vector & data) { for (auto & d : data) - { - std::sort(std::begin(d), std::end(d), [](NamedPoint const * l, NamedPoint const * r) - { - return l->m_id < r->m_id; - }); - } + std::sort(std::begin(d), std::end(d), [](NamedPoint const * l, NamedPoint const * r) { return l->m_id < r->m_id; }); std::sort(std::begin(data), std::end(data), [](ClusterT const & l, ClusterT const & r) { TEST(!l.empty(), ()); @@ -111,10 +113,7 @@ UNIT_TEST(ClustersFinder_OneElement) UNIT_TEST(ClustersFinder_TwoElements) { - std::vector in{ - NamedPoint({0.0, 0.0}, Type::T1, "name"), - NamedPoint({0.0001, 0.0001}, Type::T1, "name") - }; + std::vector in{NamedPoint({0.0, 0.0}, Type::T1, "name"), NamedPoint({0.0001, 0.0001}, Type::T1, "name")}; std::vector expected{{&in[0], &in[1]}}; Test(in, expected); @@ -123,19 +122,14 @@ UNIT_TEST(ClustersFinder_TwoElements) UNIT_TEST(ClustersFinder_TwoClusters) { { - std::vector in{ - NamedPoint({0.0, 0.0}, Type::T1, "name1"), - NamedPoint({0.0001, 0.0001}, Type::T1, "name2") - }; + std::vector in{NamedPoint({0.0, 0.0}, Type::T1, "name1"), + NamedPoint({0.0001, 0.0001}, Type::T1, "name2")}; std::vector expected{{&in[1]}, {&in[0]}}; Test(in, expected); } { - std::vector in{ - NamedPoint({0.0, 0.0}, Type::T1, "name"), - NamedPoint({0.1, 0.1}, Type::T1, "name") - }; + std::vector in{NamedPoint({0.0, 0.0}, Type::T1, "name"), NamedPoint({0.1, 0.1}, Type::T1, "name")}; std::vector expected{{&in[0]}, {&in[1]}}; Test(in, expected); @@ -145,16 +139,13 @@ UNIT_TEST(ClustersFinder_TwoClusters) UNIT_TEST(ClustersFinder_ThreeClusters) { std::vector in{ - NamedPoint({0.0, 0.0}, Type::T1, "name"), - NamedPoint({0.0, 0.00001}, Type::T1, "name"), - NamedPoint({0.0001, 0.0000}, Type::T1, "name"), + NamedPoint({0.0, 0.0}, Type::T1, "name"), NamedPoint({0.0, 0.00001}, Type::T1, "name"), + NamedPoint({0.0001, 0.0000}, Type::T1, "name"), - NamedPoint({0.0, 0.0}, Type::T2, "name"), - NamedPoint({0.0, 0.001}, Type::T2, "name"), - NamedPoint({0.001, 0.0000}, Type::T2, "name"), + NamedPoint({0.0, 0.0}, Type::T2, "name"), NamedPoint({0.0, 0.001}, Type::T2, "name"), + NamedPoint({0.001, 0.0000}, Type::T2, "name"), - NamedPoint({0.0, 0.0}, Type::T1, "name21") - }; + NamedPoint({0.0, 0.0}, Type::T1, "name21")}; std::vector expected{{&in[1], &in[0], &in[2]}, {&in[3], &in[5], &in[4]}, {&in[6]}}; Test(in, expected); diff --git a/generator/generator_tests/coasts_test.cpp b/generator/generator_tests/coasts_test.cpp index 17e1846c5..01c2d3b02 100644 --- a/generator/generator_tests/coasts_test.cpp +++ b/generator/generator_tests/coasts_test.cpp @@ -22,7 +22,10 @@ namespace coasts_test { using feature::FeatureBuilder; -static m2::PointU D2I(double x, double y) { return PointDToPointU(m2::PointD(x, y), kPointCoordBits); } +static m2::PointU D2I(double x, double y) +{ + return PointDToPointU(m2::PointD(x, y), kPointCoordBits); +} class ProcessCoastsBase { @@ -90,9 +93,9 @@ class DoCopyCoasts : public ProcessCoastsBase { public: DoCopyCoasts(std::string const & fName, std::vector const & vID) - : ProcessCoastsBase(vID), m_collector(fName) - { - } + : ProcessCoastsBase(vID) + , m_collector(fName) + {} void operator()(FeatureBuilder const & fb1, uint64_t) { @@ -116,7 +119,7 @@ UNIT_TEST(CellID_CheckRectPoints) { Id const cell = Id::FromBitsAndLevel(i, level); std::pair const xy = cell.XY(); - uint32_t const r = 2*cell.Radius(); + uint32_t const r = 2 * cell.Radius(); uint32_t const bound = (1 << level) * r; double minX, minY, maxX, maxY; diff --git a/generator/generator_tests/collector_boundary_postcode_tests.cpp b/generator/generator_tests/collector_boundary_postcode_tests.cpp index dda184c12..33649e34c 100644 --- a/generator/generator_tests/collector_boundary_postcode_tests.cpp +++ b/generator/generator_tests/collector_boundary_postcode_tests.cpp @@ -21,8 +21,8 @@ namespace collector_boundary_postcode_tests { -using std::string, std::vector, std::unordered_map; using generator::tests_support::TestWithClassificator; +using std::string, std::vector, std::unordered_map; static string const kDumpFileName = "dump.bin"; @@ -32,26 +32,19 @@ static string const kDumpFileName = "dump.bin"; // | | | // 6--7--8 unordered_map const kNodes = { - {0, m2::PointD{-1.0, 1.0}}, - {1, m2::PointD{0.0, 1.0}}, - {2, m2::PointD{1.0, 1.0}}, - {3, m2::PointD{-1.0, 0.0}}, - {4, m2::PointD{0.0, 0.0}}, - {5, m2::PointD{1.0, 0.0}}, - {6, m2::PointD{-1.0, -1.0}}, - {7, m2::PointD{0.0, -1.0}}, - {8, m2::PointD{1.0, -1.0}}}; + {0, m2::PointD{-1.0, 1.0}}, {1, m2::PointD{0.0, 1.0}}, {2, m2::PointD{1.0, 1.0}}, + {3, m2::PointD{-1.0, 0.0}}, {4, m2::PointD{0.0, 0.0}}, {5, m2::PointD{1.0, 0.0}}, + {6, m2::PointD{-1.0, -1.0}}, {7, m2::PointD{0.0, -1.0}}, {8, m2::PointD{1.0, -1.0}}}; vector const kPolygon1 = {4, 5, 2, 1, 4}; vector const kPolygon2 = {6, 3, 4, 7, 6}; vector const kPolygon3 = {8, 7, 4, 5, 8}; vector const kPolygon4 = {0, 1, 4, 4, 0}; -unordered_map const kWays = { - {1, WayElement{1, kPolygon1}}, - {2, WayElement{2, kPolygon2}}, - {3, WayElement{3, kPolygon3}}, - {4, WayElement{4, kPolygon4}}}; +unordered_map const kWays = {{1, WayElement{1, kPolygon1}}, + {2, WayElement{2, kPolygon2}}, + {3, WayElement{3, kPolygon3}}, + {4, WayElement{4, kPolygon4}}}; class IntermediateDataReaderTest : public generator::cache::IntermediateDataReaderInterface { @@ -72,29 +65,22 @@ class IntermediateDataReaderTest : public generator::cache::IntermediateDataRead return true; } - bool GetRelation(uint64_t /* id */, RelationElement & /* e */) override - { - return false; - } + bool GetRelation(uint64_t /* id */, RelationElement & /* e */) override { return false; } }; OsmElement MakePostcodeAreaRelation(uint64_t id, string postcode, uint64_t wayId) { - auto postcodeAreaRelation = - generator_tests::MakeOsmElement(id, {{"type", "boundary"}, {"boundary", "postal_code"}, {"postal_code", postcode}}, - OsmElement::EntityType::Relation); + auto postcodeAreaRelation = generator_tests::MakeOsmElement( + id, {{"type", "boundary"}, {"boundary", "postal_code"}, {"postal_code", postcode}}, + OsmElement::EntityType::Relation); postcodeAreaRelation.AddMember(wayId, OsmElement::EntityType::Way, "outer"); return postcodeAreaRelation; } -auto const postcodeAreaRelation1 = - MakePostcodeAreaRelation(1 /* id */, "127001" /* postcode */, 1 /* wayId */); -auto const postcodeAreaRelation2 = - MakePostcodeAreaRelation(2 /* id */, "127002" /* postcode */, 2 /* wayId */); -auto const postcodeAreaRelation3 = - MakePostcodeAreaRelation(3 /* id */, "127003" /* postcode */, 3 /* wayId */); -auto const postcodeAreaRelation4 = - MakePostcodeAreaRelation(4 /* id */, "127004" /* postcode */, 4 /* wayId */); +auto const postcodeAreaRelation1 = MakePostcodeAreaRelation(1 /* id */, "127001" /* postcode */, 1 /* wayId */); +auto const postcodeAreaRelation2 = MakePostcodeAreaRelation(2 /* id */, "127002" /* postcode */, 2 /* wayId */); +auto const postcodeAreaRelation3 = MakePostcodeAreaRelation(3 /* id */, "127003" /* postcode */, 3 /* wayId */); +auto const postcodeAreaRelation4 = MakePostcodeAreaRelation(4 /* id */, "127004" /* postcode */, 4 /* wayId */); unordered_map> Read(string const & dumpFilename) { @@ -114,8 +100,8 @@ unordered_map> Read(string const & dumpFilename) return result; } -bool CheckPostcodeExists(unordered_map> const & data, - string const & postcode, vector const & geometry) +bool CheckPostcodeExists(unordered_map> const & data, string const & postcode, + vector const & geometry) { auto const it = data.find(postcode); if (it == data.end()) @@ -125,10 +111,8 @@ bool CheckPostcodeExists(unordered_map> const & data, return false; for (size_t i = 0; i < geometry.size(); ++i) - { if (!AlmostEqualAbs(geometry[i], it->second[i], kMwmPointAccuracy)) return false; - } return true; } @@ -155,7 +139,6 @@ void Check(string const & dumpFilename) TEST(CheckPostcodeExists(data, "127004", ConvertIdsToPoints(kPolygon4)), (data)); } - UNIT_CLASS_TEST(TestWithClassificator, CollectorBoundaryPostcode_1) { SCOPE_GUARD(rmDump, std::bind(Platform::RemoveFileIfExists, cref(kDumpFileName))); diff --git a/generator/generator_tests/collector_building_parts_tests.cpp b/generator/generator_tests/collector_building_parts_tests.cpp index cc8470b0b..2e8518554 100644 --- a/generator/generator_tests/collector_building_parts_tests.cpp +++ b/generator/generator_tests/collector_building_parts_tests.cpp @@ -21,16 +21,10 @@ using namespace generator::tests_support; class TestOSMElementCacheReader : public generator::cache::OSMElementCacheReaderInterface { public: - TestOSMElementCacheReader(std::unordered_map & m) - : m_mapping(m) - { - } + TestOSMElementCacheReader(std::unordered_map & m) : m_mapping(m) {} // OSMElementCacheReaderInterface overrides: - bool Read(generator::cache::Key /* id */, WayElement & /* value */) override - { - UNREACHABLE(); - } + bool Read(generator::cache::Key /* id */, WayElement & /* value */) override { UNREACHABLE(); } bool Read(generator::cache::Key id, RelationElement & value) override { @@ -99,10 +93,7 @@ public: } // IntermediateDataReaderBase overrides: - bool GetNode(generator::cache::Key, double &, double &) const override - { - UNREACHABLE(); - } + bool GetNode(generator::cache::Key, double &, double &) const override { UNREACHABLE(); } bool GetWay(generator::cache::Key /* id */, WayElement & /* e */) override { UNREACHABLE(); } @@ -199,8 +190,7 @@ UNIT_CLASS_TEST(TestWithClassificator, CollectorBuildingParts_Case1) collector.Finish(); collector.Finalize(); } - TestCollector(file.GetFullPath(), fb, *intermediateReader, - IntermediateDataReaderTest::kTopRelationId1); + TestCollector(file.GetFullPath(), fb, *intermediateReader, IntermediateDataReaderTest::kTopRelationId1); } UNIT_CLASS_TEST(TestWithClassificator, CollectorBuildingParts_Case2) @@ -220,8 +210,7 @@ UNIT_CLASS_TEST(TestWithClassificator, CollectorBuildingParts_Case2) auto intermediateReader = std::make_shared(); { - auto collector1 = - std::make_shared(file.GetFullPath(), intermediateReader); + auto collector1 = std::make_shared(file.GetFullPath(), intermediateReader); // We don't clone cache, because it isn't mutable. auto collector2 = collector1->Clone(intermediateReader); @@ -235,9 +224,7 @@ UNIT_CLASS_TEST(TestWithClassificator, CollectorBuildingParts_Case2) collector1->Finalize(); } - TestCollector(file.GetFullPath(), fb1, *intermediateReader, - IntermediateDataReaderTest::kTopRelationId1); - TestCollector(file.GetFullPath(), fb2, *intermediateReader, - IntermediateDataReaderTest::kTopRelationId2); + TestCollector(file.GetFullPath(), fb1, *intermediateReader, IntermediateDataReaderTest::kTopRelationId1); + TestCollector(file.GetFullPath(), fb2, *intermediateReader, IntermediateDataReaderTest::kTopRelationId2); } } // namespace collector_building_parts_tests diff --git a/generator/generator_tests/collector_routing_city_boundaries_tests.cpp b/generator/generator_tests/collector_routing_city_boundaries_tests.cpp index c8072fa79..690f94ce1 100644 --- a/generator/generator_tests/collector_routing_city_boundaries_tests.cpp +++ b/generator/generator_tests/collector_routing_city_boundaries_tests.cpp @@ -64,10 +64,14 @@ auto const placeRelation2 = MakeOsmElement(2 /* id */, {{"place", "town"}}, OsmE auto const placeRelation3 = MakeOsmElement(3 /* id */, {{"place", "village"}}, OsmElement::EntityType::Relation); auto const placeRelation4 = MakeOsmElement(4 /* id */, {{"place", "country"}}, OsmElement::EntityType::Relation); -auto const placeNode1 = MakeOsmElement(9 /* id */, {{"place", "city"}, {"population", "200.000"}}, OsmElement::EntityType::Node); -auto const placeNode2 = MakeOsmElement(10 /* id */, {{"place", "town"}, {"population", "10 000"}}, OsmElement::EntityType::Node); -auto const placeNode3 = MakeOsmElement(11 /* id */, {{"place", "village"}, {"population", "1000"}}, OsmElement::EntityType::Node); -auto const placeNode4 = MakeOsmElement(12 /* id */, {{"place", "country"}, {"population", "147000000"}}, OsmElement::EntityType::Node); +auto const placeNode1 = + MakeOsmElement(9 /* id */, {{"place", "city"}, {"population", "200.000"}}, OsmElement::EntityType::Node); +auto const placeNode2 = + MakeOsmElement(10 /* id */, {{"place", "town"}, {"population", "10 000"}}, OsmElement::EntityType::Node); +auto const placeNode3 = + MakeOsmElement(11 /* id */, {{"place", "village"}, {"population", "1000"}}, OsmElement::EntityType::Node); +auto const placeNode4 = + MakeOsmElement(12 /* id */, {{"place", "country"}, {"population", "147000000"}}, OsmElement::EntityType::Node); auto const relationWithLabel1 = MakeAreaWithPlaceNode(5 /* id */, 9 /* placeId */, "label" /* role */); auto const relationWithLabel2 = MakeAreaWithPlaceNode(6 /* id */, 10 /* placeId */, "admin_centre" /* role */); @@ -257,28 +261,19 @@ UNIT_TEST(AreaOnEarth_Convex_Polygon_1) std::vector const latlons = {a, b, c, d, e}; std::vector const points = FromLatLons(latlons); - double const areaTriangulated = - ms::AreaOnEarth(a, b, c) + ms::AreaOnEarth(a, c, d) + ms::AreaOnEarth(a, d, e); + double const areaTriangulated = ms::AreaOnEarth(a, b, c) + ms::AreaOnEarth(a, c, d) + ms::AreaOnEarth(a, d, e); double const areaOnEarth = generator::AreaOnEarth(points); - TEST(AlmostEqualRel(areaTriangulated, - areaOnEarth, - 1e-6), (areaTriangulated, areaOnEarth)); + TEST(AlmostEqualRel(areaTriangulated, areaOnEarth, 1e-6), (areaTriangulated, areaOnEarth)); } UNIT_TEST(AreaOnEarth_Convex_Polygon_2) { std::vector const latlons = { - {55.6348484, 36.025526}, - {55.0294112, 36.8959709}, - {54.9262448, 38.3719426}, - {55.3561515, 39.3275397}, - {55.7548279, 39.4458067}, - {56.3020039, 39.3322704}, - {56.5140099, 38.6368606}, - {56.768935, 37.0473526}, - {56.4330113, 35.6234183}, + {55.6348484, 36.025526}, {55.0294112, 36.8959709}, {54.9262448, 38.3719426}, + {55.3561515, 39.3275397}, {55.7548279, 39.4458067}, {56.3020039, 39.3322704}, + {56.5140099, 38.6368606}, {56.768935, 37.0473526}, {56.4330113, 35.6234183}, }; std::vector const points = FromLatLons(latlons); @@ -286,9 +281,7 @@ UNIT_TEST(AreaOnEarth_Convex_Polygon_2) double const areaOnEarth = generator::AreaOnEarth(points); double const areaForConvexPolygon = CalculateEarthAreaForConvexPolygon(latlons); - TEST(AlmostEqualRel(areaForConvexPolygon, - areaOnEarth, - 1e-6), (areaForConvexPolygon, areaOnEarth)); + TEST(AlmostEqualRel(areaForConvexPolygon, areaOnEarth, 1e-6), (areaForConvexPolygon, areaOnEarth)); } UNIT_TEST(AreaOnEarth_Concave_Polygon) @@ -307,20 +300,12 @@ UNIT_TEST(AreaOnEarth_Concave_Polygon) std::vector const latlons = {a, b, c, d, e, f, g, h, i, j}; std::vector const points = FromLatLons(latlons); - double areaTriangulated = - ms::AreaOnEarth(a, b, c) + - ms::AreaOnEarth(a, c, d) + - ms::AreaOnEarth(a, d, f) + - ms::AreaOnEarth(d, e, f) + - ms::AreaOnEarth(a, f, j) + - ms::AreaOnEarth(f, h, j) + - ms::AreaOnEarth(f, g, h) + - ms::AreaOnEarth(h, i, j); + double areaTriangulated = ms::AreaOnEarth(a, b, c) + ms::AreaOnEarth(a, c, d) + ms::AreaOnEarth(a, d, f) + + ms::AreaOnEarth(d, e, f) + ms::AreaOnEarth(a, f, j) + ms::AreaOnEarth(f, h, j) + + ms::AreaOnEarth(f, g, h) + ms::AreaOnEarth(h, i, j); double const areaOnEarth = generator::AreaOnEarth(points); - TEST(AlmostEqualRel(areaTriangulated, - areaOnEarth, - 1e-6), ()); + TEST(AlmostEqualRel(areaTriangulated, areaOnEarth, 1e-6), ()); } } // namespace collector_routing_city_boundaries_tests diff --git a/generator/generator_tests/complex_loader_tests.cpp b/generator/generator_tests/complex_loader_tests.cpp index e50ce4a31..7d5311fa6 100644 --- a/generator/generator_tests/complex_loader_tests.cpp +++ b/generator/generator_tests/complex_loader_tests.cpp @@ -110,12 +110,10 @@ std::string const kCsv1 = "ShakeUp;" "Russia_Moscow\n"; - void SortForest(tree_node::types::Ptrs & forest) { - std::sort(std::begin(forest), std::end(forest), [](auto const & lhs, auto const & rhs) { - return lhs->GetData().m_id < rhs->GetData().m_id; - }); + std::sort(std::begin(forest), std::end(forest), + [](auto const & lhs, auto const & rhs) { return lhs->GetData().m_id < rhs->GetData().m_id; }); } UNIT_CLASS_TEST(TestWithClassificator, Complex_IsComplex) diff --git a/generator/generator_tests/cross_mwm_osm_ways_collector_tests.cpp b/generator/generator_tests/cross_mwm_osm_ways_collector_tests.cpp index feb0874e8..11506e819 100644 --- a/generator/generator_tests/cross_mwm_osm_ways_collector_tests.cpp +++ b/generator/generator_tests/cross_mwm_osm_ways_collector_tests.cpp @@ -31,8 +31,7 @@ using namespace generator_tests; std::string const kTmpDirName = "cross_mwm_ways"; std::vector const kHighwayUnclassifiedPath = {"highway", "unclassified"}; -std::vector> const kHighwayUnclassified = { - {"highway", "unclassified"}}; +std::vector> const kHighwayUnclassified = {{"highway", "unclassified"}}; std::string const kOsmWayId_1 = std::to_string(base::MakeOsmWay(1).GetEncodedId()); std::string const kOsmWayId_2 = std::to_string(base::MakeOsmWay(2).GetEncodedId()); @@ -46,8 +45,7 @@ public: classificator::Load(); auto const targetDir = GetPlatform().WritableDir(); - m_affiliation = std::make_shared( - targetDir, true /*haveBordersForWholeWorld*/); + m_affiliation = std::make_shared(targetDir, true /*haveBordersForWholeWorld*/); auto const intermediateDir = base::JoinPath(targetDir, kTmpDirName); if (!Platform::MkDirChecked(intermediateDir)) @@ -96,19 +94,14 @@ public: // osmId crossMwmSegmentsNumber [crossMwmSegmentsId forwardIsEnter]+ void Checker() { - std::vector answersFor_RomaniaNorth_West = { - kOsmWayId_1 + " 1 1 0 ", kOsmWayId_2 + " 1 0 0 "}; + std::vector answersFor_RomaniaNorth_West = {kOsmWayId_1 + " 1 1 0 ", kOsmWayId_2 + " 1 0 0 "}; - std::vector answersFor_Hungary_Northern_Great_Plain = { - kOsmWayId_1 + " 1 1 1 ", kOsmWayId_2 + " 1 0 1 "}; + std::vector answersFor_Hungary_Northern_Great_Plain = {kOsmWayId_1 + " 1 1 1 ", + kOsmWayId_2 + " 1 0 1 "}; - std::vector answersFor_Russia_Moscow = { - kOsmWayId_3 + " 1 0 1 " - }; + std::vector answersFor_Russia_Moscow = {kOsmWayId_3 + " 1 0 1 "}; - std::vector answersFor_Russia_Moscow_Oblast_West = { - kOsmWayId_3 + " 1 0 0 " - }; + std::vector answersFor_Russia_Moscow_Oblast_West = {kOsmWayId_3 + " 1 0 0 "}; Check("Romania_North_West", answersFor_RomaniaNorth_West); Check("Hungary_Northern Great Plain", answersFor_Hungary_Northern_Great_Plain); @@ -123,10 +116,7 @@ feature::FeatureBuilder CreateFeatureBuilderFromOsmWay(uint64_t osmId, std::vect fb.AddOsmId(base::MakeOsmWay(osmId)); std::vector points; - base::Transform(llPoints, std::back_inserter(points), [](ms::LatLon const & ll) - { - return mercator::FromLatLon(ll); - }); + base::Transform(llPoints, std::back_inserter(points), [](ms::LatLon const & ll) { return mercator::FromLatLon(ll); }); fb.AssignPoints(std::move(points)); fb.SetLinear(); @@ -138,7 +128,7 @@ void AddOsmWayByPoints(uint64_t osmId, std::vector const & points, std::shared_ptr const & collection) { collection->CollectFeature(CreateFeatureBuilderFromOsmWay(osmId, points), - MakeOsmElement(osmId, kHighwayUnclassified, OsmElement::EntityType::Way)); + MakeOsmElement(osmId, kHighwayUnclassified, OsmElement::EntityType::Way)); } void AppendFirstWayFromRomaniaToHungary(std::shared_ptr const & collection) @@ -215,15 +205,15 @@ UNIT_CLASS_TEST(CrossMwmWayCollectorTest, Lithuania_Belarus_Kamenny_Log) TEST_EQUAL(countries.size(), 1, ()); // https://www.openstreetmap.org/way/614091318 should present in Lithuania and Belarus - AddOsmWayByPoints(1, { - {54.5460103, 25.6945156}, - {54.5454276, 25.6952895}, - {54.5453567, 25.6953987}, - {54.5453056, 25.6955672}, - {54.5443252, 25.6994996}, - {54.5443107, 25.6995562}, // 5 segId starts here - connected - }, collection); + AddOsmWayByPoints(1, + {{54.5460103, 25.6945156}, + {54.5454276, 25.6952895}, + {54.5453567, 25.6953987}, + {54.5453056, 25.6955672}, + {54.5443252, 25.6994996}, + {54.5443107, 25.6995562}, // 5 segId starts here + connected}, + collection); collection->Finalize(); @@ -240,23 +230,27 @@ UNIT_CLASS_TEST(CrossMwmWayCollectorTest, Belarus_Lithuania_Kamenny_Log) TEST_EQUAL(countries.size(), 2, ()); // https://www.openstreetmap.org/way/533044131 - AddOsmWayByPoints(1, { + AddOsmWayByPoints(1, + { {54.5442277, 25.7001698}, {54.5442419, 25.7001125}, connected, - }, collection); + }, + collection); // https://www.openstreetmap.org/way/489294139 - AddOsmWayByPoints(2, { + AddOsmWayByPoints(2, + { connected, {54.5443587, 25.6996293}, {54.5443765, 25.6995660}, - }, collection); + }, + collection); collection->Finalize(); Check("Belarus_Hrodna Region", {kOsmWayId_1 + " 1 1 0 ", kOsmWayId_2 + " 2 0 1 1 0 "}); - Check("Lithuania_East", {kOsmWayId_1 + " 1 1 1 ", kOsmWayId_2 + " 2 0 1 1 1 "}); + Check("Lithuania_East", {kOsmWayId_1 + " 1 1 1 ", kOsmWayId_2 + " 2 0 1 1 1 "}); } } // namespace cross_mwm_osm_ways_collector_tests diff --git a/generator/generator_tests/descriptions_section_builder_tests.cpp b/generator/generator_tests/descriptions_section_builder_tests.cpp index 28b914fe5..753772582 100644 --- a/generator/generator_tests/descriptions_section_builder_tests.cpp +++ b/generator/generator_tests/descriptions_section_builder_tests.cpp @@ -63,10 +63,7 @@ public: classificator::Load(); } - ~TestDescriptionSectionBuilder() - { - CHECK(Platform::RmDirRecursively(m_wikiDir), ()); - } + ~TestDescriptionSectionBuilder() { CHECK(Platform::RmDirRecursively(m_wikiDir), ()); } void MakeDescriptions() const { @@ -196,10 +193,8 @@ private: for (auto const & m : kWikiData) { for (auto const & d : m.m_pages) - { if (IsSupportedLang(d.first)) langs[d.first] += 1; - } } return langs; @@ -224,10 +219,8 @@ private: for (auto const & m : kWikiData) { for (auto const & d : m.m_pages) - { if (IsSupportedLang(d.first)) size += d.second.size(); - } } return size; @@ -240,10 +233,8 @@ private: static int SumPageSizes(std::vector const & p) { - return std::accumulate(std::begin(p), std::end(p), 0, [] (int acc, PageT const & p) - { - return acc + p.second.size(); - }); + return std::accumulate(std::begin(p), std::end(p), 0, + [](int acc, PageT const & p) { return acc + p.second.size(); }); } static bool CheckLangs(DescriptionsCollectionBuilderStat::LangStatistics const & stat) @@ -269,10 +260,8 @@ private: { for (auto const & [lang, _] : meta) { - auto const it = base::FindIf(p, [lang = lang](auto const & p) - { - return StringUtf8Multilang::GetLangIndex(p.first) == lang; - }); + auto const it = + base::FindIf(p, [lang = lang](auto const & p) { return StringUtf8Multilang::GetLangIndex(p.first) == lang; }); if (it == std::end(p)) return false; } @@ -286,7 +275,6 @@ private: std::string const TestDescriptionSectionBuilder::kMwmFile = "MwmFile"; std::string const TestDescriptionSectionBuilder::kDirPages = "wiki"; - UNIT_CLASS_TEST(TestDescriptionSectionBuilder, MakeDescriptions) { TestDescriptionSectionBuilder::MakeDescriptions(); @@ -317,14 +305,11 @@ UNIT_CLASS_TEST(TestDescriptionSectionBuilder, BuildDescriptionsSection) TestDescriptionSectionBuilder::BuildDescriptionsSection(); } - // http://en.wikipedia.org/wiki/Helsinki_Olympic_Stadium/ - en, de, ru, fr // https://en.wikipedia.org/wiki/Turku_Cathedral - en, ru std::vector const TestDescriptionSectionBuilder::kWikiData = { - {"http://en.wikipedia.org/wiki/Helsinki_Olympic_Stadium/", - { - { - "en", + {"http://en.wikipedia.org/wiki/Helsinki_Olympic_Stadium/", + {{"en", R"(

@@ -373,10 +358,8 @@ std::vector const TestDescriptionSectio
  • Stadion.fi – Official site
  • History of the stadium
  • Panoramic virtual tour from the stadium tower
  • - )" - }, - { - "de", + )"}, + {"de", R"(

    Das Olympiastadion Helsinki (finnisch Helsingin olympiastadion, schwedisch Helsingfors Olympiastadion) ist das größte Stadion Finnlands. Das Stadionrund mit Leichtathletikanlage ist die Heimstätte der finnischen Fußballnationalmannschaft. Es liegt rund zwei Kilometer vom Stadtzentrum von Helsinki entfernt im Stadtteil Töölö. 2006 wurde es unter Denkmalschutz gestellt. Das Nationalstadion wird ab 2016 umfangreich renoviert und soll nach drei Jahren 2019 wiedereröffnet werden.

    @@ -398,10 +381,8 @@ std::vector const TestDescriptionSectio
  • stadionwelt.de: Bildergalerie
  • Einzelnachweise

    - )" - }, - { - "ru", + )"}, + {"ru", R"(

    Олимпийский стадион Хельсинки (фин. Helsingin olympiastadion, швед. Helsingfors Olympiastadion) — крупнейшая спортивная арена Финляндии. Стадион расположен в районе Тёёлё, примерно в двух километрах от исторического центра Хельсинки. В летнее время, помимо спортивных мероприятий, на стадионе проводят и музыкальные концерты.

    @@ -472,10 +453,8 @@ std::vector const TestDescriptionSectio

    Ссылки

    • Olympiastadion
    • Suomen Urheilumuseo
    - )" - }, - { - "fr", + )"}, + {"fr", R"(

    Le stade olympique d'Helsinki (en finnois et en suédois : Olympiastadion) situé dans le quartier de Töölö, à environ 2 km du centre-ville d'Helsinki est le plus grand stade en Finlande. C'est le stade principal des Jeux olympiques d'été de 1952. Il a été construit pour y célébrer les Jeux olympiques d'été de 1940 qui ont été finalement annulés (auparavant attribués à Tokyo) en raison de la Seconde Guerre mondiale.

    Le stade a également été le siège des Championnats du monde d'athlétisme, les tout premiers en 1983 et à nouveau en 2005. Il hébergera pour la 3e fois les Championnats d'Europe d'athlétisme en 2012, après les éditions de 1971 et de 1994. C'est aussi le stade de l'Équipe de Finlande de football. @@ -537,16 +516,10 @@ std::vector const TestDescriptionSectio

    Liens internes

    • Piscine olympique d'Helsinki


    • Portail de l’architecture et de l’urbanisme
    • Portail du football
    • Portail de l’athlétisme
    • Portail des Jeux olympiques
    • Portail d’Helsinki
    - )" - } - } - }, - { - "https://en.wikipedia.org/wiki/Turku_Cathedral", - { - { - "en", - R"( + )"}}}, + {"https://en.wikipedia.org/wiki/Turku_Cathedral", + {{"en", + R"(

    Turku Cathedral (Finnish: Turun tuomiokirkko, Swedish: Åbo domkyrka) is the previous catholic cathedral of Finland, today the Mother Church of the Evangelical Lutheran Church of Finland. It is the central church of the Lutheran Archdiocese of Turku and the seat of the Lutheran Archbishop of Finland, Kari Mäkinen. It is also regarded as one of the major records of Finnish architectural history.

    Considered to be the most important religious building in Finland, the cathedral has borne witness to many important events in the nation's history and has become one of the city's most recognizable symbols. The cathedral is situated in the heart of Turku next to the Old Great Square, by the river Aura. Its presence extends beyond the local precinct by having the sound of its bells chiming at noon broadcast on national radio. It is also central to Finland's annual Christmas celebrations.

    The cathedral was originally built out of wood in the late 13th century, and was dedicated as the main cathedral of Finland in 1300, the seat of the Catholic bishop of Turku. It was considerably expanded in the 14th and 15th centuries, mainly using stone as the construction material. The cathedral was badly damaged during the Great Fire of Turku in 1827, and was rebuilt to a great extent afterwards. @@ -594,11 +567,9 @@ std::vector const TestDescriptionSectio

  • Medieval Turku
  • Turku Cathedral – photos
  • Turku church organs
  • - )" - }, - { - "ru", - R"( + )"}, + {"ru", + R"(

    Кафедра́льный собо́р Ту́рку (швед. Åbo domkyrka, фин. Turun tuomiokirkko) — главный лютеранский храм в Финляндии. Построен во второй половине XIII века, освящён в 1300 году в честь Девы Марии и первого епископа страны — святого Генриха, крестившего Финляндию.

    @@ -618,9 +589,5 @@ std::vector const TestDescriptionSectio
    • На Викискладе есть медиафайлы по теме Абосский собор


    - )" - } - } - } -}; + )"}}}}; } // namespace generator_tests diff --git a/generator/generator_tests/feature_builder_test.cpp b/generator/generator_tests/feature_builder_test.cpp index 9f75d74ea..dbfc3b6c1 100644 --- a/generator/generator_tests/feature_builder_test.cpp +++ b/generator/generator_tests/feature_builder_test.cpp @@ -26,14 +26,14 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_ManyTypes) FeatureBuilderParams params; base::StringIL arr[] = { - { "building" }, - { "place", "country" }, - { "place", "state" }, - /// @todo Can't realize is it deprecated or we forgot to add clear styles for it. - //{ "place", "county" }, - { "place", "region" }, - { "place", "city" }, - { "place", "town" }, + {"building"}, + {"place", "country"}, + {"place", "state"}, + /// @todo Can't realize is it deprecated or we forgot to add clear styles for it. + //{ "place", "county" }, + {"place", "region"}, + {"place", "city"}, + {"place", "town"}, }; AddTypes(params, arr); @@ -65,18 +65,15 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_LineTypes) FeatureBuilderParams params; base::StringIL arr[] = { - { "railway", "rail" }, - { "highway", "motorway" }, - { "hwtag", "oneway" }, - { "psurface", "paved_good" }, - { "junction", "roundabout" }, + {"railway", "rail"}, {"highway", "motorway"}, {"hwtag", "oneway"}, + {"psurface", "paved_good"}, {"junction", "roundabout"}, }; AddTypes(params, arr); params.FinishAddingTypes(); fb1.SetParams(params); - fb1.AssignPoints({ {0, 0}, {1, 1} }); + fb1.AssignPoints({{0, 0}, {1, 1}}); fb1.SetLinear(); TEST(fb1.RemoveInvalidTypes(), ()); @@ -146,8 +143,8 @@ UNIT_CLASS_TEST(TestWithClassificator, FVisibility_RemoveUselessTypes) { std::vector types; - types.push_back(c.GetTypeByPath({ "building" })); - types.push_back(c.GetTypeByPath({ "amenity", "theatre" })); + types.push_back(c.GetTypeByPath({"building"})); + types.push_back(c.GetTypeByPath({"amenity", "theatre"})); TEST(RemoveUselessTypes(types, GeomType::Area), ()); TEST_EQUAL(types.size(), 2, ()); @@ -155,12 +152,12 @@ UNIT_CLASS_TEST(TestWithClassificator, FVisibility_RemoveUselessTypes) { std::vector types; - types.push_back(c.GetTypeByPath({ "highway", "primary" })); - types.push_back(c.GetTypeByPath({ "building" })); + types.push_back(c.GetTypeByPath({"highway", "primary"})); + types.push_back(c.GetTypeByPath({"building"})); TEST(RemoveUselessTypes(types, GeomType::Area, true /* emptyName */), ()); TEST_EQUAL(types.size(), 1, ()); - TEST_EQUAL(types[0], c.GetTypeByPath({ "building" }), ()); + TEST_EQUAL(types[0], c.GetTypeByPath({"building"}), ()); } } @@ -168,10 +165,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_RemoveUselessNames) { FeatureBuilderParams params; - base::StringIL arr[] = { - { "boundary", "administrative", "2" }, - { "barrier", "fence" } - }; + base::StringIL arr[] = {{"boundary", "administrative", "2"}, {"barrier", "fence"}}; AddTypes(params, arr); params.FinishAddingTypes(); @@ -181,7 +175,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_RemoveUselessNames) FeatureBuilder fb1; fb1.SetParams(params); - fb1.AssignPoints({ {0, 0}, {1, 1} }); + fb1.AssignPoints({{0, 0}, {1, 1}}); fb1.SetLinear(); TEST(!fb1.GetName(0).empty(), ()); @@ -218,7 +212,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_SerializeLocalityObjectForBuildi FeatureBuilderParams params; base::StringIL arr[] = { - { "building" }, + {"building"}, }; AddTypes(params, arr); @@ -261,7 +255,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_HouseName) FeatureBuilder fb; FeatureBuilderParams params; - base::StringIL arr[] = {{ "building" }}; + base::StringIL arr[] = {{"building"}}; AddTypes(params, arr); params.FinishAddingTypes(); @@ -286,11 +280,8 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_SerializeAccuratelyForIntermedia FeatureBuilderParams params; base::StringIL arr[] = { - { "railway", "rail" }, - { "highway", "motorway" }, - { "hwtag", "oneway" }, - { "psurface", "paved_good" }, - { "junction", "circular" }, + {"railway", "rail"}, {"highway", "motorway"}, {"hwtag", "oneway"}, + {"psurface", "paved_good"}, {"junction", "circular"}, }; AddTypes(params, arr); @@ -300,7 +291,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_SerializeAccuratelyForIntermedia auto const diff = 0.33333333334567; std::vector points; for (size_t i = 0; i < 100; ++i) - points.push_back({ i + diff, i + 1 + diff }); + points.push_back({i + diff, i + 1 + diff}); fb1.AssignPoints(std::move(points)); fb1.SetLinear(); @@ -386,9 +377,7 @@ UNIT_CLASS_TEST(TestWithClassificator, FBuilder_RemoveInconsistentTypes) FeatureBuilderParams params; base::StringIL arr[] = { - {"highway", "cycleway"}, {"hwtag", "onedir_bicycle"}, - {"hwtag", "nobicycle"}, {"hwtag", "yesbicycle"} - }; + {"highway", "cycleway"}, {"hwtag", "onedir_bicycle"}, {"hwtag", "nobicycle"}, {"hwtag", "yesbicycle"}}; AddTypes(params, arr); TEST_EQUAL(params.m_types.size(), 4, ()); diff --git a/generator/generator_tests/feature_merger_test.cpp b/generator/generator_tests/feature_merger_test.cpp index 8e6877cd0..eaef54118 100644 --- a/generator/generator_tests/feature_merger_test.cpp +++ b/generator/generator_tests/feature_merger_test.cpp @@ -12,44 +12,42 @@ using namespace feature; namespace { - typedef m2::PointD P; +typedef m2::PointD P; - class VectorEmitter : public FeatureEmitterIFace +class VectorEmitter : public FeatureEmitterIFace +{ + std::vector m_vec; + +public: + virtual void operator()(FeatureBuilder const & fb) { m_vec.push_back(fb); } + + size_t GetSize() const { return m_vec.size(); } + + void Check(uint32_t type, size_t count) const { - std::vector m_vec; - public: - virtual void operator() (FeatureBuilder const & fb) - { - m_vec.push_back(fb); - } + size_t test = 0; + for (size_t i = 0; i < m_vec.size(); ++i) + if (m_vec[i].HasType(type)) + ++test; - size_t GetSize() const { return m_vec.size(); } - - void Check(uint32_t type, size_t count) const - { - size_t test = 0; - for (size_t i = 0; i < m_vec.size(); ++i) - if (m_vec[i].HasType(type)) - ++test; - - TEST_EQUAL(test, count, ()); - } - }; -} + TEST_EQUAL(test, count, ()); + } +}; +} // namespace UNIT_TEST(FeatureMerger_MultipleTypes) { classificator::Load(); - P arrPt[] = { P(0, 0), P(1, 1), P(2, 2), P(3, 3) }; - size_t const count = ARRAY_SIZE(arrPt)-1; + P arrPt[] = {P(0, 0), P(1, 1), P(2, 2), P(3, 3)}; + size_t const count = ARRAY_SIZE(arrPt) - 1; FeatureBuilder arrF[count]; for (size_t i = 0; i < count; ++i) { arrF[i].SetLinear(); - arrF[i].AssignPoints({ arrPt[i], arrPt[i+1] }); + arrF[i].AssignPoints({arrPt[i], arrPt[i + 1]}); arrF[i].AddType(0); } @@ -96,28 +94,28 @@ UNIT_TEST(FeatureMerger_Branches) std::vector vF; vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-2, 0), P(-1, 0) }); + vF.back().AssignPoints({P(-2, 0), P(-1, 0)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-1, 0), P(0, 1) }); + vF.back().AssignPoints({P(-1, 0), P(0, 1)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-1, 0), P(0, 0) }); + vF.back().AssignPoints({P(-1, 0), P(0, 0)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-1, 0), P(0, -1) }); + vF.back().AssignPoints({P(-1, 0), P(0, -1)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(0, 1), P(1, 0) }); + vF.back().AssignPoints({P(0, 1), P(1, 0)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(0, 0), P(1, 0) }); + vF.back().AssignPoints({P(0, 0), P(1, 0)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(0, -1), P(1, 0) }); + vF.back().AssignPoints({P(0, -1), P(1, 0)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(1, 0), P(2, 0) }); + vF.back().AssignPoints({P(1, 0), P(2, 0)}); FeatureMergeProcessor processor(kPointCoordBits); @@ -142,21 +140,21 @@ UNIT_TEST(FeatureMerger_Rounds) std::vector vF; vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-10, 0), P(-5, 0) }); + vF.back().AssignPoints({P(-10, 0), P(-5, 0)}); // make first round feature vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-4, 1), P(-3, 0), P(-4, -1), P(-5, 0), P(-4, 1) }); + vF.back().AssignPoints({P(-4, 1), P(-3, 0), P(-4, -1), P(-5, 0), P(-4, 1)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(-3, 0), P(3, 0) }); + vF.back().AssignPoints({P(-3, 0), P(3, 0)}); // make second round feature vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(4, -1), P(3, 0), P(4, 1), P(5, 0), P(4, -1) }); + vF.back().AssignPoints({P(4, -1), P(3, 0), P(4, 1), P(5, 0), P(4, -1)}); vF.push_back(FeatureBuilder()); - vF.back().AssignPoints({ P(5, 0), P(10, 0) }); + vF.back().AssignPoints({P(5, 0), P(10, 0)}); FeatureMergeProcessor processor(kPointCoordBits); diff --git a/generator/generator_tests/filter_elements_tests.cpp b/generator/generator_tests/filter_elements_tests.cpp index c2302cf09..0bc280c43 100644 --- a/generator/generator_tests/filter_elements_tests.cpp +++ b/generator/generator_tests/filter_elements_tests.cpp @@ -13,14 +13,10 @@ using namespace platform::tests_support; namespace { auto const kOsmElementEmpty = MakeOsmElement(0, {}, OsmElement::EntityType::Node); -auto const kOsmElementCity = MakeOsmElement(1, {{"place", "city"}, - {"admin_level", "6"}}, - OsmElement::EntityType::Node); -auto const kOsmElementCountry = MakeOsmElement(2, {{"admin_level", "2"}, - {"ISO3166-1:alpha2", "RU"}, - {"ISO3166-1:alpha3", "RUS"}, - {"ISO3166-1:numeric", "643"}}, - OsmElement::EntityType::Relation); +auto const kOsmElementCity = MakeOsmElement(1, {{"place", "city"}, {"admin_level", "6"}}, OsmElement::EntityType::Node); +auto const kOsmElementCountry = MakeOsmElement( + 2, {{"admin_level", "2"}, {"ISO3166-1:alpha2", "RU"}, {"ISO3166-1:alpha3", "RUS"}, {"ISO3166-1:numeric", "643"}}, + OsmElement::EntityType::Relation); } // namespace UNIT_TEST(FilterData_Ids) @@ -35,9 +31,7 @@ UNIT_TEST(FilterData_Ids) UNIT_TEST(FilterData_Tags) { FilterData fd; - FilterData::Tags tags{ - {"admin_level", "2"} - }; + FilterData::Tags tags{{"admin_level", "2"}}; fd.AddSkippedTags(tags); TEST(fd.NeedSkipWithTags(kOsmElementCountry.Tags()), ()); diff --git a/generator/generator_tests/gen_mwm_info_tests.cpp b/generator/generator_tests/gen_mwm_info_tests.cpp index ce2e11fee..87ce7508d 100644 --- a/generator/generator_tests/gen_mwm_info_tests.cpp +++ b/generator/generator_tests/gen_mwm_info_tests.cpp @@ -30,7 +30,8 @@ UNIT_TEST(OsmID2FeatureID_AddIds) std::vector> const answer{kPId1, kPId2, kPId3}; size_t index = 0; - mapping.ForEach([&](auto const & pair) { + mapping.ForEach([&](auto const & pair) + { TEST_EQUAL(pair, answer[index], ()); ++index; }); @@ -64,9 +65,7 @@ UNIT_TEST(OsmID2FeatureID_GetFeatureId) TEST_EQUAL(mapping.GetFeatureIds(kCid1), answer, ()); } { - std::vector const answer{ - kId2 - }; + std::vector const answer{kId2}; TEST_EQUAL(mapping.GetFeatureIds(kCid2), answer, ()); } { @@ -100,7 +99,8 @@ UNIT_TEST(OsmID2FeatureID_ReadWrite) mapping.ReadFromFile(sf.GetFullPath()); std::vector> const answer{kPId1, kPId2, kPId3}; size_t index = 0; - mapping.ForEach([&](auto const & pair) { + mapping.ForEach([&](auto const & pair) + { TEST_EQUAL(pair, answer[index], ()); ++index; }); @@ -123,7 +123,8 @@ UNIT_TEST(OsmID2FeatureID_WorkingWithOldFormat) generator::OsmID2FeatureID mapping; mapping.ReadFromFile(sf.GetFullPath()); size_t index = 0; - mapping.ForEach([&](auto const & pair) { + mapping.ForEach([&](auto const & pair) + { TEST_EQUAL(pair.first.m_mainId, answer[index].first, ()); TEST_EQUAL(pair.second, answer[index].second, ()); ++index; diff --git a/generator/generator_tests/hierarchy_entry_tests.cpp b/generator/generator_tests/hierarchy_entry_tests.cpp index bc69bdab6..91d6013d4 100644 --- a/generator/generator_tests/hierarchy_entry_tests.cpp +++ b/generator/generator_tests/hierarchy_entry_tests.cpp @@ -121,29 +121,24 @@ UNIT_CLASS_TEST(TestWithClassificator, Complex_LoadHierachy) LOG(LINFO, (tree)); TEST_EQUAL(tree_node::Size(tree), 7, ()); - auto node = tree_node::FindIf(tree, [](auto const & e) { - return e.m_id == MakeId(13835058055284963881ull, 9223372037111861697ull); - }); + auto node = tree_node::FindIf( + tree, [](auto const & e) { return e.m_id == MakeId(13835058055284963881ull, 9223372037111861697ull); }); TEST(node, ()); TEST(!node->HasParent(), ()); TEST_EQUAL(node->GetChildren().size(), 4, ()); - node = tree_node::FindIf(tree, [](auto const & e) { - return e.m_id == MakeId(9223372036879747192ull, 9223372036879747192ull); - }); + node = tree_node::FindIf( + tree, [](auto const & e) { return e.m_id == MakeId(9223372036879747192ull, 9223372036879747192ull); }); TEST(node, ()); TEST(node->HasParent(), ()); - TEST_EQUAL(node->GetParent()->GetData().m_id, - MakeId(13835058055284963881ull, 9223372037111861697ull), ()); + TEST_EQUAL(node->GetParent()->GetData().m_id, MakeId(13835058055284963881ull, 9223372037111861697ull), ()); TEST_EQUAL(node->GetChildren().size(), 2, ()); - node = tree_node::FindIf(tree, [](auto const & e) { - return e.m_id == MakeId(9223372036938640141ull, 9223372036938640141ull); - }); + node = tree_node::FindIf( + tree, [](auto const & e) { return e.m_id == MakeId(9223372036938640141ull, 9223372036938640141ull); }); TEST(node, ()); TEST_EQUAL(node->GetData().m_depth, tree_node::GetDepth(node), ()); - TEST_EQUAL(node->GetParent()->GetData().m_id, - MakeId(9223372036879747192ull, 9223372036879747192ull), ()); + TEST_EQUAL(node->GetParent()->GetData().m_id, MakeId(9223372036879747192ull, 9223372036879747192ull), ()); TEST_EQUAL(node->GetChildren().size(), 0, ()); } } // namespace hierarchy_entry_tests diff --git a/generator/generator_tests/hierarchy_tests.cpp b/generator/generator_tests/hierarchy_tests.cpp index 932e29cdb..231aa8f93 100644 --- a/generator/generator_tests/hierarchy_tests.cpp +++ b/generator/generator_tests/hierarchy_tests.cpp @@ -56,20 +56,17 @@ std::vector MakeTestSet1() return fbs; } -void TestDepthNodeById(generator::hierarchy::HierarchyLinker::Node::Ptr const & tree, uint64_t id, - size_t depth) +void TestDepthNodeById(generator::hierarchy::HierarchyLinker::Node::Ptr const & tree, uint64_t id, size_t depth) { auto osmId = base::MakeOsmWay(id); - TEST_EQUAL(tree_node::GetDepth(tree_node::FindIf( - tree, [&](auto const & data) { return data.GetCompositeId().m_mainId == osmId; })), + TEST_EQUAL(tree_node::GetDepth( + tree_node::FindIf(tree, [&](auto const & data) { return data.GetCompositeId().m_mainId == osmId; })), depth, ()); } UNIT_CLASS_TEST(TestWithClassificator, ComplexHierarchy_FlattenBuildingParts) { - - auto trees = generator::hierarchy::BuildHierarchy(MakeTestSet1(), - generator::hierarchy::GetMainType, + auto trees = generator::hierarchy::BuildHierarchy(MakeTestSet1(), generator::hierarchy::GetMainType, std::make_shared()); TEST_EQUAL(trees.size(), 1, ()); TEST_EQUAL(tree_node::Size(trees[0]), 4, ()); @@ -90,14 +87,14 @@ UNIT_CLASS_TEST(TestWithClassificator, ComplexHierarchy_FlattenBuildingParts) UNIT_CLASS_TEST(TestWithClassificator, ComplexHierarchy_AddChildrenTo) { - auto trees = generator::hierarchy::BuildHierarchy(MakeTestSet1(), - generator::hierarchy::GetMainType, + auto trees = generator::hierarchy::BuildHierarchy(MakeTestSet1(), generator::hierarchy::GetMainType, std::make_shared()); TEST_EQUAL(trees.size(), 1, ()); TEST_EQUAL(tree_node::Size(trees[0]), 4, ()); auto osmId = base::MakeOsmWay(3); - generator::hierarchy::AddChildrenTo(trees, [&](auto const & compositeId) { + generator::hierarchy::AddChildrenTo(trees, [&](auto const & compositeId) + { std::vector fbs; if (compositeId.m_mainId == osmId) { @@ -111,23 +108,20 @@ UNIT_CLASS_TEST(TestWithClassificator, ComplexHierarchy_AddChildrenTo) return fbs; }); - auto node = tree_node::FindIf( - trees[0], [&](auto const & data) { return data.GetCompositeId().m_mainId == osmId; }); + auto node = tree_node::FindIf(trees[0], [&](auto const & data) { return data.GetCompositeId().m_mainId == osmId; }); TEST(node, ()); auto const children = node->GetChildren(); TEST_EQUAL(children.size(), 2, ()); - auto it = base::FindIf(children, [](auto const & node) { - return node->GetData().GetCompositeId().m_mainId == base::MakeOsmWay(4); - }); + auto it = base::FindIf( + children, [](auto const & node) { return node->GetData().GetCompositeId().m_mainId == base::MakeOsmWay(4); }); CHECK(it != std::end(children), ()); CHECK((*it)->HasParent() && (*it)->GetParent()->GetData().GetCompositeId().m_mainId == osmId, ()); - it = base::FindIf(children, [](auto const & node) { - return node->GetData().GetCompositeId().m_mainId == base::MakeOsmWay(5); - }); + it = base::FindIf(children, + [](auto const & node) { return node->GetData().GetCompositeId().m_mainId == base::MakeOsmWay(5); }); CHECK(it != std::end(children), ()); CHECK((*it)->HasParent() && (*it)->GetParent()->GetData().GetCompositeId().m_mainId == osmId, ()); } diff --git a/generator/generator_tests/intermediate_data_test.cpp b/generator/generator_tests/intermediate_data_test.cpp index 14352a710..09bf44f20 100644 --- a/generator/generator_tests/intermediate_data_test.cpp +++ b/generator/generator_tests/intermediate_data_test.cpp @@ -63,10 +63,7 @@ UNIT_TEST(Intermediate_Data_way_element_save_load_test) UNIT_TEST(Intermediate_Data_relation_element_save_load_test) { - std::vector testData = {{1, "inner"}, - {2, "outer"}, - {3, "unknown"}, - {4, "inner role"}}; + std::vector testData = {{1, "inner"}, {2, "outer"}, {3, "unknown"}, {4, "inner role"}}; RelationElement e1; diff --git a/generator/generator_tests/maxspeeds_tests.cpp b/generator/generator_tests/maxspeeds_tests.cpp index a989612e0..8bf6377a1 100644 --- a/generator/generator_tests/maxspeeds_tests.cpp +++ b/generator/generator_tests/maxspeeds_tests.cpp @@ -11,8 +11,8 @@ #include "generator/restriction_generator.hpp" #include "generator/routing_helpers.hpp" -#include "routing/maxspeeds_serialization.hpp" #include "routing/maxspeeds.hpp" +#include "routing/maxspeeds_serialization.hpp" #include "routing/routing_helpers.hpp" #include "routing_common/maxspeed_conversion.hpp" @@ -94,8 +94,7 @@ void TestMaxspeedsSection(Features const & roads, string const & maxspeedsCsvCon TEST(routingGraph, ()); // Creating maxspeed section in test.mwm. - BuildMaxspeedsSection(routingGraph.get(), testMwmFullPath, featureIdToOsmId, - base::JoinPath(testDirFullPath, kCsv)); + BuildMaxspeedsSection(routingGraph.get(), testMwmFullPath, featureIdToOsmId, base::JoinPath(testDirFullPath, kCsv)); // Loading maxspeed section. FrozenDataSource dataSource; @@ -111,7 +110,8 @@ void TestMaxspeedsSection(Features const & roads, string const & maxspeedsCsvCon // Testing maxspeed section content. OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseMaxspeeds(base::JoinPath(testDirFullPath, kCsv), osmIdToMaxspeed), ()); - auto processor = [&](FeatureType & f, uint32_t const & id) { + auto processor = [&](FeatureType & f, uint32_t const & id) + { TEST(IsRoad(feature::TypesHolder(f)), ()); // Looking for maxspeed from csv. @@ -120,7 +120,7 @@ void TestMaxspeedsSection(Features const & roads, string const & maxspeedsCsvCon auto const itMaxspeedCsv = osmIdToMaxspeed.find(itOsmId->second); if (itMaxspeedCsv == osmIdToMaxspeed.cend()) - return; // No maxspeed for feature |id|. + return; // No maxspeed for feature |id|. Maxspeed const maxspeedCsv = itMaxspeedCsv->second; Maxspeed const maxspeedMwm = maxspeeds->GetMaxspeed(id); @@ -201,9 +201,8 @@ UNIT_TEST(Maxspeed_Parse1) { string const maxspeedsCsvContent = R"(10,Metric,60 11,Metric,90)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(10), {Units::Metric, 60, kInvalidSpeed}}, - {base::MakeOsmWay(11), {Units::Metric, 90, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(10), {Units::Metric, 60, kInvalidSpeed}}, + {base::MakeOsmWay(11), {Units::Metric, 90, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); TEST_EQUAL(osmIdToMaxspeed, expectedMapping, ()); @@ -213,9 +212,8 @@ UNIT_TEST(Maxspeed_Parse2) { string const maxspeedsCsvContent = R"(10,Metric,60,80 11,Metric,120)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(10), {Units::Metric, 60, 80}}, - {base::MakeOsmWay(11), {Units::Metric, 120, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(10), {Units::Metric, 60, 80}}, + {base::MakeOsmWay(11), {Units::Metric, 120, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); TEST_EQUAL(osmIdToMaxspeed, expectedMapping, ()); @@ -226,9 +224,8 @@ UNIT_TEST(Maxspeed_Parse3) string const maxspeedsCsvContent = R"(184467440737095516,Imperial,60,80 184467440737095517,Metric,120)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(184467440737095516), {Units::Imperial, 60, 80}}, - {base::MakeOsmWay(184467440737095517), {Units::Metric, 120, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(184467440737095516), {Units::Imperial, 60, 80}}, + {base::MakeOsmWay(184467440737095517), {Units::Metric, 120, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); TEST_EQUAL(osmIdToMaxspeed, expectedMapping, ()); @@ -239,9 +236,8 @@ UNIT_TEST(Maxspeed_Parse4) // Note. kNoneMaxSpeed == 65534 and kWalkMaxSpeed == 65533. string const maxspeedsCsvContent = R"(1,Metric,200,65534 2,Metric,65533)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(1), {Units::Metric, 200, kNoneMaxSpeed}}, - {base::MakeOsmWay(2), {Units::Metric, kWalkMaxSpeed, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(1), {Units::Metric, 200, kNoneMaxSpeed}}, + {base::MakeOsmWay(2), {Units::Metric, kWalkMaxSpeed, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); TEST_EQUAL(osmIdToMaxspeed, expectedMapping, ()); @@ -250,8 +246,7 @@ UNIT_TEST(Maxspeed_Parse4) UNIT_TEST(Maxspeed_Parse5) { string const maxspeedsCsvContent = R"(2,Metric,10)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(2), {Units::Metric, 10, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(2), {Units::Metric, 10, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); @@ -286,11 +281,10 @@ UNIT_TEST(Maxspeed_ParseBig) 101,Metric,60,90 102,Metric,60 103,Metric,90)"; - OsmIdToMaxspeed const expectedMapping = { - {base::MakeOsmWay(100), {Units::Metric, 200, kNoneMaxSpeed}}, - {base::MakeOsmWay(101), {Units::Metric, 60, 90}}, - {base::MakeOsmWay(102), {Units::Metric, 60, kInvalidSpeed}}, - {base::MakeOsmWay(103), {Units::Metric, 90, kInvalidSpeed}}}; + OsmIdToMaxspeed const expectedMapping = {{base::MakeOsmWay(100), {Units::Metric, 200, kNoneMaxSpeed}}, + {base::MakeOsmWay(101), {Units::Metric, 60, 90}}, + {base::MakeOsmWay(102), {Units::Metric, 60, kInvalidSpeed}}, + {base::MakeOsmWay(103), {Units::Metric, 90, kInvalidSpeed}}}; OsmIdToMaxspeed osmIdToMaxspeed; TEST(ParseCsv(maxspeedsCsvContent, osmIdToMaxspeed), ()); TEST_EQUAL(osmIdToMaxspeed, expectedMapping, ()); @@ -310,9 +304,8 @@ UNIT_TEST(Maxspeed_Section1) {{1.0, 0.0}, {1.0, 1.0}, {1.0, 2.0}} /* Points of feature 1 */}; string const maxspeedsCsvContent = R"(25258932,Metric,60 25258943,Metric,90)"; - FeatureIdToOsmId const featureIdToOsmId = { - {0 /* feature id */, base::MakeOsmWay(25258932)}, - {1 /* feature id */, base::MakeOsmWay(25258943)}}; + FeatureIdToOsmId const featureIdToOsmId = {{0 /* feature id */, base::MakeOsmWay(25258932)}, + {1 /* feature id */, base::MakeOsmWay(25258943)}}; TestMaxspeedsSection(roads, maxspeedsCsvContent, featureIdToOsmId); } @@ -323,10 +316,9 @@ UNIT_TEST(Maxspeed_Section2) {{1.0, 2.0}, {1.0, 3.0}} /* Points of feature 2 */}; string const maxspeedsCsvContent = R"(25258932,Metric,60,40 32424,Metric,120)"; - FeatureIdToOsmId const featureIdToOsmId = { - {0 /* feature id */, base::MakeOsmWay(25258932)}, - {1 /* feature id */, base::MakeOsmWay(25258943)}, - {2 /* feature id */, base::MakeOsmWay(32424)}}; + FeatureIdToOsmId const featureIdToOsmId = {{0 /* feature id */, base::MakeOsmWay(25258932)}, + {1 /* feature id */, base::MakeOsmWay(25258943)}, + {2 /* feature id */, base::MakeOsmWay(32424)}}; TestMaxspeedsSection(roads, maxspeedsCsvContent, featureIdToOsmId); } @@ -339,10 +331,9 @@ UNIT_TEST(Maxspeed_Section3) string const maxspeedsCsvContent = R"(25252,Metric,120,65534 258943,Metric,65533 32424,Metric,10,65533)"; - FeatureIdToOsmId const featureIdToOsmId = { - {0 /* feature id */, base::MakeOsmWay(25252)}, - {1 /* feature id */, base::MakeOsmWay(258943)}, - {2 /* feature id */, base::MakeOsmWay(32424)}}; + FeatureIdToOsmId const featureIdToOsmId = {{0 /* feature id */, base::MakeOsmWay(25252)}, + {1 /* feature id */, base::MakeOsmWay(258943)}, + {2 /* feature id */, base::MakeOsmWay(32424)}}; TestMaxspeedsSection(roads, maxspeedsCsvContent, featureIdToOsmId); } @@ -352,9 +343,8 @@ UNIT_TEST(Maxspeed_Section4) {{1.0, 0.0}, {0.0, 0.0}} /* Points of feature 1 */}; string const maxspeedsCsvContent = R"(50000000000,Imperial,30 50000000001,Imperial,50)"; - FeatureIdToOsmId const featureIdToOsmId = { - {0 /* feature id */, base::MakeOsmWay(50000000000)}, - {1 /* feature id */, base::MakeOsmWay(50000000001)}}; + FeatureIdToOsmId const featureIdToOsmId = {{0 /* feature id */, base::MakeOsmWay(50000000000)}, + {1 /* feature id */, base::MakeOsmWay(50000000001)}}; TestMaxspeedsSection(roads, maxspeedsCsvContent, featureIdToOsmId); } @@ -373,7 +363,7 @@ UNIT_TEST(Maxspeed_SectionBig) 300,Imperial,30 400,Imperial,10,20 600,)" - "Imperial,50,20\n700,Imperial,10\n"; + "Imperial,50,20\n700,Imperial,10\n"; FeatureIdToOsmId const featureIdToOsmId = { {0 /* feature id */, base::MakeOsmWay(100)}, {1 /* feature id */, base::MakeOsmWay(200)}, {2 /* feature id */, base::MakeOsmWay(300)}, {3 /* feature id */, base::MakeOsmWay(400)}, @@ -417,17 +407,22 @@ UNIT_TEST(Maxspeed_CollectorSmoke) feature::FeatureBuilder builder; auto c1 = std::make_shared(filename); - c1->CollectFeature(builder, MakeOsmElement(1 /* id */, {{"maxspeed:forward", "50"}} /* tags */, OsmElement::EntityType::Way)); - c1->CollectFeature(builder, MakeOsmElement(2 /* id */, {{"maxspeed:backward", "50"}} /* tags */, OsmElement::EntityType::Way)); + c1->CollectFeature(builder, + MakeOsmElement(1 /* id */, {{"maxspeed:forward", "50"}} /* tags */, OsmElement::EntityType::Way)); + c1->CollectFeature(builder, + MakeOsmElement(2 /* id */, {{"maxspeed:backward", "50"}} /* tags */, OsmElement::EntityType::Way)); builder.SetType(classif().GetTypeByPath({"highway", "motorway_link"})); - c1->CollectFeature(builder, MakeOsmElement(3 /* id */, {{"maxspeed:advisory", "70"}} /* tags */, OsmElement::EntityType::Way)); + c1->CollectFeature(builder, + MakeOsmElement(3 /* id */, {{"maxspeed:advisory", "70"}} /* tags */, OsmElement::EntityType::Way)); builder.SetType(classif().GetTypeByPath({"highway", "trunk"})); - c1->CollectFeature(builder, MakeOsmElement(4 /* id */, {{"maxspeed:advisory", "70"}} /* tags */, OsmElement::EntityType::Way)); + c1->CollectFeature(builder, + MakeOsmElement(4 /* id */, {{"maxspeed:advisory", "70"}} /* tags */, OsmElement::EntityType::Way)); builder.SetType(classif().GetTypeByPath({"highway", "trunk_link"})); - c1->CollectFeature(builder, MakeOsmElement(5 /* id */, {{"maxspeed:advisory", "10"}, {"maxspeed", "20"}} /* tags */, OsmElement::EntityType::Way)); + c1->CollectFeature(builder, MakeOsmElement(5 /* id */, {{"maxspeed:advisory", "10"}, {"maxspeed", "20"}} /* tags */, + OsmElement::EntityType::Way)); c1->Finish(); c1->Finalize(); @@ -444,4 +439,4 @@ UNIT_TEST(Maxspeed_CollectorSmoke) TEST_EQUAL(osmIdToMaxspeed[base::MakeOsmWay(5)].GetForward(), static_cast(20), ()); } -} // namespace maxspeeds_tests +} // namespace maxspeeds_tests diff --git a/generator/generator_tests/merge_collectors_tests.cpp b/generator/generator_tests/merge_collectors_tests.cpp index 1926a50bb..75beb4dea 100644 --- a/generator/generator_tests/merge_collectors_tests.cpp +++ b/generator/generator_tests/merge_collectors_tests.cpp @@ -22,7 +22,7 @@ using namespace generator_tests; namespace { auto const kEmptyValidator = [](auto const &) { return true; }; -} +} // namespace UNIT_TEST(MergeCollector_MergeCase1) { @@ -44,10 +44,10 @@ UNIT_TEST(MergeCollector_MergeCase1) collector1->Finalize(); std::vector const answers = { - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 1 /* id */).GetEncodedId()) + "\t1", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 2 /* id */).GetEncodedId()) + "\t2", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 3 /* id */).GetEncodedId()) + "\t3", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 4 /* id */).GetEncodedId()) + "\t4", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 1 /* id */).GetEncodedId()) + "\t1", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 2 /* id */).GetEncodedId()) + "\t2", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 3 /* id */).GetEncodedId()) + "\t3", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 4 /* id */).GetEncodedId()) + "\t4", }; std::ifstream stream; @@ -80,10 +80,10 @@ UNIT_TEST(MergeCollector_MergeCase2) collection1->Finalize(); std::vector const answers = { - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 1 /* id */).GetEncodedId()) + "\t1", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 2 /* id */).GetEncodedId()) + "\t2", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 3 /* id */).GetEncodedId()) + "\t3", - std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 4 /* id */).GetEncodedId()) + "\t4", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 1 /* id */).GetEncodedId()) + "\t1", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 2 /* id */).GetEncodedId()) + "\t2", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 3 /* id */).GetEncodedId()) + "\t3", + std::to_string(GeoObjectId(GeoObjectId::Type::ObsoleteOsmRelation, 4 /* id */).GetEncodedId()) + "\t4", }; std::ifstream stream; diff --git a/generator/generator_tests/metadata_parser_test.cpp b/generator/generator_tests/metadata_parser_test.cpp index bd535a729..977f16770 100644 --- a/generator/generator_tests/metadata_parser_test.cpp +++ b/generator/generator_tests/metadata_parser_test.cpp @@ -70,7 +70,6 @@ UNIT_TEST(Metadata_ValidateAndFormat_stars) p("stars", "5s"); TEST_EQUAL(md.Get(Metadata::FMD_STARS), "5", ()); md.Drop(Metadata::FMD_STARS); - } UNIT_CLASS_TEST(TestWithClassificator, Metadata_ValidateAndFormat_operator) @@ -142,9 +141,9 @@ UNIT_TEST(Metadata_ValidateAndFormat_wikipedia) Metadata & md = params.GetMetadata(); #ifdef OMIM_OS_MOBILE - #define WIKIHOST "m.wikipedia.org" +#define WIKIHOST "m.wikipedia.org" #else - #define WIKIHOST "wikipedia.org" +#define WIKIHOST "wikipedia.org" #endif struct Test @@ -154,11 +153,13 @@ UNIT_TEST(Metadata_ValidateAndFormat_wikipedia) char const * url; }; constexpr Test tests[] = { - {"en:Bad %20Data", "en:Bad %20Data", "https://en." WIKIHOST "/wiki/Bad_%2520Data"}, - {"ru:Это тест_со знаками %, ? (и скобками)", "ru:Это тест со знаками %, ? (и скобками)", "https://ru." WIKIHOST "/wiki/Это_тест_со_знаками_%25,_%3F_(и_скобками)"}, - {"https://be-tarask.wikipedia.org/wiki/Вялікае_Княства_Літоўскае", "be-tarask:Вялікае Княства Літоўскае", "https://be-tarask." WIKIHOST "/wiki/Вялікае_Княства_Літоўскае"}, - // Final link points to https and mobile version. - {"http://en.wikipedia.org/wiki/A#id", "en:A#id", "https://en." WIKIHOST "/wiki/A#id"}, + {"en:Bad %20Data", "en:Bad %20Data", "https://en." WIKIHOST "/wiki/Bad_%2520Data"}, + {"ru:Это тест_со знаками %, ? (и скобками)", "ru:Это тест со знаками %, ? (и скобками)", + "https://ru." WIKIHOST "/wiki/Это_тест_со_знаками_%25,_%3F_(и_скобками)"}, + {"https://be-tarask.wikipedia.org/wiki/Вялікае_Княства_Літоўскае", "be-tarask:Вялікае Княства Літоўскае", + "https://be-tarask." WIKIHOST "/wiki/Вялікае_Княства_Літоўскае"}, + // Final link points to https and mobile version. + {"http://en.wikipedia.org/wiki/A#id", "en:A#id", "https://en." WIKIHOST "/wiki/A#id"}, }; for (auto [source, validated, url] : tests) @@ -227,7 +228,8 @@ UNIT_CLASS_TEST(TestWithClassificator, Metadata_ValidateAndFormat_duration) MetadataTagProcessor p(params); Metadata & md = params.GetMetadata(); - auto const test = [&](std::string const & osm, std::string const & expected) { + auto const test = [&](std::string const & osm, std::string const & expected) + { p("duration", osm); if (expected.empty()) @@ -288,7 +290,6 @@ UNIT_CLASS_TEST(TestWithClassificator, Metadata_ValidateAndFormat_duration) test("PT50:20", ""); } - UNIT_CLASS_TEST(TestWithClassificator, ValidateAndFormat_facebook) { FeatureBuilderParams params; @@ -645,21 +646,20 @@ UNIT_TEST(Metadata_ValidateAndFormat_building_levels) UNIT_TEST(Metadata_ValidateAndFormat_url) { - std::array, 9> constexpr kTests = - {{ - {"a.by", "a.by"}, - {"http://test.com", "http://test.com"}, - {"https://test.com", "https://test.com"}, - {"test.com", "test.com"}, - {"http://test.com/", "http://test.com"}, - {"https://test.com/", "https://test.com"}, - {"test.com/", "test.com"}, - {"test.com/path", "test.com/path"}, - {"test.com/path/", "test.com/path/"}, + std::array, 9> constexpr kTests = {{ + {"a.by", "a.by"}, + {"http://test.com", "http://test.com"}, + {"https://test.com", "https://test.com"}, + {"test.com", "test.com"}, + {"http://test.com/", "http://test.com"}, + {"https://test.com/", "https://test.com"}, + {"test.com/", "test.com"}, + {"test.com/path", "test.com/path"}, + {"test.com/path/", "test.com/path/"}, }}; FeatureBuilderParams params; MetadataTagProcessorImpl tp(params); - for (auto const& [input, output] : kTests) + for (auto const & [input, output] : kTests) TEST_EQUAL(tp.ValidateAndFormat_url(input), output, ()); } diff --git a/generator/generator_tests/metalines_tests.cpp b/generator/generator_tests/metalines_tests.cpp index fdfc545ae..c3633f17e 100644 --- a/generator/generator_tests/metalines_tests.cpp +++ b/generator/generator_tests/metalines_tests.cpp @@ -61,7 +61,7 @@ LineStringMerger::InputData MakeInputData(std::vector const & elemen inputData.emplace(MakeKey(element), std::make_shared(element)); return inputData; -}; +} bool IsEqual(LineStringMerger::LinePtr const & lineString, std::vector const & ways) { @@ -69,20 +69,19 @@ bool IsEqual(LineStringMerger::LinePtr const & lineString, std::vector return w == ways; } -auto const w1 = MakeHighway(1/* id */, "w" /* name */, {1, 2, 3} /* nodes */); -auto const w2 = MakeHighway(2/* id */, "w" /* name */, {3, 4, 5} /* nodes */); -auto const w3 = MakeHighway(3/* id */, "w" /* name */, {5, 6, 7} /* nodes */); +auto const w1 = MakeHighway(1 /* id */, "w" /* name */, {1, 2, 3} /* nodes */); +auto const w2 = MakeHighway(2 /* id */, "w" /* name */, {3, 4, 5} /* nodes */); +auto const w3 = MakeHighway(3 /* id */, "w" /* name */, {5, 6, 7} /* nodes */); -auto const w4 = MakeHighway(4/* id */, "w" /* name */, {7, 8, 9} /* nodes */); -auto const w5 = MakeHighway(5/* id */, "w" /* name */, {9, 10, 11} /* nodes */); +auto const w4 = MakeHighway(4 /* id */, "w" /* name */, {7, 8, 9} /* nodes */); +auto const w5 = MakeHighway(5 /* id */, "w" /* name */, {9, 10, 11} /* nodes */); -auto const wo6 = MakeHighway(6/* id */, "w" /* name */, {13, 12, 3} /* nodes */, true /* isOneway */); -auto const wo7 = MakeHighway(7/* id */, "w" /* name */, {15, 14, 13} /* nodes */, true /* isOneway */); -auto const wo8 = MakeHighway(8/* id */, "w" /* name */, {17, 16, 15} /* nodes */, true /* isOneway */); - -auto const b1 = MakeHighway(1/* id */, "b" /* name */, {1, 2, 3} /* nodes */); -auto const b2 = MakeHighway(2/* id */, "b" /* name */, {3, 4, 5} /* nodes */); +auto const wo6 = MakeHighway(6 /* id */, "w" /* name */, {13, 12, 3} /* nodes */, true /* isOneway */); +auto const wo7 = MakeHighway(7 /* id */, "w" /* name */, {15, 14, 13} /* nodes */, true /* isOneway */); +auto const wo8 = MakeHighway(8 /* id */, "w" /* name */, {17, 16, 15} /* nodes */, true /* isOneway */); +auto const b1 = MakeHighway(1 /* id */, "b" /* name */, {1, 2, 3} /* nodes */); +auto const b2 = MakeHighway(2 /* id */, "b" /* name */, {3, 4, 5} /* nodes */); UNIT_TEST(MetalinesTest_Case0) { @@ -118,7 +117,12 @@ UNIT_TEST(MetalinesTest_Case2) UNIT_TEST(MetalinesTest_Case3) { - auto const inputData = MakeInputData({w1, w4, w2, w5,}); + auto const inputData = MakeInputData({ + w1, + w4, + w2, + w5, + }); auto const outputData = LineStringMerger::Merge(inputData); auto const key = MakeKey(w1); @@ -134,7 +138,10 @@ UNIT_TEST(MetalinesTest_Case3) UNIT_TEST(MetalinesTest_Case4) { - auto const inputData = MakeInputData({w1, wo6,}); + auto const inputData = MakeInputData({ + w1, + wo6, + }); auto const outputData = LineStringMerger::Merge(inputData); auto const key = MakeKey(w1); @@ -145,7 +152,11 @@ UNIT_TEST(MetalinesTest_Case4) UNIT_TEST(MetalinesTest_Case5) { - auto const inputData = MakeInputData({w1, w2, wo6,}); + auto const inputData = MakeInputData({ + w1, + w2, + wo6, + }); auto const outputData = LineStringMerger::Merge(inputData); auto const key = MakeKey(w1); @@ -156,7 +167,12 @@ UNIT_TEST(MetalinesTest_Case5) UNIT_TEST(MetalinesTest_Case6) { - auto const inputData = MakeInputData({w1, b1, w2, b2,}); + auto const inputData = MakeInputData({ + w1, + b1, + w2, + b2, + }); auto const outputData = LineStringMerger::Merge(inputData); auto const keyW = MakeKey(w1); diff --git a/generator/generator_tests/mini_roundabout_tests.cpp b/generator/generator_tests/mini_roundabout_tests.cpp index 65d696d29..c94aba217 100644 --- a/generator/generator_tests/mini_roundabout_tests.cpp +++ b/generator/generator_tests/mini_roundabout_tests.cpp @@ -49,8 +49,7 @@ OsmElement RoadNode(uint64_t id, double lat, double lon) return node; } -void TestRunCmpPoints(std::vector const & pointsFact, - std::vector const & pointsPlan, double r) +void TestRunCmpPoints(std::vector const & pointsFact, std::vector const & pointsPlan, double r) { TEST_EQUAL(pointsFact.size(), pointsPlan.size(), ()); TEST_GREATER(pointsFact.size(), 2, ()); @@ -74,8 +73,7 @@ UNIT_TEST(PointToPolygon_GeneralProperties) { for (size_t verticesCount = 3; verticesCount < 30; ++verticesCount) { - std::vector const circlePlain = - PointToPolygon(center, r, verticesCount, angleDeg); + std::vector const circlePlain = PointToPolygon(center, r, verticesCount, angleDeg); double const vertexLenght = DistanceOnPlain(circlePlain.front(), circlePlain.back()); for (size_t i = 0; i < circlePlain.size() - 1; ++i) @@ -126,9 +124,8 @@ UNIT_TEST(PointToCircle_ZeroMeridian) double const r = mercator::MetersToMercator(100.0); auto const circlePlain = PointToPolygon(center, r, 6, 30.0); - std::vector const circlePlainExpected{{0.00077, 59.48054}, {0.00000, 59.48100}, - {-0.00077, 59.48054}, {-0.00077, 59.47964}, - {0.00000, 59.47920}, {0.00077, 59.47964}}; + std::vector const circlePlainExpected{{0.00077, 59.48054}, {0.00000, 59.48100}, {-0.00077, 59.48054}, + {-0.00077, 59.47964}, {0.00000, 59.47920}, {0.00077, 59.47964}}; TestRunCmpPoints(circlePlain, circlePlainExpected, r); } @@ -140,9 +137,8 @@ UNIT_TEST(PointToCircle_LargeRadius) double const r = mercator::MetersToMercator(500000.0); auto const circlePlain = PointToPolygon(center, r, 6, 30.0); - std::vector const circlePlainExpected{{3.99631, 114.67859}, {0.10000, 116.92812}, - {-3.79631, 114.67859}, {-3.79631, 110.17951}, - {0.10000, 107.92998}, {3.99631, 110.17951}}; + std::vector const circlePlainExpected{{3.99631, 114.67859}, {0.10000, 116.92812}, {-3.79631, 114.67859}, + {-3.79631, 110.17951}, {0.10000, 107.92998}, {3.99631, 110.17951}}; TestRunCmpPoints(circlePlain, circlePlainExpected, r); } @@ -168,8 +164,8 @@ UNIT_TEST(TrimSegment_Radius3) m2::PointD const pointRoundabout(15.0, 17.0); double const r = 3.0; - m2::PointD const nextPointOnRoad = GetPointAtDistFromTarget( - pointOnRoad /* source */, pointRoundabout /* target */, r /* dist */); + m2::PointD const nextPointOnRoad = + GetPointAtDistFromTarget(pointOnRoad /* source */, pointRoundabout /* target */, r /* dist */); double const dist = DistanceOnPlain(nextPointOnRoad, pointRoundabout); TestRunCmpNumbers(dist, r); } @@ -192,29 +188,20 @@ UNIT_TEST(Manage_MiniRoundabout_1Road) // Check for "diameters" equality. double const diameter = r * 2.; - TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[0], circlePlain[3]), diameter, - kMwmPointAccuracy), - ()); - TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[1], circlePlain[4]), diameter, - kMwmPointAccuracy), - ()); - TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[2], circlePlain[5]), diameter, - kMwmPointAccuracy), - ()); + TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[0], circlePlain[3]), diameter, kMwmPointAccuracy), ()); + TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[1], circlePlain[4]), diameter, kMwmPointAccuracy), ()); + TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[2], circlePlain[5]), diameter, kMwmPointAccuracy), ()); double const edgeLen = DistanceOnPlain(circlePlain[0], circlePlain[1]); for (size_t i = 1; i < circlePlain.size(); ++i) - TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[i - 1], circlePlain[i]), edgeLen, - kMwmPointAccuracy), - ()); + TEST(AlmostEqualAbs(DistanceOnPlain(circlePlain[i - 1], circlePlain[i]), edgeLen, kMwmPointAccuracy), ()); - m2::PointD const newPointOnRoad = - GetPointAtDistFromTarget(nearest /* source */, center /* target */, r /* dist */); + m2::PointD const newPointOnRoad = GetPointAtDistFromTarget(nearest /* source */, center /* target */, r /* dist */); AddPointToCircle(circlePlain, newPointOnRoad); - std::vector const circlePlainExpected{ - {11.50013, 85.06309}, {11.50012, 85.06310}, {11.50011, 85.06310}, {11.50010, 85.06309}, - {11.50010, 85.06306}, {11.50012, 85.06305}, {11.50013, 85.06306}}; + std::vector const circlePlainExpected{{11.50013, 85.06309}, {11.50012, 85.06310}, {11.50011, 85.06310}, + {11.50010, 85.06309}, {11.50010, 85.06306}, {11.50012, 85.06305}, + {11.50013, 85.06306}}; TestRunCmpPoints(circlePlain, circlePlainExpected, r); } @@ -230,34 +217,28 @@ UNIT_TEST(Manage_MiniRoundabout_4Roads) auto const stationRoadLeftNode = RoadNode(4, 51.7460327, -0.4739356); // End of road auto const plaughRoundaboutRightNode = RoadNode(5, 51.7458321, -0.4732662); - m2::PointD const center = - mercator::FromLatLon({miniRoundabout.m_lat, miniRoundabout.m_lon}); + m2::PointD const center = mercator::FromLatLon({miniRoundabout.m_lat, miniRoundabout.m_lon}); double const r = mercator::MetersToMercator(2.5); auto circlePlain = PointToPolygon(center, r, 6, 30.0); AddPointToCircle(circlePlain, GetPointAtDistFromTarget( - mercator::FromLatLon(stationRoadNode.m_lat, - stationRoadNode.m_lon) /* source */, + mercator::FromLatLon(stationRoadNode.m_lat, stationRoadNode.m_lon) /* source */, center /* target */, r /* dist */)); - AddPointToCircle(circlePlain, GetPointAtDistFromTarget( - mercator::FromLatLon(plaughRoundaboutNode.m_lat, - plaughRoundaboutNode.m_lon) /* source */, - center /* target */, r /* dist */)); - AddPointToCircle(circlePlain, GetPointAtDistFromTarget( - mercator::FromLatLon(stationRoadLeftNode.m_lat, - stationRoadLeftNode.m_lon) /* source */, - center /* target */, r /* dist */)); - AddPointToCircle(circlePlain, - GetPointAtDistFromTarget(mercator::FromLatLon(plaughRoundaboutRightNode.m_lat, - plaughRoundaboutRightNode.m_lon), - center, r)); + AddPointToCircle(circlePlain, GetPointAtDistFromTarget(mercator::FromLatLon(plaughRoundaboutNode.m_lat, + plaughRoundaboutNode.m_lon) /* source */, + center /* target */, r /* dist */)); + AddPointToCircle(circlePlain, GetPointAtDistFromTarget(mercator::FromLatLon(stationRoadLeftNode.m_lat, + stationRoadLeftNode.m_lon) /* source */, + center /* target */, r /* dist */)); + AddPointToCircle(circlePlain, GetPointAtDistFromTarget(mercator::FromLatLon(plaughRoundaboutRightNode.m_lat, + plaughRoundaboutRightNode.m_lon), + center, r)); std::vector const circlePlainExpected{ - {-0.47381, 60.67520}, {-0.47383, 60.67521}, {-0.47384, 60.67521}, {-0.47385, 60.67520}, - {-0.47386, 60.67520}, {-0.47385, 60.67518}, {-0.47385, 60.67518}, {-0.47383, 60.67517}, - {-0.47381, 60.67518}, {-0.47381, 60.67518}}; + {-0.47381, 60.67520}, {-0.47383, 60.67521}, {-0.47384, 60.67521}, {-0.47385, 60.67520}, {-0.47386, 60.67520}, + {-0.47385, 60.67518}, {-0.47385, 60.67518}, {-0.47383, 60.67517}, {-0.47381, 60.67518}, {-0.47381, 60.67518}}; TestRunCmpPoints(circlePlain, circlePlainExpected, r); } diff --git a/generator/generator_tests/node_mixer_test.cpp b/generator/generator_tests/node_mixer_test.cpp index b9184cc1b..30885830b 100644 --- a/generator/generator_tests/node_mixer_test.cpp +++ b/generator/generator_tests/node_mixer_test.cpp @@ -8,23 +8,21 @@ UNIT_TEST(NodeMixerTests) { std::istringstream stream1(""); - generator::MixFakeNodes(stream1, [](OsmElement & p) { - TEST(false, ("Returned an object for an empty input stream.")); - }); + generator::MixFakeNodes(stream1, + [](OsmElement & p) { TEST(false, ("Returned an object for an empty input stream.")); }); std::istringstream stream2("shop=gift\nname=Shop\n"); - generator::MixFakeNodes(stream2, [](OsmElement & p) { - TEST(false, ("Returned an object for a source without coordinates.")); - }); + generator::MixFakeNodes( + stream2, [](OsmElement & p) { TEST(false, ("Returned an object for a source without coordinates.")); }); std::istringstream stream3("lat=4.0\nlon=-4.1\n"); - generator::MixFakeNodes(stream3, [](OsmElement & p) { - TEST(false, ("Returned an object for a source without tags.")); - }); + generator::MixFakeNodes(stream3, + [](OsmElement & p) { TEST(false, ("Returned an object for a source without tags.")); }); std::istringstream stream4("lat=10.0\nlon=-4.8\nshop=gift\nname=Shop"); int count4 = 0; - generator::MixFakeNodes(stream4, [&](OsmElement & p) { + generator::MixFakeNodes(stream4, [&](OsmElement & p) + { count4++; TEST_EQUAL(p.m_type, OsmElement::EntityType::Node, ()); TEST_EQUAL(p.m_lat, 10.0, ()); @@ -36,7 +34,8 @@ UNIT_TEST(NodeMixerTests) std::istringstream stream5("lat=10.0\nlon=-4.8\nid=1\nname=First\n\nid=2\nlat=60\nlon=1\nname=Second\n\n\n"); int count5 = 0; - generator::MixFakeNodes(stream5, [&](OsmElement & p) { + generator::MixFakeNodes(stream5, [&](OsmElement & p) + { count5++; TEST_EQUAL(p.m_type, OsmElement::EntityType::Node, ()); TEST_EQUAL(p.Tags().size(), 2, ()); @@ -48,7 +47,8 @@ UNIT_TEST(NodeMixerTests) std::istringstream stream6("lat=0\nlon=-4.8\nshop=mall"); int count6 = 0; - generator::MixFakeNodes(stream6, [&](OsmElement & p) { + generator::MixFakeNodes(stream6, [&](OsmElement & p) + { count6++; TEST_EQUAL(p.m_lat, 0.0, ()); TEST_EQUAL(p.m_lon, -4.8, ()); diff --git a/generator/generator_tests/osm_o5m_source_test.cpp b/generator/generator_tests/osm_o5m_source_test.cpp index 39856f570..84748d5e8 100644 --- a/generator/generator_tests/osm_o5m_source_test.cpp +++ b/generator/generator_tests/osm_o5m_source_test.cpp @@ -19,9 +19,7 @@ UNIT_TEST(OSM_O5M_Source_Node_read_test) std::stringstream ss(data); osm::O5MSource dataset([&ss](uint8_t * buffer, size_t size) - { - return ss.read(reinterpret_cast(buffer), size).gcount(); - }, 10 /* buffer size */); + { return ss.read(reinterpret_cast(buffer), size).gcount(); }, 10 /* buffer size */); osm::O5MSource::Iterator it = dataset.begin(); osm::O5MSource::Entity const & em = *it; @@ -52,49 +50,43 @@ UNIT_TEST(OSM_O5M_Source_Way_read_test) std::stringstream ss(data); osm::O5MSource dataset([&ss](uint8_t * buffer, size_t size) - { - return ss.read(reinterpret_cast(buffer), size).gcount(); - }, 10 /* buffer size */); + { return ss.read(reinterpret_cast(buffer), size).gcount(); }, 10 /* buffer size */); std::set nodes; - vector> const validTags = { - {"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::O5MSource::EntityType::Node: + case osm::O5MSource::EntityType::Node: + { + nodes.insert(em.id); + for (auto const & tag : em.Tags()) + TEST(false, ("Unexpected tag:", tag.key, tag.value)); + break; + } + case osm::O5MSource::EntityType::Way: + { + size_t ndCounter = 0; + size_t tagCounter = 0; + for (auto const & nd : em.Nodes()) { - nodes.insert(em.id); - for (auto const & tag : em.Tags()) - { - TEST(false, ("Unexpected tag:", tag.key, tag.value)); - } - break; + ndCounter++; + TEST(nodes.count(nd), ()); } - case osm::O5MSource::EntityType::Way: + TEST_EQUAL(nodes.size(), ndCounter, ()); + for (auto const & tag : em.Tags()) { - size_t ndCounter = 0; - size_t tagCounter = 0; - for (auto const & nd : em.Nodes()) - { - ndCounter++; - TEST(nodes.count(nd), ()); - } - TEST_EQUAL(nodes.size(), ndCounter, ()); - for (auto const & tag : em.Tags()) - { - TEST_EQUAL(tag.key, validTags[tagCounter].first, ()); - TEST_EQUAL(tag.value, validTags[tagCounter].second, ()); - tagCounter++; - } - TEST_EQUAL(validTags.size(), tagCounter, ()); - break; + TEST_EQUAL(tag.key, validTags[tagCounter].first, ()); + TEST_EQUAL(tag.value, validTags[tagCounter].second, ()); + tagCounter++; } - default: - break; + TEST_EQUAL(validTags.size(), tagCounter, ()); + break; + } + default: break; } } } @@ -105,26 +97,18 @@ UNIT_TEST(OSM_O5M_Source_Relation_read_test) std::stringstream ss(data); osm::O5MSource dataset([&ss](uint8_t * buffer, size_t size) - { - return ss.read(reinterpret_cast(buffer), size).gcount(); - }, 10 /* buffer size */); + { return ss.read(reinterpret_cast(buffer), size).gcount(); }, 10 /* buffer size */); std::set nodes; std::set entities; - vector> const validNodeTags = { - {"name", "Whitehorse"} - , {"place", "town"}}; + vector> const validNodeTags = {{"name", "Whitehorse"}, {"place", "town"}}; vector> const validRelationTags = { - {"name", "Whitehorse"} - , {"place", "town"} - , {"type", "multipolygon"}}; + {"name", "Whitehorse"}, {"place", "town"}, {"type", "multipolygon"}}; using TType = osm::O5MSource::EntityType; - vector> const relationMembers = { - {TType::Way, "outer"} - , {TType::Node, ""}}; + vector> const relationMembers = {{TType::Way, "outer"}, {TType::Node, ""}}; for (auto const & em : dataset) { @@ -132,58 +116,53 @@ UNIT_TEST(OSM_O5M_Source_Relation_read_test) switch (em.type) { - case TType::Node: + case TType::Node: + { + nodes.insert(em.id); + size_t tagCounter = 0; + for (auto const & tag : em.Tags()) { - nodes.insert(em.id); - size_t tagCounter = 0; - for (auto const & tag : em.Tags()) - { - TEST_EQUAL(tag.key, validNodeTags[tagCounter].first, ()); - TEST_EQUAL(tag.value, validNodeTags[tagCounter].second, ()); - tagCounter++; - } - break; + TEST_EQUAL(tag.key, validNodeTags[tagCounter].first, ()); + TEST_EQUAL(tag.value, validNodeTags[tagCounter].second, ()); + tagCounter++; } - case TType::Way: + break; + } + case TType::Way: + { + size_t ndCounter = 0; + for (auto const & nd : em.Nodes()) { - size_t ndCounter = 0; - for (auto const & nd : em.Nodes()) - { - ndCounter++; - TEST(nodes.count(nd), ()); - } - TEST_EQUAL(nodes.size(), ndCounter, ()); - for (auto const & tag : em.Tags()) - { - TEST(false, ("Unexpected tag:", tag.key, tag.value)); - } - break; + ndCounter++; + TEST(nodes.count(nd), ()); } - case TType::Relation: + TEST_EQUAL(nodes.size(), ndCounter, ()); + for (auto const & tag : em.Tags()) + TEST(false, ("Unexpected tag:", tag.key, tag.value)); + break; + } + case TType::Relation: + { + size_t memberCounter = 0; + size_t tagCounter = 0; + for (auto const & member : em.Members()) { - size_t memberCounter = 0; - size_t tagCounter = 0; - for (auto const & member : em.Members()) - { - TEST(entities.count(member.ref), ()); - TEST_EQUAL(relationMembers[memberCounter].first, member.type, - ("Current member:", memberCounter)); - TEST_EQUAL(relationMembers[memberCounter].second, member.role, - ("Current member:", memberCounter)); - memberCounter++; - } - TEST_EQUAL(memberCounter, 2, ()); - for (auto const & tag : em.Tags()) - { - TEST_EQUAL(tag.key, validRelationTags[tagCounter].first, ()); - TEST_EQUAL(tag.value, validRelationTags[tagCounter].second, ()); - tagCounter++; - } - TEST_EQUAL(validRelationTags.size(), tagCounter, ()); - break; + TEST(entities.count(member.ref), ()); + TEST_EQUAL(relationMembers[memberCounter].first, member.type, ("Current member:", memberCounter)); + TEST_EQUAL(relationMembers[memberCounter].second, member.role, ("Current member:", memberCounter)); + memberCounter++; } - default: - break; + TEST_EQUAL(memberCounter, 2, ()); + for (auto const & tag : em.Tags()) + { + TEST_EQUAL(tag.key, validRelationTags[tagCounter].first, ()); + TEST_EQUAL(tag.value, validRelationTags[tagCounter].second, ()); + tagCounter++; + } + TEST_EQUAL(validRelationTags.size(), tagCounter, ()); + break; + } + default: break; } } } diff --git a/generator/generator_tests/osm_type_test.cpp b/generator/generator_tests/osm_type_test.cpp index 6eb5cac99..f00733e86 100644 --- a/generator/generator_tests/osm_type_test.cpp +++ b/generator/generator_tests/osm_type_test.cpp @@ -2,16 +2,16 @@ #include "generator/generator_tests/types_helper.hpp" #include "generator/generator_tests_support/test_with_classificator.hpp" -#include "generator/osm_element.hpp" #include "generator/osm2type.hpp" +#include "generator/osm_element.hpp" #include "generator/tag_admixer.hpp" #include "routing_common/bicycle_model.hpp" #include "routing_common/car_model.hpp" #include "routing_common/pedestrian_model.hpp" -#include "indexer/feature_data.hpp" #include "indexer/classificator.hpp" +#include "indexer/feature_data.hpp" #include "platform/platform.hpp" @@ -27,8 +27,8 @@ using namespace tests; using Tags = std::vector; -void TestSurfaceTypes(std::string const & surface, std::string const & smoothness, - std::string const & grade, char const * value) +void TestSurfaceTypes(std::string const & surface, std::string const & smoothness, std::string const & grade, + char const * value) { OsmElement e; e.AddTag("highway", "unclassified"); @@ -49,13 +49,11 @@ void TestSurfaceTypes(std::string const & surface, std::string const & smoothnes psurface = rtype.substr(9); } TEST(params.IsTypeExist(GetType({"psurface", value})), - ("Surface:", surface, "Smoothness:", smoothness, "Grade:", grade, "Expected:", value, - "Got:", psurface)); + ("Surface:", surface, "Smoothness:", smoothness, "Grade:", grade, "Expected:", value, "Got:", psurface)); } -FeatureBuilderParams GetFeatureBuilderParams( - Tags const & tags, - OsmElement::EntityType type = OsmElement::EntityType::Unknown) +FeatureBuilderParams GetFeatureBuilderParams(Tags const & tags, + OsmElement::EntityType type = OsmElement::EntityType::Unknown) { OsmElement e; e.m_type = type; @@ -69,15 +67,10 @@ FeatureBuilderParams GetFeatureBuilderParams( return params; } - UNIT_CLASS_TEST(TestWithClassificator, OsmType_SkipDummy) { Tags const tags = { - { "abutters", "residential" }, - { "highway", "primary" }, - { "osmarender:renderRef", "no" }, - { "ref", "E51" } - }; + {"abutters", "residential"}, {"highway", "primary"}, {"osmarender:renderRef", "no"}, {"ref", "E51"}}; auto const params = GetFeatureBuilderParams(tags); @@ -88,12 +81,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_SkipDummy) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Oneway) { { - Tags const tags = { - { "highway", "primary" }, - { "motorroad", "yes" }, - { "name", "Каширское шоссе" }, - { "oneway", "yes" } - }; + Tags const tags = {{"highway", "primary"}, {"motorroad", "yes"}, {"name", "Каширское шоссе"}, {"oneway", "yes"}}; auto const params = GetFeatureBuilderParams(tags); @@ -103,12 +91,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Oneway) } { - Tags const tags = { - { "highway", "primary" }, - { "name", "Каширское шоссе" }, - { "oneway", "-1" }, - { "motorroad", "yes" } - }; + Tags const tags = {{"highway", "primary"}, {"name", "Каширское шоссе"}, {"oneway", "-1"}, {"motorroad", "yes"}}; auto const params = GetFeatureBuilderParams(tags); @@ -122,9 +105,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Location) { { Tags const tags = { - { "power", "line" }, - { "location", "underground" }, - { "man_made", "pipeline" }, + {"power", "line"}, + {"location", "underground"}, + {"man_made", "pipeline"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -134,8 +117,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Location) { Tags const tags = { - { "power", "line" }, - { "man_made", "pipeline" }, + {"power", "line"}, + {"man_made", "pipeline"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -143,14 +126,14 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Location) TEST_EQUAL(params.m_types.size(), 1, (params)); TEST(params.IsTypeExist(GetType({"power", "line"})), ()); // We don't have drawing rules now for pipeline. - //TEST(params.IsTypeExist(GetType({"man_made", "pipeline"})), ()); + // TEST(params.IsTypeExist(GetType({"man_made", "pipeline"})), ()); } { Tags const tags = { - { "power", "line" }, - { "location", "overground" }, - { "man_made", "pipeline" }, + {"power", "line"}, + {"location", "overground"}, + {"man_made", "pipeline"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -163,13 +146,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Location) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Combined) { Tags const tags = { - { "addr:housenumber", "84" }, - { "addr:postcode", "220100" }, - { "addr:street", "ул. Максима Богдановича" }, - { "amenity", "school" }, - { "building", "yes" }, - { "name", "Гимназия 15" } - }; + {"addr:housenumber", "84"}, {"addr:postcode", "220100"}, {"addr:street", "ул. Максима Богдановича"}, + {"amenity", "school"}, {"building", "yes"}, {"name", "Гимназия 15"}}; auto const params = GetFeatureBuilderParams(tags); @@ -189,7 +167,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) uint32_t const addrType = GetType({"building", "address"}); { // Single house number tag is transformed into address type. - Tags const tags = { {"addr:housenumber", "42"} }; + Tags const tags = {{"addr:housenumber", "42"}}; auto const params = GetFeatureBuilderParams(tags); @@ -200,15 +178,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) } { - Tags const tags = { - { "addr:conscriptionnumber", "223" }, - { "addr:housenumber", "223/5" }, - { "addr:postcode", "11000" }, - { "addr:street", "Řetězová" }, - { "addr:streetnumber", "5" }, - { "source:addr", "uir_adr" }, - { "uir_adr:ADRESA_KOD", "21717036" } - }; + Tags const tags = {{"addr:conscriptionnumber", "223"}, {"addr:housenumber", "223/5"}, {"addr:postcode", "11000"}, + {"addr:street", "Řetězová"}, {"addr:streetnumber", "5"}, {"source:addr", "uir_adr"}, + {"uir_adr:ADRESA_KOD", "21717036"}}; auto const params = GetFeatureBuilderParams(tags); @@ -222,14 +194,10 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) { Tags const tags = { - {"addr:city", "Zürich"}, - {"addr:housenumber", "41"}, - {"addr:postcode", "8050"}, - {"addr:street", "Leutschenbachstrasse"}, - {"entrance", "main"}, - {"survey:date", "2020-12-17"}, - {"wheelchair", "no"}, - {"internet_access", "wlan"}, + {"addr:city", "Zürich"}, {"addr:housenumber", "41"}, + {"addr:postcode", "8050"}, {"addr:street", "Leutschenbachstrasse"}, + {"entrance", "main"}, {"survey:date", "2020-12-17"}, + {"wheelchair", "no"}, {"internet_access", "wlan"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -246,13 +214,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) { Tags const tags = { - {"addr:city", "Šķaune"}, - {"addr:country", "LV"}, - {"addr:district", "Krāslavas novads"}, - {"addr:housename", "Rozemnieki"}, - {"addr:postcode", "LV-5695"}, - {"addr:subdistrict", "Šķaunes pagasts"}, - {"ref:LV:addr", "104934702"}, + {"addr:city", "Šķaune"}, {"addr:country", "LV"}, {"addr:district", "Krāslavas novads"}, + {"addr:housename", "Rozemnieki"}, {"addr:postcode", "LV-5695"}, {"addr:subdistrict", "Šķaunes pagasts"}, + {"ref:LV:addr", "104934702"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -267,19 +231,19 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) { Tags const tags = { - {"building", "yes"}, - {"contact:city", "Paris"}, - {"contact:housenumber", "13"}, - {"contact:phone", "+33 1 44 77 60 60"}, - {"contact:postcode", "75001"}, - {"contact:street", "Place Vendôme"}, - {"contact:website", "https://www.justice.gouv.fr/"}, - {"government", "ministry"}, - {"historic", "manor"}, - {"layer", "1"}, - {"name", "Ministère de la Justice"}, - {"office", "government"}, - {"wikidata", "Q3145763"}, + {"building", "yes"}, + {"contact:city", "Paris"}, + {"contact:housenumber", "13"}, + {"contact:phone", "+33 1 44 77 60 60"}, + {"contact:postcode", "75001"}, + {"contact:street", "Place Vendôme"}, + {"contact:website", "https://www.justice.gouv.fr/"}, + {"government", "ministry"}, + {"historic", "manor"}, + {"layer", "1"}, + {"name", "Ministère de la Justice"}, + {"office", "government"}, + {"wikidata", "Q3145763"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -292,15 +256,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) { Tags const tags = { - {"addr:city", "München"}, - {"addr:country", "DE"}, - {"addr:housenumber", "27"}, - {"addr:postcode", "80339"}, - {"addr:street", "Ligsalzstraße"}, - {"clothes", "children"}, - {"disused:shop", "clothes"}, - {"name", "Westendprinz"}, - {"operator", "Meike Hannig"}, + {"addr:city", "München"}, {"addr:country", "DE"}, {"addr:housenumber", "27"}, + {"addr:postcode", "80339"}, {"addr:street", "Ligsalzstraße"}, {"clothes", "children"}, + {"disused:shop", "clothes"}, {"name", "Westendprinz"}, {"operator", "Meike Hannig"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -318,17 +276,15 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Address) UNIT_CLASS_TEST(TestWithClassificator, OsmType_PlaceState) { - Tags const tags = { - { "alt_name:vi", "California" }, - { "is_in", "USA" }, - { "is_in:continent", "North America" }, - { "is_in:country", "USA" }, - { "is_in:country_code", "us" }, - { "name", "California" }, - { "place", "state" }, - { "population", "37253956" }, - { "ref", "CA" } - }; + Tags const tags = {{"alt_name:vi", "California"}, + {"is_in", "USA"}, + {"is_in:continent", "North America"}, + {"is_in:country", "USA"}, + {"is_in:country_code", "us"}, + {"name", "California"}, + {"place", "state"}, + {"population", "37253956"}, + {"ref", "CA"}}; auto const params = GetFeatureBuilderParams(tags); @@ -343,36 +299,31 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_PlaceState) UNIT_CLASS_TEST(TestWithClassificator, OsmType_AlabamaRiver) { - Tags const tags1 = { - { "NHD:FCode", "55800" }, - { "NHD:FType", "558" }, - { "NHD:RESOLUTION", "2" }, - { "NHD:way_id", "139286586;139286577;139286596;139286565;139286574;139286508;139286600;139286591;139286507;139286505;139286611;139286602;139286594;139286604;139286615;139286616;139286608;139286514;139286511;139286564;139286576;139286521;139286554" }, - { "attribution", "NHD" }, - { "boat", "yes" }, - { "deep_draft", "no" }, - { "gnis:feature_id", "00517033" }, - { "name", "Tennessee River" }, - { "ship", "yes" }, - { "source", "NHD_import_v0.4_20100913205417" }, - { "source:deep_draft", "National Transportation Atlas Database 2011" }, - { "waterway", "river" } - }; + Tags const tags1 = {{"NHD:FCode", "55800"}, + {"NHD:FType", "558"}, + {"NHD:RESOLUTION", "2"}, + {"NHD:way_id", + "139286586;139286577;139286596;139286565;139286574;139286508;139286600;139286591;139286507;" + "139286505;139286611;139286602;139286594;139286604;139286615;139286616;139286608;139286514;" + "139286511;139286564;139286576;139286521;139286554"}, + {"attribution", "NHD"}, + {"boat", "yes"}, + {"deep_draft", "no"}, + {"gnis:feature_id", "00517033"}, + {"name", "Tennessee River"}, + {"ship", "yes"}, + {"source", "NHD_import_v0.4_20100913205417"}, + {"source:deep_draft", "National Transportation Atlas Database 2011"}, + {"waterway", "river"}}; Tags const tags2 = { - { "destination", "Ohio River" }, - { "name", "Tennessee River" }, - { "type", "waterway" }, - { "waterway", "river" } - }; + {"destination", "Ohio River"}, {"name", "Tennessee River"}, {"type", "waterway"}, {"waterway", "river"}}; - Tags const tags3 = { - { "name", "Tennessee River" }, - { "network", "inland waterways" }, - { "route", "boat" }, - { "ship", "yes" }, - { "type", "route" } - }; + Tags const tags3 = {{"name", "Tennessee River"}, + {"network", "inland waterways"}, + {"route", "boat"}, + {"ship", "yes"}, + {"type", "route"}}; OsmElement e; FillXmlElement(tags1, &e); @@ -391,13 +342,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Synonyms) // Smoke test. { Tags const tags = { - { "building", "yes" }, - { "atm", "yes" }, - { "shop", "yes" }, - { "restaurant", "yes" }, - { "hotel", "yes" }, - { "toilets", "yes" }, - { "drinkable", "yes"}, + {"building", "yes"}, {"atm", "yes"}, {"shop", "yes"}, {"restaurant", "yes"}, + {"hotel", "yes"}, {"toilets", "yes"}, {"drinkable", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -415,10 +361,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Synonyms) // Duplicating test. { - Tags const tags = { - { "amenity", "atm" }, - { "atm", "yes" } - }; + Tags const tags = {{"amenity", "atm"}, {"atm", "yes"}}; auto const params = GetFeatureBuilderParams(tags); @@ -428,11 +371,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Synonyms) // "NO" tag test. { - Tags const tags = { - { "building", "yes" }, - { "shop", "no" }, - { "atm", "no" } - }; + Tags const tags = {{"building", "yes"}, {"shop", "no"}, {"atm", "no"}}; auto const params = GetFeatureBuilderParams(tags); @@ -445,8 +384,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Capital) { { Tags const tags = { - { "capital", "6" }, - { "place", "city" }, + {"capital", "6"}, + {"place", "city"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -457,9 +396,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Capital) { Tags const tags = { - { "admin_level", "6" }, - { "capital", "no" }, - { "place", "city" }, + {"admin_level", "6"}, + {"capital", "no"}, + {"place", "city"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -470,10 +409,10 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Capital) { Tags const tags = { - {"boundary", "administrative"}, - {"capital", "2"}, - {"place", "city"}, - {"admin_level", "4"}, + {"boundary", "administrative"}, + {"capital", "2"}, + {"place", "city"}, + {"admin_level", "4"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -486,9 +425,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Capital) { Tags const tags = { - {"capital", "yes"}, - {"place", "town"}, - {"admin_level", "7"}, + {"capital", "yes"}, + {"place", "town"}, + {"admin_level", "7"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -500,8 +439,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Capital) { Tags const tags = { - {"capital", "yes"}, - {"admin_level", "7"}, + {"capital", "yes"}, + {"admin_level", "7"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -514,8 +453,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_DePlace) { { Tags const tags = { - {"de:place", "town"}, - {"name", "xyz"}, + {"de:place", "town"}, + {"name", "xyz"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -529,15 +468,12 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_DePlace) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Route) { { - Tags const tags = { - { "highway", "motorway" }, - { "ref", "I 95" } - }; + Tags const tags = {{"highway", "motorway"}, {"ref", "I 95"}}; auto const params = GetFeatureBuilderParams(tags); TEST_EQUAL(params.m_types.size(), 1, (params)); - TEST(params.IsTypeExist(GetType({ "highway", "motorway" })), ()); + TEST(params.IsTypeExist(GetType({"highway", "motorway"})), ()); TEST_EQUAL(params.ref, "I 95", ()); } } @@ -546,9 +482,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Layer) { { Tags const tags = { - { "highway", "motorway" }, - { "bridge", "yes" }, - { "layer", "2" }, + {"highway", "motorway"}, + {"bridge", "yes"}, + {"layer", "2"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -560,9 +496,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Layer) { Tags const tags = { - { "highway", "trunk" }, - { "tunnel", "yes" }, - { "layer", "-1" }, + {"highway", "trunk"}, + {"tunnel", "yes"}, + {"layer", "-1"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -574,8 +510,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Layer) { Tags const tags = { - { "highway", "secondary" }, - { "bridge", "yes" }, + {"highway", "secondary"}, + {"bridge", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -602,8 +538,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Layer) { Tags const tags = { - { "highway", "primary" }, - { "tunnel", "yes" }, + {"highway", "primary"}, + {"tunnel", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -615,7 +551,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Layer) { Tags const tags = { - { "highway", "living_street" }, + {"highway", "living_street"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -630,8 +566,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Amenity) { { Tags const tags = { - { "amenity", "bbq" }, - { "fuel", "wood" }, + {"amenity", "bbq"}, + {"fuel", "wood"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -645,9 +581,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) { { Tags const tags = { - { "railway", "light_rail" }, - { "access", "private" }, - { "oneway", "true" }, + {"railway", "light_rail"}, + {"access", "private"}, + {"oneway", "true"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -658,14 +594,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) { Tags const tags = { - {"oneway", "-1"}, - {"highway", "primary"}, - {"access", "private"}, - {"lit", "no"}, - {"foot", "no"}, - {"bicycle", "yes"}, - {"oneway:bicycle", "no"}, - {"motor_vehicle", "yes"}, + {"oneway", "-1"}, {"highway", "primary"}, {"access", "private"}, {"lit", "no"}, + {"foot", "no"}, {"bicycle", "yes"}, {"oneway:bicycle", "no"}, {"motor_vehicle", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -678,7 +608,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) TEST(params.IsTypeExist(GetType({"hwtag", "yesbicycle"})), ()); TEST(params.IsTypeExist(GetType({"hwtag", "bidir_bicycle"})), ()); // We don't put yescar tag for features that already Yes by default. - //TEST(params.IsTypeExist(GetType({"hwtag", "yescar"})), ()); + // TEST(params.IsTypeExist(GetType({"hwtag", "yescar"})), ()); } { @@ -711,7 +641,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) TEST(params.IsTypeExist(GetType({"hwtag", "nofoot"})), ()); TEST(params.IsTypeExist(GetType({"hwtag", "nocycleway"})), ()); // No cycleway doesn't mean that bicycle is not allowed. - //TEST(params.IsTypeExist(GetType({"hwtag", "nobicycle"})), ()); + // TEST(params.IsTypeExist(GetType({"hwtag", "nobicycle"})), ()); } { @@ -743,12 +673,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) { Tags const tags = { - {"foot", "no"}, - {"bicycle", "no"}, - {"sidewalk:left", "yes"}, - {"cycleway:right", "yes"}, - {"highway", "trunk"}, - {"motorcar", "designated"}, + {"foot", "no"}, {"bicycle", "no"}, {"sidewalk:left", "yes"}, {"cycleway:right", "yes"}, + {"highway", "trunk"}, {"motorcar", "designated"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -757,16 +683,12 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) TEST(params.IsTypeExist(GetType({"highway", "trunk"})), ()); TEST(params.IsTypeExist(GetType({"hwtag", "nofoot"})), ()); TEST(params.IsTypeExist(GetType({"hwtag", "nobicycle"})), ()); - //TEST(params.IsTypeExist(GetType({"hwtag", "yescar"})), ()); + // TEST(params.IsTypeExist(GetType({"hwtag", "yescar"})), ()); } { Tags const tags = { - {"foot", "yes"}, - {"bicycle", "yes"}, - {"sidewalk", "no"}, - {"cycleway", "no"}, - {"highway", "path"}, + {"foot", "yes"}, {"bicycle", "yes"}, {"sidewalk", "no"}, {"cycleway", "no"}, {"highway", "path"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -794,20 +716,20 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hwtag) { Tags const tags = { - {"bench", "yes"}, - {"bicycle", "yes"}, - {"bin", "yes"}, - {"foot", "designated"}, - {"highway", "footway"}, - {"lit", "yes"}, - {"public_transport", "platform"}, - {"railway", "platform"}, - {"shelter", "yes"}, - {"smoothness", "good"}, - {"surface", "paving_stones"}, - {"tactile_paving", "yes"}, - {"traffic_sign", "DE:239,DE:1022-10"}, - {"tram", "yes"}, + {"bench", "yes"}, + {"bicycle", "yes"}, + {"bin", "yes"}, + {"foot", "designated"}, + {"highway", "footway"}, + {"lit", "yes"}, + {"public_transport", "platform"}, + {"railway", "platform"}, + {"shelter", "yes"}, + {"smoothness", "good"}, + {"surface", "paving_stones"}, + {"tactile_paving", "yes"}, + {"traffic_sign", "DE:239,DE:1022-10"}, + {"tram", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -930,9 +852,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Surface) { Tags const tags = { - {"highway", "track"}, - {"tracktype", "grade1"}, - {"smoothness", "intermediate"}, + {"highway", "track"}, + {"tracktype", "grade1"}, + {"smoothness", "intermediate"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -956,7 +878,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Ferry) { Tags const tags = { - { "route", "ferry" }, + {"route", "ferry"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -968,16 +890,16 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Ferry) uint32_t const shuttleType = GetType({"route", "shuttle_train"}); /// @todo Strange, but they are processed by foot/bicycle=yes/no in VehicleModel. - //TEST(routing::PedestrianModel::AllLimitsInstance().IsRoadType(shuttleType), ()); - //TEST(routing::BicycleModel::AllLimitsInstance().IsRoadType(shuttleType), ()); + // TEST(routing::PedestrianModel::AllLimitsInstance().IsRoadType(shuttleType), ()); + // TEST(routing::BicycleModel::AllLimitsInstance().IsRoadType(shuttleType), ()); TEST(routing::CarModel::AllLimitsInstance().IsRoadType(shuttleType), ()); { Tags const tags = { - { "route", "shuttle_train" }, - { "bicycle", "yes" }, - { "foot", "no" }, - { "motorcar", "yes" }, + {"route", "shuttle_train"}, + {"bicycle", "yes"}, + {"foot", "no"}, + {"motorcar", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -991,9 +913,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Ferry) { Tags const tags = { - { "route", "train" }, - { "shuttle", "yes" }, - { "motor_vehicle", "yes" }, + {"route", "train"}, + {"shuttle", "yes"}, + {"motor_vehicle", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1005,8 +927,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Ferry) { Tags const tags = { - { "route", "train" }, - { "shuttle", "no" }, + {"route", "train"}, + {"shuttle", "no"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1016,10 +938,10 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Ferry) { Tags const tags = { - { "foot", "no" }, - { "bicycle", "no" }, - { "motorcar", "yes" }, - { "route", "ferry" }, + {"foot", "no"}, + {"bicycle", "no"}, + {"motorcar", "yes"}, + {"route", "ferry"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1055,10 +977,10 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Boundary) { { Tags const tags = { - { "admin_level", "4" }, - { "boundary", "administrative" }, - { "admin_level", "2" }, - { "boundary", "administrative" }, + {"admin_level", "4"}, + {"boundary", "administrative"}, + {"admin_level", "2"}, + {"boundary", "administrative"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1070,8 +992,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Boundary) { Tags const tags = { - { "protect_class", "1b" }, - { "boundary", "protected_area" }, + {"protect_class", "1b"}, + {"boundary", "protected_area"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1084,15 +1006,15 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Boundary) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Dibrugarh) { Tags const tags = { - { "AND_a_c", "10001373" }, - { "addr:city", "Dibrugarh" }, - { "addr:housenumber", "hotel vishal" }, - { "addr:postcode", "786001" }, - { "addr:street", "Marwari Patty,Puja Ghat" }, - { "name", "Dibrugarh" }, - { "phone", "03732320016" }, - { "place", "city" }, - { "website", "http://www.hotelvishal.in" }, + {"AND_a_c", "10001373"}, + {"addr:city", "Dibrugarh"}, + {"addr:housenumber", "hotel vishal"}, + {"addr:postcode", "786001"}, + {"addr:street", "Marwari Patty,Puja Ghat"}, + {"name", "Dibrugarh"}, + {"phone", "03732320016"}, + {"place", "city"}, + {"website", "http://www.hotelvishal.in"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1108,11 +1030,11 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { { Tags const tags = { - { "network", "Московский метрополитен" }, - { "operator", "ГУП «Московский метрополитен»" }, - { "railway", "station" }, - { "station", "subway" }, - { "transport", "subway" }, + {"network", "Московский метрополитен"}, + {"operator", "ГУП «Московский метрополитен»"}, + {"railway", "station"}, + {"station", "subway"}, + {"transport", "subway"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1123,11 +1045,11 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - {"name", "14th Street-8th Avenue (A,C,E,L)"}, - {"network", "New York City Subway"}, - {"railway", "station"}, - {"wheelchair", "yes"}, - {"transport", "subway"}, + {"name", "14th Street-8th Avenue (A,C,E,L)"}, + {"network", "New York City Subway"}, + {"railway", "station"}, + {"wheelchair", "yes"}, + {"transport", "subway"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1138,12 +1060,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - { "name", "S Landsberger Allee" }, - { "phone", "030 29743333" }, - { "public_transport", "stop_position" }, - { "railway", "station" }, - { "network", "New York City Subway" }, - { "station", "light_rail" }, + {"name", "S Landsberger Allee"}, {"phone", "030 29743333"}, {"public_transport", "stop_position"}, + {"railway", "station"}, {"network", "New York City Subway"}, {"station", "light_rail"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1154,14 +1072,14 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - { "monorail", "yes" }, - { "name", "Улица Академика Королёва" }, - { "network", "Московский метрополитен" }, - { "operator", "ГУП «Московский метрополитен»" }, - { "public_transport", "stop_position" }, - { "railway", "station" }, - { "station", "monorail" }, - { "transport", "monorail" }, + {"monorail", "yes"}, + {"name", "Улица Академика Королёва"}, + {"network", "Московский метрополитен"}, + {"operator", "ГУП «Московский метрополитен»"}, + {"public_transport", "stop_position"}, + {"railway", "station"}, + {"station", "monorail"}, + {"transport", "monorail"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1172,11 +1090,11 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - { "line", "Northern, Bakerloo" }, - { "name", "Charing Cross" }, - { "network", "London Underground" }, - { "operator", "TfL" }, - { "railway", "station" }, + {"line", "Northern, Bakerloo"}, + {"name", "Charing Cross"}, + {"network", "London Underground"}, + {"operator", "TfL"}, + {"railway", "station"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1187,25 +1105,25 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - { "artist_name", "Архитекторы: Н.Лопато, В.Шкарупин, В.Телепнев Скульптор: Л.Зильбер. Дизайнер: Н.Грибов" }, - { "colour", "red" }, - { "int_name", "Frunzienskaja" }, - { "name", "Фрунзенская" }, - { "name:be", "Фрунзенская" }, - { "name:en", "Frunzienskaja" }, - { "name:ru", "Фрунзенская" }, - { "network", "Минский метрополитен" }, - { "operator", "КУП «Минский метрополитен»" }, - { "public_transport", "stop_position" }, - { "railway", "station" }, - { "ref", "218" }, - { "start_date", "1990-12-31" }, - { "station", "subway" }, - { "subway", "yes" }, - { "transport", "subway" }, - { "website", "https://metropoliten.by/sxema-linii/54/224/" }, - { "wheelchair", "no" }, - { "wikidata", "Q2445504" }, + {"artist_name", "Архитекторы: Н.Лопато, В.Шкарупин, В.Телепнев Скульптор: Л.Зильбер. Дизайнер: Н.Грибов"}, + {"colour", "red"}, + {"int_name", "Frunzienskaja"}, + {"name", "Фрунзенская"}, + {"name:be", "Фрунзенская"}, + {"name:en", "Frunzienskaja"}, + {"name:ru", "Фрунзенская"}, + {"network", "Минский метрополитен"}, + {"operator", "КУП «Минский метрополитен»"}, + {"public_transport", "stop_position"}, + {"railway", "station"}, + {"ref", "218"}, + {"start_date", "1990-12-31"}, + {"station", "subway"}, + {"subway", "yes"}, + {"transport", "subway"}, + {"website", "https://metropoliten.by/sxema-linii/54/224/"}, + {"wheelchair", "no"}, + {"wikidata", "Q2445504"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1217,26 +1135,26 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Subway) { Tags const tags = { - { "artist_name", "Архитектор: В. Лопато" }, - { "colour", "green" }, - { "int_name", "Jubiliejnaja plošča" }, - { "layer", "-5" }, - { "line", "Зеленый Луг" }, - { "name", "Юбілейная плошча" }, - { "name:be", "Юбілейная плошча" }, - { "name:ru", "Юбилейная площадь" }, - { "network", "Минский метрополитен" }, - { "operator", "КУП «Минский метрополитен»" }, - { "public_transport", "stop_position" }, - { "railway", "station" }, - { "ref", "316" }, - { "start_date", "2020-11-06" }, - { "station", "subway" }, - { "subway", "yes" }, - { "transport", "subway" }, - { "website", "https://metropoliten.by/sxema-linii/91/2781/" }, - { "wikidata", "Q4365831" }, - { "wikipedia", "be:Юбілейная плошча (станцыя метро)" }, + {"artist_name", "Архитектор: В. Лопато"}, + {"colour", "green"}, + {"int_name", "Jubiliejnaja plošča"}, + {"layer", "-5"}, + {"line", "Зеленый Луг"}, + {"name", "Юбілейная плошча"}, + {"name:be", "Юбілейная плошча"}, + {"name:ru", "Юбилейная площадь"}, + {"network", "Минский метрополитен"}, + {"operator", "КУП «Минский метрополитен»"}, + {"public_transport", "stop_position"}, + {"railway", "station"}, + {"ref", "316"}, + {"start_date", "2020-11-06"}, + {"station", "subway"}, + {"subway", "yes"}, + {"transport", "subway"}, + {"website", "https://metropoliten.by/sxema-linii/91/2781/"}, + {"wikidata", "Q4365831"}, + {"wikipedia", "be:Юбілейная плошча (станцыя метро)"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1250,9 +1168,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_PublicTransport) { { Tags const tags = { - { "name", "Платонава" }, - { "public_transport", "stop_position" }, - { "tram", "yes" }, + {"name", "Платонава"}, + {"public_transport", "stop_position"}, + {"tram", "yes"}, }; auto const params = GetFeatureBuilderParams(tags, OsmElement::EntityType::Node); @@ -1263,9 +1181,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_PublicTransport) { Tags const tags = { - { "funicular", "yes" }, - { "name", "Gare Pfaffenthal-Kirchberg" }, - { "public_transport", "stop_position" }, + {"funicular", "yes"}, + {"name", "Gare Pfaffenthal-Kirchberg"}, + {"public_transport", "stop_position"}, }; auto const params = GetFeatureBuilderParams(tags, OsmElement::EntityType::Node); @@ -1279,7 +1197,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hospital) { { Tags const tags = { - { "building", "hospital" }, + {"building", "hospital"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1290,8 +1208,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hospital) { Tags const tags = { - { "building", "yes" }, - { "amenity", "hospital" }, + {"building", "yes"}, + {"amenity", "hospital"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1306,8 +1224,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Entrance) { { Tags const tags = { - { "building", "entrance" }, - { "barrier", "entrance" }, + {"building", "entrance"}, + {"barrier", "entrance"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1322,24 +1240,24 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Moscow) { { Tags const tags = { - { "addr:country", "RU" }, - { "addr:region", "Москва" }, - { "admin_level", "2" }, - { "alt_name:vi", "Mạc Tư Khoa" }, - { "capital", "yes" }, - { "ele", "156" }, - { "int_name", "Moscow" }, - { "is_capital", "country" }, - { "ISO3166-2", "RU-MOW" }, - { "name", "Москва" }, - { "note", "эта точка должна быть здесь, в историческом центре Москвы" }, - { "official_status", "ru:город" }, - { "okato:user", "none" }, - { "place", "city" }, - { "population", "12108257" }, - { "population:date", "2014-01-01" }, - { "rank", "0" }, - { "wikipedia", "ru:Москва" }, + {"addr:country", "RU"}, + {"addr:region", "Москва"}, + {"admin_level", "2"}, + {"alt_name:vi", "Mạc Tư Khoa"}, + {"capital", "yes"}, + {"ele", "156"}, + {"int_name", "Moscow"}, + {"is_capital", "country"}, + {"ISO3166-2", "RU-MOW"}, + {"name", "Москва"}, + {"note", "эта точка должна быть здесь, в историческом центре Москвы"}, + {"official_status", "ru:город"}, + {"okato:user", "none"}, + {"place", "city"}, + {"population", "12108257"}, + {"population:date", "2014-01-01"}, + {"rank", "0"}, + {"wikipedia", "ru:Москва"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1353,15 +1271,13 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Moscow) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Translations) { - Tags const tags = { - { "name", "Paris" }, - { "name:ru", "Париж" }, - { "name:en", "Paris" }, - { "name:en:pronunciation", "ˈpæɹ.ɪs" }, - { "name:fr:pronunciation", "paʁi" }, - { "place", "city" }, - { "population", "2243833" } - }; + Tags const tags = {{"name", "Paris"}, + {"name:ru", "Париж"}, + {"name:en", "Paris"}, + {"name:en:pronunciation", "ˈpæɹ.ɪs"}, + {"name:fr:pronunciation", "paʁi"}, + {"place", "city"}, + {"population", "2243833"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1382,7 +1298,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Cuisine) { { Tags const tags = { - { "cuisine", "indian ; steak,coffee shop " }, + {"cuisine", "indian ; steak,coffee shop "}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1397,20 +1313,18 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Cuisine) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hotel) { using Type = std::vector; - std::vector, Tags>> const types = { - { - {{"tourism", "hotel"}}, - {{"tourism", "hotel"}}, - }, - { - {{"building"}}, - {{"building", "hotel"}}, - }, - { - {{"tourism", "hotel"}}, - {{"hotel", "yes"}}, - } - }; + std::vector, Tags>> const types = {{ + {{"tourism", "hotel"}}, + {{"tourism", "hotel"}}, + }, + { + {{"building"}}, + {{"building", "hotel"}}, + }, + { + {{"tourism", "hotel"}}, + {{"hotel", "yes"}}, + }}; for (auto const & t : types) { @@ -1424,11 +1338,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Hotel) UNIT_CLASS_TEST(TestWithClassificator, OsmType_OldName) { { - Tags const tags = { - {"highway", "residential"}, - {"name", "Улица Веткина"}, - {"old_name", "Царская Ветка"} - }; + Tags const tags = {{"highway", "residential"}, {"name", "Улица Веткина"}, {"old_name", "Царская Ветка"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1462,10 +1372,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_AltName) { { Tags const tags = { - {"tourism", "museum"}, - {"name", "Московский музей современного искусства"}, - {"alt_name", "MMOMA"} - }; + {"tourism", "museum"}, {"name", "Московский музей современного искусства"}, {"alt_name", "MMOMA"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1477,10 +1384,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_AltName) } { Tags const tags = { - {"tourism", "museum"}, - {"name", "Московский музей современного искусства"}, - {"alt_name:en", "MMOMA"} - }; + {"tourism", "museum"}, {"name", "Московский музей современного искусства"}, {"alt_name:en", "MMOMA"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1495,11 +1399,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_AltName) UNIT_CLASS_TEST(TestWithClassificator, OsmType_NameJaKana) { { - Tags const tags = { - {"place", "city"}, - {"name", "Tokyo"}, - {"name:ja_kana", "トウキョウト"} - }; + Tags const tags = {{"place", "city"}, {"name", "Tokyo"}, {"name:ja_kana", "トウキョウト"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1510,11 +1410,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_NameJaKana) TEST_EQUAL(s, "トウキョウト", ()); } { - Tags const tags = { - {"place", "city"}, - {"name", "Tokyo"}, - {"name:ja-Hira", "とうきょうと"} - }; + Tags const tags = {{"place", "city"}, {"name", "Tokyo"}, {"name:ja-Hira", "とうきょうと"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1527,11 +1423,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_NameJaKana) } { Tags const tags = { - {"place", "city"}, - {"name", "Tokyo"}, - {"name:ja_kana", "トウキョウト"}, - {"name:ja-Hira", "とうきょうと"} - }; + {"place", "city"}, {"name", "Tokyo"}, {"name:ja_kana", "トウキョウト"}, {"name:ja-Hira", "とうきょうと"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1544,11 +1436,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_NameJaKana) } { Tags const tags = { - {"place", "city"}, - {"name", "Tokyo"}, - {"name:ja-Hira", "とうきょうと"}, - {"name:ja_kana", "トウキョウト"} - }; + {"place", "city"}, {"name", "Tokyo"}, {"name:ja-Hira", "とうきょうと"}, {"name:ja_kana", "トウキョウト"}}; auto const params = GetFeatureBuilderParams(tags); @@ -1735,11 +1623,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_NoExit) UNIT_CLASS_TEST(TestWithClassificator, OsmType_Junctions) { - for (char const * value : { "yes", "jughandle" }) + for (char const * value : {"yes", "jughandle"}) { - Tags const tags = { - {"junction", value } - }; + Tags const tags = {{"junction", value}}; // Useless now, because they don't have any rules and are not set as an exception. auto const params = GetFeatureBuilderParams(tags); @@ -1752,9 +1638,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Recycling) { { Tags const tags = { - {"amenity", "recycling" }, - {"recycling:glass_bottles", "yes"}, - {"recycling:green_waste", "yes"}, + {"amenity", "recycling"}, + {"recycling:glass_bottles", "yes"}, + {"recycling:green_waste", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1767,11 +1653,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Recycling) { Tags const tags = { - {"amenity", "recycling" }, - {"recycling_type", "centre"}, - {"recycling:garden_waste", "no"}, - {"recycling:organic", "no"}, - {"recycling:glass", "yes"}, + {"amenity", "recycling"}, {"recycling_type", "centre"}, {"recycling:garden_waste", "no"}, + {"recycling:organic", "no"}, {"recycling:glass", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1783,10 +1666,10 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Recycling) { Tags const tags = { - {"amenity", "recycling" }, - {"recycling_type", "container"}, - {"recycling:metal", "yes"}, - {"recycling:batteries", "yes"}, + {"amenity", "recycling"}, + {"recycling_type", "container"}, + {"recycling:metal", "yes"}, + {"recycling:batteries", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1813,8 +1696,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Metadata) { Tags const tags = { - {"amenity", "restaurant" }, - {"description:ru", "Хорошие настойки"}, + {"amenity", "restaurant"}, + {"description:ru", "Хорошие настойки"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1826,13 +1709,13 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Metadata) { Tags const tags = { - {"amenity", "atm" }, - {"operator", "Default"}, - {"operator:en", "English"}, - {"brand::kk", "KK language"}, - {"brand:en", "English"}, - {"description", "Default"}, - {"description::kk", "KK language"}, + {"amenity", "atm"}, + {"operator", "Default"}, + {"operator:en", "English"}, + {"brand::kk", "KK language"}, + {"brand:en", "English"}, + {"description", "Default"}, + {"description::kk", "KK language"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1845,11 +1728,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Metadata) { Tags const tags = { - {"amenity", "cafe"}, - {"internet_access", "wlan"}, - {"internet_access:password", "corrientes4199"}, - {"name", "Jimbo"}, - {"wifi", "corrientes4199"}, + {"amenity", "cafe"}, {"internet_access", "wlan"}, {"internet_access:password", "corrientes4199"}, + {"name", "Jimbo"}, {"wifi", "corrientes4199"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1864,8 +1744,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Vending) { { Tags const tags = { - {"amenity", "vending_machine" }, - {"vending", "parcel_pickup;parcel_mail_in"}, + {"amenity", "vending_machine"}, + {"vending", "parcel_pickup;parcel_mail_in"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1879,8 +1759,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Cliff) { { Tags const tags = { - {"cliff", "yes"}, - {"natural", "ridge" }, + {"cliff", "yes"}, + {"natural", "ridge"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1893,8 +1773,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Organic) { { Tags const tags = { - {"organic", "only"}, - {"amenity", "cafe" }, + {"organic", "only"}, + {"amenity", "cafe"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1906,8 +1786,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Organic) { Tags const tags = { - {"organic", "no"}, - {"shop", "bakery" }, + {"organic", "no"}, + {"shop", "bakery"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1921,9 +1801,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Internet) { { Tags const tags = { - {"internet_access", "no"}, - {"wifi", "no"}, - {"amenity", "cafe"}, + {"internet_access", "no"}, + {"wifi", "no"}, + {"amenity", "cafe"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1934,8 +1814,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Internet) { Tags const tags = { - {"internet_access", "wlan"}, - {"office", "it"}, + {"internet_access", "wlan"}, + {"office", "it"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1947,29 +1827,29 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_Internet) { Tags const tags = { - {"wifi", "free"}, - {"internet_access", "yes"}, - {"shop", "clothes"}, + {"wifi", "free"}, + {"internet_access", "yes"}, + {"shop", "clothes"}, }; auto const params = GetFeatureBuilderParams(tags); TEST_EQUAL(params.m_types.size(), 2, (params)); - TEST(params.IsTypeExist(GetType({"shop", "clothes" })), (params)); + TEST(params.IsTypeExist(GetType({"shop", "clothes"})), (params)); TEST(params.IsTypeExist(GetType({"internet_access", "wlan"})), (params)); } { Tags const tags = { - {"wifi", "no"}, - {"internet_access", "terminal"}, - {"amenity", "internet_cafe"}, + {"wifi", "no"}, + {"internet_access", "terminal"}, + {"amenity", "internet_cafe"}, }; auto const params = GetFeatureBuilderParams(tags); TEST_EQUAL(params.m_types.size(), 2, (params)); - TEST(params.IsTypeExist(GetType({"amenity", "internet_cafe" })), (params)); + TEST(params.IsTypeExist(GetType({"amenity", "internet_cafe"})), (params)); TEST(params.IsTypeExist(GetType({"internet_access"})), (params)); } } @@ -1979,9 +1859,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_MilitaryDanger) { { Tags const tags = { - {"landuse", "military"}, - {"military", "danger_area"}, - {"wikipedia", "xxx"}, + {"landuse", "military"}, + {"military", "danger_area"}, + {"wikipedia", "xxx"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -1992,9 +1872,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_MilitaryDanger) { Tags const tags = { - {"landuse", "military"}, - {"military", "cordon"}, - {"wikipedia", "xxx"}, + {"landuse", "military"}, + {"military", "cordon"}, + {"wikipedia", "xxx"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -2005,8 +1885,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_MilitaryDanger) { Tags const tags = { - {"landuse", "military"}, - {"military", "danger_area"}, + {"landuse", "military"}, + {"military", "danger_area"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -2021,8 +1901,8 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_ChargingStation) { { Tags const tags = { - {"amenity", "charging_station"}, - {"motorcar", "no"}, + {"amenity", "charging_station"}, + {"motorcar", "no"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -2033,9 +1913,9 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_ChargingStation) { Tags const tags = { - {"amenity", "charging_station"}, - {"bicycle", "yes"}, - {"motorcar", "yes"}, + {"amenity", "charging_station"}, + {"bicycle", "yes"}, + {"motorcar", "yes"}, }; auto const params = GetFeatureBuilderParams(tags); @@ -2050,70 +1930,102 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_RailwayRail) { using Type = std::vector; std::vector> const railTypes = { - {{"railway", "rail", "highspeed"}, {{"railway", "rail"}, {"highspeed", "positive_value"}}}, - {{"railway", "rail", "highspeed"}, {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}}}, - {{"railway", "rail", "tourism"}, {{"railway", "rail"}, {"usage", "tourism"}}}, - {{"railway", "rail", "main"}, {{"railway", "rail"}, {"usage", "main"}}}, - {{"railway", "rail", "branch"}, {{"railway", "rail"}, {"usage", "branch"}}}, - {{"railway", "rail", "branch"}, {{"railway", "rail"}}}, - {{"railway", "rail", "utility"}, {{"railway", "rail"}, {"usage", "military"}}}, - {{"railway", "rail", "utility"}, {{"railway", "rail"}, {"usage", "industrial"}, {"service", "spur"}}}, - {{"railway", "rail", "spur"}, {{"railway", "rail"}, {"service", "spur"}}}, - {{"railway", "rail", "service"}, {{"railway", "rail"}, {"service", "siding"}}}, - {{"railway", "rail", "service"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}}}, - {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "siding"}}}, - {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "branch"}, {"service", "yard"}}}, - {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "crossover"}}}, - // TODO: better match to railway-rail-spur: - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}}}, - // TODO: better match following 3 cases to railway-rail-service: - {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "unsupported_value"}}}, + {{"railway", "rail", "highspeed"}, {{"railway", "rail"}, {"highspeed", "positive_value"}}}, + {{"railway", "rail", "highspeed"}, {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}}}, + {{"railway", "rail", "tourism"}, {{"railway", "rail"}, {"usage", "tourism"}}}, + {{"railway", "rail", "main"}, {{"railway", "rail"}, {"usage", "main"}}}, + {{"railway", "rail", "branch"}, {{"railway", "rail"}, {"usage", "branch"}}}, + {{"railway", "rail", "branch"}, {{"railway", "rail"}}}, + {{"railway", "rail", "utility"}, {{"railway", "rail"}, {"usage", "military"}}}, + {{"railway", "rail", "utility"}, {{"railway", "rail"}, {"usage", "industrial"}, {"service", "spur"}}}, + {{"railway", "rail", "spur"}, {{"railway", "rail"}, {"service", "spur"}}}, + {{"railway", "rail", "service"}, {{"railway", "rail"}, {"service", "siding"}}}, + {{"railway", "rail", "service"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}}}, + {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "siding"}}}, + {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "branch"}, {"service", "yard"}}}, + {{"railway", "rail", "service"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "crossover"}}}, + // TODO: better match to railway-rail-spur: + {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}}}, + // TODO: better match following 3 cases to railway-rail-service: + {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}}}, + {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}}}, + {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "unsupported_value"}}}, - // Bridges (note, railway-rail-bridge should be never matched). - {{"railway", "rail", "highspeed", "bridge"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "highspeed", "bridge"}, {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "tourism", "bridge"}, {{"railway", "rail"}, {"usage", "tourism"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "main", "bridge"}, {{"railway", "rail"}, {"usage", "main"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "branch", "bridge"}, {{"railway", "rail"}, {"usage", "branch"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "branch", "bridge"}, {{"railway", "rail"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "utility", "bridge"}, {{"railway", "rail"}, {"usage", "industrial"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "utility", "bridge"}, {{"railway", "rail"}, {"usage", "military"}, {"service", "spur"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "spur", "bridge"}, {{"railway", "rail"}, {"service", "spur"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "service", "bridge"}, {{"railway", "rail"}, {"service", "yard"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "service", "bridge"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "service", "bridge"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "yard"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "service", "bridge"}, {{"railway", "rail"}, {"usage", "branch"}, {"service", "crossover"}, {"bridge", "positive_value"}}}, - {{"railway", "rail", "service", "bridge"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "siding"}, {"bridge", "positive_value"}}}, - // TODO: better match to railway-rail-spur-bridge: - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"bridge", "positive_value"}}}, - // TODO: better match following 3 cases to railway-rail-service-bridge: - {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}, {"bridge", "positive_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}, {"bridge", "positive_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "unsupported_value"}, {"bridge", "positive_value"}}}, + // Bridges (note, railway-rail-bridge should be never matched). + {{"railway", "rail", "highspeed", "bridge"}, + {{"railway", "rail"}, {"highspeed", "positive_value"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "highspeed", "bridge"}, + {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "tourism", "bridge"}, + {{"railway", "rail"}, {"usage", "tourism"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "main", "bridge"}, {{"railway", "rail"}, {"usage", "main"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "branch", "bridge"}, + {{"railway", "rail"}, {"usage", "branch"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "branch", "bridge"}, {{"railway", "rail"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "utility", "bridge"}, + {{"railway", "rail"}, {"usage", "industrial"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "utility", "bridge"}, + {{"railway", "rail"}, {"usage", "military"}, {"service", "spur"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "spur", "bridge"}, {{"railway", "rail"}, {"service", "spur"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "service", "bridge"}, + {{"railway", "rail"}, {"service", "yard"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "service", "bridge"}, + {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "service", "bridge"}, + {{"railway", "rail"}, {"usage", "main"}, {"service", "yard"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "service", "bridge"}, + {{"railway", "rail"}, {"usage", "branch"}, {"service", "crossover"}, {"bridge", "positive_value"}}}, + {{"railway", "rail", "service", "bridge"}, + {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "siding"}, {"bridge", "positive_value"}}}, + // TODO: better match to railway-rail-spur-bridge: + {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"bridge", "positive_value"}}}, + // TODO: better match following 3 cases to railway-rail-service-bridge: + {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}, {"bridge", "positive_value"}}}, + {{"railway", "rail"}, + {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}, {"bridge", "positive_value"}}}, + {{"railway", "rail"}, + {{"railway", "rail"}, + {"usage", "unsupported_value"}, + {"service", "unsupported_value"}, + {"bridge", "positive_value"}}}, - // Tunnels (note, railway-rail-tunnel should be never matched). - {{"railway", "rail", "highspeed", "tunnel"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "highspeed", "tunnel"}, {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "tourism", "tunnel"}, {{"railway", "rail"}, {"usage", "tourism"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "main", "tunnel"}, {{"railway", "rail"}, {"usage", "main"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "branch", "tunnel"}, {{"railway", "rail"}, {"usage", "branch"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "branch", "tunnel"}, {{"railway", "rail"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "utility", "tunnel"}, {{"railway", "rail"}, {"usage", "industrial"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "utility", "tunnel"}, {{"railway", "rail"}, {"usage", "military"}, {"service", "spur"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "spur", "tunnel"}, {{"railway", "rail"}, {"service", "spur"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "service", "tunnel"}, {{"railway", "rail"}, {"service", "yard"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "service", "tunnel"}, {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "service", "tunnel"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "yard"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "service", "tunnel"}, {{"railway", "rail"}, {"usage", "branch"}, {"service", "crossover"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail", "service", "tunnel"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "siding"}, {"tunnel", "positive_value"}}}, - // TODO: better match to railway-rail-spur-tunnel: - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"tunnel", "positive_value"}}}, - // TODO: better match following 3 cases to railway-rail-service-tunnel: - {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}, {"tunnel", "positive_value"}}}, - {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "unsupported_value"}, {"tunnel", "positive_value"}}}, + // Tunnels (note, railway-rail-tunnel should be never matched). + {{"railway", "rail", "highspeed", "tunnel"}, + {{"railway", "rail"}, {"highspeed", "positive_value"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "highspeed", "tunnel"}, + {{"railway", "rail"}, {"usage", "main"}, {"highspeed", "positive_value"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "tourism", "tunnel"}, + {{"railway", "rail"}, {"usage", "tourism"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "main", "tunnel"}, {{"railway", "rail"}, {"usage", "main"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "branch", "tunnel"}, + {{"railway", "rail"}, {"usage", "branch"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "branch", "tunnel"}, {{"railway", "rail"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "utility", "tunnel"}, + {{"railway", "rail"}, {"usage", "industrial"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "utility", "tunnel"}, + {{"railway", "rail"}, {"usage", "military"}, {"service", "spur"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "spur", "tunnel"}, {{"railway", "rail"}, {"service", "spur"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "service", "tunnel"}, + {{"railway", "rail"}, {"service", "yard"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "service", "tunnel"}, + {{"railway", "rail"}, {"highspeed", "positive_value"}, {"service", "siding"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "service", "tunnel"}, + {{"railway", "rail"}, {"usage", "main"}, {"service", "yard"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "service", "tunnel"}, + {{"railway", "rail"}, {"usage", "branch"}, {"service", "crossover"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail", "service", "tunnel"}, + {{"railway", "rail"}, {"usage", "unsupported_value"}, {"service", "siding"}, {"tunnel", "positive_value"}}}, + // TODO: better match to railway-rail-spur-tunnel: + {{"railway", "rail"}, {{"railway", "rail"}, {"usage", "unsupported_value"}, {"tunnel", "positive_value"}}}, + // TODO: better match following 3 cases to railway-rail-service-tunnel: + {{"railway", "rail"}, {{"railway", "rail"}, {"service", "unsupported_value"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail"}, + {{"railway", "rail"}, {"usage", "main"}, {"service", "unsupported_value"}, {"tunnel", "positive_value"}}}, + {{"railway", "rail"}, + {{"railway", "rail"}, + {"usage", "unsupported_value"}, + {"service", "unsupported_value"}, + {"tunnel", "positive_value"}}}, }; for (auto const & type : railTypes) @@ -2127,607 +2039,607 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_RailwayRail) UNIT_CLASS_TEST(TestWithClassificator, OsmType_SimpleTypesSmoke) { Tags const oneTypes = { - // Filtered out by MatchTypes filter because have no styles. - // {"aeroway", "apron"}, - // {"area:highway", "cycleway"}, - // {"area:highway", "motorway"}, - // {"area:highway", "path"}, - // {"area:highway", "primary"}, - // {"area:highway", "residential"}, - // {"area:highway", "secondary"}, - // {"area:highway", "service"}, - // {"area:highway", "steps"}, - // {"area:highway", "tertiary"}, - // {"area:highway", "track"}, - // {"area:highway", "trunk"}, - // {"area:highway", "unclassified"}, - {"barrier", "cycle_barrier"}, - // {"boundary", "administrative"}, - // {"communication", "line"}, - // {"earthquake:damage", "spontaneous_camp"}, - // {"highway", "traffic_signals"}, - // {"historic", "battlefield"}, - // {"landuse", "brownfield"}, - // {"landuse", "farmyard"}, - // {"landuse", "greenfield"}, - // {"landuse", "greenhouse_horticulture"}, - // {"landuse", "retail"}, - // {"man_made", "pipeline"}, - // {"man_made", "surveillance"}, - // {"man_made", "wastewater_plant"}, - // {"mapswithme", "grid"}, - // {"military", "bunker"}, - // {"natural", "cliff"}, - // {"natural", "meadow"}, - // {"natural", "orchard"}, - // {"natural", "tree"}, - // {"natural", "tree_row"}, - // {"natural", "vineyard"}, - // {"noexit"}, - // {"place", "county"}, - // {"railway", "crossing"}, - // {"railway", "razed"}, - // {"railway", "siding"}, - // {"railway", "spur"}, - // {"railway", "subway"}, - // {"traffic_calming", "bump"}, - // {"traffic_calming", "hump"}, - {"addr:interpolation", "even"}, - {"addr:interpolation", "odd"}, - {"aerialway", "cable_car"}, - {"aerialway", "chair_lift"}, - {"aerialway", "drag_lift"}, - {"aerialway", "gondola"}, - {"aerialway", "mixed_lift"}, - {"aerialway", "station"}, - {"aeroway", "aerodrome"}, - {"aeroway", "gate"}, - {"aeroway", "helipad"}, - {"aeroway", "runway"}, - {"aeroway", "taxiway"}, - {"aeroway", "terminal"}, - {"amenity", "arts_centre"}, - {"amenity", "atm"}, - {"amenity", "bank"}, - {"amenity", "bar"}, - {"amenity", "bbq"}, - {"amenity", "bench"}, - {"amenity", "bicycle_parking"}, - {"amenity", "bicycle_rental"}, - {"amenity", "biergarten"}, - {"amenity", "brothel"}, - {"amenity", "love_hotel"}, - {"amenity", "bureau_de_change"}, - {"amenity", "bus_station"}, - {"amenity", "cafe"}, - {"amenity", "car_rental"}, - {"amenity", "car_sharing"}, - {"amenity", "car_wash"}, - {"amenity", "casino"}, - {"amenity", "charging_station"}, - {"amenity", "childcare"}, - {"amenity", "cinema"}, - {"amenity", "studio"}, - {"amenity", "clinic"}, - {"amenity", "college"}, - {"amenity", "community_centre"}, - {"amenity", "courthouse"}, - {"amenity", "dentist"}, - {"amenity", "doctors"}, - {"amenity", "drinking_water"}, - {"amenity", "driving_school"}, - {"amenity", "fast_food"}, - {"amenity", "ferry_terminal"}, - {"amenity", "fire_station"}, - {"amenity", "food_court"}, - {"amenity", "fountain"}, - {"amenity", "fuel"}, - {"amenity", "grave_yard"}, - {"amenity", "hospital"}, - {"amenity", "hunting_stand"}, - {"amenity", "ice_cream"}, - {"amenity", "internet_cafe"}, - {"amenity", "kindergarten"}, - {"amenity", "library"}, - {"amenity", "marketplace"}, - {"amenity", "motorcycle_parking"}, - {"amenity", "motorcycle_rental"}, - {"amenity", "nightclub"}, - {"amenity", "nursing_home"}, - {"amenity", "parking"}, - {"amenity", "parking_space"}, - {"amenity", "payment_terminal"}, - {"amenity", "pharmacy"}, - {"amenity", "place_of_worship"}, - {"amenity", "police"}, - {"amenity", "post_box"}, - {"amenity", "post_office"}, - {"amenity", "prison"}, - {"amenity", "pub"}, - {"amenity", "public_bookcase"}, - {"amenity", "restaurant"}, - {"amenity", "school"}, - {"amenity", "shelter"}, - {"amenity", "shower"}, - {"amenity", "taxi"}, - {"amenity", "telephone"}, - {"amenity", "theatre"}, - {"amenity", "toilets"}, - {"amenity", "townhall"}, - {"amenity", "university"}, - {"amenity", "veterinary"}, - {"amenity", "waste_basket"}, - {"amenity", "waste_disposal"}, - {"amenity", "water_point"}, - {"area:highway", "footway"}, - {"area:highway", "living_street"}, - {"area:highway", "pedestrian"}, - {"barrier", "block"}, - {"barrier", "bollard"}, - {"barrier", "border_control"}, - {"barrier", "chain"}, - {"barrier", "city_wall"}, - {"barrier", "entrance"}, - {"barrier", "fence"}, - {"barrier", "gate"}, - {"barrier", "hedge"}, - {"barrier", "lift_gate"}, - {"barrier", "retaining_wall"}, - {"barrier", "stile"}, - {"barrier", "swing_gate"}, - {"barrier", "toll_booth"}, - {"barrier", "wall"}, - {"boundary", "national_park"}, - {"boundary", "protected_area"}, - {"building", "has_parts"}, - {"building", "train_station"}, - {"cemetery", "grave"}, - {"craft", "beekeeper"}, - {"craft", "blacksmith"}, - {"craft", "brewery"}, - {"craft", "carpenter"}, - {"craft", "confectionery"}, - {"craft", "electrician"}, - {"craft", "electronics_repair"}, - {"craft", "gardener"}, - {"craft", "handicraft"}, - {"craft", "hvac"}, - {"craft", "metal_construction"}, - {"craft", "painter"}, - {"craft", "photographer"}, - {"craft", "plumber"}, - {"craft", "sawmill"}, - {"craft", "shoemaker"}, - {"craft", "tailor"}, - {"craft", "winery"}, - {"cuisine", "african"}, - {"cuisine", "american"}, - {"cuisine", "arab"}, - {"cuisine", "argentinian"}, - {"cuisine", "asian"}, - {"cuisine", "austrian"}, - {"cuisine", "bagel"}, - {"cuisine", "balkan"}, - {"cuisine", "barbecue"}, - {"cuisine", "bavarian"}, - {"cuisine", "beef_bowl"}, - {"cuisine", "brazilian"}, - {"cuisine", "breakfast"}, - {"cuisine", "burger"}, - {"cuisine", "buschenschank"}, - {"cuisine", "cake"}, - {"cuisine", "caribbean"}, - {"cuisine", "chicken"}, - {"cuisine", "chinese"}, - {"cuisine", "coffee_shop"}, - {"cuisine", "crepe"}, - {"cuisine", "croatian"}, - {"cuisine", "curry"}, - {"cuisine", "deli"}, - {"cuisine", "diner"}, - {"cuisine", "donut"}, - {"cuisine", "ethiopian"}, - {"cuisine", "filipino"}, - {"cuisine", "fine_dining"}, - {"cuisine", "fish"}, - {"cuisine", "fish_and_chips"}, - {"cuisine", "french"}, - {"cuisine", "friture"}, - {"cuisine", "georgian"}, - {"cuisine", "german"}, - {"cuisine", "greek"}, - {"cuisine", "grill"}, - {"cuisine", "heuriger"}, - {"cuisine", "hotdog"}, - {"cuisine", "hungarian"}, - {"cuisine", "ice_cream"}, - {"cuisine", "indian"}, - {"cuisine", "indonesian"}, - {"cuisine", "international"}, - {"cuisine", "irish"}, - {"cuisine", "italian"}, - {"cuisine", "italian_pizza"}, - {"cuisine", "japanese"}, - {"cuisine", "kebab"}, - {"cuisine", "korean"}, - {"cuisine", "lao"}, - {"cuisine", "lebanese"}, - {"cuisine", "local"}, - {"cuisine", "malagasy"}, - {"cuisine", "malaysian"}, - {"cuisine", "mediterranean"}, - {"cuisine", "mexican"}, - {"cuisine", "moroccan"}, - {"cuisine", "noodles"}, - {"cuisine", "oriental"}, - {"cuisine", "pancake"}, - {"cuisine", "pasta"}, - {"cuisine", "persian"}, - {"cuisine", "peruvian"}, - {"cuisine", "pizza"}, - {"cuisine", "polish"}, - {"cuisine", "portuguese"}, - {"cuisine", "ramen"}, - {"cuisine", "regional"}, - {"cuisine", "russian"}, - {"cuisine", "sandwich"}, - {"cuisine", "sausage"}, - {"cuisine", "savory_pancakes"}, - {"cuisine", "seafood"}, - {"cuisine", "soba"}, - {"cuisine", "spanish"}, - {"cuisine", "steak_house"}, - {"cuisine", "sushi"}, - {"cuisine", "tapas"}, - {"cuisine", "tea"}, - {"cuisine", "thai"}, - {"cuisine", "turkish"}, - {"cuisine", "vegan"}, - {"cuisine", "vegetarian"}, - {"cuisine", "vietnamese"}, - {"emergency", "defibrillator"}, - {"emergency", "fire_hydrant"}, - {"emergency", "lifeguard"}, - {"emergency", "mountain_rescue"}, - {"emergency", "phone"}, - {"fee", "no"}, - {"fee", "yes"}, - {"highway", "bridleway"}, - {"highway", "busway"}, - {"highway", "bus_stop"}, - {"highway", "construction"}, - {"highway", "cycleway"}, - {"highway", "footway"}, - {"highway", "ford"}, - {"highway", "living_street"}, - {"highway", "motorway"}, - {"highway", "motorway_junction"}, - {"highway", "motorway_link"}, - {"highway", "path"}, - {"highway", "pedestrian"}, - {"highway", "primary"}, - {"highway", "primary_link"}, - {"highway", "raceway"}, - {"highway", "residential"}, - {"highway", "rest_area"}, - {"highway", "road"}, - {"highway", "secondary"}, - {"highway", "secondary_link"}, - {"highway", "service"}, - {"highway", "services"}, - {"highway", "speed_camera"}, - {"highway", "steps"}, - {"highway", "tertiary"}, - {"highway", "tertiary_link"}, - {"highway", "track"}, - {"highway", "trunk"}, - {"highway", "trunk_link"}, - {"highway", "unclassified"}, - {"highway", "world_level"}, - {"highway", "world_towns_level"}, - {"historic", "archaeological_site"}, - {"historic", "boundary_stone"}, - {"historic", "castle"}, - {"historic", "city_gate"}, - {"historic", "citywalls"}, - {"historic", "fort"}, - {"historic", "memorial"}, - {"historic", "monument"}, - {"historic", "ruins"}, - {"historic", "ship"}, - {"historic", "tomb"}, - {"historic", "wayside_cross"}, - {"historic", "wayside_shrine"}, - {"hwtag", "bidir_bicycle"}, - {"hwtag", "lit"}, - {"hwtag", "nobicycle"}, - {"hwtag", "nocar"}, - {"hwtag", "nofoot"}, - {"hwtag", "oneway"}, - {"hwtag", "private"}, - {"hwtag", "toll"}, - {"hwtag", "yesbicycle"}, - {"hwtag", "yescar"}, - {"hwtag", "yesfoot"}, - {"internet_access", "wlan"}, - {"junction", "circular"}, - {"junction", "roundabout"}, - {"landuse", "allotments"}, - {"landuse", "basin"}, - {"landuse", "cemetery"}, - {"landuse", "commercial"}, - {"landuse", "construction"}, - {"landuse", "farmland"}, - {"landuse", "garages"}, - {"landuse", "grass"}, - {"landuse", "industrial"}, - {"landuse", "landfill"}, - {"landuse", "meadow"}, - {"landuse", "military"}, - {"landuse", "orchard"}, - {"landuse", "quarry"}, - {"landuse", "railway"}, - {"landuse", "recreation_ground"}, - {"landuse", "religious"}, - {"landuse", "reservoir"}, - {"landuse", "residential"}, - {"landuse", "salt_pond"}, - {"landuse", "village_green"}, - {"landuse", "vineyard"}, - {"leisure", "common"}, - {"leisure", "dog_park"}, - {"leisure", "fitness_centre"}, - {"leisure", "fitness_station"}, - {"leisure", "garden"}, - {"leisure", "firepit"}, - {"leisure", "golf_course"}, - {"leisure", "ice_rink"}, - {"leisure", "marina"}, - {"leisure", "nature_reserve"}, - {"leisure", "park"}, - {"leisure", "pitch"}, - {"leisure", "playground"}, - {"leisure", "recreation_ground"}, - {"leisure", "resort"}, - {"leisure", "sauna"}, - {"leisure", "slipway"}, - {"leisure", "sports_centre"}, - {"leisure", "dance"}, - {"leisure", "stadium"}, - {"leisure", "swimming_pool"}, - {"leisure", "track"}, - {"leisure", "water_park"}, - {"man_made", "breakwater"}, - {"man_made", "cairn"}, - {"man_made", "chimney"}, - {"man_made", "communications_tower"}, - {"man_made", "cross"}, - {"man_made", "cutline"}, - {"man_made", "embankment"}, - {"man_made", "flare"}, - {"man_made", "lighthouse"}, - {"man_made", "petroleum_well"}, - {"man_made", "pier"}, - {"man_made", "survey_point"}, - {"man_made", "silo"}, - {"man_made", "storage_tank"}, - {"man_made", "tower"}, - // {"man_made", "utility_pole"}, // In the outdoor style only. - {"man_made", "water_tap"}, - {"man_made", "water_tower"}, - {"man_made", "water_well"}, - {"man_made", "windmill"}, - {"man_made", "works"}, - {"natural", "bare_rock"}, - {"natural", "bay"}, - {"natural", "beach"}, - {"natural", "cape"}, - {"natural", "cave_entrance"}, - {"natural", "cliff"}, - {"natural", "coastline"}, - {"natural", "desert"}, - {"natural", "earth_bank"}, - {"natural", "geyser"}, - {"natural", "glacier"}, - {"natural", "grassland"}, - {"natural", "heath"}, - {"natural", "hot_spring"}, - {"natural", "land"}, - {"natural", "peak"}, - {"natural", "rock"}, - {"natural", "saddle"}, - {"natural", "scrub"}, - {"natural", "spring"}, - {"natural", "volcano"}, - {"natural", "water"}, - {"natural", "wetland"}, - {"office", "company"}, - {"office", "diplomatic"}, - {"office", "estate_agent"}, - {"office", "government"}, - {"office", "insurance"}, - {"office", "lawyer"}, - {"office", "ngo"}, - {"office", "telecommunication"}, - {"organic", "only"}, - {"organic", "yes"}, - {"aerialway", "j-bar"}, - {"aerialway", "magic_carpet"}, - {"aerialway", "platter"}, - {"aerialway", "rope_tow"}, - {"aerialway", "t-bar"}, - {"piste:type", "downhill"}, - {"piste:type", "nordic"}, - {"piste:type", "sled"}, - {"place", "city"}, - {"place", "continent"}, - {"place", "country"}, - {"place", "farm"}, - {"place", "hamlet"}, - {"place", "island"}, - {"place", "islet"}, - {"place", "isolated_dwelling"}, - {"place", "locality"}, - {"place", "neighbourhood"}, - {"place", "ocean"}, - {"place", "region"}, - {"place", "sea"}, - {"place", "square"}, - {"place", "state"}, - {"place", "suburb"}, - {"place", "town"}, - {"place", "village"}, - {"power", "generator"}, - {"power", "line"}, - {"power", "minor_line"}, - {"power", "pole"}, - {"power", "station"}, - {"power", "substation"}, - {"power", "tower"}, - {"psurface", "paved_bad"}, - {"psurface", "paved_good"}, - {"psurface", "unpaved_bad"}, - {"psurface", "unpaved_good"}, - {"public_transport", "platform"}, - {"railway", "abandoned"}, - {"railway", "construction"}, - {"railway", "disused"}, - {"railway", "funicular"}, - {"railway", "halt"}, - {"railway", "level_crossing"}, - {"railway", "light_rail"}, - {"railway", "monorail"}, - {"railway", "narrow_gauge"}, - {"railway", "platform"}, - {"railway", "preserved"}, - {"railway", "station"}, - {"railway", "subway_entrance"}, - {"railway", "tram"}, - {"railway", "tram_stop"}, - {"shop", "alcohol"}, - {"shop", "bakery"}, - {"shop", "beauty"}, - {"shop", "beverages"}, - {"shop", "bicycle"}, - {"shop", "bookmaker"}, - {"shop", "books"}, - {"shop", "butcher"}, - {"shop", "car"}, - {"shop", "car_parts"}, - {"shop", "car_repair"}, - {"shop", "chemist"}, - {"shop", "chocolate"}, - {"shop", "coffee"}, - {"shop", "computer"}, - {"shop", "confectionery"}, - {"shop", "convenience"}, - {"shop", "copyshop"}, - {"shop", "cosmetics"}, - {"shop", "deli"}, - {"shop", "department_store"}, - {"shop", "doityourself"}, - {"shop", "dry_cleaning"}, - {"shop", "electronics"}, - {"shop", "erotic"}, - {"shop", "fabric"}, - {"shop", "farm"}, - {"shop", "florist"}, - {"shop", "funeral_directors"}, - {"shop", "furniture"}, - {"shop", "garden_centre"}, - {"shop", "gift"}, - {"shop", "greengrocer"}, - {"shop", "grocery"}, - {"shop", "hairdresser"}, - {"shop", "hardware"}, - {"shop", "houseware"}, - {"shop", "health_food"}, - {"shop", "jewelry"}, - {"shop", "kiosk"}, - {"shop", "kitchen"}, - {"shop", "laundry"}, - {"shop", "mall"}, - {"shop", "massage"}, - {"shop", "mobile_phone"}, - {"shop", "money_lender"}, - {"shop", "motorcycle"}, - {"shop", "music"}, - {"shop", "musical_instrument"}, - {"shop", "newsagent"}, - {"shop", "optician"}, - {"shop", "outdoor"}, - {"shop", "pastry"}, - {"shop", "pawnbroker"}, - {"shop", "pet"}, - {"shop", "photo"}, - {"shop", "seafood"}, - {"shop", "second_hand"}, - {"shop", "sewing"}, - {"shop", "shoes"}, - {"shop", "sports"}, - {"shop", "stationery"}, - {"shop", "supermarket"}, - {"shop", "tattoo"}, - {"shop", "tea"}, - {"shop", "ticket"}, - {"shop", "toys"}, - {"shop", "travel_agency"}, - {"shop", "tyres"}, - {"shop", "variety_store"}, - {"shop", "video"}, - {"shop", "wine"}, - {"sport", "american_football"}, - {"sport", "archery"}, - {"sport", "athletics"}, - {"sport", "australian_football"}, - {"sport", "baseball"}, - {"sport", "basketball"}, - {"sport", "bowls"}, - {"sport", "cricket"}, - {"sport", "curling"}, - {"sport", "diving"}, - {"sport", "equestrian"}, - {"sport", "gymnastics"}, - {"sport", "handball"}, - {"sport", "multi"}, - {"sport", "scuba_diving"}, - {"sport", "shooting"}, - {"sport", "skiing"}, - {"sport", "soccer"}, - {"sport", "swimming"}, - {"sport", "tennis"}, - {"tourism", "alpine_hut"}, - {"tourism", "apartment"}, - {"tourism", "artwork"}, - {"tourism", "attraction"}, - {"tourism", "camp_site"}, - {"tourism", "caravan_site"}, - {"tourism", "chalet"}, - {"tourism", "gallery"}, - {"tourism", "guest_house"}, - {"tourism", "hostel"}, - {"tourism", "hotel"}, - {"tourism", "information"}, - {"tourism", "motel"}, - {"tourism", "museum"}, - {"tourism", "picnic_site"}, - {"tourism", "theme_park"}, - {"tourism", "viewpoint"}, - {"tourism", "wilderness_hut"}, - {"tourism", "zoo"}, - {"waterway", "canal"}, - {"waterway", "dam"}, - {"waterway", "ditch"}, - {"waterway", "dock"}, - {"waterway", "drain"}, - {"waterway", "lock_gate"}, - {"waterway", "river"}, - {"waterway", "stream"}, - {"waterway", "waterfall"}, - {"waterway", "weir"}, - {"wheelchair", "limited"}, - {"wheelchair", "no"}, - {"wheelchair", "yes"}, + // Filtered out by MatchTypes filter because have no styles. + // {"aeroway", "apron"}, + // {"area:highway", "cycleway"}, + // {"area:highway", "motorway"}, + // {"area:highway", "path"}, + // {"area:highway", "primary"}, + // {"area:highway", "residential"}, + // {"area:highway", "secondary"}, + // {"area:highway", "service"}, + // {"area:highway", "steps"}, + // {"area:highway", "tertiary"}, + // {"area:highway", "track"}, + // {"area:highway", "trunk"}, + // {"area:highway", "unclassified"}, + {"barrier", "cycle_barrier"}, + // {"boundary", "administrative"}, + // {"communication", "line"}, + // {"earthquake:damage", "spontaneous_camp"}, + // {"highway", "traffic_signals"}, + // {"historic", "battlefield"}, + // {"landuse", "brownfield"}, + // {"landuse", "farmyard"}, + // {"landuse", "greenfield"}, + // {"landuse", "greenhouse_horticulture"}, + // {"landuse", "retail"}, + // {"man_made", "pipeline"}, + // {"man_made", "surveillance"}, + // {"man_made", "wastewater_plant"}, + // {"mapswithme", "grid"}, + // {"military", "bunker"}, + // {"natural", "cliff"}, + // {"natural", "meadow"}, + // {"natural", "orchard"}, + // {"natural", "tree"}, + // {"natural", "tree_row"}, + // {"natural", "vineyard"}, + // {"noexit"}, + // {"place", "county"}, + // {"railway", "crossing"}, + // {"railway", "razed"}, + // {"railway", "siding"}, + // {"railway", "spur"}, + // {"railway", "subway"}, + // {"traffic_calming", "bump"}, + // {"traffic_calming", "hump"}, + {"addr:interpolation", "even"}, + {"addr:interpolation", "odd"}, + {"aerialway", "cable_car"}, + {"aerialway", "chair_lift"}, + {"aerialway", "drag_lift"}, + {"aerialway", "gondola"}, + {"aerialway", "mixed_lift"}, + {"aerialway", "station"}, + {"aeroway", "aerodrome"}, + {"aeroway", "gate"}, + {"aeroway", "helipad"}, + {"aeroway", "runway"}, + {"aeroway", "taxiway"}, + {"aeroway", "terminal"}, + {"amenity", "arts_centre"}, + {"amenity", "atm"}, + {"amenity", "bank"}, + {"amenity", "bar"}, + {"amenity", "bbq"}, + {"amenity", "bench"}, + {"amenity", "bicycle_parking"}, + {"amenity", "bicycle_rental"}, + {"amenity", "biergarten"}, + {"amenity", "brothel"}, + {"amenity", "love_hotel"}, + {"amenity", "bureau_de_change"}, + {"amenity", "bus_station"}, + {"amenity", "cafe"}, + {"amenity", "car_rental"}, + {"amenity", "car_sharing"}, + {"amenity", "car_wash"}, + {"amenity", "casino"}, + {"amenity", "charging_station"}, + {"amenity", "childcare"}, + {"amenity", "cinema"}, + {"amenity", "studio"}, + {"amenity", "clinic"}, + {"amenity", "college"}, + {"amenity", "community_centre"}, + {"amenity", "courthouse"}, + {"amenity", "dentist"}, + {"amenity", "doctors"}, + {"amenity", "drinking_water"}, + {"amenity", "driving_school"}, + {"amenity", "fast_food"}, + {"amenity", "ferry_terminal"}, + {"amenity", "fire_station"}, + {"amenity", "food_court"}, + {"amenity", "fountain"}, + {"amenity", "fuel"}, + {"amenity", "grave_yard"}, + {"amenity", "hospital"}, + {"amenity", "hunting_stand"}, + {"amenity", "ice_cream"}, + {"amenity", "internet_cafe"}, + {"amenity", "kindergarten"}, + {"amenity", "library"}, + {"amenity", "marketplace"}, + {"amenity", "motorcycle_parking"}, + {"amenity", "motorcycle_rental"}, + {"amenity", "nightclub"}, + {"amenity", "nursing_home"}, + {"amenity", "parking"}, + {"amenity", "parking_space"}, + {"amenity", "payment_terminal"}, + {"amenity", "pharmacy"}, + {"amenity", "place_of_worship"}, + {"amenity", "police"}, + {"amenity", "post_box"}, + {"amenity", "post_office"}, + {"amenity", "prison"}, + {"amenity", "pub"}, + {"amenity", "public_bookcase"}, + {"amenity", "restaurant"}, + {"amenity", "school"}, + {"amenity", "shelter"}, + {"amenity", "shower"}, + {"amenity", "taxi"}, + {"amenity", "telephone"}, + {"amenity", "theatre"}, + {"amenity", "toilets"}, + {"amenity", "townhall"}, + {"amenity", "university"}, + {"amenity", "veterinary"}, + {"amenity", "waste_basket"}, + {"amenity", "waste_disposal"}, + {"amenity", "water_point"}, + {"area:highway", "footway"}, + {"area:highway", "living_street"}, + {"area:highway", "pedestrian"}, + {"barrier", "block"}, + {"barrier", "bollard"}, + {"barrier", "border_control"}, + {"barrier", "chain"}, + {"barrier", "city_wall"}, + {"barrier", "entrance"}, + {"barrier", "fence"}, + {"barrier", "gate"}, + {"barrier", "hedge"}, + {"barrier", "lift_gate"}, + {"barrier", "retaining_wall"}, + {"barrier", "stile"}, + {"barrier", "swing_gate"}, + {"barrier", "toll_booth"}, + {"barrier", "wall"}, + {"boundary", "national_park"}, + {"boundary", "protected_area"}, + {"building", "has_parts"}, + {"building", "train_station"}, + {"cemetery", "grave"}, + {"craft", "beekeeper"}, + {"craft", "blacksmith"}, + {"craft", "brewery"}, + {"craft", "carpenter"}, + {"craft", "confectionery"}, + {"craft", "electrician"}, + {"craft", "electronics_repair"}, + {"craft", "gardener"}, + {"craft", "handicraft"}, + {"craft", "hvac"}, + {"craft", "metal_construction"}, + {"craft", "painter"}, + {"craft", "photographer"}, + {"craft", "plumber"}, + {"craft", "sawmill"}, + {"craft", "shoemaker"}, + {"craft", "tailor"}, + {"craft", "winery"}, + {"cuisine", "african"}, + {"cuisine", "american"}, + {"cuisine", "arab"}, + {"cuisine", "argentinian"}, + {"cuisine", "asian"}, + {"cuisine", "austrian"}, + {"cuisine", "bagel"}, + {"cuisine", "balkan"}, + {"cuisine", "barbecue"}, + {"cuisine", "bavarian"}, + {"cuisine", "beef_bowl"}, + {"cuisine", "brazilian"}, + {"cuisine", "breakfast"}, + {"cuisine", "burger"}, + {"cuisine", "buschenschank"}, + {"cuisine", "cake"}, + {"cuisine", "caribbean"}, + {"cuisine", "chicken"}, + {"cuisine", "chinese"}, + {"cuisine", "coffee_shop"}, + {"cuisine", "crepe"}, + {"cuisine", "croatian"}, + {"cuisine", "curry"}, + {"cuisine", "deli"}, + {"cuisine", "diner"}, + {"cuisine", "donut"}, + {"cuisine", "ethiopian"}, + {"cuisine", "filipino"}, + {"cuisine", "fine_dining"}, + {"cuisine", "fish"}, + {"cuisine", "fish_and_chips"}, + {"cuisine", "french"}, + {"cuisine", "friture"}, + {"cuisine", "georgian"}, + {"cuisine", "german"}, + {"cuisine", "greek"}, + {"cuisine", "grill"}, + {"cuisine", "heuriger"}, + {"cuisine", "hotdog"}, + {"cuisine", "hungarian"}, + {"cuisine", "ice_cream"}, + {"cuisine", "indian"}, + {"cuisine", "indonesian"}, + {"cuisine", "international"}, + {"cuisine", "irish"}, + {"cuisine", "italian"}, + {"cuisine", "italian_pizza"}, + {"cuisine", "japanese"}, + {"cuisine", "kebab"}, + {"cuisine", "korean"}, + {"cuisine", "lao"}, + {"cuisine", "lebanese"}, + {"cuisine", "local"}, + {"cuisine", "malagasy"}, + {"cuisine", "malaysian"}, + {"cuisine", "mediterranean"}, + {"cuisine", "mexican"}, + {"cuisine", "moroccan"}, + {"cuisine", "noodles"}, + {"cuisine", "oriental"}, + {"cuisine", "pancake"}, + {"cuisine", "pasta"}, + {"cuisine", "persian"}, + {"cuisine", "peruvian"}, + {"cuisine", "pizza"}, + {"cuisine", "polish"}, + {"cuisine", "portuguese"}, + {"cuisine", "ramen"}, + {"cuisine", "regional"}, + {"cuisine", "russian"}, + {"cuisine", "sandwich"}, + {"cuisine", "sausage"}, + {"cuisine", "savory_pancakes"}, + {"cuisine", "seafood"}, + {"cuisine", "soba"}, + {"cuisine", "spanish"}, + {"cuisine", "steak_house"}, + {"cuisine", "sushi"}, + {"cuisine", "tapas"}, + {"cuisine", "tea"}, + {"cuisine", "thai"}, + {"cuisine", "turkish"}, + {"cuisine", "vegan"}, + {"cuisine", "vegetarian"}, + {"cuisine", "vietnamese"}, + {"emergency", "defibrillator"}, + {"emergency", "fire_hydrant"}, + {"emergency", "lifeguard"}, + {"emergency", "mountain_rescue"}, + {"emergency", "phone"}, + {"fee", "no"}, + {"fee", "yes"}, + {"highway", "bridleway"}, + {"highway", "busway"}, + {"highway", "bus_stop"}, + {"highway", "construction"}, + {"highway", "cycleway"}, + {"highway", "footway"}, + {"highway", "ford"}, + {"highway", "living_street"}, + {"highway", "motorway"}, + {"highway", "motorway_junction"}, + {"highway", "motorway_link"}, + {"highway", "path"}, + {"highway", "pedestrian"}, + {"highway", "primary"}, + {"highway", "primary_link"}, + {"highway", "raceway"}, + {"highway", "residential"}, + {"highway", "rest_area"}, + {"highway", "road"}, + {"highway", "secondary"}, + {"highway", "secondary_link"}, + {"highway", "service"}, + {"highway", "services"}, + {"highway", "speed_camera"}, + {"highway", "steps"}, + {"highway", "tertiary"}, + {"highway", "tertiary_link"}, + {"highway", "track"}, + {"highway", "trunk"}, + {"highway", "trunk_link"}, + {"highway", "unclassified"}, + {"highway", "world_level"}, + {"highway", "world_towns_level"}, + {"historic", "archaeological_site"}, + {"historic", "boundary_stone"}, + {"historic", "castle"}, + {"historic", "city_gate"}, + {"historic", "citywalls"}, + {"historic", "fort"}, + {"historic", "memorial"}, + {"historic", "monument"}, + {"historic", "ruins"}, + {"historic", "ship"}, + {"historic", "tomb"}, + {"historic", "wayside_cross"}, + {"historic", "wayside_shrine"}, + {"hwtag", "bidir_bicycle"}, + {"hwtag", "lit"}, + {"hwtag", "nobicycle"}, + {"hwtag", "nocar"}, + {"hwtag", "nofoot"}, + {"hwtag", "oneway"}, + {"hwtag", "private"}, + {"hwtag", "toll"}, + {"hwtag", "yesbicycle"}, + {"hwtag", "yescar"}, + {"hwtag", "yesfoot"}, + {"internet_access", "wlan"}, + {"junction", "circular"}, + {"junction", "roundabout"}, + {"landuse", "allotments"}, + {"landuse", "basin"}, + {"landuse", "cemetery"}, + {"landuse", "commercial"}, + {"landuse", "construction"}, + {"landuse", "farmland"}, + {"landuse", "garages"}, + {"landuse", "grass"}, + {"landuse", "industrial"}, + {"landuse", "landfill"}, + {"landuse", "meadow"}, + {"landuse", "military"}, + {"landuse", "orchard"}, + {"landuse", "quarry"}, + {"landuse", "railway"}, + {"landuse", "recreation_ground"}, + {"landuse", "religious"}, + {"landuse", "reservoir"}, + {"landuse", "residential"}, + {"landuse", "salt_pond"}, + {"landuse", "village_green"}, + {"landuse", "vineyard"}, + {"leisure", "common"}, + {"leisure", "dog_park"}, + {"leisure", "fitness_centre"}, + {"leisure", "fitness_station"}, + {"leisure", "garden"}, + {"leisure", "firepit"}, + {"leisure", "golf_course"}, + {"leisure", "ice_rink"}, + {"leisure", "marina"}, + {"leisure", "nature_reserve"}, + {"leisure", "park"}, + {"leisure", "pitch"}, + {"leisure", "playground"}, + {"leisure", "recreation_ground"}, + {"leisure", "resort"}, + {"leisure", "sauna"}, + {"leisure", "slipway"}, + {"leisure", "sports_centre"}, + {"leisure", "dance"}, + {"leisure", "stadium"}, + {"leisure", "swimming_pool"}, + {"leisure", "track"}, + {"leisure", "water_park"}, + {"man_made", "breakwater"}, + {"man_made", "cairn"}, + {"man_made", "chimney"}, + {"man_made", "communications_tower"}, + {"man_made", "cross"}, + {"man_made", "cutline"}, + {"man_made", "embankment"}, + {"man_made", "flare"}, + {"man_made", "lighthouse"}, + {"man_made", "petroleum_well"}, + {"man_made", "pier"}, + {"man_made", "survey_point"}, + {"man_made", "silo"}, + {"man_made", "storage_tank"}, + {"man_made", "tower"}, + // {"man_made", "utility_pole"}, // In the outdoor style only. + {"man_made", "water_tap"}, + {"man_made", "water_tower"}, + {"man_made", "water_well"}, + {"man_made", "windmill"}, + {"man_made", "works"}, + {"natural", "bare_rock"}, + {"natural", "bay"}, + {"natural", "beach"}, + {"natural", "cape"}, + {"natural", "cave_entrance"}, + {"natural", "cliff"}, + {"natural", "coastline"}, + {"natural", "desert"}, + {"natural", "earth_bank"}, + {"natural", "geyser"}, + {"natural", "glacier"}, + {"natural", "grassland"}, + {"natural", "heath"}, + {"natural", "hot_spring"}, + {"natural", "land"}, + {"natural", "peak"}, + {"natural", "rock"}, + {"natural", "saddle"}, + {"natural", "scrub"}, + {"natural", "spring"}, + {"natural", "volcano"}, + {"natural", "water"}, + {"natural", "wetland"}, + {"office", "company"}, + {"office", "diplomatic"}, + {"office", "estate_agent"}, + {"office", "government"}, + {"office", "insurance"}, + {"office", "lawyer"}, + {"office", "ngo"}, + {"office", "telecommunication"}, + {"organic", "only"}, + {"organic", "yes"}, + {"aerialway", "j-bar"}, + {"aerialway", "magic_carpet"}, + {"aerialway", "platter"}, + {"aerialway", "rope_tow"}, + {"aerialway", "t-bar"}, + {"piste:type", "downhill"}, + {"piste:type", "nordic"}, + {"piste:type", "sled"}, + {"place", "city"}, + {"place", "continent"}, + {"place", "country"}, + {"place", "farm"}, + {"place", "hamlet"}, + {"place", "island"}, + {"place", "islet"}, + {"place", "isolated_dwelling"}, + {"place", "locality"}, + {"place", "neighbourhood"}, + {"place", "ocean"}, + {"place", "region"}, + {"place", "sea"}, + {"place", "square"}, + {"place", "state"}, + {"place", "suburb"}, + {"place", "town"}, + {"place", "village"}, + {"power", "generator"}, + {"power", "line"}, + {"power", "minor_line"}, + {"power", "pole"}, + {"power", "station"}, + {"power", "substation"}, + {"power", "tower"}, + {"psurface", "paved_bad"}, + {"psurface", "paved_good"}, + {"psurface", "unpaved_bad"}, + {"psurface", "unpaved_good"}, + {"public_transport", "platform"}, + {"railway", "abandoned"}, + {"railway", "construction"}, + {"railway", "disused"}, + {"railway", "funicular"}, + {"railway", "halt"}, + {"railway", "level_crossing"}, + {"railway", "light_rail"}, + {"railway", "monorail"}, + {"railway", "narrow_gauge"}, + {"railway", "platform"}, + {"railway", "preserved"}, + {"railway", "station"}, + {"railway", "subway_entrance"}, + {"railway", "tram"}, + {"railway", "tram_stop"}, + {"shop", "alcohol"}, + {"shop", "bakery"}, + {"shop", "beauty"}, + {"shop", "beverages"}, + {"shop", "bicycle"}, + {"shop", "bookmaker"}, + {"shop", "books"}, + {"shop", "butcher"}, + {"shop", "car"}, + {"shop", "car_parts"}, + {"shop", "car_repair"}, + {"shop", "chemist"}, + {"shop", "chocolate"}, + {"shop", "coffee"}, + {"shop", "computer"}, + {"shop", "confectionery"}, + {"shop", "convenience"}, + {"shop", "copyshop"}, + {"shop", "cosmetics"}, + {"shop", "deli"}, + {"shop", "department_store"}, + {"shop", "doityourself"}, + {"shop", "dry_cleaning"}, + {"shop", "electronics"}, + {"shop", "erotic"}, + {"shop", "fabric"}, + {"shop", "farm"}, + {"shop", "florist"}, + {"shop", "funeral_directors"}, + {"shop", "furniture"}, + {"shop", "garden_centre"}, + {"shop", "gift"}, + {"shop", "greengrocer"}, + {"shop", "grocery"}, + {"shop", "hairdresser"}, + {"shop", "hardware"}, + {"shop", "houseware"}, + {"shop", "health_food"}, + {"shop", "jewelry"}, + {"shop", "kiosk"}, + {"shop", "kitchen"}, + {"shop", "laundry"}, + {"shop", "mall"}, + {"shop", "massage"}, + {"shop", "mobile_phone"}, + {"shop", "money_lender"}, + {"shop", "motorcycle"}, + {"shop", "music"}, + {"shop", "musical_instrument"}, + {"shop", "newsagent"}, + {"shop", "optician"}, + {"shop", "outdoor"}, + {"shop", "pastry"}, + {"shop", "pawnbroker"}, + {"shop", "pet"}, + {"shop", "photo"}, + {"shop", "seafood"}, + {"shop", "second_hand"}, + {"shop", "sewing"}, + {"shop", "shoes"}, + {"shop", "sports"}, + {"shop", "stationery"}, + {"shop", "supermarket"}, + {"shop", "tattoo"}, + {"shop", "tea"}, + {"shop", "ticket"}, + {"shop", "toys"}, + {"shop", "travel_agency"}, + {"shop", "tyres"}, + {"shop", "variety_store"}, + {"shop", "video"}, + {"shop", "wine"}, + {"sport", "american_football"}, + {"sport", "archery"}, + {"sport", "athletics"}, + {"sport", "australian_football"}, + {"sport", "baseball"}, + {"sport", "basketball"}, + {"sport", "bowls"}, + {"sport", "cricket"}, + {"sport", "curling"}, + {"sport", "diving"}, + {"sport", "equestrian"}, + {"sport", "gymnastics"}, + {"sport", "handball"}, + {"sport", "multi"}, + {"sport", "scuba_diving"}, + {"sport", "shooting"}, + {"sport", "skiing"}, + {"sport", "soccer"}, + {"sport", "swimming"}, + {"sport", "tennis"}, + {"tourism", "alpine_hut"}, + {"tourism", "apartment"}, + {"tourism", "artwork"}, + {"tourism", "attraction"}, + {"tourism", "camp_site"}, + {"tourism", "caravan_site"}, + {"tourism", "chalet"}, + {"tourism", "gallery"}, + {"tourism", "guest_house"}, + {"tourism", "hostel"}, + {"tourism", "hotel"}, + {"tourism", "information"}, + {"tourism", "motel"}, + {"tourism", "museum"}, + {"tourism", "picnic_site"}, + {"tourism", "theme_park"}, + {"tourism", "viewpoint"}, + {"tourism", "wilderness_hut"}, + {"tourism", "zoo"}, + {"waterway", "canal"}, + {"waterway", "dam"}, + {"waterway", "ditch"}, + {"waterway", "dock"}, + {"waterway", "drain"}, + {"waterway", "lock_gate"}, + {"waterway", "river"}, + {"waterway", "stream"}, + {"waterway", "waterfall"}, + {"waterway", "weir"}, + {"wheelchair", "limited"}, + {"wheelchair", "no"}, + {"wheelchair", "yes"}, }; using SV = std::string_view; @@ -2757,301 +2669,314 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_ComplexTypesSmoke) { using Type = std::vector; std::vector> const complexTypes = { - // Filtered out by MatchTypes filter because have no styles. - // {{"communication", "line", "underground"}, {{"communication", "line"}, {"location", "underground"}}}, - // {{"man_made", "pipeline", "overground"}, {{"man_made", "pipeline"}, {"location", "overground"}}}, - // {{"railway", "siding", "bridge"}, {{"railway", "siding"}, {"bridge", "any_value"}}}, - // {{"railway", "siding", "tunnel"}, {{"railway", "siding"}, {"tunnel", "any_value"}}}, - // {{"railway", "spur", "bridge"}, {{"railway", "spur"}, {"bridge", "any_value"}}}, - // {{"railway", "spur", "tunnel"}, {{"railway", "spur"}, {"tunnel", "any_value"}}}, - // {{"waterway", "ditch", "tunnel"}, {{"waterway", "ditch"}, {"tunnel", "any_value"}}}, - // {{"waterway", "drain", "tunnel"}, {{"waterway", "drain"}, {"tunnel", "any_value"}}}, - // {{"waterway", "stream", "tunnel"}, {{"waterway", "stream"}, {"tunnel", "any_value"}}}, - // - // two types (+hwtag yesbicycle) {{"highway", "path", "bicycle"}, {{"highway", "path"}, {"bicycle", "any_value"}}}, - // two types (+hwtag-private) {{"highway", "track", "no-access"}, {{"highway", "track"}, {"access", "no"}}}, - // two types (+office) {{"tourism", "information", "office"}, {{"tourism", "information"}, {"office", "any_value"}}}, - // two types (+sport-*) {{"leisure", "sports_centre"}, {{"leisure", "sports_centre"}, {"sport", "any_value"}}}, - // - // Manually constructed type, not parsed from osm. - // {{"building", "address"}, {{"addr:housenumber", "any_value"}, {"addr:street", "any_value"}}}, - {{"addr:interpolation"}, {{"addr:interpolation", "all"}}}, - {{"aeroway", "aerodrome", "international"}, {{"aeroway", "aerodrome"}, {"aerodrome", "international"}}}, - {{"amenity", "grave_yard", "christian"}, {{"amenity", "grave_yard"}, {"religion", "christian"}}}, - {{"amenity", "parking", "lane"}, {{"amenity", "parking"}, {"parking", "lane"}}}, - {{"amenity", "parking", "multi-storey"}, {{"amenity", "parking"}, {"parking", "multi-storey"}}}, - {{"amenity", "parking", "no-access"}, {{"amenity", "parking"}, {"access", "no"}}}, - {{"amenity", "parking", "park_and_ride"}, {{"amenity", "parking"}, {"parking", "park_and_ride"}}}, - {{"amenity", "parking", "permissive"}, {{"amenity", "parking"}, {"access", "permissive"}}}, - {{"amenity", "parking", "private"}, {{"amenity", "parking"}, {"access", "private"}}}, - {{"amenity", "parking", "street_side"}, {{"amenity", "parking"}, {"parking", "street_side"}}}, - {{"amenity", "parking", "underground"}, {{"amenity", "parking"}, {"location", "underground"}}}, - {{"amenity", "parking_space", "permissive"}, {{"amenity", "parking_space"}, {"access", "permissive"}}}, - {{"amenity", "parking_space", "private"}, {{"amenity", "parking_space"}, {"access", "private"}}}, - {{"amenity", "parking_space", "underground"}, {{"amenity", "parking_space"}, {"parking", "underground"}}}, - {{"amenity", "place_of_worship", "buddhist"}, {{"amenity", "place_of_worship"}, {"religion", "buddhist"}}}, - {{"amenity", "place_of_worship", "christian"}, {{"amenity", "place_of_worship"}, {"religion", "christian"}}}, - {{"amenity", "place_of_worship", "hindu"}, {{"amenity", "place_of_worship"}, {"religion", "hindu"}}}, - {{"amenity", "place_of_worship", "jewish"}, {{"amenity", "place_of_worship"}, {"religion", "jewish"}}}, - {{"amenity", "place_of_worship", "muslim"}, {{"amenity", "place_of_worship"}, {"religion", "muslim"}}}, - {{"amenity", "place_of_worship", "shinto"}, {{"amenity", "place_of_worship"}, {"religion", "shinto"}}}, - {{"amenity", "place_of_worship", "taoist"}, {{"amenity", "place_of_worship"}, {"religion", "taoist"}}}, - {{"amenity", "recycling", "centre"}, {{"amenity", "recycling"}, {"recycling_type","centre"}}}, - {{"amenity", "recycling", "container"}, {{"amenity", "recycling"}, {"recycling_type","container"}}}, - {{"amenity", "recycling"}, {{"amenity", "recycling"}}}, - {{"amenity", "parcel_locker"}, {{"amenity", "parcel_locker"}}}, - {{"amenity", "vending_machine", "cigarettes"}, {{"amenity", "vending_machine"}, {"vending", "cigarettes"}}}, - {{"amenity", "vending_machine", "coffee"}, {{"amenity", "vending_machine"}, {"vending", "coffee"}}}, - {{"amenity", "vending_machine", "condoms"}, {{"amenity", "vending_machine"}, {"vending", "condoms"}}}, - {{"amenity", "vending_machine", "drinks"}, {{"amenity", "vending_machine"}, {"vending", "drinks"}}}, - {{"amenity", "vending_machine", "food"}, {{"amenity", "vending_machine"}, {"vending", "food"}}}, - {{"amenity", "vending_machine", "parking_tickets"}, {{"amenity", "vending_machine"}, {"vending", "parking_tickets"}}}, - {{"amenity", "vending_machine", "public_transport_tickets"}, {{"amenity", "vending_machine"}, {"vending", "public_transport_tickets"}}}, - {{"amenity", "vending_machine", "newspapers"}, {{"amenity", "vending_machine"}, {"vending", "newspapers"}}}, - {{"amenity", "vending_machine", "sweets"}, {{"amenity", "vending_machine"}, {"vending", "sweets"}}}, - {{"amenity"}, {{"amenity", "any_value"}}}, - {{"boundary", "administrative", "2"}, {{"boundary", "administrative"}, {"admin_level", "2"}}}, - {{"boundary", "administrative", "3"}, {{"boundary", "administrative"}, {"admin_level", "3"}}}, - {{"boundary", "administrative", "4"}, {{"boundary", "administrative"}, {"admin_level", "4"}}}, - {{"building", "garage"}, {{"building", "garage"}}}, - {{"building", "garage"}, {{"building", "yes"}, {"garage", "any_value"}}}, - {{"building"}, {{"building", "any_value"}}}, - {{"building:part"}, {{"building:part", "any_value"}}}, - {{"entrance"}, {{"entrance", "any_value"}}}, - {{"highway", "bridleway", "bridge"}, {{"highway", "bridleway"}, {"bridge", "any_value"}}}, - {{"highway", "bridleway", "tunnel"}, {{"highway", "bridleway"}, {"tunnel", "any_value"}}}, - {{"highway", "busway"}, {{"highway", "service"}, {"service", "bus"}}}, - {{"highway", "busway"}, {{"highway", "service"}, {"service", "busway"}}}, - {{"highway", "busway", "bridge"}, {{"highway", "busway"}, {"bridge", "any_value"}}}, - {{"highway", "busway", "tunnel"}, {{"highway", "busway"}, {"tunnel", "any_value"}}}, - {{"highway", "cycleway", "bridge"}, {{"highway", "cycleway"}, {"bridge", "any_value"}}}, - {{"highway", "cycleway", "tunnel"}, {{"highway", "cycleway"}, {"tunnel", "any_value"}}}, - {{"highway", "footway", "area"}, {{"highway", "footway"}, {"area", "any_value"}}}, - {{"highway", "footway", "bridge"}, {{"highway", "footway"}, {"bridge", "any_value"}}}, - {{"highway", "footway"}, {{"highway", "footway"}, {"footway", "unsupported_value"}}}, - {{"highway", "footway", "sidewalk"}, {{"highway", "footway"}, {"footway", "sidewalk"}}}, - {{"highway", "footway", "crossing"}, {{"highway", "footway"}, {"footway", "crossing"}}}, - {{"highway", "footway", "tunnel"}, {{"highway", "footway"}, {"tunnel", "any_value"}}}, - {{"highway", "footway", "tunnel"}, {{"highway", "footway"}, {"location", "underground"}}}, - {{"highway", "living_street", "bridge"}, {{"highway", "living_street"}, {"bridge", "any_value"}}}, - {{"highway", "living_street", "tunnel"}, {{"highway", "living_street"}, {"tunnel", "any_value"}}}, - {{"highway", "motorway", "bridge"}, {{"highway", "motorway"}, {"bridge", "any_value"}}}, - {{"highway", "motorway", "tunnel"}, {{"highway", "motorway"}, {"tunnel", "any_value"}}}, - {{"highway", "motorway_link", "bridge"}, {{"highway", "motorway_link"}, {"bridge", "any_value"}}}, - {{"highway", "motorway_link", "tunnel"}, {{"highway", "motorway_link"}, {"tunnel", "any_value"}}}, - {{"highway", "path", "bridge"}, {{"highway", "path"}, {"bridge", "any_value"}}}, - {{"highway", "path", "horse"}, {{"highway", "path"}, {"horse", "any_value"}}}, - {{"highway", "path", "tunnel"}, {{"highway", "path"}, {"tunnel", "any_value"}}}, - {{"highway", "path", "difficult"}, {{"highway", "path"}, {"_path_grade", "difficult"}}}, - {{"highway", "path", "expert"}, {{"highway", "path"}, {"_path_grade", "expert"}}}, - {{"highway", "pedestrian", "area"}, {{"highway", "pedestrian"}, {"area", "any_value"}}}, - {{"highway", "pedestrian", "bridge"}, {{"highway", "pedestrian"}, {"bridge", "any_value"}}}, - {{"highway", "pedestrian", "tunnel"}, {{"highway", "pedestrian"}, {"tunnel", "any_value"}}}, - {{"highway", "primary", "bridge"}, {{"highway", "primary"}, {"bridge", "any_value"}}}, - {{"highway", "primary", "tunnel"}, {{"highway", "primary"}, {"tunnel", "any_value"}}}, - {{"highway", "primary_link", "bridge"}, {{"highway", "primary_link"}, {"bridge", "any_value"}}}, - {{"highway", "primary_link", "tunnel"}, {{"highway", "primary_link"}, {"tunnel", "any_value"}}}, - {{"highway", "residential", "area"}, {{"highway", "residential"}, {"area", "any_value"}}}, - {{"highway", "residential", "bridge"}, {{"highway", "residential"}, {"bridge", "any_value"}}}, - {{"highway", "residential", "tunnel"}, {{"highway", "residential"}, {"tunnel", "any_value"}}}, - {{"highway", "road", "bridge"}, {{"highway", "road"}, {"bridge", "any_value"}}}, - {{"highway", "road", "tunnel"}, {{"highway", "road"}, {"tunnel", "any_value"}}}, - {{"highway", "secondary", "bridge"}, {{"highway", "secondary"}, {"bridge", "any_value"}}}, - {{"highway", "secondary", "tunnel"}, {{"highway", "secondary"}, {"tunnel", "any_value"}}}, - {{"highway", "secondary_link", "bridge"}, {{"highway", "secondary_link"}, {"bridge", "any_value"}}}, - {{"highway", "secondary_link", "tunnel"}, {{"highway", "secondary_link"}, {"tunnel", "any_value"}}}, - {{"highway", "service", "area"}, {{"highway", "service"}, {"area", "any_value"}}}, - {{"highway", "service", "bridge"}, {{"highway", "service"}, {"bridge", "any_value"}}}, - {{"highway", "service", "driveway"}, {{"highway", "service"}, {"service", "driveway"}}}, - {{"highway", "service", "parking_aisle"}, {{"highway", "service"}, {"service", "parking_aisle"}}}, - {{"highway", "service", "tunnel"}, {{"highway", "service"}, {"tunnel", "any_value"}}}, - {{"highway", "steps", "bridge"}, {{"highway", "steps"}, {"bridge", "any_value"}}}, - {{"highway", "steps", "tunnel"}, {{"highway", "steps"}, {"tunnel", "any_value"}}}, - {{"highway", "tertiary", "bridge"}, {{"highway", "tertiary"}, {"bridge", "any_value"}}}, - {{"highway", "tertiary", "tunnel"}, {{"highway", "tertiary"}, {"tunnel", "any_value"}}}, - {{"highway", "tertiary_link", "bridge"}, {{"highway", "tertiary_link"}, {"bridge", "any_value"}}}, - {{"highway", "tertiary_link", "tunnel"}, {{"highway", "tertiary_link"}, {"tunnel", "any_value"}}}, - {{"highway", "track", "area"}, {{"highway", "track"}, {"area", "any_value"}}}, - {{"highway", "track", "bridge"}, {{"highway", "track"}, {"bridge", "any_value"}}}, - {{"highway", "track", "tunnel"}, {{"highway", "track"}, {"tunnel", "any_value"}}}, - {{"highway", "trunk", "bridge"}, {{"highway", "trunk"}, {"bridge", "any_value"}}}, - {{"highway", "trunk", "tunnel"}, {{"highway", "trunk"}, {"tunnel", "any_value"}}}, - {{"highway", "trunk_link", "bridge"}, {{"highway", "trunk_link"}, {"bridge", "any_value"}}}, - {{"highway", "trunk_link", "tunnel"}, {{"highway", "trunk_link"}, {"tunnel", "any_value"}}}, - {{"highway", "unclassified", "area"}, {{"highway", "unclassified"}, {"area", "any_value"}}}, - {{"highway", "unclassified", "bridge"}, {{"highway", "unclassified"}, {"bridge", "any_value"}}}, - {{"highway", "unclassified", "tunnel"}, {{"highway", "unclassified"}, {"tunnel", "any_value"}}}, - {{"historic", "castle", "defensive"}, {{"historic", "castle"}, {"castle_type", "defensive"}}}, - {{"historic", "castle", "fortress"}, {{"historic", "castle"}, {"castle_type", "fortress"}}}, - {{"historic", "castle", "fortress"}, {{"historic", "fortress"}}}, - {{"historic", "castle", "manor"}, {{"historic", "castle"}, {"castle_type", "manor"}}}, - {{"historic", "castle", "manor"}, {{"historic", "manor"}}}, - {{"historic", "castle", "stately"}, {{"historic", "castle"}, {"castle_type", "stately"}}}, - {{"historic", "memorial", "cross"}, {{"historic", "memorial"}, {"memorial", "cross"}}}, - {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial", "plaque"}}}, - {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial:type", "plaque"}}}, - {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial:type", "plate"}}}, - {{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial", "sculpture"}}}, - {{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial:type", "sculpture"}}}, - {{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial", "statue"}}}, - {{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial:type", "statue"}}}, - {{"historic", "memorial", "stolperstein"}, {{"historic", "memorial"}, {"memorial", "stolperstein"}}}, - {{"historic", "memorial", "stolperstein"}, {{"historic", "memorial"}, {"memorial:type", "stolperstein"}}}, - {{"historic", "memorial", "war_memorial"}, {{"historic", "memorial"}, {"memorial", "war_memorial"}}}, - {{"historic", "memorial", "war_memorial"}, {{"historic", "memorial"}, {"memorial:type", "war_memorial"}}}, - {{"internet_access"}, {{"internet_access", "any_value"}}}, - {{"landuse", "cemetery", "christian"}, {{"landuse", "cemetery"}, {"religion", "christian"}}}, - {{"landuse", "forest"}, {{"landuse", "forest"}}}, - {{"landuse", "forest"}, {{"natural", "wood"}}}, - {{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"leaf_type", "coniferous"}}}, - {{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"wood", "coniferous"}}}, - {{"landuse", "forest", "coniferous"}, {{"natural", "wood"}, {"leaf_type", "coniferous"}}}, - {{"landuse", "forest", "coniferous"}, {{"natural", "wood"}, {"wood", "coniferous"}}}, - {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_cycle", "deciduous"}}}, - {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_type", "deciduous"}}}, - {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"wood", "deciduous"}}}, - {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"leaf_cycle", "deciduous"}}}, - {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"leaf_type", "deciduous"}}}, - {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"wood", "deciduous"}}}, - {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_cycle", "mixed"}}}, - {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_type", "mixed"}}}, - {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"wood", "mixed"}}}, - {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"leaf_cycle", "mixed"}}}, - {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"leaf_type", "mixed"}}}, - {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"wood", "mixed"}}}, - {{"leisure", "park", "no-access"}, {{"leisure", "park"}, {"access", "no"}}}, - {{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}}, - {{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}}, - {{"leisure", "sports_centre"}, {{"leisure", "sports_centre"}}}, - {{"leisure", "track", "area"}, {{"leisure", "track"}, {"area", "any_value"}}}, - {{"mountain_pass"}, {{"mountain_pass", "any_value"}}}, - {{"natural", "desert"}, {{"natural", "sand"}, {"desert", "erg"}}}, - {{"natural", "water", "pond"}, {{"natural", "water"}, {"water", "pond"}}}, - {{"natural", "water", "lake"}, {{"natural", "water"}, {"water", "lake"}}}, - {{"natural", "water", "reservoir"}, {{"natural", "water"}, {"water", "reservoir"}}}, - {{"natural", "water", "river"}, {{"natural", "water"}, {"water", "river"}}}, - {{"natural", "water", "basin"}, {{"natural", "water"}, {"water", "basin"}}}, - {{"natural", "water", "lock"}, {{"natural", "water"}, {"water", "lock"}}}, - {{"natural", "wetland", "bog"}, {{"natural", "wetland"}, {"wetland", "bog"}}}, - {{"natural", "wetland", "marsh"}, {{"natural", "wetland"}, {"wetland", "marsh"}}}, - {{"natural", "wetland", "marsh"}, {{"natural", "wetland"}, {"wetland", "wet_meadow"}}}, - {{"natural", "wetland", "saltmarsh"}, {{"natural", "wetland"}, {"wetland", "saltmarsh"}}}, - {{"natural", "wetland", "saltmarsh", "tidal"}, {{"natural", "wetland"}, {"wetland", "saltmarsh"}, {"tidal", "yes"}}}, - {{"natural", "wetland", "fen"}, {{"natural", "wetland"}, {"wetland", "fen"}}}, - {{"natural", "wetland", "reedbed"}, {{"natural", "wetland"}, {"wetland", "reedbed"}}}, - {{"natural", "wetland", "swamp"}, {{"natural", "wetland"}, {"wetland", "swamp"}}}, - {{"natural", "wetland", "mangrove"}, {{"natural", "wetland"}, {"wetland", "mangrove"}}}, - {{"natural", "wetland", "tidalflat"}, {{"natural", "wetland"}, {"wetland", "tidalflat"}}}, - {{"office"}, {{"office", "any_value"}}}, - {{"piste:type", "downhill", "advanced"}, {{"piste:type", "downhill"}, {"piste:difficulty", "advanced"}}}, - {{"piste:type", "downhill", "easy"}, {{"piste:type", "downhill"}, {"piste:difficulty", "easy"}}}, - {{"piste:type", "downhill", "expert"}, {{"piste:type", "downhill"}, {"piste:difficulty", "expert"}}}, - {{"piste:type", "downhill", "freeride"}, {{"piste:type", "downhill"}, {"piste:difficulty", "freeride"}}}, - {{"piste:type", "downhill", "intermediate"}, {{"piste:type", "downhill"}, {"piste:difficulty", "intermediate"}}}, - {{"piste:type", "downhill", "novice"}, {{"piste:type", "downhill"}, {"piste:difficulty", "novice"}}}, - {{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "10"}}}, - {{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "10"}}}, - {{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "11"}}}, - {{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "11"}}}, - {{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "2"}}}, - {{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "2"}}}, - {{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "3"}}}, - {{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "3"}}}, - {{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "4"}}}, - {{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "4"}}}, - {{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "5"}}}, - {{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "5"}}}, - {{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "6"}}}, - {{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "6"}}}, - {{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "7"}}}, - {{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "7"}}}, - {{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "8"}}}, - {{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "8"}}}, - {{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "9"}}}, - {{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "9"}}}, - {{"place", "city", "capital"}, {{"place", "city"}, {"capital", "any_value"}}}, - {{"place", "state", "USA"}, {{"place", "state"}, {"addr:country", "US"}}}, - {{"place", "state", "USA"}, {{"place", "state"}, {"is_in", "USA"}}}, - {{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country", "USA"}}}, - {{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country_code", "us"}}}, - {{"railway", "abandoned", "bridge"}, {{"railway", "abandoned"}, {"bridge", "any_value"}}}, - {{"railway", "abandoned", "tunnel"}, {{"railway", "abandoned"}, {"tunnel", "any_value"}}}, - {{"railway", "funicular", "bridge"}, {{"railway", "funicular"}, {"bridge", "any_value"}}}, - {{"railway", "funicular", "tunnel"}, {{"railway", "funicular"}, {"tunnel", "any_value"}}}, - {{"railway", "light_rail", "bridge"}, {{"railway", "light_rail"}, {"bridge", "any_value"}}}, - //{{"railway", "light_rail", "tunnel"}, {{"railway", "light_rail"}, {"tunnel", "any_value"}}}, - {{"railway", "monorail", "bridge"}, {{"railway", "monorail"}, {"bridge", "any_value"}}}, - {{"railway", "monorail", "tunnel"}, {{"railway", "monorail"}, {"tunnel", "any_value"}}}, - {{"railway", "narrow_gauge", "bridge"}, {{"railway", "narrow_gauge"}, {"bridge", "any_value"}}}, - {{"railway", "narrow_gauge", "tunnel"}, {{"railway", "narrow_gauge"}, {"tunnel", "any_value"}}}, - {{"railway", "preserved", "bridge"}, {{"railway", "preserved"}, {"bridge", "any_value"}}}, - {{"railway", "preserved", "tunnel"}, {{"railway", "preserved"}, {"tunnel", "any_value"}}}, - {{"railway", "station", "light_rail"}, {{"railway", "station"}, {"station", "light_rail"}}}, - {{"railway", "station", "light_rail"}, {{"railway", "station"}, {"transport", "light_rail"}}}, - {{"railway", "station", "monorail"}, {{"railway", "station"}, {"station", "monorail"}}}, - {{"railway", "station", "monorail"}, {{"railway", "station"}, {"transport", "monorail"}}}, - {{"railway", "station", "subway", "barcelona"}, {{"railway", "station"}, {"station", "subway"}, {"city", "barcelona"}}}, - {{"railway", "station", "subway", "barcelona"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "barcelona"}}}, - {{"railway", "station", "subway", "berlin"}, {{"railway", "station"}, {"station", "subway"}, {"city", "berlin"}}}, - {{"railway", "station", "subway", "berlin"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "berlin"}}}, - {{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"station", "subway"}, {"city", "kiev"}}}, - {{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "kiev"}}}, - {{"railway", "station", "subway", "london"}, {{"railway", "station"}, {"station", "subway"}, {"city", "london"}}}, - {{"railway", "station", "subway", "london"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "london"}}}, - {{"railway", "station", "subway", "madrid"}, {{"railway", "station"}, {"station", "subway"}, {"city", "madrid"}}}, - {{"railway", "station", "subway", "madrid"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "madrid"}}}, - {{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"station", "subway"}, {"city", "minsk"}}}, - {{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "minsk"}}}, - {{"railway", "station", "subway", "moscow"}, {{"railway", "station"}, {"station", "subway"}, {"city", "moscow"}}}, - {{"railway", "station", "subway", "moscow"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "moscow"}}}, - {{"railway", "station", "subway", "newyork"}, {{"railway", "station"}, {"station", "subway"}, {"city", "newyork"}}}, - {{"railway", "station", "subway", "newyork"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "newyork"}}}, - {{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"station", "subway"}, {"city", "paris"}}}, - {{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "paris"}}}, - {{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"station", "subway"}, {"city", "roma"}}}, - {{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "roma"}}}, - {{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"station", "subway"}, {"city", "spb"}}}, - {{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "spb"}}}, - {{"railway", "station", "subway"}, {{"railway", "station"}, {"station", "subway"}}}, - {{"railway", "station", "subway"}, {{"railway", "station"}, {"transport", "subway"}}}, - {{"railway", "subway", "bridge"}, {{"railway", "subway"}, {"bridge", "any_value"}}}, - //{{"railway", "subway", "tunnel"}, {{"railway", "subway"}, {"tunnel", "any_value"}}}, - {{"railway", "subway_entrance", "barcelona"}, {{"railway", "subway_entrance"}, {"city", "barcelona"}}}, - {{"railway", "subway_entrance", "berlin"}, {{"railway", "subway_entrance"}, {"city", "berlin"}}}, - {{"railway", "subway_entrance", "kiev"}, {{"railway", "subway_entrance"}, {"city", "kiev"}}}, - {{"railway", "subway_entrance", "london"}, {{"railway", "subway_entrance"}, {"city", "london"}}}, - {{"railway", "subway_entrance", "madrid"}, {{"railway", "subway_entrance"}, {"city", "madrid"}}}, - {{"railway", "subway_entrance", "minsk"}, {{"railway", "subway_entrance"}, {"city", "minsk"}}}, - {{"railway", "subway_entrance", "moscow"}, {{"railway", "subway_entrance"}, {"city", "moscow"}}}, - {{"railway", "subway_entrance", "newyork"}, {{"railway", "subway_entrance"}, {"city", "newyork"}}}, - {{"railway", "subway_entrance", "paris"}, {{"railway", "subway_entrance"}, {"city", "paris"}}}, - {{"railway", "subway_entrance", "roma"}, {{"railway", "subway_entrance"}, {"city", "roma"}}}, - {{"railway", "subway_entrance", "spb"}, {{"railway", "subway_entrance"}, {"city", "spb"}}}, - {{"railway", "tram", "bridge"}, {{"railway", "tram"}, {"bridge", "any_value"}}}, - {{"railway", "tram", "tunnel"}, {{"railway", "tram"}, {"tunnel", "any_value"}}}, - {{"shop", "car_repair", "tyres"}, {{"shop", "car_repair"}, {"service", "tyres"}}}, - {{"shop", "clothes"}, {{"shop", "clothes"}}}, - {{"shop", "clothes"}, {{"shop", "fashion"}}}, - {{"shop"}, {{"shop", "any_value"}}}, - {{"sport", "golf"}, {{"sport", "golf"}}}, - {{"sport", "golf"}, {{"sport", "miniature_golf"}}}, - {{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"artwork_type", "architecture"}}}, - {{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"type", "architecture"}}}, - {{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"artwork_type", "painting"}}}, - {{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"type", "painting"}}}, - {{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"artwork_type", "sculpture"}}}, - {{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"type", "sculpture"}}}, - {{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"artwork_type", "statue"}}}, - {{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"type", "statue"}}}, - {{"attraction", "animal"}, {{"attraction", "animal"}}}, - {{"tourism", "information", "board"}, {{"tourism", "information"}, {"information", "board"}}}, - {{"tourism", "information", "guidepost"}, {{"tourism", "information"}, {"information", "guidepost"}}}, - {{"tourism", "information", "map"}, {{"tourism", "information"}, {"information", "map"}}}, - {{"tourism", "information", "office"}, {{"tourism", "information"}, {"information", "office"}}}, - //{{"waterway", "canal", "tunnel"}, {{"waterway", "canal"}, {"tunnel", "any_value"}}}, - //{{"waterway", "river", "tunnel"}, {{"waterway", "river"}, {"tunnel", "any_value"}}}, - {{"waterway", "stream", "ephemeral"}, {{"waterway", "stream"}, {"intermittent", "ephemeral"}}}, - {{"waterway", "stream", "intermittent"}, {{"waterway", "stream"}, {"intermittent", "yes"}}}, + // Filtered out by MatchTypes filter because have no styles. + // {{"communication", "line", "underground"}, {{"communication", "line"}, {"location", "underground"}}}, + // {{"man_made", "pipeline", "overground"}, {{"man_made", "pipeline"}, {"location", "overground"}}}, + // {{"railway", "siding", "bridge"}, {{"railway", "siding"}, {"bridge", "any_value"}}}, + // {{"railway", "siding", "tunnel"}, {{"railway", "siding"}, {"tunnel", "any_value"}}}, + // {{"railway", "spur", "bridge"}, {{"railway", "spur"}, {"bridge", "any_value"}}}, + // {{"railway", "spur", "tunnel"}, {{"railway", "spur"}, {"tunnel", "any_value"}}}, + // {{"waterway", "ditch", "tunnel"}, {{"waterway", "ditch"}, {"tunnel", "any_value"}}}, + // {{"waterway", "drain", "tunnel"}, {{"waterway", "drain"}, {"tunnel", "any_value"}}}, + // {{"waterway", "stream", "tunnel"}, {{"waterway", "stream"}, {"tunnel", "any_value"}}}, + // + // two types (+hwtag yesbicycle) {{"highway", "path", "bicycle"}, {{"highway", "path"}, {"bicycle", + // "any_value"}}}, + // two types (+hwtag-private) {{"highway", "track", "no-access"}, {{"highway", "track"}, {"access", "no"}}}, + // two types (+office) {{"tourism", "information", "office"}, {{"tourism", "information"}, {"office", + // "any_value"}}}, + // two types (+sport-*) {{"leisure", "sports_centre"}, {{"leisure", "sports_centre"}, {"sport", "any_value"}}}, + // + // Manually constructed type, not parsed from osm. + // {{"building", "address"}, {{"addr:housenumber", "any_value"}, {"addr:street", "any_value"}}}, + {{"addr:interpolation"}, {{"addr:interpolation", "all"}}}, + {{"aeroway", "aerodrome", "international"}, {{"aeroway", "aerodrome"}, {"aerodrome", "international"}}}, + {{"amenity", "grave_yard", "christian"}, {{"amenity", "grave_yard"}, {"religion", "christian"}}}, + {{"amenity", "parking", "lane"}, {{"amenity", "parking"}, {"parking", "lane"}}}, + {{"amenity", "parking", "multi-storey"}, {{"amenity", "parking"}, {"parking", "multi-storey"}}}, + {{"amenity", "parking", "no-access"}, {{"amenity", "parking"}, {"access", "no"}}}, + {{"amenity", "parking", "park_and_ride"}, {{"amenity", "parking"}, {"parking", "park_and_ride"}}}, + {{"amenity", "parking", "permissive"}, {{"amenity", "parking"}, {"access", "permissive"}}}, + {{"amenity", "parking", "private"}, {{"amenity", "parking"}, {"access", "private"}}}, + {{"amenity", "parking", "street_side"}, {{"amenity", "parking"}, {"parking", "street_side"}}}, + {{"amenity", "parking", "underground"}, {{"amenity", "parking"}, {"location", "underground"}}}, + {{"amenity", "parking_space", "permissive"}, {{"amenity", "parking_space"}, {"access", "permissive"}}}, + {{"amenity", "parking_space", "private"}, {{"amenity", "parking_space"}, {"access", "private"}}}, + {{"amenity", "parking_space", "underground"}, {{"amenity", "parking_space"}, {"parking", "underground"}}}, + {{"amenity", "place_of_worship", "buddhist"}, {{"amenity", "place_of_worship"}, {"religion", "buddhist"}}}, + {{"amenity", "place_of_worship", "christian"}, {{"amenity", "place_of_worship"}, {"religion", "christian"}}}, + {{"amenity", "place_of_worship", "hindu"}, {{"amenity", "place_of_worship"}, {"religion", "hindu"}}}, + {{"amenity", "place_of_worship", "jewish"}, {{"amenity", "place_of_worship"}, {"religion", "jewish"}}}, + {{"amenity", "place_of_worship", "muslim"}, {{"amenity", "place_of_worship"}, {"religion", "muslim"}}}, + {{"amenity", "place_of_worship", "shinto"}, {{"amenity", "place_of_worship"}, {"religion", "shinto"}}}, + {{"amenity", "place_of_worship", "taoist"}, {{"amenity", "place_of_worship"}, {"religion", "taoist"}}}, + {{"amenity", "recycling", "centre"}, {{"amenity", "recycling"}, {"recycling_type", "centre"}}}, + {{"amenity", "recycling", "container"}, {{"amenity", "recycling"}, {"recycling_type", "container"}}}, + {{"amenity", "recycling"}, {{"amenity", "recycling"}}}, + {{"amenity", "parcel_locker"}, {{"amenity", "parcel_locker"}}}, + {{"amenity", "vending_machine", "cigarettes"}, {{"amenity", "vending_machine"}, {"vending", "cigarettes"}}}, + {{"amenity", "vending_machine", "coffee"}, {{"amenity", "vending_machine"}, {"vending", "coffee"}}}, + {{"amenity", "vending_machine", "condoms"}, {{"amenity", "vending_machine"}, {"vending", "condoms"}}}, + {{"amenity", "vending_machine", "drinks"}, {{"amenity", "vending_machine"}, {"vending", "drinks"}}}, + {{"amenity", "vending_machine", "food"}, {{"amenity", "vending_machine"}, {"vending", "food"}}}, + {{"amenity", "vending_machine", "parking_tickets"}, + {{"amenity", "vending_machine"}, {"vending", "parking_tickets"}}}, + {{"amenity", "vending_machine", "public_transport_tickets"}, + {{"amenity", "vending_machine"}, {"vending", "public_transport_tickets"}}}, + {{"amenity", "vending_machine", "newspapers"}, {{"amenity", "vending_machine"}, {"vending", "newspapers"}}}, + {{"amenity", "vending_machine", "sweets"}, {{"amenity", "vending_machine"}, {"vending", "sweets"}}}, + {{"amenity"}, {{"amenity", "any_value"}}}, + {{"boundary", "administrative", "2"}, {{"boundary", "administrative"}, {"admin_level", "2"}}}, + {{"boundary", "administrative", "3"}, {{"boundary", "administrative"}, {"admin_level", "3"}}}, + {{"boundary", "administrative", "4"}, {{"boundary", "administrative"}, {"admin_level", "4"}}}, + {{"building", "garage"}, {{"building", "garage"}}}, + {{"building", "garage"}, {{"building", "yes"}, {"garage", "any_value"}}}, + {{"building"}, {{"building", "any_value"}}}, + {{"building:part"}, {{"building:part", "any_value"}}}, + {{"entrance"}, {{"entrance", "any_value"}}}, + {{"highway", "bridleway", "bridge"}, {{"highway", "bridleway"}, {"bridge", "any_value"}}}, + {{"highway", "bridleway", "tunnel"}, {{"highway", "bridleway"}, {"tunnel", "any_value"}}}, + {{"highway", "busway"}, {{"highway", "service"}, {"service", "bus"}}}, + {{"highway", "busway"}, {{"highway", "service"}, {"service", "busway"}}}, + {{"highway", "busway", "bridge"}, {{"highway", "busway"}, {"bridge", "any_value"}}}, + {{"highway", "busway", "tunnel"}, {{"highway", "busway"}, {"tunnel", "any_value"}}}, + {{"highway", "cycleway", "bridge"}, {{"highway", "cycleway"}, {"bridge", "any_value"}}}, + {{"highway", "cycleway", "tunnel"}, {{"highway", "cycleway"}, {"tunnel", "any_value"}}}, + {{"highway", "footway", "area"}, {{"highway", "footway"}, {"area", "any_value"}}}, + {{"highway", "footway", "bridge"}, {{"highway", "footway"}, {"bridge", "any_value"}}}, + {{"highway", "footway"}, {{"highway", "footway"}, {"footway", "unsupported_value"}}}, + {{"highway", "footway", "sidewalk"}, {{"highway", "footway"}, {"footway", "sidewalk"}}}, + {{"highway", "footway", "crossing"}, {{"highway", "footway"}, {"footway", "crossing"}}}, + {{"highway", "footway", "tunnel"}, {{"highway", "footway"}, {"tunnel", "any_value"}}}, + {{"highway", "footway", "tunnel"}, {{"highway", "footway"}, {"location", "underground"}}}, + {{"highway", "living_street", "bridge"}, {{"highway", "living_street"}, {"bridge", "any_value"}}}, + {{"highway", "living_street", "tunnel"}, {{"highway", "living_street"}, {"tunnel", "any_value"}}}, + {{"highway", "motorway", "bridge"}, {{"highway", "motorway"}, {"bridge", "any_value"}}}, + {{"highway", "motorway", "tunnel"}, {{"highway", "motorway"}, {"tunnel", "any_value"}}}, + {{"highway", "motorway_link", "bridge"}, {{"highway", "motorway_link"}, {"bridge", "any_value"}}}, + {{"highway", "motorway_link", "tunnel"}, {{"highway", "motorway_link"}, {"tunnel", "any_value"}}}, + {{"highway", "path", "bridge"}, {{"highway", "path"}, {"bridge", "any_value"}}}, + {{"highway", "path", "horse"}, {{"highway", "path"}, {"horse", "any_value"}}}, + {{"highway", "path", "tunnel"}, {{"highway", "path"}, {"tunnel", "any_value"}}}, + {{"highway", "path", "difficult"}, {{"highway", "path"}, {"_path_grade", "difficult"}}}, + {{"highway", "path", "expert"}, {{"highway", "path"}, {"_path_grade", "expert"}}}, + {{"highway", "pedestrian", "area"}, {{"highway", "pedestrian"}, {"area", "any_value"}}}, + {{"highway", "pedestrian", "bridge"}, {{"highway", "pedestrian"}, {"bridge", "any_value"}}}, + {{"highway", "pedestrian", "tunnel"}, {{"highway", "pedestrian"}, {"tunnel", "any_value"}}}, + {{"highway", "primary", "bridge"}, {{"highway", "primary"}, {"bridge", "any_value"}}}, + {{"highway", "primary", "tunnel"}, {{"highway", "primary"}, {"tunnel", "any_value"}}}, + {{"highway", "primary_link", "bridge"}, {{"highway", "primary_link"}, {"bridge", "any_value"}}}, + {{"highway", "primary_link", "tunnel"}, {{"highway", "primary_link"}, {"tunnel", "any_value"}}}, + {{"highway", "residential", "area"}, {{"highway", "residential"}, {"area", "any_value"}}}, + {{"highway", "residential", "bridge"}, {{"highway", "residential"}, {"bridge", "any_value"}}}, + {{"highway", "residential", "tunnel"}, {{"highway", "residential"}, {"tunnel", "any_value"}}}, + {{"highway", "road", "bridge"}, {{"highway", "road"}, {"bridge", "any_value"}}}, + {{"highway", "road", "tunnel"}, {{"highway", "road"}, {"tunnel", "any_value"}}}, + {{"highway", "secondary", "bridge"}, {{"highway", "secondary"}, {"bridge", "any_value"}}}, + {{"highway", "secondary", "tunnel"}, {{"highway", "secondary"}, {"tunnel", "any_value"}}}, + {{"highway", "secondary_link", "bridge"}, {{"highway", "secondary_link"}, {"bridge", "any_value"}}}, + {{"highway", "secondary_link", "tunnel"}, {{"highway", "secondary_link"}, {"tunnel", "any_value"}}}, + {{"highway", "service", "area"}, {{"highway", "service"}, {"area", "any_value"}}}, + {{"highway", "service", "bridge"}, {{"highway", "service"}, {"bridge", "any_value"}}}, + {{"highway", "service", "driveway"}, {{"highway", "service"}, {"service", "driveway"}}}, + {{"highway", "service", "parking_aisle"}, {{"highway", "service"}, {"service", "parking_aisle"}}}, + {{"highway", "service", "tunnel"}, {{"highway", "service"}, {"tunnel", "any_value"}}}, + {{"highway", "steps", "bridge"}, {{"highway", "steps"}, {"bridge", "any_value"}}}, + {{"highway", "steps", "tunnel"}, {{"highway", "steps"}, {"tunnel", "any_value"}}}, + {{"highway", "tertiary", "bridge"}, {{"highway", "tertiary"}, {"bridge", "any_value"}}}, + {{"highway", "tertiary", "tunnel"}, {{"highway", "tertiary"}, {"tunnel", "any_value"}}}, + {{"highway", "tertiary_link", "bridge"}, {{"highway", "tertiary_link"}, {"bridge", "any_value"}}}, + {{"highway", "tertiary_link", "tunnel"}, {{"highway", "tertiary_link"}, {"tunnel", "any_value"}}}, + {{"highway", "track", "area"}, {{"highway", "track"}, {"area", "any_value"}}}, + {{"highway", "track", "bridge"}, {{"highway", "track"}, {"bridge", "any_value"}}}, + {{"highway", "track", "tunnel"}, {{"highway", "track"}, {"tunnel", "any_value"}}}, + {{"highway", "trunk", "bridge"}, {{"highway", "trunk"}, {"bridge", "any_value"}}}, + {{"highway", "trunk", "tunnel"}, {{"highway", "trunk"}, {"tunnel", "any_value"}}}, + {{"highway", "trunk_link", "bridge"}, {{"highway", "trunk_link"}, {"bridge", "any_value"}}}, + {{"highway", "trunk_link", "tunnel"}, {{"highway", "trunk_link"}, {"tunnel", "any_value"}}}, + {{"highway", "unclassified", "area"}, {{"highway", "unclassified"}, {"area", "any_value"}}}, + {{"highway", "unclassified", "bridge"}, {{"highway", "unclassified"}, {"bridge", "any_value"}}}, + {{"highway", "unclassified", "tunnel"}, {{"highway", "unclassified"}, {"tunnel", "any_value"}}}, + {{"historic", "castle", "defensive"}, {{"historic", "castle"}, {"castle_type", "defensive"}}}, + {{"historic", "castle", "fortress"}, {{"historic", "castle"}, {"castle_type", "fortress"}}}, + {{"historic", "castle", "fortress"}, {{"historic", "fortress"}}}, + {{"historic", "castle", "manor"}, {{"historic", "castle"}, {"castle_type", "manor"}}}, + {{"historic", "castle", "manor"}, {{"historic", "manor"}}}, + {{"historic", "castle", "stately"}, {{"historic", "castle"}, {"castle_type", "stately"}}}, + {{"historic", "memorial", "cross"}, {{"historic", "memorial"}, {"memorial", "cross"}}}, + {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial", "plaque"}}}, + {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial:type", "plaque"}}}, + {{"historic", "memorial", "plaque"}, {{"historic", "memorial"}, {"memorial:type", "plate"}}}, + {{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial", "sculpture"}}}, + {{"historic", "memorial", "sculpture"}, {{"historic", "memorial"}, {"memorial:type", "sculpture"}}}, + {{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial", "statue"}}}, + {{"historic", "memorial", "statue"}, {{"historic", "memorial"}, {"memorial:type", "statue"}}}, + {{"historic", "memorial", "stolperstein"}, {{"historic", "memorial"}, {"memorial", "stolperstein"}}}, + {{"historic", "memorial", "stolperstein"}, {{"historic", "memorial"}, {"memorial:type", "stolperstein"}}}, + {{"historic", "memorial", "war_memorial"}, {{"historic", "memorial"}, {"memorial", "war_memorial"}}}, + {{"historic", "memorial", "war_memorial"}, {{"historic", "memorial"}, {"memorial:type", "war_memorial"}}}, + {{"internet_access"}, {{"internet_access", "any_value"}}}, + {{"landuse", "cemetery", "christian"}, {{"landuse", "cemetery"}, {"religion", "christian"}}}, + {{"landuse", "forest"}, {{"landuse", "forest"}}}, + {{"landuse", "forest"}, {{"natural", "wood"}}}, + {{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"leaf_type", "coniferous"}}}, + {{"landuse", "forest", "coniferous"}, {{"landuse", "forest"}, {"wood", "coniferous"}}}, + {{"landuse", "forest", "coniferous"}, {{"natural", "wood"}, {"leaf_type", "coniferous"}}}, + {{"landuse", "forest", "coniferous"}, {{"natural", "wood"}, {"wood", "coniferous"}}}, + {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_cycle", "deciduous"}}}, + {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"leaf_type", "deciduous"}}}, + {{"landuse", "forest", "deciduous"}, {{"landuse", "forest"}, {"wood", "deciduous"}}}, + {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"leaf_cycle", "deciduous"}}}, + {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"leaf_type", "deciduous"}}}, + {{"landuse", "forest", "deciduous"}, {{"natural", "wood"}, {"wood", "deciduous"}}}, + {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_cycle", "mixed"}}}, + {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"leaf_type", "mixed"}}}, + {{"landuse", "forest", "mixed"}, {{"landuse", "forest"}, {"wood", "mixed"}}}, + {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"leaf_cycle", "mixed"}}}, + {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"leaf_type", "mixed"}}}, + {{"landuse", "forest", "mixed"}, {{"natural", "wood"}, {"wood", "mixed"}}}, + {{"leisure", "park", "no-access"}, {{"leisure", "park"}, {"access", "no"}}}, + {{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}}, + {{"leisure", "park", "private"}, {{"leisure", "park"}, {"access", "private"}}}, + {{"leisure", "sports_centre"}, {{"leisure", "sports_centre"}}}, + {{"leisure", "track", "area"}, {{"leisure", "track"}, {"area", "any_value"}}}, + {{"mountain_pass"}, {{"mountain_pass", "any_value"}}}, + {{"natural", "desert"}, {{"natural", "sand"}, {"desert", "erg"}}}, + {{"natural", "water", "pond"}, {{"natural", "water"}, {"water", "pond"}}}, + {{"natural", "water", "lake"}, {{"natural", "water"}, {"water", "lake"}}}, + {{"natural", "water", "reservoir"}, {{"natural", "water"}, {"water", "reservoir"}}}, + {{"natural", "water", "river"}, {{"natural", "water"}, {"water", "river"}}}, + {{"natural", "water", "basin"}, {{"natural", "water"}, {"water", "basin"}}}, + {{"natural", "water", "lock"}, {{"natural", "water"}, {"water", "lock"}}}, + {{"natural", "wetland", "bog"}, {{"natural", "wetland"}, {"wetland", "bog"}}}, + {{"natural", "wetland", "marsh"}, {{"natural", "wetland"}, {"wetland", "marsh"}}}, + {{"natural", "wetland", "marsh"}, {{"natural", "wetland"}, {"wetland", "wet_meadow"}}}, + {{"natural", "wetland", "saltmarsh"}, {{"natural", "wetland"}, {"wetland", "saltmarsh"}}}, + {{"natural", "wetland", "saltmarsh", "tidal"}, + {{"natural", "wetland"}, {"wetland", "saltmarsh"}, {"tidal", "yes"}}}, + {{"natural", "wetland", "fen"}, {{"natural", "wetland"}, {"wetland", "fen"}}}, + {{"natural", "wetland", "reedbed"}, {{"natural", "wetland"}, {"wetland", "reedbed"}}}, + {{"natural", "wetland", "swamp"}, {{"natural", "wetland"}, {"wetland", "swamp"}}}, + {{"natural", "wetland", "mangrove"}, {{"natural", "wetland"}, {"wetland", "mangrove"}}}, + {{"natural", "wetland", "tidalflat"}, {{"natural", "wetland"}, {"wetland", "tidalflat"}}}, + {{"office"}, {{"office", "any_value"}}}, + {{"piste:type", "downhill", "advanced"}, {{"piste:type", "downhill"}, {"piste:difficulty", "advanced"}}}, + {{"piste:type", "downhill", "easy"}, {{"piste:type", "downhill"}, {"piste:difficulty", "easy"}}}, + {{"piste:type", "downhill", "expert"}, {{"piste:type", "downhill"}, {"piste:difficulty", "expert"}}}, + {{"piste:type", "downhill", "freeride"}, {{"piste:type", "downhill"}, {"piste:difficulty", "freeride"}}}, + {{"piste:type", "downhill", "intermediate"}, {{"piste:type", "downhill"}, {"piste:difficulty", "intermediate"}}}, + {{"piste:type", "downhill", "novice"}, {{"piste:type", "downhill"}, {"piste:difficulty", "novice"}}}, + {{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "10"}}}, + {{"place", "city", "capital", "10"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "10"}}}, + {{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "11"}}}, + {{"place", "city", "capital", "11"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "11"}}}, + {{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "2"}}}, + {{"place", "city", "capital", "2"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "2"}}}, + {{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "3"}}}, + {{"place", "city", "capital", "3"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "3"}}}, + {{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "4"}}}, + {{"place", "city", "capital", "4"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "4"}}}, + {{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "5"}}}, + {{"place", "city", "capital", "5"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "5"}}}, + {{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "6"}}}, + {{"place", "city", "capital", "6"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "6"}}}, + {{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "7"}}}, + {{"place", "city", "capital", "7"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "7"}}}, + {{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "8"}}}, + {{"place", "city", "capital", "8"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "8"}}}, + {{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "9"}}}, + {{"place", "city", "capital", "9"}, {{"place", "city"}, {"capital", "any_value"}, {"admin_level", "9"}}}, + {{"place", "city", "capital"}, {{"place", "city"}, {"capital", "any_value"}}}, + {{"place", "state", "USA"}, {{"place", "state"}, {"addr:country", "US"}}}, + {{"place", "state", "USA"}, {{"place", "state"}, {"is_in", "USA"}}}, + {{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country", "USA"}}}, + {{"place", "state", "USA"}, {{"place", "state"}, {"is_in:country_code", "us"}}}, + {{"railway", "abandoned", "bridge"}, {{"railway", "abandoned"}, {"bridge", "any_value"}}}, + {{"railway", "abandoned", "tunnel"}, {{"railway", "abandoned"}, {"tunnel", "any_value"}}}, + {{"railway", "funicular", "bridge"}, {{"railway", "funicular"}, {"bridge", "any_value"}}}, + {{"railway", "funicular", "tunnel"}, {{"railway", "funicular"}, {"tunnel", "any_value"}}}, + {{"railway", "light_rail", "bridge"}, {{"railway", "light_rail"}, {"bridge", "any_value"}}}, + //{{"railway", "light_rail", "tunnel"}, {{"railway", "light_rail"}, {"tunnel", "any_value"}}}, + {{"railway", "monorail", "bridge"}, {{"railway", "monorail"}, {"bridge", "any_value"}}}, + {{"railway", "monorail", "tunnel"}, {{"railway", "monorail"}, {"tunnel", "any_value"}}}, + {{"railway", "narrow_gauge", "bridge"}, {{"railway", "narrow_gauge"}, {"bridge", "any_value"}}}, + {{"railway", "narrow_gauge", "tunnel"}, {{"railway", "narrow_gauge"}, {"tunnel", "any_value"}}}, + {{"railway", "preserved", "bridge"}, {{"railway", "preserved"}, {"bridge", "any_value"}}}, + {{"railway", "preserved", "tunnel"}, {{"railway", "preserved"}, {"tunnel", "any_value"}}}, + {{"railway", "station", "light_rail"}, {{"railway", "station"}, {"station", "light_rail"}}}, + {{"railway", "station", "light_rail"}, {{"railway", "station"}, {"transport", "light_rail"}}}, + {{"railway", "station", "monorail"}, {{"railway", "station"}, {"station", "monorail"}}}, + {{"railway", "station", "monorail"}, {{"railway", "station"}, {"transport", "monorail"}}}, + {{"railway", "station", "subway", "barcelona"}, + {{"railway", "station"}, {"station", "subway"}, {"city", "barcelona"}}}, + {{"railway", "station", "subway", "barcelona"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "barcelona"}}}, + {{"railway", "station", "subway", "berlin"}, {{"railway", "station"}, {"station", "subway"}, {"city", "berlin"}}}, + {{"railway", "station", "subway", "berlin"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "berlin"}}}, + {{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"station", "subway"}, {"city", "kiev"}}}, + {{"railway", "station", "subway", "kiev"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "kiev"}}}, + {{"railway", "station", "subway", "london"}, {{"railway", "station"}, {"station", "subway"}, {"city", "london"}}}, + {{"railway", "station", "subway", "london"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "london"}}}, + {{"railway", "station", "subway", "madrid"}, {{"railway", "station"}, {"station", "subway"}, {"city", "madrid"}}}, + {{"railway", "station", "subway", "madrid"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "madrid"}}}, + {{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"station", "subway"}, {"city", "minsk"}}}, + {{"railway", "station", "subway", "minsk"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "minsk"}}}, + {{"railway", "station", "subway", "moscow"}, {{"railway", "station"}, {"station", "subway"}, {"city", "moscow"}}}, + {{"railway", "station", "subway", "moscow"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "moscow"}}}, + {{"railway", "station", "subway", "newyork"}, + {{"railway", "station"}, {"station", "subway"}, {"city", "newyork"}}}, + {{"railway", "station", "subway", "newyork"}, + {{"railway", "station"}, {"transport", "subway"}, {"city", "newyork"}}}, + {{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"station", "subway"}, {"city", "paris"}}}, + {{"railway", "station", "subway", "paris"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "paris"}}}, + {{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"station", "subway"}, {"city", "roma"}}}, + {{"railway", "station", "subway", "roma"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "roma"}}}, + {{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"station", "subway"}, {"city", "spb"}}}, + {{"railway", "station", "subway", "spb"}, {{"railway", "station"}, {"transport", "subway"}, {"city", "spb"}}}, + {{"railway", "station", "subway"}, {{"railway", "station"}, {"station", "subway"}}}, + {{"railway", "station", "subway"}, {{"railway", "station"}, {"transport", "subway"}}}, + {{"railway", "subway", "bridge"}, {{"railway", "subway"}, {"bridge", "any_value"}}}, + //{{"railway", "subway", "tunnel"}, {{"railway", "subway"}, {"tunnel", "any_value"}}}, + {{"railway", "subway_entrance", "barcelona"}, {{"railway", "subway_entrance"}, {"city", "barcelona"}}}, + {{"railway", "subway_entrance", "berlin"}, {{"railway", "subway_entrance"}, {"city", "berlin"}}}, + {{"railway", "subway_entrance", "kiev"}, {{"railway", "subway_entrance"}, {"city", "kiev"}}}, + {{"railway", "subway_entrance", "london"}, {{"railway", "subway_entrance"}, {"city", "london"}}}, + {{"railway", "subway_entrance", "madrid"}, {{"railway", "subway_entrance"}, {"city", "madrid"}}}, + {{"railway", "subway_entrance", "minsk"}, {{"railway", "subway_entrance"}, {"city", "minsk"}}}, + {{"railway", "subway_entrance", "moscow"}, {{"railway", "subway_entrance"}, {"city", "moscow"}}}, + {{"railway", "subway_entrance", "newyork"}, {{"railway", "subway_entrance"}, {"city", "newyork"}}}, + {{"railway", "subway_entrance", "paris"}, {{"railway", "subway_entrance"}, {"city", "paris"}}}, + {{"railway", "subway_entrance", "roma"}, {{"railway", "subway_entrance"}, {"city", "roma"}}}, + {{"railway", "subway_entrance", "spb"}, {{"railway", "subway_entrance"}, {"city", "spb"}}}, + {{"railway", "tram", "bridge"}, {{"railway", "tram"}, {"bridge", "any_value"}}}, + {{"railway", "tram", "tunnel"}, {{"railway", "tram"}, {"tunnel", "any_value"}}}, + {{"shop", "car_repair", "tyres"}, {{"shop", "car_repair"}, {"service", "tyres"}}}, + {{"shop", "clothes"}, {{"shop", "clothes"}}}, + {{"shop", "clothes"}, {{"shop", "fashion"}}}, + {{"shop"}, {{"shop", "any_value"}}}, + {{"sport", "golf"}, {{"sport", "golf"}}}, + {{"sport", "golf"}, {{"sport", "miniature_golf"}}}, + {{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"artwork_type", "architecture"}}}, + {{"tourism", "artwork", "architecture"}, {{"tourism", "artwork"}, {"type", "architecture"}}}, + {{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"artwork_type", "painting"}}}, + {{"tourism", "artwork", "painting"}, {{"tourism", "artwork"}, {"type", "painting"}}}, + {{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"artwork_type", "sculpture"}}}, + {{"tourism", "artwork", "sculpture"}, {{"tourism", "artwork"}, {"type", "sculpture"}}}, + {{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"artwork_type", "statue"}}}, + {{"tourism", "artwork", "statue"}, {{"tourism", "artwork"}, {"type", "statue"}}}, + {{"attraction", "animal"}, {{"attraction", "animal"}}}, + {{"tourism", "information", "board"}, {{"tourism", "information"}, {"information", "board"}}}, + {{"tourism", "information", "guidepost"}, {{"tourism", "information"}, {"information", "guidepost"}}}, + {{"tourism", "information", "map"}, {{"tourism", "information"}, {"information", "map"}}}, + {{"tourism", "information", "office"}, {{"tourism", "information"}, {"information", "office"}}}, + //{{"waterway", "canal", "tunnel"}, {{"waterway", "canal"}, {"tunnel", "any_value"}}}, + //{{"waterway", "river", "tunnel"}, {{"waterway", "river"}, {"tunnel", "any_value"}}}, + {{"waterway", "stream", "ephemeral"}, {{"waterway", "stream"}, {"intermittent", "ephemeral"}}}, + {{"waterway", "stream", "intermittent"}, {{"waterway", "stream"}, {"intermittent", "yes"}}}, }; for (auto const & type : complexTypes) @@ -3066,46 +2991,47 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_HighwayTypesConversion) { using Type = std::vector; std::vector> const conversions = { - {{"highway", "cycleway"}, {{"highway", "path"}, {"foot", "no"}, {"bicycle", "designated"}}}, + {{"highway", "cycleway"}, {{"highway", "path"}, {"foot", "no"}, {"bicycle", "designated"}}}, - // Paved etc. paths to footways. - {{"highway", "footway"}, {{"highway", "path"}, {"surface", "paved"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"surface", "paved"}, {"smoothness", "bad"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"surface", "compacted"}, {"smoothness", "intermediate"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"surface", "gravel"}, {"smoothness", "good"}}}, - {{"highway", "footway", "sidewalk"}, {{"highway", "path"}, {"surface", "gravel"}, {"footway", "sidewalk"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"smoothness", "good"}}}, - {{"highway", "footway", "crossing"}, {{"highway", "path"}, {"footway", "crossing"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"lit", "yes"}}}, - {{"highway", "footway"}, {{"highway", "path"}, {"segregated", "no"}}}, - // No conversion. - {{"highway", "path"}, {{"highway", "path"}, {"surface", "unpaved"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"surface", "compacted"}, {"smoothness", "bad"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"surface", "gravel"}, {"tracktype", "grade3"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"surface", "gravel"}, {"tracktype", "grade1"}, {"sac_scale", "hiking"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"smoothness", "good"}, {"tracktype", "grade3"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"tracktype", "grade3"}, {"footway", "sidewalk"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"smoothness", "intermediate"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"lit", "no"}}}, + // Paved etc. paths to footways. + {{"highway", "footway"}, {{"highway", "path"}, {"surface", "paved"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"surface", "paved"}, {"smoothness", "bad"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"surface", "compacted"}, {"smoothness", "intermediate"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"surface", "gravel"}, {"smoothness", "good"}}}, + {{"highway", "footway", "sidewalk"}, {{"highway", "path"}, {"surface", "gravel"}, {"footway", "sidewalk"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"smoothness", "good"}}}, + {{"highway", "footway", "crossing"}, {{"highway", "path"}, {"footway", "crossing"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"lit", "yes"}}}, + {{"highway", "footway"}, {{"highway", "path"}, {"segregated", "no"}}}, + // No conversion. + {{"highway", "path"}, {{"highway", "path"}, {"surface", "unpaved"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"surface", "compacted"}, {"smoothness", "bad"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"surface", "gravel"}, {"tracktype", "grade3"}}}, + {{"highway", "path"}, + {{"highway", "path"}, {"surface", "gravel"}, {"tracktype", "grade1"}, {"sac_scale", "hiking"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"smoothness", "good"}, {"tracktype", "grade3"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"tracktype", "grade3"}, {"footway", "sidewalk"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"smoothness", "intermediate"}}}, + {{"highway", "path"}, {{"highway", "path"}, {"lit", "no"}}}, - // Unpaved etc. footways to paths. - {{"highway", "path"}, {{"highway", "footway"}, {"surface", "unpaved"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"surface", "unpaved"}, {"smoothness", "excellent"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"surface", "compacted"}, {"smoothness", "bad"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"smoothness", "bad"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"sac_scale", "hiking"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"trail_visibility", "good"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"tracktype", "grade2"}, {"sac_scale", "hiking"}}}, - // TODO(@pastk): ford=* is converted to highway=ford via replaced_tags.txt; get rid of highway=ford - {{"highway", "footway"}, {{"highway", "footway"}, {"ford", "stepping_stones"}}}, - {{"highway", "path"}, {{"highway", "footway"}, {"informal", "yes"}}}, - // No conversion. - {{"highway", "footway"}, {{"highway", "footway"}, {"surface", "paved"}}}, - {{"highway", "footway"}, {{"highway", "footway"}, {"surface", "compacted"}, {"smoothness", "good"}}}, - {{"highway", "footway"}, {{"highway", "footway"}, {"smoothness", "good"}, {"tracktype", "grade2"}}}, - {{"highway", "footway"}, {{"highway", "footway"}, {"tracktype", "grade1"}, {"sac_scale", "hiking"}}}, - {{"highway", "footway", "sidewalk"}, {{"highway", "footway"}, {"tracktype", "grade2"}, {"footway", "sidewalk"}}}, - {{"highway", "footway"}, {{"highway", "footway"}, {"lit", "no"}}}, + // Unpaved etc. footways to paths. + {{"highway", "path"}, {{"highway", "footway"}, {"surface", "unpaved"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"surface", "unpaved"}, {"smoothness", "excellent"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"surface", "compacted"}, {"smoothness", "bad"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"smoothness", "bad"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"sac_scale", "hiking"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"trail_visibility", "good"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"tracktype", "grade2"}, {"sac_scale", "hiking"}}}, + // TODO(@pastk): ford=* is converted to highway=ford via replaced_tags.txt; get rid of highway=ford + {{"highway", "footway"}, {{"highway", "footway"}, {"ford", "stepping_stones"}}}, + {{"highway", "path"}, {{"highway", "footway"}, {"informal", "yes"}}}, + // No conversion. + {{"highway", "footway"}, {{"highway", "footway"}, {"surface", "paved"}}}, + {{"highway", "footway"}, {{"highway", "footway"}, {"surface", "compacted"}, {"smoothness", "good"}}}, + {{"highway", "footway"}, {{"highway", "footway"}, {"smoothness", "good"}, {"tracktype", "grade2"}}}, + {{"highway", "footway"}, {{"highway", "footway"}, {"tracktype", "grade1"}, {"sac_scale", "hiking"}}}, + {{"highway", "footway", "sidewalk"}, {{"highway", "footway"}, {"tracktype", "grade2"}, {"footway", "sidewalk"}}}, + {{"highway", "footway"}, {{"highway", "footway"}, {"lit", "no"}}}, }; for (auto const & type : conversions) @@ -3115,16 +3041,19 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_HighwayTypesConversion) } std::vector, Tags>> const complexConversions = { - // Add an explicit footway to a segregated cycleway. - {{{"highway", "cycleway"}, {"highway", "footway"}}, {{"highway", "cycleway"}, {"segregated", "yes"}}}, - {{{"highway", "cycleway"}, {"highway", "footway"}, {"hwtag", "yesfoot"}}, {{"highway", "cycleway"}, {"sidewalk", "right"}}}, + // Add an explicit footway to a segregated cycleway. + {{{"highway", "cycleway"}, {"highway", "footway"}}, {{"highway", "cycleway"}, {"segregated", "yes"}}}, + {{{"highway", "cycleway"}, {"highway", "footway"}, {"hwtag", "yesfoot"}}, + {{"highway", "cycleway"}, {"sidewalk", "right"}}}, - // Segregated path becomes cycleway + footway. - {{{"highway", "cycleway"}, {"highway", "footway"}}, {{"highway", "path"}, {"segregated", "yes"}}}, + // Segregated path becomes cycleway + footway. + {{{"highway", "cycleway"}, {"highway", "footway"}}, {{"highway", "path"}, {"segregated", "yes"}}}, - // A non-segregated cycleway becomes shared path/footway + bicycle=designated. - {{{"highway", "footway", "bicycle"}, {"hwtag", "yesbicycle"}}, {{"highway", "cycleway"}, {"segregated", "no"}, {"foot", "designated"}}}, - {{{"highway", "path", "bicycle"}, {"hwtag", "yesbicycle"}, {"hwtag", "yesfoot"}, {"psurface", "unpaved_good"}}, {{"highway", "cycleway"}, {"foot", "yes"}, {"surface", "unpaved"}}}, + // A non-segregated cycleway becomes shared path/footway + bicycle=designated. + {{{"highway", "footway", "bicycle"}, {"hwtag", "yesbicycle"}}, + {{"highway", "cycleway"}, {"segregated", "no"}, {"foot", "designated"}}}, + {{{"highway", "path", "bicycle"}, {"hwtag", "yesbicycle"}, {"hwtag", "yesfoot"}, {"psurface", "unpaved_good"}}, + {{"highway", "cycleway"}, {"foot", "yes"}, {"surface", "unpaved"}}}, }; for (auto const & type : complexConversions) @@ -3133,9 +3062,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_HighwayTypesConversion) auto const params = GetFeatureBuilderParams(type.second); TEST_EQUAL(params.m_types.size(), results.size(), (type, params)); for (auto const & result : results) - { TEST(params.IsTypeExist(GetType(result)), (type, params)); - } } } @@ -3143,15 +3070,19 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_PathGrades) { using Type = std::vector; std::vector> const conversions = { - {{"highway", "path"}, {{"highway", "path"}, {"sac_scale", "mountain_hiking"}, {"trail_visibility", "intermediate"}}}, - {{"highway", "path"}, {{"highway", "path"}, {"sac_scale", "unsupported_value"}, {"trail_visibility", "unsupported_value"}}}, + {{"highway", "path"}, + {{"highway", "path"}, {"sac_scale", "mountain_hiking"}, {"trail_visibility", "intermediate"}}}, + {{"highway", "path"}, + {{"highway", "path"}, {"sac_scale", "unsupported_value"}, {"trail_visibility", "unsupported_value"}}}, - {{"highway", "path", "difficult"}, {{"highway", "path"}, {"sac_scale", "demanding_mountain_hiking"}, {"trail_visibility", "excellent"}}}, - {{"highway", "path", "difficult"}, {{"highway", "path"}, {"trail_visibility", "bad"}}}, + {{"highway", "path", "difficult"}, + {{"highway", "path"}, {"sac_scale", "demanding_mountain_hiking"}, {"trail_visibility", "excellent"}}}, + {{"highway", "path", "difficult"}, {{"highway", "path"}, {"trail_visibility", "bad"}}}, - {{"highway", "path", "expert"}, {{"highway", "path"}, {"sac_scale", "alpine_hiking"}}}, - {{"highway", "path", "expert"}, {{"highway", "path"}, {"trail_visibility", "horrible"}}}, - {{"highway", "path", "expert"}, {{"highway", "path"}, {"sac_scale", "difficult_alpine_hiking"}, {"trail_visibility", "no"}}}, + {{"highway", "path", "expert"}, {{"highway", "path"}, {"sac_scale", "alpine_hiking"}}}, + {{"highway", "path", "expert"}, {{"highway", "path"}, {"trail_visibility", "horrible"}}}, + {{"highway", "path", "expert"}, + {{"highway", "path"}, {"sac_scale", "difficult_alpine_hiking"}, {"trail_visibility", "no"}}}, }; for (auto const & type : conversions) @@ -3165,12 +3096,16 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_MultipleComplexTypesSmoke) { using Type = std::vector; std::vector, Tags>> const complexTypes = { - {{{"amenity", "parking"}, {"fee", "no"}}, {{"amenity", "parking"}, {"fee", "no"}}}, - {{{"amenity", "parking", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"fee", "any_value"}}}, - {{{"amenity", "parking", "lane", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"parking", "lane"}, {"fee", "any_value"}}}, - {{{"amenity", "parking", "multi-storey", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"parking", "multi-storey"}, {"fee", "any_value"}}}, - {{{"amenity", "parking", "street_side", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"parking", "street_side"}, {"fee", "any_value"}}}, - {{{"amenity", "parking", "underground", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"parking", "underground"}, {"fee", "any_value"}}}, + {{{"amenity", "parking"}, {"fee", "no"}}, {{"amenity", "parking"}, {"fee", "no"}}}, + {{{"amenity", "parking", "fee"}, {"fee", "yes"}}, {{"amenity", "parking"}, {"fee", "any_value"}}}, + {{{"amenity", "parking", "lane", "fee"}, {"fee", "yes"}}, + {{"amenity", "parking"}, {"parking", "lane"}, {"fee", "any_value"}}}, + {{{"amenity", "parking", "multi-storey", "fee"}, {"fee", "yes"}}, + {{"amenity", "parking"}, {"parking", "multi-storey"}, {"fee", "any_value"}}}, + {{{"amenity", "parking", "street_side", "fee"}, {"fee", "yes"}}, + {{"amenity", "parking"}, {"parking", "street_side"}, {"fee", "any_value"}}}, + {{{"amenity", "parking", "underground", "fee"}, {"fee", "yes"}}, + {{"amenity", "parking"}, {"parking", "underground"}, {"fee", "any_value"}}}, }; for (auto const & type : complexTypes) @@ -3179,9 +3114,7 @@ UNIT_CLASS_TEST(TestWithClassificator, OsmType_MultipleComplexTypesSmoke) auto const params = GetFeatureBuilderParams(type.second); TEST_EQUAL(params.m_types.size(), results.size(), (type, params)); for (auto const & result : results) - { TEST(params.IsTypeExist(GetType(result)), (type, params)); - } } } diff --git a/generator/generator_tests/place_processor_tests.cpp b/generator/generator_tests/place_processor_tests.cpp index 117fba203..4c75bf6ad 100644 --- a/generator/generator_tests/place_processor_tests.cpp +++ b/generator/generator_tests/place_processor_tests.cpp @@ -68,8 +68,7 @@ feature::FeatureBuilder MakeFbForTest(generator_tests::Tags const & tags, OsmEle CHECK(result.IsGeometryClosed(), ()); result.SetArea(); - result.SetOsmId(element.IsRelation() ? base::MakeOsmRelation(element.m_id) - : base::MakeOsmWay(element.m_id)); + result.SetOsmId(element.IsRelation() ? base::MakeOsmRelation(element.m_id) : base::MakeOsmWay(element.m_id)); } return result; } @@ -78,7 +77,8 @@ bool TestTable(generator::OsmIdToBoundariesTable & table, std::set, size_t>> const & answer) { bool result = true; - table.ForEachCluster([&](auto & ids, auto const & boundaries) { + table.ForEachCluster([&](auto & ids, auto const & boundaries) + { if (!result) return; @@ -110,9 +110,7 @@ using PlaceWithIDs = std::pair & value) { std::sort(value.begin(), value.end(), [](auto const & left, auto const & right) - { - return left.first.GetMostGenericOsmId() < right.first.GetMostGenericOsmId(); - }); + { return left.first.GetMostGenericOsmId() < right.first.GetMostGenericOsmId(); }); for (auto & [_, ids] : value) { @@ -163,16 +161,15 @@ UNIT_CLASS_TEST(TestPlaceProcessor, EmptyTest) UNIT_CLASS_TEST(TestPlaceProcessor, OnePlacePointTest) { - auto const point = - MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, - {{172.6314353942871, -43.493592271503786}}); + auto const point = MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, + {{172.6314353942871, -43.493592271503786}}); PlaceProcessorTestFixture pp; pp.Add(point); std::vector expected{{point, {point.GetMostGenericOsmId()}}}; Test(pp, expected); - //TEST(TestTable(*table, {}), ()); + // TEST(TestTable(*table, {}), ()); } UNIT_CLASS_TEST(TestPlaceProcessor, OnePlaceAreaTest) @@ -180,50 +177,44 @@ UNIT_CLASS_TEST(TestPlaceProcessor, OnePlaceAreaTest) PlaceProcessorTestFixture pp; pp.Add(kArea); - std::vector expected{ - {generator::MakePoint(kArea), {kArea.GetMostGenericOsmId()}}}; + std::vector expected{{generator::MakePoint(kArea), {kArea.GetMostGenericOsmId()}}}; Test(pp, expected); - //TEST(TestTable(*table, {{{kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); + // TEST(TestTable(*table, {{{kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); } UNIT_CLASS_TEST(TestPlaceProcessor, PointInAreaTest) { - auto const point = - MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, - {{172.6314353942871, -43.493592271503786}}); + auto const point = MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, + {{172.6314353942871, -43.493592271503786}}); PlaceProcessorTestFixture pp; pp.Add(kArea); pp.Add(point); - std::vector expected{ - {point, {point.GetMostGenericOsmId(), kArea.GetMostGenericOsmId()}}}; + std::vector expected{{point, {point.GetMostGenericOsmId(), kArea.GetMostGenericOsmId()}}}; Test(pp, expected); - //TEST(TestTable(*table, {{{point.GetMostGenericOsmId(), kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); + // TEST(TestTable(*table, {{{point.GetMostGenericOsmId(), kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); } UNIT_CLASS_TEST(TestPlaceProcessor, SameNamesButDifferentPlacesTest) { - auto const point = - MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, - {{162.6314353942871, -33.493592271503786}}); + auto const point = MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, + {{162.6314353942871, -33.493592271503786}}); PlaceProcessorTestFixture pp; pp.Add(kArea); pp.Add(point); - std::vector expected{ - {point, {point.GetMostGenericOsmId()}}, - {generator::MakePoint(kArea), {kArea.GetMostGenericOsmId()}}}; + std::vector expected{{point, {point.GetMostGenericOsmId()}}, + {generator::MakePoint(kArea), {kArea.GetMostGenericOsmId()}}}; Test(pp, expected); - //TEST(TestTable(*table, {{{kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); + // TEST(TestTable(*table, {{{kArea.GetMostGenericOsmId()}, 1 /* cluster size */}}), ()); } UNIT_CLASS_TEST(TestPlaceProcessor, SelectBestPlaceTest) { - auto const point1 = - MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, - {{162.6314353942871, -33.493592271503786}}); + auto const point1 = MakeFbForTest({{"name", "City"}, {"place", "city"}}, OsmElement::EntityType::Node, + {{162.6314353942871, -33.493592271503786}}); auto const point2 = MakeFbForTest({{"name", "City"}, {"place", "city"}, {"capital", "yes"}}, OsmElement::EntityType::Node, {{162.63145, -33.4935}}); @@ -231,10 +222,9 @@ UNIT_CLASS_TEST(TestPlaceProcessor, SelectBestPlaceTest) pp.Add(point1); pp.Add(point2); - std::vector expected{ - {point2, {point1.GetMostGenericOsmId(), point2.GetMostGenericOsmId()}}}; + std::vector expected{{point2, {point1.GetMostGenericOsmId(), point2.GetMostGenericOsmId()}}}; Test(pp, expected); - //TEST(TestTable(*table, {}), ()); + // TEST(TestTable(*table, {}), ()); } // Correct city Relations processing is not in PlaceProcessor only, but also in RoutingCityBoundariesCollector. @@ -1341,53 +1331,50 @@ UNIT_CLASS_TEST(TestPlaceProcessor, VoronezhDuplicatingCityFeatureTest) UNIT_CLASS_TEST(TestPlaceProcessor, KuznetsovoNearbyHamletsTest) { - auto const point1 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, - OsmElement::EntityType::Node, {{39.5338039, 71.44840478}}); + auto const point1 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Node, + {{39.5338039, 71.44840478}}); - auto const way1 = - MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, - {{39.5300791, 71.4499322}, - {39.5360952, 71.449952}, - {39.5358614, 71.4481361}, - {39.533932, 71.4479877}, - {39.5334559, 71.4466931}, - {39.5328246, 71.4468055}, - {39.531898, 71.447587}, - {39.5305723, 71.4482665}, - {39.5300791, 71.4499322}}); + auto const way1 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, + {{39.5300791, 71.4499322}, + {39.5360952, 71.449952}, + {39.5358614, 71.4481361}, + {39.533932, 71.4479877}, + {39.5334559, 71.4466931}, + {39.5328246, 71.4468055}, + {39.531898, 71.447587}, + {39.5305723, 71.4482665}, + {39.5300791, 71.4499322}}); - auto const point2 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, - OsmElement::EntityType::Node, {{39.6701222, 71.52284624}}); + auto const point2 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Node, + {{39.6701222, 71.52284624}}); - auto const way2 = - MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, - {{39.6670159, 71.5224511}, - {39.6719028, 71.525375}, - {39.6732332, 71.5231513}, - {39.6683465, 71.5202275}, - {39.6670159, 71.5224511}}); + auto const way2 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, + {{39.6670159, 71.5224511}, + {39.6719028, 71.525375}, + {39.6732332, 71.5231513}, + {39.6683465, 71.5202275}, + {39.6670159, 71.5224511}}); - auto const point3 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, - OsmElement::EntityType::Node, {{39.9688407, 71.45936188}}); + auto const point3 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Node, + {{39.9688407, 71.45936188}}); - auto const way3 = - MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, - {{39.9694614, 71.4609508}, - {39.9695483, 71.460343}, - {39.9698434, 71.4598916}, - {39.970373, 71.4583027}, - {39.9703469, 71.458025}, - {39.9701473, 71.4578426}, - {39.969036, 71.458485}, - {39.9685064, 71.4579208}, - {39.968246, 71.4578946}, - {39.967647, 71.4588411}, - {39.9676383, 71.4589973}, - {39.9680029, 71.4591536}, - {39.9681505, 71.459414}, - {39.9670826, 71.4609508}, - {39.9690534, 71.461055}, - {39.9694614, 71.4609508}}); + auto const way3 = MakeFbForTest({{"name", "Кузнецово"}, {"place", "hamlet"}}, OsmElement::EntityType::Way, + {{39.9694614, 71.4609508}, + {39.9695483, 71.460343}, + {39.9698434, 71.4598916}, + {39.970373, 71.4583027}, + {39.9703469, 71.458025}, + {39.9701473, 71.4578426}, + {39.969036, 71.458485}, + {39.9685064, 71.4579208}, + {39.968246, 71.4578946}, + {39.967647, 71.4588411}, + {39.9676383, 71.4589973}, + {39.9680029, 71.4591536}, + {39.9681505, 71.459414}, + {39.9670826, 71.4609508}, + {39.9690534, 71.461055}, + {39.9694614, 71.4609508}}); PlaceProcessorTestFixture pp; pp.Add(point1); @@ -1396,16 +1383,15 @@ UNIT_CLASS_TEST(TestPlaceProcessor, KuznetsovoNearbyHamletsTest) pp.Add(way1); pp.Add(way2); pp.Add(way3); - std::vector expected{ - {point1, {point1.GetMostGenericOsmId(), way1.GetMostGenericOsmId()}}, - {point2, {point2.GetMostGenericOsmId(), way2.GetMostGenericOsmId()}}, - {point3, {point3.GetMostGenericOsmId(), way3.GetMostGenericOsmId()}}}; + std::vector expected{{point1, {point1.GetMostGenericOsmId(), way1.GetMostGenericOsmId()}}, + {point2, {point2.GetMostGenericOsmId(), way2.GetMostGenericOsmId()}}, + {point3, {point3.GetMostGenericOsmId(), way3.GetMostGenericOsmId()}}}; Test(pp, expected); -// TEST(TestTable( -// *table, -// {{{point1.GetMostGenericOsmId(), way1.GetMostGenericOsmId()}, 1 /* cluster size */}, -// {{point2.GetMostGenericOsmId(), way2.GetMostGenericOsmId()}, 1 /* cluster size */}, -// {{point3.GetMostGenericOsmId(), way3.GetMostGenericOsmId()}, 1 /* cluster size */}}), -// ()); + // TEST(TestTable( + // *table, + // {{{point1.GetMostGenericOsmId(), way1.GetMostGenericOsmId()}, 1 /* cluster size */}, + // {{point2.GetMostGenericOsmId(), way2.GetMostGenericOsmId()}, 1 /* cluster size */}, + // {{point3.GetMostGenericOsmId(), way3.GetMostGenericOsmId()}, 1 /* cluster size */}}), + // ()); } -} // namespace place_processor_tests +} // namespace place_processor_tests diff --git a/generator/generator_tests/raw_generator_test.cpp b/generator/generator_tests/raw_generator_test.cpp index ebdab66a3..eab507436 100644 --- a/generator/generator_tests/raw_generator_test.cpp +++ b/generator/generator_tests/raw_generator_test.cpp @@ -1,7 +1,7 @@ #include "testing/testing.hpp" -#include "generator/generator_tests_support/test_generator.hpp" #include "generator/descriptions_section_builder.hpp" +#include "generator/generator_tests_support/test_generator.hpp" #include "search/cities_boundaries_table.hpp" #include "search/house_to_street_table.hpp" @@ -43,7 +43,7 @@ UNIT_CLASS_TEST(TestRawGenerator, Towns) ForEachFB(mwmName, [&](feature::FeatureBuilder const & fb) { ++count; - //LOG(LINFO, (fb)); + // LOG(LINFO, (fb)); TEST(!fb.HasType(cityType), ()); @@ -69,7 +69,7 @@ UNIT_CLASS_TEST(TestRawGenerator, Towns) // Prepare features data source. FrozenDataSource dataSource; std::vector mwmIDs; - for (auto const & name : { mwmName, mwmWorld }) + for (auto const & name : {mwmName, mwmWorld}) { BuildFeatures(name); BuildSearch(name); @@ -123,15 +123,13 @@ UNIT_CLASS_TEST(TestRawGenerator, HighwayLinks) auto const fid2osm = LoadFID2OsmID(mwmName); using namespace routing; - MaxspeedType from120 = 104; // like SpeedMacro::Speed104KmPH + MaxspeedType from120 = 104; // like SpeedMacro::Speed104KmPH std::unordered_map osmID2Speed = { - { 23011515, from120 }, { 23011492, from120 }, { 10689329, from120 }, { 371581901, from120 }, - { 1017695671, from120 }, { 577365212, from120 }, { 23011612, from120 }, { 1017695670, from120 }, - { 304871606, from120 }, { 1017695669, from120 }, { 577365213, from120 }, { 369541035, from120 }, - { 1014336646, from120 }, { 466365947, from120 }, { 23011511, from120 } - }; + {23011515, from120}, {23011492, from120}, {10689329, from120}, {371581901, from120}, {1017695671, from120}, + {577365212, from120}, {23011612, from120}, {1017695670, from120}, {304871606, from120}, {1017695669, from120}, + {577365213, from120}, {369541035, from120}, {1014336646, from120}, {466365947, from120}, {23011511, from120}}; /// @todo Actually, better to assign speed for this way too. - std::unordered_set osmNoSpeed = { 23691193, 1017695668 }; + std::unordered_set osmNoSpeed = {23691193, 1017695668}; FrozenDataSource dataSource; auto const res = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(GetMwmPath(mwmName))); @@ -296,7 +294,7 @@ UNIT_CLASS_TEST(TestRawGenerator, Place_Region) worldRegions = 0; // Prepare features data source. - for (auto const & name : { mwmName, worldMwmName }) + for (auto const & name : {mwmName, worldMwmName}) { BuildFeatures(name); BuildSearch(name); @@ -391,7 +389,7 @@ std::string_view GetPostcode(FeatureType & ft) { return ft.GetMetadata(feature::Metadata::FMD_POSTCODE); } -} // namespace +} // namespace UNIT_CLASS_TEST(TestRawGenerator, Postcode_Relations) { @@ -477,15 +475,15 @@ UNIT_TEST(Relation_Wiki) std::string const mwmName = "Relation"; std::string const arrFiles[] = { - "./data/test_data/osm/village_relation.osm", - "./data/test_data/osm/novenkoe_village.osm", - "./data/test_data/osm/nikolaevka_village.osm", + "./data/test_data/osm/village_relation.osm", + "./data/test_data/osm/novenkoe_village.osm", + "./data/test_data/osm/nikolaevka_village.osm", }; std::string const arrWiki[] = { - "fr:Charmois-l'Orgueilleux", - "ru:Новенькое (Локтевский район)", - "ru:Николаевка (Локтевский район)", + "fr:Charmois-l'Orgueilleux", + "ru:Новенькое (Локтевский район)", + "ru:Николаевка (Локтевский район)", }; for (size_t i = 0; i < std::size(arrFiles); ++i) @@ -564,56 +562,51 @@ UNIT_TEST(Place_CityRelations) std::string const worldMwmName = WORLD_FILE_NAME; std::string const arrFiles[] = { - // 1 Relation with many polygons + 1 Node. - "./data/test_data/osm/gorlovka_city.osm", - // 2 Relations + 1 Node - "./data/test_data/osm/tver_city.osm", - // 1 Relation + 1 Node with _different_ names. - "./data/test_data/osm/reykjavik_city.osm", - "./data/test_data/osm/berlin_city.osm", - // Relation boundary is place=suburb, but border_type=city - "./data/test_data/osm/riviera_beach_city.osm", - "./data/test_data/osm/hotchkiss_town.osm", - "./data/test_data/osm/voronezh_city.osm", - "./data/test_data/osm/minsk_city.osm", + // 1 Relation with many polygons + 1 Node. + "./data/test_data/osm/gorlovka_city.osm", + // 2 Relations + 1 Node + "./data/test_data/osm/tver_city.osm", + // 1 Relation + 1 Node with _different_ names. + "./data/test_data/osm/reykjavik_city.osm", "./data/test_data/osm/berlin_city.osm", + // Relation boundary is place=suburb, but border_type=city + "./data/test_data/osm/riviera_beach_city.osm", "./data/test_data/osm/hotchkiss_town.osm", + "./data/test_data/osm/voronezh_city.osm", "./data/test_data/osm/minsk_city.osm", - // 1 boundary-only Relation + 1 Node - "./data/test_data/osm/kadikoy_town.osm", - // 2 Relations + 1 Node - "./data/test_data/osm/stolbtcy_town.osm", - // 1 Way + 1 Relation + 1 Node - "./data/test_data/osm/dmitrov_town.osm", - "./data/test_data/osm/lesnoy_town.osm", + // 1 boundary-only Relation + 1 Node + "./data/test_data/osm/kadikoy_town.osm", + // 2 Relations + 1 Node + "./data/test_data/osm/stolbtcy_town.osm", + // 1 Way + 1 Relation + 1 Node + "./data/test_data/osm/dmitrov_town.osm", "./data/test_data/osm/lesnoy_town.osm", - "./data/test_data/osm/pushkino_city.osm", - "./data/test_data/osm/korday_town.osm", - "./data/test_data/osm/bad_neustadt_town.osm", + "./data/test_data/osm/pushkino_city.osm", "./data/test_data/osm/korday_town.osm", + "./data/test_data/osm/bad_neustadt_town.osm", - /// @todo We don't store villages in World now, but for the future! - // 1 Relation + 1 Node (not linked with each other) - //"./data/test_data/osm/palm_beach_village.osm", + /// @todo We don't store villages in World now, but for the future! + // 1 Relation + 1 Node (not linked with each other) + //"./data/test_data/osm/palm_beach_village.osm", }; ms::LatLon arrNotInBoundary[] = { - {48.2071448, 37.9729054}, // gorlovka - {56.9118261, 36.2258988}, // tver - {64.0469397, -21.9772409}, // reykjavik - {52.4013879, 13.0601531}, // berlin - {26.7481191, -80.0836532}, // riviera beach - {38.7981690, -107.7347750}, // hotchkiss - {51.7505379, 39.5894547}, // voronezh - {53.9170050, 27.8576710}, // minsk + {48.2071448, 37.9729054}, // gorlovka + {56.9118261, 36.2258988}, // tver + {64.0469397, -21.9772409}, // reykjavik + {52.4013879, 13.0601531}, // berlin + {26.7481191, -80.0836532}, // riviera beach + {38.7981690, -107.7347750}, // hotchkiss + {51.7505379, 39.5894547}, // voronezh + {53.9170050, 27.8576710}, // minsk - {41.0150982, 29.0213844}, // kadikoy - {53.5086454, 26.6979711}, // stolbtcy - {56.3752679, 37.3288391}, // dmitrov - {54.0026933, 27.6356912}, // lesnoy + {41.0150982, 29.0213844}, // kadikoy + {53.5086454, 26.6979711}, // stolbtcy + {56.3752679, 37.3288391}, // dmitrov + {54.0026933, 27.6356912}, // lesnoy - {56.0807652, 37.9277319}, // pushkino - {43.2347760, 74.7573240}, // korday - {50.4006992, 10.2020744}, // bad_neustadt + {56.0807652, 37.9277319}, // pushkino + {43.2347760, 74.7573240}, // korday + {50.4006992, 10.2020744}, // bad_neustadt - //{26.6757006, -80.0547346}, // palm beach + //{26.6757006, -80.0547346}, // palm beach }; size_t constexpr kManyBoundriesUpperIndex = 8; @@ -659,7 +652,8 @@ UNIT_TEST(Place_CityRelations) // Check that we have valid boundary in World. FrozenDataSource dataSource; - auto const res = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); + auto const res = + dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); TEST_EQUAL(res.second, MwmSet::RegResult::Success, ()); search::CitiesBoundariesTable table(dataSource); @@ -700,11 +694,11 @@ UNIT_TEST(Place_CityRelations_IncludePoint) std::string const worldMwmName = WORLD_FILE_NAME; std::string const arrFiles[] = { - "./data/test_data/osm/valentin_alsina_town.osm", + "./data/test_data/osm/valentin_alsina_town.osm", }; ms::LatLon arrInBoundary[] = { - {-34.6699107, -58.4302163}, // valentin_alsina + {-34.6699107, -58.4302163}, // valentin_alsina }; for (size_t i = 0; i < std::size(arrFiles); ++i) @@ -734,7 +728,8 @@ UNIT_TEST(Place_CityRelations_IncludePoint) // Check that we have valid boundary in World. FrozenDataSource dataSource; - auto const res = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); + auto const res = + dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); TEST_EQUAL(res.second, MwmSet::RegResult::Success, ()); search::CitiesBoundariesTable table(dataSource); @@ -779,9 +774,9 @@ UNIT_CLASS_TEST(TestRawGenerator, Place_NoCityBoundaries) TestDataSample const arrInput[] = { // Check that we have only 2 cities without duplicates (Pargas, Қордай). // Boundaries are removed because of "very big". - { "./data/test_data/osm/no_boundary_towns.osm", 2, 2 }, + {"./data/test_data/osm/no_boundary_towns.osm", 2, 2}, // 3 villages in country and 0 in World. - { "./data/test_data/osm/us_villages_like_towns.osm", 0, 3 }, + {"./data/test_data/osm/us_villages_like_towns.osm", 0, 3}, }; for (size_t i = 0; i < std::size(arrInput); ++i) @@ -820,7 +815,8 @@ UNIT_CLASS_TEST(TestRawGenerator, Place_NoCityBoundaries) // Check that we have NO boundaries in World. FrozenDataSource dataSource; - auto const res = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); + auto const res = + dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(generator.GetMwmPath(worldMwmName))); TEST_EQUAL(res.second, MwmSet::RegResult::Success, ()); search::CitiesBoundariesTable table(dataSource); @@ -901,9 +897,9 @@ UNIT_TEST(MiniRoundabout_Connectivity) std::string const mwmName = "MiniRoundabout"; std::string const arrFiles[] = { - "./data/test_data/osm/mini_roundabout_1.osm", - "./data/test_data/osm/mini_roundabout_2.osm", - "./data/test_data/osm/mini_roundabout_3.osm", + "./data/test_data/osm/mini_roundabout_1.osm", + "./data/test_data/osm/mini_roundabout_2.osm", + "./data/test_data/osm/mini_roundabout_3.osm", }; for (auto const & fileName : arrFiles) @@ -927,10 +923,8 @@ UNIT_TEST(MiniRoundabout_Connectivity) auto const IsPointInRoundabout = [&roundabout](m2::PointD const & pt) { for (auto const & p : roundabout) - { if (AlmostEqualAbs(p, pt, kMwmPointAccuracy)) return true; - } return false; }; @@ -1138,10 +1132,10 @@ UNIT_CLASS_TEST(TestRawGenerator, Addr_Street_Place) bool m_checkStreet, m_checkPlace; }; TestData const arrFiles[] = { - { "./data/test_data/osm/addr_street_place.osm", 1, true, true }, - { "./data/test_data/osm/addr_street_very_far.osm", 2, true, false }, - { "./data/test_data/osm/zelenograd.osm", 1, false, true }, - { "./data/test_data/osm/addr_area_street.osm", 1, true, false }, + {"./data/test_data/osm/addr_street_place.osm", 1, true, true}, + {"./data/test_data/osm/addr_street_very_far.osm", 2, true, false}, + {"./data/test_data/osm/zelenograd.osm", 1, false, true}, + {"./data/test_data/osm/addr_area_street.osm", 1, true, false}, }; for (auto const & data : arrFiles) @@ -1234,4 +1228,4 @@ UNIT_CLASS_TEST(TestRawGenerator, Railway_Station) TEST_EQUAL(count, 1, ()); } -} // namespace raw_generator_tests +} // namespace raw_generator_tests diff --git a/generator/generator_tests/relation_tags_tests.cpp b/generator/generator_tests/relation_tags_tests.cpp index 65eeab14d..4c91378da 100644 --- a/generator/generator_tests/relation_tags_tests.cpp +++ b/generator/generator_tests/relation_tags_tests.cpp @@ -1,8 +1,8 @@ #include "testing/testing.hpp" #include "generator/generator_tests/common.hpp" -#include "generator/relation_tags.hpp" #include "generator/intermediate_data.hpp" +#include "generator/relation_tags.hpp" #include "indexer/classificator_loader.hpp" @@ -18,16 +18,10 @@ using namespace generator_tests; class TestOSMElementCacheReader : public OSMElementCacheReaderInterface { public: - TestOSMElementCacheReader(std::unordered_map & m) - : m_mapping(m) - { - } + TestOSMElementCacheReader(std::unordered_map & m) : m_mapping(m) {} // OSMElementCacheReaderInterface overrides: - bool Read(Key /* id */, WayElement & /* value */) override - { - UNREACHABLE(); - } + bool Read(Key /* id */, WayElement & /* value */) override { UNREACHABLE(); } bool Read(Key id, RelationElement & value) override { @@ -135,7 +129,7 @@ UNIT_TEST(Process_route_with_ref_network) // Verify roads tags. TEST_EQUAL(road10.GetTag("ref"), "IT:RA/SP60", ()); - TEST_EQUAL(road11.GetTag("ref"), "SP62", ()); // TODO: Check refs inheritance (expected "IT:RA/SP60;SP62") + TEST_EQUAL(road11.GetTag("ref"), "SP62", ()); // TODO: Check refs inheritance (expected "IT:RA/SP60;SP62") } UNIT_TEST(Process_associatedStreet) @@ -170,9 +164,13 @@ UNIT_TEST(Process_associatedStreet) TestOSMElementCacheReader reader(m_IdToRelation); // Create buildings polygons. - auto buildingWay2 = MakeOsmElement(2, {{"building", "yes"}, {"addr:housenumber", "121"}}, OsmElement::EntityType::Way); - auto buildingWay3 = MakeOsmElement(3, {{"shop", "convenience"}, {"addr:housenumber", "123"}, - {"addr:street", "The Main Street"}, {"wikipedia", "en:Mega Theater"}}, + auto buildingWay2 = + MakeOsmElement(2, {{"building", "yes"}, {"addr:housenumber", "121"}}, OsmElement::EntityType::Way); + auto buildingWay3 = MakeOsmElement(3, + {{"shop", "convenience"}, + {"addr:housenumber", "123"}, + {"addr:street", "The Main Street"}, + {"wikipedia", "en:Mega Theater"}}, OsmElement::EntityType::Way); auto highway4 = MakeOsmElement(4, {{"highway", "residential"}}, OsmElement::EntityType::Way); @@ -207,7 +205,8 @@ UNIT_TEST(RelationTags_GoodBoundary) std::vector nodes = {{2, "admin_centre"}, {3, "label"}}; auto way1 = MakeOsmElement(1, {{"boundary", "administrative"}}, OsmElement::EntityType::Way); - auto node2 = MakeOsmElement(2, {{"place", "town"}, {"name", "Vaduz"}, {"wikidata", "Q1844"}}, OsmElement::EntityType::Node); + auto node2 = + MakeOsmElement(2, {{"place", "town"}, {"name", "Vaduz"}, {"wikidata", "Q1844"}}, OsmElement::EntityType::Node); auto node3 = MakeOsmElement(3, {{"place", "country"}}, OsmElement::EntityType::Node); RelationElement e1; @@ -306,4 +305,4 @@ UNIT_TEST(RelationTags_BadBoundary) TEST(outerWay7.GetTag("wikidata").empty(), ()); } -} // namespace relation_tags_tests +} // namespace relation_tags_tests diff --git a/generator/generator_tests/restriction_collector_test.cpp b/generator/generator_tests/restriction_collector_test.cpp index def97a79b..3bfbd5f61 100644 --- a/generator/generator_tests/restriction_collector_test.cpp +++ b/generator/generator_tests/restriction_collector_test.cpp @@ -75,8 +75,8 @@ std::unique_ptr BuildTwoCubeGraph() std::vector const joints = { // {{/* feature id */, /* point id */}, ... } - MakeJoint({{7, 0}}), /* joint at point (-1, 0) */ - MakeJoint({{0, 0}, {6, 0}, {7, 1}}), /* joint at point (0, 0) */ + MakeJoint({{7, 0}}), /* joint at point (-1, 0) */ + MakeJoint({{0, 0}, {6, 0}, {7, 1}}), /* joint at point (0, 0) */ MakeJoint({{0, 1}, {1, 0}}), /* joint at point (1, 0) */ MakeJoint({{1, 1}, {2, 0}, {9, 0}}), /* joint at point (2, 0) */ MakeJoint({{2, 1}, {3, 1}, {8, 0}}), /* joint at point (2, 1) */ @@ -120,9 +120,7 @@ RelationElement MakeRelationElement(std::vector const & class TestRestrictionCollector { public: - - TestRestrictionCollector() - : m_scopedDir(kTestDir) + TestRestrictionCollector() : m_scopedDir(kTestDir) { // Creating osm ids to feature ids mapping. std::string const mappingRelativePath = base::JoinPath(kTestDir, kOsmIdsToFeatureIdsName); @@ -130,8 +128,7 @@ public: m_scopedFile = std::make_shared(mappingRelativePath, ScopedFile::Mode::Create); m_osmIdsToFeatureIdFullPath = m_scopedFile->GetFullPath(); - ReEncodeOsmIdsToFeatureIdsMapping(kosmIdsToFeatureIdsContentForTwoCubeGraph, - m_osmIdsToFeatureIdFullPath); + ReEncodeOsmIdsToFeatureIdsMapping(kosmIdsToFeatureIdsContentForTwoCubeGraph, m_osmIdsToFeatureIdFullPath); } void ValidCase() @@ -141,19 +138,21 @@ public: // Adding restrictions. TEST(restrictionCollector.AddRestriction( - {2.0, 0.0} /* coords of intersection feature with id = 1 and feature with id = 2 */, - Restriction::Type::No, /* restriction type */ - {base::MakeOsmWay(1), base::MakeOsmWay(2)} /* features in format {from, (via*)?, to} */ - ), ()); + {2.0, 0.0} /* coords of intersection feature with id = 1 and feature with id = 2 */, + Restriction::Type::No, /* restriction type */ + {base::MakeOsmWay(1), base::MakeOsmWay(2)} /* features in format {from, (via*)?, to} */ + ), + ()); TEST(restrictionCollector.AddRestriction({2.0, 1.0}, Restriction::Type::Only, - {base::MakeOsmWay(2), base::MakeOsmWay(3)}), ()); + {base::MakeOsmWay(2), base::MakeOsmWay(3)}), + ()); - TEST(restrictionCollector.AddRestriction( - RestrictionCollector::kNoCoords, /* no coords in case of way as via */ - Restriction::Type::No, - /* from via to */ - {base::MakeOsmWay(0), base::MakeOsmWay(1), base::MakeOsmWay(2)}), ()); + TEST(restrictionCollector.AddRestriction(RestrictionCollector::kNoCoords, /* no coords in case of way as via */ + Restriction::Type::No, + /* from via to */ + {base::MakeOsmWay(0), base::MakeOsmWay(1), base::MakeOsmWay(2)}), + ()); base::SortUnique(restrictionCollector.m_restrictions); @@ -175,7 +174,8 @@ public: // No such feature - 2809 TEST(!restrictionCollector.AddRestriction({2.0, 1.0}, Restriction::Type::No, - {base::MakeOsmWay(2809), base::MakeOsmWay(1)}), ()); + {base::MakeOsmWay(2809), base::MakeOsmWay(1)}), + ()); TEST(!restrictionCollector.HasRestrictions(), ()); } @@ -187,14 +187,14 @@ public: // Fetures with id 1 and 2 do not intersect in {2.0, 1.0} TEST(!restrictionCollector.AddRestriction({2.0, 1.0}, Restriction::Type::No, - {base::MakeOsmWay(1), base::MakeOsmWay(2)}), ()); + {base::MakeOsmWay(1), base::MakeOsmWay(2)}), + ()); // No such chain of features (1 => 2 => 4), // because feature with id 2 and 4 do not have common joint. - TEST(!restrictionCollector.AddRestriction( - RestrictionCollector::kNoCoords, - Restriction::Type::No, - {base::MakeOsmWay(1), base::MakeOsmWay(2), base::MakeOsmWay(4)}), ()); + TEST(!restrictionCollector.AddRestriction(RestrictionCollector::kNoCoords, Restriction::Type::No, + {base::MakeOsmWay(1), base::MakeOsmWay(2), base::MakeOsmWay(4)}), + ()); TEST(!restrictionCollector.HasRestrictions(), ()); } @@ -205,7 +205,6 @@ private: std::string m_osmIdsToFeatureIdFullPath; }; - UNIT_CLASS_TEST(TestRestrictionCollector, ValidCase) { TestRestrictionCollector::ValidCase(); @@ -230,11 +229,15 @@ UNIT_TEST(RestrictionWriter_Merge) auto c1 = std::make_shared(filename, nullptr /* cache */); auto c2 = c1->Clone(); std::map> const tags = {{"type", "restriction"}, - {"restriction", "no_right_turn"}}; - c1->CollectRelation(MakeRelationElement({} /* nodes */, {{1, "via"}, {11, "from"}, {21, "to"}} /* ways */, tags /* tags */)); - c2->CollectRelation(MakeRelationElement({} /* nodes */, {{2, "via"}, {12, "from"}, {22, "to"}} /* ways */, tags /* tags */)); - c1->CollectRelation(MakeRelationElement({} /* nodes */, {{3, "via"}, {13, "from"}, {23, "to"}} /* ways */, tags /* tags */)); - c2->CollectRelation(MakeRelationElement({} /* nodes */, {{4, "via"}, {14, "from"}, {24, "to"}} /* ways */, tags /* tags */)); + {"restriction", "no_right_turn"}}; + c1->CollectRelation( + MakeRelationElement({} /* nodes */, {{1, "via"}, {11, "from"}, {21, "to"}} /* ways */, tags /* tags */)); + c2->CollectRelation( + MakeRelationElement({} /* nodes */, {{2, "via"}, {12, "from"}, {22, "to"}} /* ways */, tags /* tags */)); + c1->CollectRelation( + MakeRelationElement({} /* nodes */, {{3, "via"}, {13, "from"}, {23, "to"}} /* ways */, tags /* tags */)); + c2->CollectRelation( + MakeRelationElement({} /* nodes */, {{4, "via"}, {14, "from"}, {24, "to"}} /* ways */, tags /* tags */)); c1->Finish(); c2->Finish(); c1->Merge(*c2); @@ -246,10 +249,11 @@ UNIT_TEST(RestrictionWriter_Merge) std::stringstream buffer; buffer << stream.rdbuf(); - std::string const correctAnswer = "No,way,11,1,21\n" - "No,way,13,3,23\n" - "No,way,12,2,22\n" - "No,way,14,4,24\n"; + std::string const correctAnswer = + "No,way,11,1,21\n" + "No,way,13,3,23\n" + "No,way,12,2,22\n" + "No,way,14,4,24\n"; TEST_EQUAL(buffer.str(), correctAnswer, ()); } } // namespace routing_builder diff --git a/generator/generator_tests/restriction_test.cpp b/generator/generator_tests/restriction_test.cpp index 6cccb4d70..fec4612a6 100644 --- a/generator/generator_tests/restriction_test.cpp +++ b/generator/generator_tests/restriction_test.cpp @@ -48,17 +48,16 @@ string const kOsmIdsToFeatureIdsName = "osm_ids_to_feature_ids" OSM2FEATURE_FILE struct RestrictionUTurnForTests { RestrictionUTurnForTests(Restriction::Type type, uint32_t featureId, bool viaIsFirstPoint) - : m_type(type), - m_featureId(featureId), - m_viaIsFirstPoint(viaIsFirstPoint) + : m_type(type) + , m_featureId(featureId) + , m_viaIsFirstPoint(viaIsFirstPoint) { CHECK(m_type == Restriction::Type::NoUTurn || m_type == Restriction::Type::OnlyUTurn, ()); } bool operator==(RestrictionUTurnForTests const & rhs) const { - return m_type == rhs.m_type && m_featureId == rhs.m_featureId && - m_viaIsFirstPoint == rhs.m_viaIsFirstPoint; + return m_type == rhs.m_type && m_featureId == rhs.m_featureId && m_viaIsFirstPoint == rhs.m_viaIsFirstPoint; } bool operator<(RestrictionUTurnForTests const & rhs) const @@ -92,8 +91,7 @@ void BuildEmptyMwm(LocalCountryFile & country) generator::tests_support::TestMwmBuilder builder(country, feature::DataHeader::MapType::Country); } -void LoadRestrictions(string const & mwmFilePath, - vector & restrictions, +void LoadRestrictions(string const & mwmFilePath, vector & restrictions, vector & restrictionsUTurn) { FilesContainerR const cont(mwmFilePath); @@ -111,8 +109,8 @@ void LoadRestrictions(string const & mwmFilePath, RestrictionVec restrictionsOnly; vector restrictionsNoUTurn; vector restrictionsOnlyUTurn; - RestrictionSerializer::Deserialize(header, restrictionsNo, restrictionsOnly, - restrictionsNoUTurn, restrictionsOnlyUTurn, src); + RestrictionSerializer::Deserialize(header, restrictionsNo, restrictionsOnly, restrictionsNoUTurn, + restrictionsOnlyUTurn, src); for (auto const & r : restrictionsNo) restrictions.emplace_back(Restriction::Type::No, vector(r.begin(), r.end())); @@ -136,10 +134,8 @@ void LoadRestrictions(string const & mwmFilePath, /// loads the restriction section and test loaded restrictions. /// \param |restrictionPath| comma separated text with restrictions in osm id terms. /// \param |osmIdsToFeatureIdContent| comma separated text with mapping from osm ids to feature ids. -void TestRestrictionBuilding(string const & restrictionPath, - string const & osmIdsToFeatureIdContent, - unique_ptr graph, - vector & expectedNotUTurn, +void TestRestrictionBuilding(string const & restrictionPath, string const & osmIdsToFeatureIdContent, + unique_ptr graph, vector & expectedNotUTurn, vector & expectedUTurn) { Platform & platform = GetPlatform(); @@ -167,7 +163,8 @@ void TestRestrictionBuilding(string const & restrictionPath, string const & mwmFullPath = scopedMwm.GetFullPath(); // Prepare data to collector. - auto restrictionCollector = std::make_unique(osmIdsToFeatureIdFullPath, *graph); + auto restrictionCollector = + std::make_unique(osmIdsToFeatureIdFullPath, *graph); TEST(restrictionCollector->Process(restrictionFullPath), ("Bad restrictions were given.")); @@ -229,8 +226,8 @@ std::pair, string> BuildTwoCubeGraph() vector const joints = { // {{/* feature id */, /* point id */}, ... } - MakeJoint({{7, 0}}), /* joint at point (-1, 0) */ - MakeJoint({{0, 0}, {6, 0}, {7, 1}}), /* joint at point (0, 0) */ + MakeJoint({{7, 0}}), /* joint at point (-1, 0) */ + MakeJoint({{0, 0}, {6, 0}, {7, 1}}), /* joint at point (0, 0) */ MakeJoint({{0, 1}, {1, 0}}), /* joint at point (1, 0) */ MakeJoint({{1, 1}, {2, 0}, {9, 0}}), /* joint at point (2, 0) */ MakeJoint({{2, 1}, {3, 1}, {8, 0}}), /* joint at point (2, 1) */ @@ -269,13 +266,11 @@ UNIT_TEST(RestrictionGenerationTest_1) /* Type ViaType ViaNodeCoords: x y from to */ R"(Only, node, 1.0, 0.0, 0, 1)"; - vector expectedNotUTurn = { - {Restriction::Type::Only, {0, 1}} - }; + vector expectedNotUTurn = {{Restriction::Type::Only, {0, 1}}}; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_2) @@ -288,13 +283,11 @@ UNIT_TEST(RestrictionGenerationTest_2) /* Type ViaType from ViaWayId to */ R"(Only, way, 0, 1 2)"; - vector expectedNotUTurn = { - {Restriction::Type::Only, {0, 1, 2}} - }; + vector expectedNotUTurn = {{Restriction::Type::Only, {0, 1, 2}}}; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_3) @@ -308,14 +301,11 @@ UNIT_TEST(RestrictionGenerationTest_3) R"(Only, node, 0.0, 0.0, 7, 6 No, way, 2, 8, 10)"; - vector expectedNotUTurn = { - {Restriction::Type::Only, {7, 6}}, - {Restriction::Type::No, {2, 8, 10}} - }; + vector expectedNotUTurn = {{Restriction::Type::Only, {7, 6}}, {Restriction::Type::No, {2, 8, 10}}}; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_BadConnection_1) @@ -331,13 +321,11 @@ UNIT_TEST(RestrictionGenerationTest_BadConnection_1) No, way, 2, 8, 10)"; // So we don't expect first restriction here. - vector expectedNotUTurn = { - {Restriction::Type::No, {2, 8, 10}} - }; + vector expectedNotUTurn = {{Restriction::Type::No, {2, 8, 10}}}; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_BadConnection_2) @@ -353,13 +341,11 @@ UNIT_TEST(RestrictionGenerationTest_BadConnection_2) No, way, 0, 1, 3)"; // So we don't expect second restriction here. - vector expectedNotUTurn = { - {Restriction::Type::Only, {7, 6}} - }; + vector expectedNotUTurn = {{Restriction::Type::Only, {7, 6}}}; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_WithUTurn_1) @@ -369,19 +355,18 @@ UNIT_TEST(RestrictionGenerationTest_WithUTurn_1) tie(indexGraph, osmIdsToFeatureIdsContent) = BuildTwoCubeGraph(); string const restrictionPath = - /* Type ViaType ViaNodeCoords: x y from to */ - R"(NoUTurn, node, 2.0, 1.0, 3, 3 + /* Type ViaType ViaNodeCoords: x y from to */ + R"(NoUTurn, node, 2.0, 1.0, 3, 3 OnlyUTurn, node, 0.0, 0.0, 6, 6)"; // So we don't expect second restriction here. vector expectedNotUTurn; vector expectedUTurn = { - {Restriction::Type::NoUTurn, 3 /* featureId */, false /* viaIsFirstPoint */}, - {Restriction::Type::OnlyUTurn, 6 /* featureId */, true /* viaIsFirstPoint */} - }; + {Restriction::Type::NoUTurn, 3 /* featureId */, false /* viaIsFirstPoint */}, + {Restriction::Type::OnlyUTurn, 6 /* featureId */, true /* viaIsFirstPoint */}}; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_WithUTurn_2) @@ -401,17 +386,13 @@ UNIT_TEST(RestrictionGenerationTest_WithUTurn_2) // So we don't expect second restriction here. vector expectedNotUTurn = { - {Restriction::Type::No, {2, 8}}, - {Restriction::Type::No, {2, 8, 10}}, - {Restriction::Type::Only, {6, 5, 4}} - }; + {Restriction::Type::No, {2, 8}}, {Restriction::Type::No, {2, 8, 10}}, {Restriction::Type::Only, {6, 5, 4}}}; vector expectedUTurn = { - {Restriction::Type::OnlyUTurn, 6 /* featureId */, false /* viaIsFirstPoint */} - }; + {Restriction::Type::OnlyUTurn, 6 /* featureId */, false /* viaIsFirstPoint */}}; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } UNIT_TEST(RestrictionGenerationTest_WithUTurn_BadConnection_1) @@ -431,7 +412,7 @@ UNIT_TEST(RestrictionGenerationTest_WithUTurn_BadConnection_1) vector expectedNotUTurn; vector expectedUTurn; - TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), - expectedNotUTurn, expectedUTurn); + TestRestrictionBuilding(restrictionPath, osmIdsToFeatureIdsContent, std::move(indexGraph), expectedNotUTurn, + expectedUTurn); } } // namespace restriction_test diff --git a/generator/generator_tests/road_access_test.cpp b/generator/generator_tests/road_access_test.cpp index c0a920408..932e360aa 100644 --- a/generator/generator_tests/road_access_test.cpp +++ b/generator/generator_tests/road_access_test.cpp @@ -107,8 +107,8 @@ RoadAccessByVehicleType SaveAndLoadRoadAccess( } */ -OsmElement MakeOsmElementWithNodes(uint64_t id, generator_tests::Tags const & tags, - OsmElement::EntityType t, std::vector const & nodes) +OsmElement MakeOsmElementWithNodes(uint64_t id, generator_tests::Tags const & tags, OsmElement::EntityType t, + std::vector const & nodes) { auto r = generator_tests::MakeOsmElement(id, tags, t); r.m_nodes = nodes; @@ -133,13 +133,9 @@ public: } virtual bool GetRelation(cache::Key id, RelationElement & e) { UNREACHABLE(); } - void Add(OsmElement const & e) - { - TEST(m_map.try_emplace(e.m_id, e.m_id, e.m_nodes).second, ()); - } + void Add(OsmElement const & e) { TEST(m_map.try_emplace(e.m_id, e.m_id, e.m_nodes).second, ()); } }; - /* UNIT_TEST(RoadAccess_Smoke) { @@ -199,12 +195,12 @@ class TestAccessFixture class Way2Feature : public OsmWay2FeaturePoint { public: - virtual void ForEachFeature(uint64_t wayID, std::function const & fn) override + virtual void ForEachFeature(uint64_t wayID, std::function const & fn) override { fn(base::checked_cast(wayID)); } virtual void ForEachNodeIdx(uint64_t wayID, uint32_t candidateIdx, m2::PointU pt, - std::function const & fn) override + std::function const & fn) override { auto const ll = mercator::ToLatLon(PointUToPointD(pt, kPointCoordBits, mercator::Bounds::FullRect())); @@ -225,10 +221,7 @@ public: { classificator::Load(); } - ~TestAccessFixture() - { - TEST(Platform::RemoveFileIfExists(m_fileName), ()); - } + ~TestAccessFixture() { TEST(Platform::RemoveFileIfExists(m_fileName), ()); } void CreateCollectors(size_t count = 1) { @@ -272,17 +265,13 @@ public: ReadRoadAccess(m_fileName, m_wya2feature, m_roadAccess); } - RoadAccess const & Get(VehicleType vehicle) const - { - return m_roadAccess[static_cast(vehicle)]; - } + RoadAccess const & Get(VehicleType vehicle) const { return m_roadAccess[static_cast(vehicle)]; } }; UNIT_CLASS_TEST(TestAccessFixture, CarPermit) { CreateCollectors(); - AddWay(MakeOsmElementWithNodes(1 /* id */, - {{"highway", "motorway"}, {"access", "no"}, {"motor_vehicle", "permit"}}, + AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "motorway"}, {"access", "no"}, {"motor_vehicle", "permit"}}, OsmElement::EntityType::Way, {1, 2})); Finish(); @@ -299,13 +288,17 @@ UNIT_CLASS_TEST(TestAccessFixture, HgvDesignated) { CreateCollectors(); AddWay(MakeOsmElementWithNodes(1 /* id */, - {{"highway", "motorway"}, {"access", "no"}, {"emergency", "yes"}, - {"bus", "yes"}, {"hgv", "designated"}, {"motor_vehicle", "yes"}}, + {{"highway", "motorway"}, + {"access", "no"}, + {"emergency", "yes"}, + {"bus", "yes"}, + {"hgv", "designated"}, + {"motor_vehicle", "yes"}}, OsmElement::EntityType::Way, {1, 2})); - AddWay(MakeOsmElementWithNodes(2 /* id */, - {{"highway", "motorway"}, {"access", "no"}, {"emergency", "yes"}, - {"bus", "yes"}, {"hgv", "designated"}}, - OsmElement::EntityType::Way, {2, 3})); + AddWay(MakeOsmElementWithNodes( + 2 /* id */, + {{"highway", "motorway"}, {"access", "no"}, {"emergency", "yes"}, {"bus", "yes"}, {"hgv", "designated"}}, + OsmElement::EntityType::Way, {2, 3})); Finish(); auto const noSure = make_pair(RoadAccess::Type::No, RoadAccess::Confidence::Sure); @@ -322,26 +315,31 @@ UNIT_CLASS_TEST(TestAccessFixture, Merge) { CreateCollectors(3); - AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "service"}} /* tags */, - OsmElement::EntityType::Way, {10, 11, 12, 13}), 0); - AddWay(MakeOsmElementWithNodes(2 /* id */, {{"highway", "service"}} /* tags */, - OsmElement::EntityType::Way, {20, 21, 22, 23}), 1); - AddWay(MakeOsmElementWithNodes(3 /* id */, {{"highway", "motorway"}} /* tags */, - OsmElement::EntityType::Way, {30, 31, 32, 33}), 2); + AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "service"}} /* tags */, OsmElement::EntityType::Way, + {10, 11, 12, 13}), + 0); + AddWay(MakeOsmElementWithNodes(2 /* id */, {{"highway", "service"}} /* tags */, OsmElement::EntityType::Way, + {20, 21, 22, 23}), + 1); + AddWay(MakeOsmElementWithNodes(3 /* id */, {{"highway", "motorway"}} /* tags */, OsmElement::EntityType::Way, + {30, 31, 32, 33}), + 2); AddNode(MakeOsmElement(11 /* id */, {{"barrier", "lift_gate"}, {"motor_vehicle", "private"}}, - OsmElement::EntityType::Node), 0); + OsmElement::EntityType::Node), + 0); AddNode(MakeOsmElement(22 /* id */, {{"barrier", "lift_gate"}, {"motor_vehicle", "private"}}, - OsmElement::EntityType::Node), 1); + OsmElement::EntityType::Node), + 1); // We should ignore this barrier because it's without access tag and placed on highway-motorway. - AddNode(MakeOsmElement(32 /* id */, {{"barrier", "lift_gate"}}, - OsmElement::EntityType::Node), 2); + AddNode(MakeOsmElement(32 /* id */, {{"barrier", "lift_gate"}}, OsmElement::EntityType::Node), 2); // Ignore all motorway_junction access. AddNode(MakeOsmElement(31 /* id */, {{"highway", "motorway_junction"}, {"access", "private"}}, - OsmElement::EntityType::Node), 0); + OsmElement::EntityType::Node), + 0); Finish(); @@ -361,23 +359,17 @@ UNIT_TEST(RoadAccessCoditional_Parse) using ConditionalVector = std::vector; std::vector> const tests = { - {"no @ Mo-Su", - {{RoadAccess::Type::No, "Mo-Su"}}}, + {"no @ Mo-Su", {{RoadAccess::Type::No, "Mo-Su"}}}, - {"no @ Mo-Su;", - {{RoadAccess::Type::No, "Mo-Su"}}}, + {"no @ Mo-Su;", {{RoadAccess::Type::No, "Mo-Su"}}}, - {"yes @ (10:00 - 20:00)", - {{RoadAccess::Type::Yes, "10:00 - 20:00"}}}, + {"yes @ (10:00 - 20:00)", {{RoadAccess::Type::Yes, "10:00 - 20:00"}}}, - {"private @ Mo-Fr 15:00-20:00", - {{RoadAccess::Type::Private, "Mo-Fr 15:00-20:00"}}}, + {"private @ Mo-Fr 15:00-20:00", {{RoadAccess::Type::Private, "Mo-Fr 15:00-20:00"}}}, - {"destination @ 10:00-20:00", - {{RoadAccess::Type::Destination, "10:00-20:00"}}}, + {"destination @ 10:00-20:00", {{RoadAccess::Type::Destination, "10:00-20:00"}}}, - {"yes @ Mo-Fr ; Sa-Su", - {{RoadAccess::Type::Yes, "Mo-Fr ; Sa-Su"}}}, + {"yes @ Mo-Fr ; Sa-Su", {{RoadAccess::Type::Yes, "Mo-Fr ; Sa-Su"}}}, {"no @ (Mo-Su) ; yes @ (Fr-Su)", {{RoadAccess::Type::No, "Mo-Su"}, @@ -386,23 +378,19 @@ UNIT_TEST(RoadAccessCoditional_Parse) {"private @ (18:00-09:00; Oct-Mar)", {{RoadAccess::Type::Private, "18:00-09:00; Oct-Mar"}}}, {"no @ (Nov-May); no @ (20:00-07:00)", - {{RoadAccess::Type::No, "Nov-May"}, - {RoadAccess::Type::No, "20:00-07:00"}}}, + {{RoadAccess::Type::No, "Nov-May"}, {RoadAccess::Type::No, "20:00-07:00"}}}, - {"no @ 22:30-05:00", - {{RoadAccess::Type::No, "22:30-05:00"}}}, + {"no @ 22:30-05:00", {{RoadAccess::Type::No, "22:30-05:00"}}}, {"destination @ (Mo-Fr 06:00-15:00); yes @ (Mo-Fr 15:00-21:00; Sa,Su,SH,PH 09:00-21:00)", {{RoadAccess::Type::Destination, "Mo-Fr 06:00-15:00"}, {RoadAccess::Type::Yes, "Mo-Fr 15:00-21:00; Sa,Su,SH,PH 09:00-21:00"}}}, {"no @ (Mar 15-Jul 15); private @ (Jan- Dec)", - {{RoadAccess::Type::No, "Mar 15-Jul 15"}, - {RoadAccess::Type::Private, "Jan- Dec"}}}, + {{RoadAccess::Type::No, "Mar 15-Jul 15"}, {RoadAccess::Type::Private, "Jan- Dec"}}}, {"no @ (06:30-08:30);destination @ (06:30-08:30 AND agricultural)", - {{RoadAccess::Type::No, "06:30-08:30"}, - {RoadAccess::Type::Destination, "06:30-08:30 AND agricultural"}}}, + {{RoadAccess::Type::No, "06:30-08:30"}, {RoadAccess::Type::Destination, "06:30-08:30 AND agricultural"}}}, {"no @ (Mo-Fr 00:00-08:00,20:00-24:00; Sa-Su 00:00-24:00; PH 00:00-24:00)", {{RoadAccess::Type::No, "Mo-Fr 00:00-08:00,20:00-24:00; Sa-Su 00:00-24:00; PH 00:00-24:00"}}}, @@ -412,16 +400,10 @@ UNIT_TEST(RoadAccessCoditional_Parse) {"yes Mo-Fr", {}}, {"yes (Mo-Fr)", {}}, {"no ; Mo-Fr", {}}, - {"asdsadasdasd", {}} - }; + {"asdsadasdasd", {}}}; - std::vector tags = { - "motorcar:conditional", - "vehicle:conditional", - "motor_vehicle:conditional", - "bicycle:conditional", - "foot:conditional" - }; + std::vector tags = {"motorcar:conditional", "vehicle:conditional", "motor_vehicle:conditional", + "bicycle:conditional", "foot:conditional"}; for (auto const & tag : tags) { @@ -451,20 +433,21 @@ UNIT_CLASS_TEST(TestAccessFixture, ConditionalMerge) { CreateCollectors(3); - AddWay(MakeOsmElementWithNodes( - 1 /* id */, {{"highway", "primary"}, {"vehicle:conditional", "no @ (Mo-Su)"}} /* tags */, - OsmElement::EntityType::Way, {10, 11, 12, 13}), 0); + AddWay( + MakeOsmElementWithNodes(1 /* id */, {{"highway", "primary"}, {"vehicle:conditional", "no @ (Mo-Su)"}} /* tags */, + OsmElement::EntityType::Way, {10, 11, 12, 13}), + 0); AddWay(MakeOsmElementWithNodes( - 2 /* id */, - {{"highway", "service"}, {"vehicle:conditional", "private @ (10:00-20:00)"}} /* tags */, - OsmElement::EntityType::Way, {20, 21, 22, 23}), 1); + 2 /* id */, {{"highway", "service"}, {"vehicle:conditional", "private @ (10:00-20:00)"}} /* tags */, + OsmElement::EntityType::Way, {20, 21, 22, 23}), + 1); AddWay(MakeOsmElementWithNodes( - 3 /* id */, - {{"highway", "service"}, - {"vehicle:conditional", "private @ (12:00-19:00) ; no @ (Mo-Su)"}} /* tags */, - OsmElement::EntityType::Way, {30, 31, 32, 33}), 2); + 3 /* id */, + {{"highway", "service"}, {"vehicle:conditional", "private @ (12:00-19:00) ; no @ (Mo-Su)"}} /* tags */, + OsmElement::EntityType::Way, {30, 31, 32, 33}), + 2); Finish(); @@ -483,18 +466,15 @@ UNIT_CLASS_TEST(TestAccessFixture, WinterRoads) { CreateCollectors(); - AddWay(MakeOsmElementWithNodes( - 1 /* id */, {{"highway", "primary"}, {"ice_road", "yes"}} /* tags */, - OsmElement::EntityType::Way, {10, 11, 12, 13})); + AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "primary"}, {"ice_road", "yes"}} /* tags */, + OsmElement::EntityType::Way, {10, 11, 12, 13})); - AddWay(MakeOsmElementWithNodes( - 2 /* id */, - {{"highway", "service"}, {"winter_road", "yes"}} /* tags */, - OsmElement::EntityType::Way, {20, 21, 22, 23})); + AddWay(MakeOsmElementWithNodes(2 /* id */, {{"highway", "service"}, {"winter_road", "yes"}} /* tags */, + OsmElement::EntityType::Way, {20, 21, 22, 23})); Finish(); - for (auto vehicle : { VehicleType::Pedestrian, VehicleType::Bicycle, VehicleType::Car }) + for (auto vehicle : {VehicleType::Pedestrian, VehicleType::Bicycle, VehicleType::Car}) { auto const & ra = Get(vehicle); for (uint64_t id = 1; id <= 2; ++id) @@ -514,13 +494,12 @@ UNIT_CLASS_TEST(TestAccessFixture, Locked) { CreateCollectors(); - AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "service"}} /* tags */, - OsmElement::EntityType::Way, {10, 11, 12, 13})); - AddWay(MakeOsmElementWithNodes(2 /* id */, {{"highway", "secondary"}} /* tags */, - OsmElement::EntityType::Way, {20, 21, 22, 23})); + AddWay(MakeOsmElementWithNodes(1 /* id */, {{"highway", "service"}} /* tags */, OsmElement::EntityType::Way, + {10, 11, 12, 13})); + AddWay(MakeOsmElementWithNodes(2 /* id */, {{"highway", "secondary"}} /* tags */, OsmElement::EntityType::Way, + {20, 21, 22, 23})); - AddNode(MakeOsmElement(11 /* id */, {{"barrier", "gate"}, {"locked", "yes"}}, - OsmElement::EntityType::Node)); + AddNode(MakeOsmElement(11 /* id */, {{"barrier", "gate"}, {"locked", "yes"}}, OsmElement::EntityType::Node)); AddNode(MakeOsmElement(21 /* id */, {{"barrier", "gate"}, {"locked", "yes"}, {"access", "permissive"}}, OsmElement::EntityType::Node)); @@ -541,22 +520,18 @@ UNIT_CLASS_TEST(TestAccessFixture, CycleBarrier) { CreateCollectors(); - AddWay(MakeOsmElementWithNodes(1, {{"highway", "track"}}, - OsmElement::EntityType::Way, {10, 11, 12})); - AddNode(MakeOsmElement(10, {{"barrier", "cycle_barrier"}}, - OsmElement::EntityType::Node)); - AddNode(MakeOsmElement(11, {{"barrier", "cycle_barrier"}, {"bicycle", "dismount"}}, - OsmElement::EntityType::Node)); - AddNode(MakeOsmElement(12, {{"barrier", "cycle_barrier"}, {"bicycle", "no"}}, - OsmElement::EntityType::Node)); + AddWay(MakeOsmElementWithNodes(1, {{"highway", "track"}}, OsmElement::EntityType::Way, {10, 11, 12})); + AddNode(MakeOsmElement(10, {{"barrier", "cycle_barrier"}}, OsmElement::EntityType::Node)); + AddNode(MakeOsmElement(11, {{"barrier", "cycle_barrier"}, {"bicycle", "dismount"}}, OsmElement::EntityType::Node)); + AddNode(MakeOsmElement(12, {{"barrier", "cycle_barrier"}, {"bicycle", "no"}}, OsmElement::EntityType::Node)); Finish(); auto const bicycle = Get(VehicleType::Bicycle); TEST_EQUAL(bicycle.GetAccessWithoutConditional({1, 0}), make_pair(RoadAccess::Type::Yes, RoadAccess::Confidence::Sure), ()); TEST_EQUAL(bicycle.GetAccessWithoutConditional({1, 1}), make_pair(RoadAccess::Type::Yes, RoadAccess::Confidence::Sure), ()); - TEST_EQUAL(bicycle.GetAccessWithoutConditional({1, 2}), - make_pair(RoadAccess::Type::No, RoadAccess::Confidence::Sure), ()); + TEST_EQUAL(bicycle.GetAccessWithoutConditional({1, 2}), make_pair(RoadAccess::Type::No, RoadAccess::Confidence::Sure), + ()); } } // namespace road_access_test diff --git a/generator/generator_tests/source_data.cpp b/generator/generator_tests/source_data.cpp index 3e467129c..aabf76c6c 100644 --- a/generator/generator_tests/source_data.cpp +++ b/generator/generator_tests/source_data.cpp @@ -1,6 +1,7 @@ #include "source_data.hpp" -char const node_xml_data[] = "\ +char const node_xml_data[] = + "\ \ \ \ @@ -11,17 +12,15 @@ char const node_xml_data[] = "\ // binary data: node.o5m unsigned char const 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 -}; + 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"); - -char const node2_xml_data[] = "\ +char const node2_xml_data[] = + "\ \ @@ -34,16 +33,15 @@ timestamp='2012-06-29T18:09:47Z' user='Xmypblu' uid='395071' lat='55.0927062' lo // binary data: node2.o5m unsigned char const 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}; + {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"); - -char const way_xml_data[] = "\ +char const way_xml_data[] = + "\ \ \ \ @@ -70,23 +68,22 @@ char const way_xml_data[] = "\ \ "; - // binary data: way.o5m unsigned char const 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}; + {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"); -char const relation_xml_data[] = "\ +char const relation_xml_data[] = + "\ \ \ \ @@ -122,19 +119,16 @@ char const relation_xml_data[] = "\ // binary data: relation.o5m unsigned char const 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}; + {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"); diff --git a/generator/generator_tests/source_to_element_test.cpp b/generator/generator_tests/source_to_element_test.cpp index 301273e3a..b2fdd3bac 100644 --- a/generator/generator_tests/source_to_element_test.cpp +++ b/generator/generator_tests/source_to_element_test.cpp @@ -21,10 +21,7 @@ UNIT_TEST(Source_To_Element_create_from_xml_test) SourceReader reader(ss); std::vector elements; - ProcessOsmElementsFromXML(reader, [&elements](OsmElement && e) - { - elements.push_back(std::move(e)); - }); + ProcessOsmElementsFromXML(reader, [&elements](OsmElement && e) { elements.push_back(std::move(e)); }); TEST_EQUAL(elements.size(), 10, (elements)); } @@ -36,10 +33,7 @@ UNIT_TEST(Source_To_Element_create_from_o5m_test) SourceReader reader(ss); std::vector elements; - ProcessOsmElementsFromO5M(reader, [&elements](OsmElement && e) - { - elements.push_back(std::move(e)); - }); + ProcessOsmElementsFromO5M(reader, [&elements](OsmElement && e) { elements.push_back(std::move(e)); }); TEST_EQUAL(elements.size(), 11, (elements)); std::cout << DebugPrint(elements); @@ -51,25 +45,17 @@ UNIT_TEST(Source_To_Element_check_equivalence) SourceReader readerXML(ss1); std::vector elementsXML; - ProcessOsmElementsFromXML(readerXML, [&elementsXML](OsmElement && e) - { - elementsXML.push_back(std::move(e)); - }); + ProcessOsmElementsFromXML(readerXML, [&elementsXML](OsmElement && e) { elementsXML.push_back(std::move(e)); }); std::string src(std::begin(relation_o5m_data), std::end(relation_o5m_data)); std::istringstream ss2(src); SourceReader readerO5M(ss2); std::vector elementsO5M; - ProcessOsmElementsFromO5M(readerO5M, [&elementsO5M](OsmElement && e) - { - elementsO5M.push_back(std::move(e)); - }); + ProcessOsmElementsFromO5M(readerO5M, [&elementsO5M](OsmElement && e) { elementsO5M.push_back(std::move(e)); }); TEST_EQUAL(elementsXML.size(), elementsO5M.size(), ()); for (size_t i = 0; i < elementsO5M.size(); ++i) - { TEST_EQUAL(elementsXML[i], elementsO5M[i], ()); - } } diff --git a/generator/generator_tests/speed_cameras_test.cpp b/generator/generator_tests/speed_cameras_test.cpp index 961d06d23..72848a53b 100644 --- a/generator/generator_tests/speed_cameras_test.cpp +++ b/generator/generator_tests/speed_cameras_test.cpp @@ -75,10 +75,8 @@ std::vector UnpackMapToVector(CameraMap const & cameraMap) { std::vector result; for (auto const & mapIter : cameraMap) - { for (auto const & vectorIter : mapIter.second) result.push_back({mapIter.first, vectorIter}); - } sort(result.begin(), result.end()); return result; @@ -101,8 +99,7 @@ void CheckCameraMapsEquality(CameraMap const & lhs, CameraMap const & rhs, doubl } } -void TestSpeedCameraSectionBuilding(string const & osmContent, CameraMap const & answer, - double epsilon) +void TestSpeedCameraSectionBuilding(string const & osmContent, CameraMap const & answer, double epsilon) { // ScopedFile takes relative path only?! and makes WritableDir() + kOsmFileName. // Replace WritebleDir here with temporary path. @@ -189,9 +186,7 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsOnePointOfFeature_1) // coef - position on segment (at the beginning of segment) - 0, // maxSpeed - 100. - CameraMap const answer = { - {SegmentCoord(0, 0), std::vector{{0, 100}}} - }; + CameraMap const answer = {{SegmentCoord(0, 0), std::vector{{0, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, kCoefEqualityEpsilon); } @@ -222,9 +217,7 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsOnePointOfFeature_2) // coef - position on segment (at the beginning of segment) - 0, // maxSpeed - 100. - CameraMap const answer = { - {SegmentCoord(0, 1), std::vector{{0, 100}}} - }; + CameraMap const answer = {{SegmentCoord(0, 1), std::vector{{0, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, kCoefEqualityEpsilon); } @@ -255,9 +248,7 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsOnePointOfFeature_3) // coef - position on segment (at the end of segment) - 1, // maxSpeed - 100. - CameraMap const answer = { - {SegmentCoord(0, 1), std::vector{{1, 100}}} - }; + CameraMap const answer = {{SegmentCoord(0, 1), std::vector{{1, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, kCoefEqualityEpsilon); } @@ -311,10 +302,8 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsOnePointOfFeature_4) // coef - position on segment (at the beginning of segment) - 0, // maxSpeed - 100. - CameraMap const answer = { - {SegmentCoord(0, 1), std::vector{{1, 100}}}, - {SegmentCoord(1, 1), std::vector{{0, 100}}} - }; + CameraMap const answer = {{SegmentCoord(0, 1), std::vector{{1, 100}}}, + {SegmentCoord(1, 1), std::vector{{0, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, kCoefEqualityEpsilon); } @@ -353,8 +342,7 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsNearFeature_1) mercator::DistanceOnEarth(mercator::FromLatLon(55.7793100, 37.3699100), mercator::FromLatLon(55.7793300, 37.3699300)); epsilon = math::Clamp(epsilon, 0.0, 1.0); - CameraMap const answer = { - {SegmentCoord(0, 0), std::vector{{0.5, 100}}}}; + CameraMap const answer = {{SegmentCoord(0, 0), std::vector{{0.5, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, epsilon); } @@ -391,9 +379,7 @@ UNIT_TEST(SpeedCameraGenerationTest_CameraIsNearFeature_2) mercator::FromLatLon(55.7793300, 37.3699300)); epsilon = math::Clamp(epsilon, 0.0, 1.0); - CameraMap const answer = { - {SegmentCoord(0, 0), std::vector{{0.25, 100}}} - }; + CameraMap const answer = {{SegmentCoord(0, 0), std::vector{{0.25, 100}}}}; TestSpeedCameraSectionBuilding(osmContent, answer, epsilon); } diff --git a/generator/generator_tests/srtm_parser_test.cpp b/generator/generator_tests/srtm_parser_test.cpp index 427e7db59..e9de44a46 100644 --- a/generator/generator_tests/srtm_parser_test.cpp +++ b/generator/generator_tests/srtm_parser_test.cpp @@ -112,18 +112,99 @@ UNIT_TEST(SRTM_SamplesTest) SrtmTileManager manager("/Users/vng/SRTM"); std::initializer_list arr[] = { - {{ 41.899802800880578957, 12.498703841110341273}, { 41.899748897914214751, 12.498642150302543996}, { 41.899315676124750496, 12.498172763721441925}, { 41.899207869324136766, 12.498057428732948893 }}, - {{ 41.900315874986389986, 12.499267105007675127}, { 41.900234022973513959, 12.499175909900486658}, { 41.899802800880578957, 12.498703841110341273 }}, - {{ 41.899317672545265623, 12.499556783583443575}, { 41.899704976945002954, 12.498910371206022774}, { 41.899716955394147533, 12.49888623132471821}, { 41.899730930248637151, 12.498862091443413647}, { 41.899744905100071435, 12.49882990493497914}, { 41.899760876355117034, 12.498797718426573056}, { 41.899772854793766896, 12.498768214127181864}, { 41.899788826041820755, 12.498736027618775779}, { 41.899802800880578957, 12.498703841110341273 }}, - {{ 41.900297907480371862, 12.497869674100513748}, { 41.900259976062137923, 12.497931364908311025}, { 41.899866685818835776, 12.498593870539906447}, { 41.899834743357700972, 12.498647514720602203}, { 41.899818772121129484, 12.498674336810950081}, { 41.899802800880578957, 12.498703841110341273 }}, - {{ 41.899728933841061007, 12.497309092412223208}, { 41.900224041013551357, 12.497850898637267392}, { 41.90023202658165502, 12.49786430968242712}, { 41.900224041013551357, 12.497888449563731683}, { 41.899826757739916161, 12.498548272986312213}, { 41.899808790096251698, 12.498556319613442156}, { 41.899802800880578957, 12.498550955195355527}, { 41.89979281885320006, 12.498545590777297321}, { 41.899307690442057606, 12.498009148970311344}, { 41.899301701179375357, 12.497995737925151616}, { 41.899309686862821422, 12.497976962461905259}, { 41.899716955394147533, 12.497311774621238101}, { 41.899728933841061007, 12.497309092412223208 }}, - {{ 41.899802800880578957, 12.498550955195355527}, { 41.899748897914214751, 12.498642150302543996}, { 41.899681020039992063, 12.498754803082022136 }}, - {{ 41.899912603078725226, 12.498650196929645517}, { 41.899866685818835776, 12.498593870539906447}, { 41.899826757739916161, 12.498548272986312213 }}, - {{ 41.899994455503602353, 12.498516086477906128}, { 41.899912603078725226, 12.498650196929645517}, { 41.899912603078725226, 12.498685065647094916}, { 41.900285929140210328, 12.499090079211356397}, { 41.90030589303923847, 12.499111536883646068}, { 41.90070516970908443, 12.498435620206862495}, { 41.900711158840110215, 12.49842489137071766}, { 41.900715151593857399, 12.498408798116514618}, { 41.900713155217019334, 12.498398069280369782}, { 41.90056342677709722, 12.498237136738282516}, { 41.900327853320931126, 12.497979644670920152}, { 41.900317871375655443, 12.497976962461905259}, { 41.900307889428788144, 12.497982326879963466}, { 41.899994455503602353, 12.498516086477906128 }}, + {{ 41.899802800880578957, 12.498703841110341273}, { 41.899748897914214751, 12.498642150302543996}, +{ 41.899315676124750496, 12.498172763721441925}, { 41.899207869324136766, 12.498057428732948893 }}, + {{ 41.900315874986389986, 12.499267105007675127}, { 41.900234022973513959, 12.499175909900486658}, +{ 41.899802800880578957, 12.498703841110341273 }}, + {{ 41.899317672545265623, 12.499556783583443575}, { 41.899704976945002954, 12.498910371206022774}, +{ 41.899716955394147533, 12.49888623132471821}, { 41.899730930248637151, 12.498862091443413647}, +{ 41.899744905100071435, 12.49882990493497914}, { 41.899760876355117034, 12.498797718426573056}, +{ 41.899772854793766896, 12.498768214127181864}, { 41.899788826041820755, 12.498736027618775779}, +{ 41.899802800880578957, 12.498703841110341273 }}, + {{ 41.900297907480371862, 12.497869674100513748}, { 41.900259976062137923, 12.497931364908311025}, +{ 41.899866685818835776, 12.498593870539906447}, { 41.899834743357700972, 12.498647514720602203}, +{ 41.899818772121129484, 12.498674336810950081}, { 41.899802800880578957, 12.498703841110341273 }}, + {{ 41.899728933841061007, 12.497309092412223208}, { 41.900224041013551357, 12.497850898637267392}, +{ 41.90023202658165502, 12.49786430968242712}, { 41.900224041013551357, 12.497888449563731683}, +{ 41.899826757739916161, 12.498548272986312213}, { 41.899808790096251698, 12.498556319613442156}, +{ 41.899802800880578957, 12.498550955195355527}, { 41.89979281885320006, 12.498545590777297321}, +{ 41.899307690442057606, 12.498009148970311344}, { 41.899301701179375357, 12.497995737925151616}, +{ 41.899309686862821422, 12.497976962461905259}, { 41.899716955394147533, 12.497311774621238101}, +{ 41.899728933841061007, 12.497309092412223208 }}, + {{ 41.899802800880578957, 12.498550955195355527}, { 41.899748897914214751, 12.498642150302543996}, +{ 41.899681020039992063, 12.498754803082022136 }}, + {{ 41.899912603078725226, 12.498650196929645517}, { 41.899866685818835776, 12.498593870539906447}, +{ 41.899826757739916161, 12.498548272986312213 }}, + {{ 41.899994455503602353, 12.498516086477906128}, { 41.899912603078725226, 12.498650196929645517}, +{ 41.899912603078725226, 12.498685065647094916}, { 41.900285929140210328, 12.499090079211356397}, +{ 41.90030589303923847, 12.499111536883646068}, { 41.90070516970908443, 12.498435620206862495}, +{ 41.900711158840110215, 12.49842489137071766}, { 41.900715151593857399, 12.498408798116514618}, +{ 41.900713155217019334, 12.498398069280369782}, { 41.90056342677709722, 12.498237136738282516}, +{ 41.900327853320931126, 12.497979644670920152}, { 41.900317871375655443, 12.497976962461905259}, +{ 41.900307889428788144, 12.497982326879963466}, { 41.899994455503602353, 12.498516086477906128 }}, - {{ 44.759886801735603967, 34.316046940654871378 }, { 44.759500178870737841, 34.315553414192436321 }, { 44.759132599068138347, 34.315443443622029918 }, { 44.758765016927078761, 34.315430032576841768 }, { 44.758071746835689453, 34.315253006780551459 }, { 44.758037464032938146, 34.315255688989566352 }, { 44.757483222565575431, 34.315306650961247215 }, { 44.756708037437867631, 34.315676795808059296 }, { 44.756323297960172169, 34.315652655926726311 }, { 44.755963316624225001, 34.315430032576841768 }, { 44.755833798981250027, 34.315153765046261469 }, { 44.755789991477485046, 34.314949917159594861 }}, - {{ 44.759886801735603967, 34.316046940654871378 }, { 44.760006787615907342, 34.315175222718522718 }, { 44.760048687388419353, 34.315011607967392138 }, { 44.760260090322724125, 34.314772891363304552 }, { 44.760437211104594724, 34.314665603001913041 }, { 44.760572431981174191, 34.314383971053246114 }, { 44.760701939002856875, 34.314300822573159166 }, { 44.761223773178279828, 34.314088928059419459 }, { 44.761292334982400121, 34.314091610268434351 }, { 44.761376132632506142, 34.314011143997390718 }, { 44.761667518969709079, 34.313895809008897686 }, { 44.761739889204726239, 34.31379924948365101 }, { 44.761739889204726239, 34.313705372167419227 }, { 44.76183130410882427, 34.313568579506636524 }, { 44.761930336758403826, 34.313549804043390168 }, { 44.761981757490261202, 34.313442515681998657 }, { 44.762050318394869919, 34.313396918128404423 }, { 44.762176013175370315, 34.313391553710346216 }, { 44.762316943361625476, 34.313359367201911709 }, { 44.762610229403847484, 34.313332545111563832 }, { 44.762627369451166714, 34.313343273947708667 }, { 44.762663553978839559, 34.313313769648317475 }, { 44.762673076219179791, 34.313278900930868076 }, { 44.762678789562635018, 34.313233303377273842 }, { 44.762692120695184883, 34.31320379907788265 }, { 44.762720687397411723, 34.313182341405621401 }, { 44.762734018520298207, 34.313107239552635974 }, { 44.762747349640086725, 34.313091146298432932 }, { 44.7628063874193316, 34.313101875134577767 }, { 44.76292065391750441, 34.313123332806839016 }, { 44.762977787081830172, 34.313056277580983533 }, { 44.763063486722373341, 34.313107239552635974 }, { 44.763282496337311045, 34.313088464089389618 }}, - {{ 44.756521381971580809, 34.332137512655094724 }, { 44.756469956380023234, 34.331619846311355104 }, { 44.756412816780184016, 34.331308710063325407 }, { 44.756359486436011252, 34.331040489159818208 }, { 44.75633282124546497, 34.330965387306861203 }, { 44.756294728094793811, 34.330860781154484584 }, { 44.756264253556160781, 34.330694484194339111 }, { 44.756294728094793811, 34.330608653505208849 }, { 44.756323297960172169, 34.330533551652223423 }, { 44.756433767973362592, 34.330359208064976428 }, { 44.756555665673857902, 34.330109762624715586 }, { 44.756641374840555159, 34.329940783455526798 }, { 44.756755653531747896, 34.329755711032106547 }, { 44.757010875126020721, 34.329463350247323206 }, { 44.757180387352946127, 34.329117345281815687 }, { 44.757266095593031707, 34.32893495506743875 }, { 44.757448939413642108, 34.328564810220626669 }, { 44.757591785745901802, 34.328301953735206098 }, { 44.757746059388104243, 34.327797698436654628 }, { 44.757807006886359602, 34.327470468934393466 }, { 44.75787366813893442, 34.327239798957407402 }, { 44.757986039790637278, 34.327089595251464971 }, { 44.758026036427494887, 34.326995717935233188 }, { 44.758113648011466523, 34.326907205037088033 }, { 44.75817078592944398, 34.326783823421465058 }, { 44.758237446762365153, 34.326400267529493249 }, { 44.758264111073970071, 34.3263519877668557 }, { 44.758357436067782942, 34.326177644179608706 }, { 44.758412669156371066, 34.325909423276101506 }, { 44.758505993910240761, 34.325775312824362118 }, { 44.758526944344453113, 34.325598287028071809 }, { 44.758479329710219474, 34.325461494367289106 }, { 44.758391718680712756, 34.325370299260100637 }, { 44.758429810449001707, 34.32524423543546277 }, { 44.75854789477109108, 34.325085985102390396 }, { 44.758637410144764601, 34.324914323724158294 }, { 44.758685024648755757, 34.324734615718824671 }, { 44.758707879596705936, 34.324613916312273432 }, { 44.758766921503791991, 34.324568318758679197 }, { 44.758749780311177346, 34.32444225493404133 }, { 44.758799299298182461, 34.324206220538968637 }, { 44.75882786792522694, 34.323988961607142301 }, { 44.758825963350531651, 34.323667096522939346 }, { 44.758843104520543932, 34.323423015500765132 }, { 44.758862150259034252, 34.323181616687634232 }, { 44.758915478293424428, 34.322983133219054253 }, { 44.758944046863021526, 34.322875844857662742 }, { 44.759084984933011242, 34.322862433812474592 }, { 44.758966901708539865, 34.32266126813487972 }, { 44.758865959405987667, 34.32256202640058973 }, { 44.758753589465527511, 34.322331356423575244 }, { 44.75867359717138072, 34.322089957610444344 }, { 44.758690738386590624, 34.321875380887661322 }, { 44.758690738386590624, 34.321754681481081661 }, { 44.758698356702829813, 34.321642028701631943 }, { 44.758643123887310367, 34.321379172216211373 }, { 44.758641219306547043, 34.321231650719283834 }, { 44.758665978851873035, 34.321027802832645648 }, { 44.758732639113461005, 34.320837365991167189 }, { 44.75867359717138072, 34.320502089861804507 }, { 44.75867931091034535, 34.320392119291369681 }, { 44.758808822175438991, 34.320268737675775128 }, { 44.758793585571083895, 34.320099758506557919 }, { 44.758978329127899087, 34.319783257840441593 }, { 44.759109744288181787, 34.319584774371861613 }, { 44.75926782299799811, 34.31950430810081798 }, { 44.759357337256332698, 34.319305824632238 }, { 44.759387810163708821, 34.319016146056469552 }, { 44.759481133342561066, 34.318686234345193498 }, { 44.75951351073673834, 34.318530666221164438 }, { 44.759524938047988485, 34.318332182752584458 }, { 44.759637306488322395, 34.317903029306989993 }, { 44.759671588341880977, 34.317436324934931235 }, { 44.759871565415501493, 34.317044722415829483 }, { 44.759902038051663453, 34.316647755478669524 }, { 44.759915369824923914, 34.316167640061422617 }, { 44.759886801735603967, 34.316046940654871378 }}, + {{ 44.759886801735603967, 34.316046940654871378 }, { 44.759500178870737841, 34.315553414192436321 }, +{ 44.759132599068138347, 34.315443443622029918 }, { 44.758765016927078761, 34.315430032576841768 }, +{ 44.758071746835689453, 34.315253006780551459 }, { 44.758037464032938146, 34.315255688989566352 }, +{ 44.757483222565575431, 34.315306650961247215 }, { 44.756708037437867631, 34.315676795808059296 }, +{ 44.756323297960172169, 34.315652655926726311 }, { 44.755963316624225001, 34.315430032576841768 }, +{ 44.755833798981250027, 34.315153765046261469 }, { 44.755789991477485046, 34.314949917159594861 }}, + {{ 44.759886801735603967, 34.316046940654871378 }, { 44.760006787615907342, 34.315175222718522718 }, +{ 44.760048687388419353, 34.315011607967392138 }, { 44.760260090322724125, 34.314772891363304552 }, +{ 44.760437211104594724, 34.314665603001913041 }, { 44.760572431981174191, 34.314383971053246114 }, +{ 44.760701939002856875, 34.314300822573159166 }, { 44.761223773178279828, 34.314088928059419459 }, +{ 44.761292334982400121, 34.314091610268434351 }, { 44.761376132632506142, 34.314011143997390718 }, +{ 44.761667518969709079, 34.313895809008897686 }, { 44.761739889204726239, 34.31379924948365101 }, +{ 44.761739889204726239, 34.313705372167419227 }, { 44.76183130410882427, 34.313568579506636524 }, +{ 44.761930336758403826, 34.313549804043390168 }, { 44.761981757490261202, 34.313442515681998657 }, +{ 44.762050318394869919, 34.313396918128404423 }, { 44.762176013175370315, 34.313391553710346216 }, +{ 44.762316943361625476, 34.313359367201911709 }, { 44.762610229403847484, 34.313332545111563832 }, +{ 44.762627369451166714, 34.313343273947708667 }, { 44.762663553978839559, 34.313313769648317475 }, +{ 44.762673076219179791, 34.313278900930868076 }, { 44.762678789562635018, 34.313233303377273842 }, +{ 44.762692120695184883, 34.31320379907788265 }, { 44.762720687397411723, 34.313182341405621401 }, +{ 44.762734018520298207, 34.313107239552635974 }, { 44.762747349640086725, 34.313091146298432932 }, +{ 44.7628063874193316, 34.313101875134577767 }, { 44.76292065391750441, 34.313123332806839016 }, +{ 44.762977787081830172, 34.313056277580983533 }, { 44.763063486722373341, 34.313107239552635974 }, +{ 44.763282496337311045, 34.313088464089389618 }}, + {{ 44.756521381971580809, 34.332137512655094724 }, { 44.756469956380023234, 34.331619846311355104 }, +{ 44.756412816780184016, 34.331308710063325407 }, { 44.756359486436011252, 34.331040489159818208 }, +{ 44.75633282124546497, 34.330965387306861203 }, { 44.756294728094793811, 34.330860781154484584 }, +{ 44.756264253556160781, 34.330694484194339111 }, { 44.756294728094793811, 34.330608653505208849 }, +{ 44.756323297960172169, 34.330533551652223423 }, { 44.756433767973362592, 34.330359208064976428 }, +{ 44.756555665673857902, 34.330109762624715586 }, { 44.756641374840555159, 34.329940783455526798 }, +{ 44.756755653531747896, 34.329755711032106547 }, { 44.757010875126020721, 34.329463350247323206 }, +{ 44.757180387352946127, 34.329117345281815687 }, { 44.757266095593031707, 34.32893495506743875 }, +{ 44.757448939413642108, 34.328564810220626669 }, { 44.757591785745901802, 34.328301953735206098 }, +{ 44.757746059388104243, 34.327797698436654628 }, { 44.757807006886359602, 34.327470468934393466 }, +{ 44.75787366813893442, 34.327239798957407402 }, { 44.757986039790637278, 34.327089595251464971 }, +{ 44.758026036427494887, 34.326995717935233188 }, { 44.758113648011466523, 34.326907205037088033 }, +{ 44.75817078592944398, 34.326783823421465058 }, { 44.758237446762365153, 34.326400267529493249 }, +{ 44.758264111073970071, 34.3263519877668557 }, { 44.758357436067782942, 34.326177644179608706 }, +{ 44.758412669156371066, 34.325909423276101506 }, { 44.758505993910240761, 34.325775312824362118 }, +{ 44.758526944344453113, 34.325598287028071809 }, { 44.758479329710219474, 34.325461494367289106 }, +{ 44.758391718680712756, 34.325370299260100637 }, { 44.758429810449001707, 34.32524423543546277 }, +{ 44.75854789477109108, 34.325085985102390396 }, { 44.758637410144764601, 34.324914323724158294 }, +{ 44.758685024648755757, 34.324734615718824671 }, { 44.758707879596705936, 34.324613916312273432 }, +{ 44.758766921503791991, 34.324568318758679197 }, { 44.758749780311177346, 34.32444225493404133 }, +{ 44.758799299298182461, 34.324206220538968637 }, { 44.75882786792522694, 34.323988961607142301 }, +{ 44.758825963350531651, 34.323667096522939346 }, { 44.758843104520543932, 34.323423015500765132 }, +{ 44.758862150259034252, 34.323181616687634232 }, { 44.758915478293424428, 34.322983133219054253 }, +{ 44.758944046863021526, 34.322875844857662742 }, { 44.759084984933011242, 34.322862433812474592 }, +{ 44.758966901708539865, 34.32266126813487972 }, { 44.758865959405987667, 34.32256202640058973 }, +{ 44.758753589465527511, 34.322331356423575244 }, { 44.75867359717138072, 34.322089957610444344 }, +{ 44.758690738386590624, 34.321875380887661322 }, { 44.758690738386590624, 34.321754681481081661 }, +{ 44.758698356702829813, 34.321642028701631943 }, { 44.758643123887310367, 34.321379172216211373 }, +{ 44.758641219306547043, 34.321231650719283834 }, { 44.758665978851873035, 34.321027802832645648 }, +{ 44.758732639113461005, 34.320837365991167189 }, { 44.75867359717138072, 34.320502089861804507 }, +{ 44.75867931091034535, 34.320392119291369681 }, { 44.758808822175438991, 34.320268737675775128 }, +{ 44.758793585571083895, 34.320099758506557919 }, { 44.758978329127899087, 34.319783257840441593 }, +{ 44.759109744288181787, 34.319584774371861613 }, { 44.75926782299799811, 34.31950430810081798 }, +{ 44.759357337256332698, 34.319305824632238 }, { 44.759387810163708821, 34.319016146056469552 }, +{ 44.759481133342561066, 34.318686234345193498 }, { 44.75951351073673834, 34.318530666221164438 }, +{ 44.759524938047988485, 34.318332182752584458 }, { 44.759637306488322395, 34.317903029306989993 }, +{ 44.759671588341880977, 34.317436324934931235 }, { 44.759871565415501493, 34.317044722415829483 }, +{ 44.759902038051663453, 34.316647755478669524 }, { 44.759915369824923914, 34.316167640061422617 }, +{ 44.759886801735603967, 34.316046940654871378 }}, }; using namespace std; @@ -135,4 +216,4 @@ UNIT_TEST(SRTM_SamplesTest) } } */ -} // namespace srtm_parser_test +} // namespace srtm_parser_test diff --git a/generator/generator_tests/tag_admixer_test.cpp b/generator/generator_tests/tag_admixer_test.cpp index e8d86d972..f11b31a1c 100644 --- a/generator/generator_tests/tag_admixer_test.cpp +++ b/generator/generator_tests/tag_admixer_test.cpp @@ -49,7 +49,8 @@ UNIT_TEST(CapitalsParserTests) { std::set capitals; CapitalsParserHelper parser(capitals); - std::istringstream stream("-21.1343401;-175.201808;1082208696;t\n-16.6934156;-179.87995;242715809;f\n19.0534159;169.919199;448768937;t"); + std::istringstream stream( + "-21.1343401;-175.201808;1082208696;t\n-16.6934156;-179.87995;242715809;f\n19.0534159;169.919199;448768937;t"); parser.ParseStream(stream); TEST(capitals.find(1082208696) != capitals.end(), ()); TEST(capitals.find(242715809) != capitals.end(), ()); @@ -68,8 +69,7 @@ UNIT_TEST(TagsReplacer_Smoke) TestReplacer(source, {{{"aerodrome:type", "international"}, {{"aerodrome", "international"}}}}); } { - std::string const source = - " aerodrome:type = international : aerodrome = international "; + std::string const source = " aerodrome:type = international : aerodrome = international "; TestReplacer(source, {{{"aerodrome:type", "international"}, {{"aerodrome", "international"}}}}); } { @@ -79,9 +79,8 @@ UNIT_TEST(TagsReplacer_Smoke) "cliff=yes : natural=cliff | u\n" "\n" "office=travel_agent : shop=travel_agency"; - TestReplacer(source, { - {{"cliff", "yes"}, {{"natural", "cliff"}}}, - {{"natural", "forest"}, {{"natural", "wood"}}}, - {{"office", "travel_agent"}, {{"shop", "travel_agency"}}}}); + TestReplacer(source, {{{"cliff", "yes"}, {{"natural", "cliff"}}}, + {{"natural", "forest"}, {{"natural", "wood"}}}, + {{"office", "travel_agent"}, {{"shop", "travel_agency"}}}}); } } diff --git a/generator/generator_tests/tesselator_test.cpp b/generator/generator_tests/tesselator_test.cpp index f09253771..09f0e0a40 100644 --- a/generator/generator_tests/tesselator_test.cpp +++ b/generator/generator_tests/tesselator_test.cpp @@ -11,19 +11,17 @@ typedef m2::PointD P; class DoDump { size_t & m_count; + public: - explicit DoDump(size_t & count) : m_count(count) - { - m_count = 0; - } - void operator() (P const & p1, P const & p2, P const & p3) + explicit DoDump(size_t & count) : m_count(count) { m_count = 0; } + void operator()(P const & p1, P const & p2, P const & p3) { ++m_count; LOG(LINFO, (p1, p2, p3)); } }; -size_t RunTest(std::list > const & l) +size_t RunTest(std::list> const & l) { tesselator::TrianglesInfo info; int const trianglesCount = tesselator::TesselateInterior(l, info); @@ -36,7 +34,7 @@ size_t RunTest(std::list > const & l) size_t RunTess(P const * arr, size_t count) { - std::list > l; + std::list> l; l.emplace_back(); l.back().assign(arr, arr + count); @@ -45,17 +43,17 @@ size_t RunTess(P const * arr, size_t count) UNIT_TEST(Tesselator_SelfISect) { - P arr[] = { P(0, 0), P(0, 4), P(4, 4), P(1, 1), P(1, 3), P(4, 0), P(0, 0) }; + P arr[] = {P(0, 0), P(0, 4), P(4, 4), P(1, 1), P(1, 3), P(4, 0), P(0, 0)}; TEST_EQUAL(6, RunTess(arr, ARRAY_SIZE(arr)), ()); } UNIT_TEST(Tesselator_Odd) { - P arr[] = { P(-100, -100), P(100, 100), P(100, -100) }; + P arr[] = {P(-100, -100), P(100, 100), P(100, -100)}; size_t const count = ARRAY_SIZE(arr); - std::list > l; + std::list> l; l.emplace_back(); l.back().assign(arr, arr + count); l.emplace_back(); @@ -63,7 +61,7 @@ UNIT_TEST(Tesselator_Odd) TEST_EQUAL(0, RunTest(l), ()); - P arr1[] = { P(-100, -100), P(100, -100), P(100, 100), P(-100, 100) }; + P arr1[] = {P(-100, -100), P(100, -100), P(100, 100), P(-100, 100)}; l.emplace_back(); l.back().assign(arr1, arr1 + ARRAY_SIZE(arr1)); diff --git a/generator/generator_tests/triangles_tree_coding_test.cpp b/generator/generator_tests/triangles_tree_coding_test.cpp index 4504bcfb9..622785012 100644 --- a/generator/generator_tests/triangles_tree_coding_test.cpp +++ b/generator/generator_tests/triangles_tree_coding_test.cpp @@ -25,9 +25,8 @@ bool FindTriangle(serial::OutPointsT const & test, P arr[]) { for (int base = 0; base < 3; ++base) { - if (IsEqual(test[i], arr[base]) - && IsEqual(test[i + 1], arr[(base + 1) % 3]) - && IsEqual(test[i + 2], arr[(base + 2) % 3])) + if (IsEqual(test[i], arr[base]) && IsEqual(test[i + 1], arr[(base + 1) % 3]) && + IsEqual(test[i + 2], arr[(base + 2) % 3])) { return true; } @@ -94,11 +93,8 @@ UNIT_TEST(TrianglesCoding_Smoke) UNIT_TEST(TrianglesCoding_Rect) { - P arrP[] = { - P(-16.874999848078005, -44.999999874271452), - P(-16.874999848078005, -39.374999869032763), - P(-11.249999842839316, -39.374999869032763), - P(-11.249999842839316, -44.999999874271452)}; + P arrP[] = {P(-16.874999848078005, -44.999999874271452), P(-16.874999848078005, -39.374999869032763), + P(-11.249999842839316, -39.374999869032763), P(-11.249999842839316, -44.999999874271452)}; int arrT[][3] = {{2, 0, 1}, {0, 2, 3}}; diff --git a/generator/generator_tests/types_helper.hpp b/generator/generator_tests/types_helper.hpp index a8fce0ea7..35980b4f8 100644 --- a/generator/generator_tests/types_helper.hpp +++ b/generator/generator_tests/types_helper.hpp @@ -36,4 +36,4 @@ inline uint32_t GetType(base::StringIL const & lst) { return classif().GetTypeByPath(lst); } -} // namespace tests +} // namespace tests diff --git a/generator/generator_tests_support/routing_helpers.cpp b/generator/generator_tests_support/routing_helpers.cpp index 1c9caea27..fa051b4db 100644 --- a/generator/generator_tests_support/routing_helpers.cpp +++ b/generator/generator_tests_support/routing_helpers.cpp @@ -57,8 +57,7 @@ void TestGeometryLoader::Load(uint32_t featureId, RoadGeometry & road) road = it->second; } -void TestGeometryLoader::AddRoad(uint32_t featureId, bool oneWay, float speed, - RoadGeometry::Points const & points) +void TestGeometryLoader::AddRoad(uint32_t featureId, bool oneWay, float speed, RoadGeometry::Points const & points) { auto const it = m_roads.find(featureId); CHECK(it == m_roads.end(), ("Already contains feature", featureId)); @@ -76,8 +75,8 @@ void TestGeometryLoader::SetPassThroughAllowed(uint32_t featureId, bool passThro std::shared_ptr CreateEstimatorForCar(std::shared_ptr trafficStash) { auto const carModel = CarModelFactory({}).GetVehicleModel(); - return EdgeEstimator::Create(VehicleType::Car, *carModel, trafficStash, - nullptr /* DataSource */, nullptr /* NumMwmIds */); + return EdgeEstimator::Create(VehicleType::Car, *carModel, trafficStash, nullptr /* DataSource */, + nullptr /* NumMwmIds */); } std::shared_ptr CreateEstimatorForCar(traffic::TrafficCache const & trafficCache) @@ -97,11 +96,9 @@ Joint MakeJoint(std::vector const & points) } std::unique_ptr BuildIndexGraph(std::unique_ptr geometryLoader, - std::shared_ptr estimator, - std::vector const & joints) + std::shared_ptr estimator, std::vector const & joints) { - auto graph = std::make_unique(std::make_shared(std::move(geometryLoader)), - estimator); + auto graph = std::make_unique(std::make_shared(std::move(geometryLoader)), estimator); graph->Import(joints); return graph; } diff --git a/generator/generator_tests_support/routing_helpers.hpp b/generator/generator_tests_support/routing_helpers.hpp index c9cd2ad84..ae25980b2 100644 --- a/generator/generator_tests_support/routing_helpers.hpp +++ b/generator/generator_tests_support/routing_helpers.hpp @@ -21,11 +21,13 @@ namespace generator /// 30, 3, /// 40, 4 /// \param outputFilePath full path to an output file where the mapping is saved. -void ReEncodeOsmIdsToFeatureIdsMapping(std::string const & mappingContent, - std::string const & outputFilePath); +void ReEncodeOsmIdsToFeatureIdsMapping(std::string const & mappingContent, std::string const & outputFilePath); } // namespace generator -namespace traffic { class TrafficCache; } +namespace traffic +{ +class TrafficCache; +} namespace routing { @@ -35,8 +37,7 @@ public: // GeometryLoader overrides: void Load(uint32_t featureId, routing::RoadGeometry & road) override; - void AddRoad(uint32_t featureId, bool oneWay, float speed, - routing::RoadGeometry::Points const & points); + void AddRoad(uint32_t featureId, bool oneWay, float speed, routing::RoadGeometry::Points const & points); void SetPassThroughAllowed(uint32_t featureId, bool passThroughAllowed); @@ -53,4 +54,3 @@ std::unique_ptr BuildIndexGraph(std::unique_ptr std::shared_ptr estimator, std::vector const & joints); } // namespace routing - diff --git a/generator/generator_tests_support/test_feature.cpp b/generator/generator_tests_support/test_feature.cpp index ba01e4a25..f3ae628e9 100644 --- a/generator/generator_tests_support/test_feature.cpp +++ b/generator/generator_tests_support/test_feature.cpp @@ -37,7 +37,7 @@ uint64_t GenUniqueId() vector MakePoly(m2::RectD const & rect) { - return { rect.LeftBottom(), rect.RightBottom(), rect.RightTop(), rect.LeftTop(), rect.LeftBottom() }; + return {rect.LeftBottom(), rect.RightBottom(), rect.RightTop(), rect.LeftTop(), rect.LeftBottom()}; } StringUtf8Multilang MakeName(string const & name, string const & lang) @@ -54,16 +54,25 @@ StringUtf8Multilang MakeName(string const & name, string const & lang) } // namespace // TestFeature ------------------------------------------------------------------------------------- -TestFeature::TestFeature() : m_id(GenUniqueId()), m_center(0, 0), m_type(Type::Unknown) { Init(); } +TestFeature::TestFeature() : m_id(GenUniqueId()), m_center(0, 0), m_type(Type::Unknown) +{ + Init(); +} TestFeature::TestFeature(StringUtf8Multilang name) - : m_id(GenUniqueId()), m_center(0, 0), m_type(Type::Unknown), m_names(std::move(name)) + : m_id(GenUniqueId()) + , m_center(0, 0) + , m_type(Type::Unknown) + , m_names(std::move(name)) { Init(); } TestFeature::TestFeature(m2::PointD const & center, StringUtf8Multilang name) - : m_id(GenUniqueId()), m_center(center), m_type(Type::Point), m_names(std::move(name)) + : m_id(GenUniqueId()) + , m_center(center) + , m_type(Type::Point) + , m_names(std::move(name)) { Init(); } @@ -75,7 +84,11 @@ TestFeature::TestFeature(m2::RectD const & boundary, StringUtf8Multilang name) } TestFeature::TestFeature(vector geometry, StringUtf8Multilang name, Type type) - : m_id(GenUniqueId()), m_center(0, 0), m_geometry(std::move(geometry)), m_type(type), m_names(std::move(name)) + : m_id(GenUniqueId()) + , m_center(0, 0) + , m_geometry(std::move(geometry)) + , m_type(type) + , m_names(std::move(name)) { ASSERT(!m_geometry.empty(), ()); Init(); @@ -145,23 +158,25 @@ void TestFeature::Serialize(FeatureBuilder & fb) const } // TestPlace ------------------------------------------------------------------------------------- -TestPlace::TestPlace(m2::PointD const & center, string const & name, string const & lang, - uint32_t type, uint8_t rank /* = 0 */) - : TestFeature(center, MakeName(name, lang)), m_type(type), m_rank(rank) -{ -} +TestPlace::TestPlace(m2::PointD const & center, string const & name, string const & lang, uint32_t type, + uint8_t rank /* = 0 */) + : TestFeature(center, MakeName(name, lang)) + , m_type(type) + , m_rank(rank) +{} -TestPlace::TestPlace(m2::PointD const & center, StringUtf8Multilang const & name, - uint32_t type, uint8_t rank) - : TestFeature(center, name), m_type(type), m_rank(rank) -{ -} +TestPlace::TestPlace(m2::PointD const & center, StringUtf8Multilang const & name, uint32_t type, uint8_t rank) + : TestFeature(center, name) + , m_type(type) + , m_rank(rank) +{} TestPlace::TestPlace(std::vector const & boundary, std::string const & name, std::string const & lang, uint32_t type, uint8_t rank) - : TestFeature(boundary, MakeName(name, lang), Type::Area), m_type(type), m_rank(rank) -{ -} + : TestFeature(boundary, MakeName(name, lang), Type::Area) + , m_type(type) + , m_rank(rank) +{} void TestPlace::Serialize(FeatureBuilder & fb) const { @@ -191,13 +206,11 @@ TestCountry::TestCountry(m2::PointD const & center, std::string const & name, st TestState::TestState(m2::PointD const & center, string const & name, string const & lang) : TestPlace(center, name, lang, classif().GetTypeByPath({"place", "state"})) -{ -} +{} TestSea::TestSea(m2::PointD const & center, std::string const & name, std::string const & lang) : TestPlace(center, name, lang, classif().GetTypeByPath({"place", "sea"})) -{ -} +{} uint32_t TestCity::GetCityType() { @@ -206,40 +219,35 @@ uint32_t TestCity::GetCityType() TestCity::TestCity(m2::PointD const & center, string const & name, string const & lang, uint8_t rank) : TestPlace(center, name, lang, GetCityType(), rank) -{ -} +{} TestCity::TestCity(m2::PointD const & center, StringUtf8Multilang const & name, uint8_t rank) : TestPlace(center, name, GetCityType(), rank) -{ -} +{} TestCity::TestCity(vector const & boundary, string const & name, string const & lang, uint8_t rank) : TestPlace(boundary, name, lang, GetCityType(), rank) -{ -} +{} TestVillage::TestVillage(m2::PointD const & center, string const & name, string const & lang, uint8_t rank) : TestPlace(center, name, lang, classif().GetTypeByPath({"place", "village"}), rank) -{ -} +{} TestSuburb::TestSuburb(m2::PointD const & center, string const & name, string const & lang) : TestPlace(center, name, lang, classif().GetTypeByPath({"place", "suburb"})) -{ -} +{} // TestStreet -------------------------------------------------------------------------------------- TestStreet::TestStreet(vector const & points, string const & name, string const & lang) : TestFeature(points, MakeName(name, lang), Type::Line) { - SetType({ "highway", "living_street" }); + SetType({"highway", "living_street"}); } TestStreet::TestStreet(vector const & points, StringUtf8Multilang const & name) : TestFeature(points, name, Type::Line) { - SetType({ "highway", "living_street" }); + SetType({"highway", "living_street"}); } void TestStreet::SetType(base::StringIL const & e) @@ -266,8 +274,7 @@ string TestStreet::ToDebugString() const // TestSquare -------------------------------------------------------------------------------------- TestSquare::TestSquare(m2::RectD const & rect, string const & name, string const & lang) : TestFeature(rect, MakeName(name, lang)) -{ -} +{} void TestSquare::Serialize(FeatureBuilder & fb) const { @@ -354,9 +361,9 @@ void TestPOI::SetTypes(std::initializer_list const & types) // TestMultilingualPOI ----------------------------------------------------------------------------- TestMultilingualPOI::TestMultilingualPOI(m2::PointD const & center, string const & defaultName, std::map const & multilingualNames) - : TestPOI(center, defaultName, "default"), m_multilingualNames(multilingualNames) -{ -} + : TestPOI(center, defaultName, "default") + , m_multilingualNames(multilingualNames) +{} void TestMultilingualPOI::Serialize(FeatureBuilder & fb) const { @@ -382,21 +389,22 @@ string TestMultilingualPOI::ToDebugString() const } // TestBuilding ------------------------------------------------------------------------------------ -TestBuilding::TestBuilding(m2::PointD const & center, string const & name, - string const & houseNumber, string const & lang) - : TestFeature(center, MakeName(name, lang)), m_houseNumber(houseNumber) -{ -} +TestBuilding::TestBuilding(m2::PointD const & center, string const & name, string const & houseNumber, + string const & lang) + : TestFeature(center, MakeName(name, lang)) + , m_houseNumber(houseNumber) +{} -TestBuilding::TestBuilding(m2::PointD const & center, string const & name, - string const & houseNumber, string_view street, string const & lang) - : TestFeature(center, MakeName(name, lang)), m_houseNumber(houseNumber) +TestBuilding::TestBuilding(m2::PointD const & center, string const & name, string const & houseNumber, + string_view street, string const & lang) + : TestFeature(center, MakeName(name, lang)) + , m_houseNumber(houseNumber) { m_addr.Set(AddressData::Type::Street, street); } -TestBuilding::TestBuilding(m2::RectD const & boundary, string const & name, - string const & houseNumber, string_view street, string const & lang) +TestBuilding::TestBuilding(m2::RectD const & boundary, string const & name, string const & houseNumber, + string_view street, string const & lang) : TestFeature(boundary, MakeName(name, lang)) , m_houseNumber(houseNumber) { @@ -422,16 +430,14 @@ void TestBuilding::Serialize(FeatureBuilder & fb) const string TestBuilding::ToDebugString() const { ostringstream os; - os << "TestBuilding [" << DebugPrint(m_names) << ", " << m_houseNumber << ", " - << DebugPrint(m_center) << "]"; + os << "TestBuilding [" << DebugPrint(m_names) << ", " << m_houseNumber << ", " << DebugPrint(m_center) << "]"; return os.str(); } // TestPark ---------------------------------------------------------------------------------------- TestPark::TestPark(vector const & boundary, string const & name, string const & lang) : TestFeature(boundary, MakeName(name, lang), Type::Area) -{ -} +{} void TestPark::Serialize(FeatureBuilder & fb) const { @@ -452,8 +458,7 @@ string TestPark::ToDebugString() const // TestRoad ---------------------------------------------------------------------------------------- TestRoad::TestRoad(vector const & points, string const & name, string const & lang) : TestFeature(points, MakeName(name, lang), Type::Line) -{ -} +{} void TestRoad::Serialize(FeatureBuilder & fb) const { @@ -471,6 +476,9 @@ string TestRoad::ToDebugString() const } // Functions --------------------------------------------------------------------------------------- -string DebugPrint(TestFeature const & feature) { return feature.ToDebugString(); } +string DebugPrint(TestFeature const & feature) +{ + return feature.ToDebugString(); +} } // namespace tests_support } // namespace generator diff --git a/generator/generator_tests_support/test_feature.hpp b/generator/generator_tests_support/test_feature.hpp index cc5642069..d5e1d6b65 100644 --- a/generator/generator_tests_support/test_feature.hpp +++ b/generator/generator_tests_support/test_feature.hpp @@ -15,8 +15,14 @@ #include class FeatureType; -namespace feature { class FeatureBuilder; } -namespace osm { class Editor; } +namespace feature +{ +class FeatureBuilder; +} +namespace osm +{ +class Editor; +} namespace generator { @@ -76,12 +82,11 @@ private: class TestPlace : public TestFeature { public: - TestPlace(m2::PointD const & center, std::string const & name, std::string const & lang, - uint32_t type, uint8_t rank = 0); - TestPlace(m2::PointD const & center, StringUtf8Multilang const & name, - uint32_t type, uint8_t rank); - TestPlace(std::vector const & boundary, std::string const & name, std::string const & lang, - uint32_t type, uint8_t rank); + TestPlace(m2::PointD const & center, std::string const & name, std::string const & lang, uint32_t type, + uint8_t rank = 0); + TestPlace(m2::PointD const & center, StringUtf8Multilang const & name, uint32_t type, uint8_t rank); + TestPlace(std::vector const & boundary, std::string const & name, std::string const & lang, uint32_t type, + uint8_t rank); // TestFeature overrides: void Serialize(feature::FeatureBuilder & fb) const override; @@ -116,6 +121,7 @@ public: class TestCity : public TestPlace { static uint32_t GetCityType(); + public: TestCity(m2::PointD const & center, std::string const & name, std::string const & lang, uint8_t rank); TestCity(m2::PointD const & center, StringUtf8Multilang const & name, uint8_t rank); @@ -167,10 +173,8 @@ class TestPOI : public TestFeature public: TestPOI(m2::PointD const & center, std::string const & name, std::string const & lang); - static std::pair AddWithEditor(osm::Editor & editor, - MwmSet::MwmId const & mwmId, - std::string const & enName, - m2::PointD const & pt); + static std::pair AddWithEditor(osm::Editor & editor, MwmSet::MwmId const & mwmId, + std::string const & enName, m2::PointD const & pt); // TestFeature overrides: void Serialize(feature::FeatureBuilder & fb) const override; @@ -217,10 +221,7 @@ public: std::string ToDebugString() const override; void SetType(uint32_t type) { m_type = type; } - void SetPlace(std::string_view place) - { - m_addr.Set(feature::AddressData::Type::Place, place); - } + void SetPlace(std::string_view place) { m_addr.Set(feature::AddressData::Type::Place, place); } private: std::string m_houseNumber; diff --git a/generator/generator_tests_support/test_generator.cpp b/generator/generator_tests_support/test_generator.cpp index 58e755249..a80470373 100644 --- a/generator/generator_tests_support/test_generator.cpp +++ b/generator/generator_tests_support/test_generator.cpp @@ -34,9 +34,7 @@ bool MakeFakeBordersFile(std::string const & intemediatePath, std::string const if (code != Platform::EError::ERR_OK && code != Platform::EError::ERR_FILE_ALREADY_EXISTS) return false; - std::vector points = { - {-180.0, -90.0}, {180.0, -90.0}, {180.0, 90.0}, {-180.0, 90.0}, {-180.0, -90.0} - }; + std::vector points = {{-180.0, -90.0}, {180.0, -90.0}, {180.0, 90.0}, {-180.0, 90.0}, {-180.0, -90.0}}; borders::DumpBorderToPolyFile(borderPath, filename, {m2::RegionD{std::move(points)}}); return true; } @@ -61,7 +59,8 @@ void TestRawGenerator::SetupTmpFolder(std::string const & tmpPath) CHECK(Platform::MkDirChecked(tmpPath), ()); } -void TestRawGenerator::BuildFB(std::string const & osmFilePath, std::string const & mwmName, bool makeWorld /* = false */) +void TestRawGenerator::BuildFB(std::string const & osmFilePath, std::string const & mwmName, + bool makeWorld /* = false */) { m_genInfo.m_nodeStorageType = feature::GenerateInfo::NodeStorageType::Index; m_genInfo.m_osmFileName = osmFilePath; @@ -69,7 +68,7 @@ void TestRawGenerator::BuildFB(std::string const & osmFilePath, std::string cons CHECK(GenerateIntermediateData(m_genInfo), ()); - //CHECK(MakeFakeBordersFile(GetTmpPath(), mwmName), ()); + // CHECK(MakeFakeBordersFile(GetTmpPath(), mwmName), ()); m_genInfo.m_tmpDir = m_genInfo.m_targetDir = GetTmpPath(); m_genInfo.m_fileName = mwmName; @@ -115,9 +114,7 @@ void TestRawGenerator::BuildRouting(std::string const & mwmName, std::string con { using namespace routing_builder; CountryParentNameGetterFn const parentGetter = [&countryName](std::string const & name) - { - return (name != countryName ? countryName : std::string()); - }; + { return (name != countryName ? countryName : std::string()); }; std::string const filePath = GetMwmPath(mwmName); std::string const osmToFeatureFilename = filePath + OSM2FEATURE_FILE_EXTENSION; @@ -159,5 +156,5 @@ bool TestRawGenerator::IsWorld(std::string const & mwmName) const return (mwmName == WORLD_FILE_NAME); } -} // namespace tests_support -} // namespace generator +} // namespace tests_support +} // namespace generator diff --git a/generator/generator_tests_support/test_generator.hpp b/generator/generator_tests_support/test_generator.hpp index b04d33408..54422232b 100644 --- a/generator/generator_tests_support/test_generator.hpp +++ b/generator/generator_tests_support/test_generator.hpp @@ -31,16 +31,15 @@ public: routing::FeatureIdToOsmId LoadFID2OsmID(std::string const & mwmName); - template void ForEachFB(std::string const & mwmName, FnT && fn) + template + void ForEachFB(std::string const & mwmName, FnT && fn) { using namespace feature; - ForEachFeatureRawFormat(m_genInfo.GetTmpFileName(mwmName), [&fn](FeatureBuilder const & fb, uint64_t) - { - fn(fb); - }); + ForEachFeatureRawFormat(m_genInfo.GetTmpFileName(mwmName), [&fn](FeatureBuilder const & fb, uint64_t) { fn(fb); }); } - template void ForEachFeature(std::string const & mwmName, FnT && fn) + template + void ForEachFeature(std::string const & mwmName, FnT && fn) { FrozenDataSource dataSource; auto const res = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(GetMwmPath(mwmName))); @@ -61,5 +60,5 @@ public: static char const * kWikidataFilename; }; -} // namespace tests_support -} // namespace generator +} // namespace tests_support +} // namespace generator diff --git a/generator/generator_tests_support/test_mwm_builder.cpp b/generator/generator_tests_support/test_mwm_builder.cpp index b6004c041..c520961ce 100644 --- a/generator/generator_tests_support/test_mwm_builder.cpp +++ b/generator/generator_tests_support/test_mwm_builder.cpp @@ -28,7 +28,6 @@ #include "defines.hpp" - namespace generator { namespace tests_support @@ -57,15 +56,12 @@ bool WriteRegionDataForTests(string const & path, vector const & languag } } // namespace -TestMwmBuilder::TestMwmBuilder(platform::LocalCountryFile & file, DataHeader::MapType type, - uint32_t version) +TestMwmBuilder::TestMwmBuilder(platform::LocalCountryFile & file, DataHeader::MapType type, uint32_t version) : m_file(file) , m_type(type) - , m_collector( - std::make_unique(m_file.GetPath(MapFileType::Map) + EXTENSION_TMP)) + , m_collector(std::make_unique(m_file.GetPath(MapFileType::Map) + EXTENSION_TMP)) , m_version(version) -{ -} +{} TestMwmBuilder::~TestMwmBuilder() { @@ -101,9 +97,7 @@ bool TestMwmBuilder::Add(FeatureBuilder & fb) if (!feature::PreprocessForWorldMap(fb)) return false; break; - case DataHeader::MapType::WorldCoasts: - CHECK(false, ("Coasts are not supported in test builder")); - break; + case DataHeader::MapType::WorldCoasts: CHECK(false, ("Coasts are not supported in test builder")); break; } auto const & isCityTownOrVillage = ftypes::IsCityTownOrVillageChecker::Instance(); @@ -127,8 +121,7 @@ bool TestMwmBuilder::Add(FeatureBuilder & fb) return true; } -void TestMwmBuilder::SetPostcodesData(string const & postcodesPath, - indexer::PostcodePointsDatasetType postcodesType, +void TestMwmBuilder::SetPostcodesData(string const & postcodesPath, indexer::PostcodePointsDatasetType postcodesType, std::shared_ptr const & countryInfoGetter) { m_postcodesPath = postcodesPath; @@ -153,8 +146,7 @@ void TestMwmBuilder::Finish() info.m_tmpDir = m_file.GetDirectory(); info.m_intermediateDir = m_file.GetDirectory(); info.m_versionDate = static_cast(base::YYMMDDToSecondsSinceEpoch(m_version)); - CHECK(GenerateFinalFeatures(info, m_file.GetCountryFile().GetName(), m_type), - ("Can't sort features.")); + CHECK(GenerateFinalFeatures(info, m_file.GetCountryFile().GetName(), m_type), ("Can't sort features.")); CHECK(base::DeleteFileX(tmpFilePath), ()); @@ -165,14 +157,13 @@ void TestMwmBuilder::Finish() CHECK(indexer::BuildIndexFromDataFile(path, path), ("Can't build geometry index.")); - CHECK(indexer::BuildSearchIndexFromDataFile(m_file.GetCountryName(), info, - true /* forceRebuild */, 1 /* threadsCount */), + CHECK(indexer::BuildSearchIndexFromDataFile(m_file.GetCountryName(), info, true /* forceRebuild */, + 1 /* threadsCount */), ("Can't build search index.")); if (!m_postcodesPath.empty() && m_postcodesCountryInfoGetter) { - CHECK(indexer::BuildPostcodePointsWithInfoGetter(m_file.GetDirectory(), m_file.GetCountryName(), - m_postcodesType, + CHECK(indexer::BuildPostcodePointsWithInfoGetter(m_file.GetDirectory(), m_file.GetCountryName(), m_postcodesType, m_postcodesPath, true /* forceRebuild */, *m_postcodesCountryInfoGetter), ("Can't build postcodes section.")); @@ -186,8 +177,7 @@ void TestMwmBuilder::Finish() CHECK(generator::BuildCitiesIdsForTesting(path), ()); } - CHECK(indexer::BuildCentersTableFromDataFile(path, true /* forceRebuild */), - ("Can't build centers table.")); + CHECK(indexer::BuildCentersTableFromDataFile(path, true /* forceRebuild */), ("Can't build centers table.")); CHECK(search::SearchRankTableBuilder::CreateIfNotExists(path), ()); diff --git a/generator/generator_tests_support/test_mwm_builder.hpp b/generator/generator_tests_support/test_mwm_builder.hpp index 7b5295006..f7a97d860 100644 --- a/generator/generator_tests_support/test_mwm_builder.hpp +++ b/generator/generator_tests_support/test_mwm_builder.hpp @@ -15,7 +15,7 @@ namespace feature { class FeaturesCollector; class FeatureBuilder; -} +} // namespace feature namespace platform { class LocalCountryFile; @@ -42,8 +42,7 @@ public: void AddSafe(TestFeature const & feature); bool Add(feature::FeatureBuilder & fb); - void SetPostcodesData(std::string const & postcodesPath, - indexer::PostcodePointsDatasetType postcodesType, + void SetPostcodesData(std::string const & postcodesPath, indexer::PostcodePointsDatasetType postcodesType, std::shared_ptr const & countryInfoGetter); void SetMwmLanguages(std::vector const & languages); diff --git a/generator/generator_tests_support/test_with_custom_mwms.cpp b/generator/generator_tests_support/test_with_custom_mwms.cpp index 3776676a0..efca588d8 100644 --- a/generator/generator_tests_support/test_with_custom_mwms.cpp +++ b/generator/generator_tests_support/test_with_custom_mwms.cpp @@ -35,10 +35,7 @@ void TestWithCustomMwms::Cleanup(LocalCountryFile const & file) void TestWithCustomMwms::DeregisterMap(std::string const & name) { auto const file = CountryFile(name); - auto it = base::FindIf(m_files, [&file](LocalCountryFile const & f) - { - return f.GetCountryFile() == file; - }); + auto it = base::FindIf(m_files, [&file](LocalCountryFile const & f) { return f.GetCountryFile() == file; }); if (it == m_files.end()) return; @@ -77,17 +74,12 @@ void TestWithCustomMwms::RegisterLocalMapsInViewport(m2::RectD const & viewport) auto const countriesInfo = storage::CountryInfoReader::CreateCountryInfoGetter(GetPlatform()); RegisterLocalMapsImpl([&](std::string const & name) - { - return countriesInfo->GetLimitRectForLeaf(name).IsIntersect(viewport); - }); + { return countriesInfo->GetLimitRectForLeaf(name).IsIntersect(viewport); }); } void TestWithCustomMwms::RegisterLocalMapsByPrefix(std::string const & prefix) { - RegisterLocalMapsImpl([&](std::string const & name) - { - return name.starts_with(prefix); - }); + RegisterLocalMapsImpl([&](std::string const & name) { return name.starts_with(prefix); }); } } // namespace tests_support diff --git a/generator/generator_tests_support/test_with_custom_mwms.hpp b/generator/generator_tests_support/test_with_custom_mwms.hpp index 869d975b0..e2731c6aa 100644 --- a/generator/generator_tests_support/test_with_custom_mwms.hpp +++ b/generator/generator_tests_support/test_with_custom_mwms.hpp @@ -75,7 +75,8 @@ public: void RegisterLocalMapsByPrefix(std::string const & prefix); protected: - template void RegisterLocalMapsImpl(FnT && check); + template + void RegisterLocalMapsImpl(FnT && check); static void Cleanup(platform::LocalCountryFile const & file); diff --git a/generator/generator_tool/generator_tool.cpp b/generator/generator_tool/generator_tool.cpp index d292aaa40..2853d8158 100644 --- a/generator/generator_tool/generator_tool.cpp +++ b/generator/generator_tool/generator_tool.cpp @@ -67,10 +67,8 @@ char const * GetDataPathHelp() // Coastlines. DEFINE_bool(make_coasts, false, "Create intermediate file with coasts data."); -DEFINE_bool(fail_on_coasts, false, - "Stop and exit with '255' code if some coastlines are not merged."); -DEFINE_bool(emit_coasts, false, - "Push coasts features from intermediate file to out files/countries."); +DEFINE_bool(fail_on_coasts, false, "Stop and exit with '255' code if some coastlines are not merged."); +DEFINE_bool(emit_coasts, false, "Push coasts features from intermediate file to out files/countries."); // Generator settings and paths. DEFINE_string(osm_file_name, "", "Input osm area file."); @@ -83,16 +81,13 @@ DEFINE_string(cache_path, "", "If 'cache_path' is empty, caches are stored to 'intermediate_data_path'."); DEFINE_string(output, "", "File name for process (without 'mwm' ext)."); DEFINE_bool(preload_cache, false, "Preload all ways and relations cache."); -DEFINE_string(node_storage, "map", - "Type of storage for intermediate points representation. Available: raw, map, mem."); -DEFINE_uint64(planet_version, base::SecondsSinceEpoch(), - "Version as seconds since epoch, by default - now."); +DEFINE_string(node_storage, "map", "Type of storage for intermediate points representation. Available: raw, map, mem."); +DEFINE_uint64(planet_version, base::SecondsSinceEpoch(), "Version as seconds since epoch, by default - now."); // Preprocessing and feature generator. DEFINE_bool(preprocess, false, "1st pass - create nodes/ways/relations data."); DEFINE_bool(generate_features, false, "2nd pass - generate intermediate features."); -DEFINE_bool(generate_geometry, false, - "3rd pass - split and simplify geometry and triangles for features."); +DEFINE_bool(generate_geometry, false, "3rd pass - split and simplify geometry and triangles for features."); DEFINE_bool(generate_index, false, "4rd pass - generate index."); DEFINE_bool(generate_search_index, false, "5th pass - generate search index."); DEFINE_bool(generate_cities_boundaries, false, "Generate the cities boundaries section"); @@ -105,9 +100,8 @@ DEFINE_bool(have_borders_for_whole_world, false, "If it is set to true, the optimization of checking that the " "fb belongs to the country border will be applied."); -DEFINE_string( - nodes_list_path, "", - "Path to file containing list of node ids we need to add to locality index. May be empty."); +DEFINE_string(nodes_list_path, "", + "Path to file containing list of node ids we need to add to locality index. May be empty."); DEFINE_bool(generate_isolines_info, false, "Generate the isolines info section"); DEFINE_string(isolines_path, "", "Path to isolines directory. If set, adds isolines linear features."); @@ -115,8 +109,7 @@ DEFINE_string(addresses_path, "", "Path to addresses directory. If set, adds add // Routing. DEFINE_bool(make_routing_index, false, "Make sections with the routing information."); -DEFINE_bool(make_cross_mwm, false, - "Make section for cross mwm routing (for dynamic indexed routing)."); +DEFINE_bool(make_cross_mwm, false, "Make section for cross mwm routing (for dynamic indexed routing)."); DEFINE_bool(make_transit_cross_mwm, false, "Make section for cross mwm transit routing."); DEFINE_bool(make_transit_cross_mwm_experimental, false, "Experimental parameter. If set the new version of transit cross-mwm section will be " @@ -133,9 +126,8 @@ DEFINE_string(transit_path_experimental, "", "Experimental parameter. If set the new version of transit section will be " "generated. Path to directory with json generated from GTFS."); DEFINE_bool(generate_cameras, false, "Generate section with speed cameras info."); -DEFINE_bool( - make_city_roads, false, - "Calculates which roads lie inside cities and makes a section with ids of these roads."); +DEFINE_bool(make_city_roads, false, + "Calculates which roads lie inside cities and makes a section with ids of these roads."); DEFINE_bool(generate_maxspeed, false, "Generate section with maxspeed of road features."); // Sponsored-related. @@ -159,9 +151,11 @@ DEFINE_string(us_postcodes_dataset, "", "Path to dataset with US postcodes."); // Printing stuff. DEFINE_bool(stats_general, false, "Print file and feature stats."); DEFINE_bool(stats_geometry, false, "Print outer geometry stats."); -DEFINE_uint64(stats_geom_min_diff, 5, "Consider feature's geometry scale " +DEFINE_uint64(stats_geom_min_diff, 5, + "Consider feature's geometry scale " "similar to a more detailed one if it has speed group)."); +DEFINE_bool(generate_traffic_keys, false, "Generate keys for the traffic map (road segment -> speed group)."); DEFINE_bool(dump_mwm_tmp, false, "Prints feature builder objects from .mwm.tmp"); // Common. -DEFINE_uint64(threads_count, 0, "Desired count of threads. If count equals zero, count of " - "threads is set automatically."); +DEFINE_uint64(threads_count, 0, + "Desired count of threads. If count equals zero, count of " + "threads is set automatically."); DEFINE_bool(verbose, false, "Provide more detailed output."); MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) @@ -197,13 +189,11 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) Platform & pl = GetPlatform(); - gflags::SetUsageMessage( - "Takes OSM XML data from stdin and creates data and index files in several passes."); + gflags::SetUsageMessage("Takes OSM XML data from stdin and creates data and index files in several passes."); gflags::SetVersionString(pl.Version()); gflags::ParseCommandLineFlags(&argc, &argv, true); - unsigned threadsCount = FLAGS_threads_count != 0 ? static_cast(FLAGS_threads_count) - : pl.CpuCores(); + unsigned threadsCount = FLAGS_threads_count != 0 ? static_cast(FLAGS_threads_count) : pl.CpuCores(); if (!FLAGS_user_resource_path.empty()) { @@ -218,11 +208,9 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) feature::GenerateInfo genInfo; genInfo.m_verbose = FLAGS_verbose; - genInfo.m_intermediateDir = FLAGS_intermediate_data_path.empty() - ? path - : base::AddSlashIfNeeded(FLAGS_intermediate_data_path); - genInfo.m_cacheDir = FLAGS_cache_path.empty() ? genInfo.m_intermediateDir - : base::AddSlashIfNeeded(FLAGS_cache_path); + genInfo.m_intermediateDir = + FLAGS_intermediate_data_path.empty() ? path : base::AddSlashIfNeeded(FLAGS_intermediate_data_path); + genInfo.m_cacheDir = FLAGS_cache_path.empty() ? genInfo.m_intermediateDir : base::AddSlashIfNeeded(FLAGS_cache_path); genInfo.m_targetDir = genInfo.m_tmpDir = path; /// @todo Probably, it's better to add separate option for .mwm.tmp files. @@ -289,10 +277,8 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) genInfo.m_bucketNames.push_back(FLAGS_output); if (FLAGS_dump_mwm_tmp) - { for (auto const & fb : feature::ReadAllDatRawFormat(genInfo.GetTmpFileName(FLAGS_output))) std::cout << DebugPrint(fb) << std::endl; - } // Load mwm tree only if we need it std::unique_ptr countryParentGetter; @@ -369,11 +355,8 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) LOG(LINFO, ("Generating search index for", dataFile)); /// @todo Make threads count according to environment (single mwm build or planet build). - if (!indexer::BuildSearchIndexFromDataFile(country, genInfo, true /* forceRebuild */, - threadsCount)) - { + if (!indexer::BuildSearchIndexFromDataFile(country, genInfo, true /* forceRebuild */, threadsCount)) LOG(LCRITICAL, ("Error generating search index.")); - } if (!FLAGS_uk_postcodes_dataset.empty() || !FLAGS_us_postcodes_dataset.empty()) { @@ -427,8 +410,8 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) if (!FLAGS_transit_path_experimental.empty()) { - transitEdgeFeatureIds = transit::experimental::BuildTransit( - path, country, osmToFeatureFilename, FLAGS_transit_path_experimental); + transitEdgeFeatureIds = + transit::experimental::BuildTransit(path, country, osmToFeatureFilename, FLAGS_transit_path_experimental); } else if (!FLAGS_transit_path.empty()) { @@ -437,17 +420,17 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) if (FLAGS_generate_cameras) { -// if (routing::AreSpeedCamerasProhibited(platform::CountryFile(country))) -// { -// LOG(LINFO, -// ("Cameras info is prohibited for", country, "and speedcams section is not generated.")); -// } -// else -// { - string const camerasFilename = genInfo.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME); + // if (routing::AreSpeedCamerasProhibited(platform::CountryFile(country))) + // { + // LOG(LINFO, + // ("Cameras info is prohibited for", country, "and speedcams section is not generated.")); + // } + // else + // { + string const camerasFilename = genInfo.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME); - BuildCamerasInfo(dataFile, camerasFilename, osmToFeatureFilename); -// } + BuildCamerasInfo(dataFile, camerasFilename, osmToFeatureFilename); + // } } if (country == WORLD_FILE_NAME && !FLAGS_world_roads_path.empty()) @@ -467,9 +450,8 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) if (!countryParentGetter) { // All the mwms should use proper VehicleModels. - LOG(LCRITICAL, - ("Countries file is needed. Please set countries file name (countries.txt). " - "File must be located in data directory.")); + LOG(LCRITICAL, ("Countries file is needed. Please set countries file name (countries.txt). " + "File must be located in data directory.")); return EXIT_FAILURE; } @@ -511,31 +493,28 @@ MAIN_WITH_ERROR_HANDLING([](int argc, char ** argv) if (!countryParentGetter) { // All the mwms should use proper VehicleModels. - LOG(LCRITICAL, - ("Countries file is needed. Please set countries file name (countries.txt). " - "File must be located in data directory.")); + LOG(LCRITICAL, ("Countries file is needed. Please set countries file name (countries.txt). " + "File must be located in data directory.")); return EXIT_FAILURE; } if (FLAGS_make_cross_mwm) { - BuildRoutingCrossMwmSection(path, dataFile, country, genInfo.m_intermediateDir, - *countryParentGetter, osmToFeatureFilename); + BuildRoutingCrossMwmSection(path, dataFile, country, genInfo.m_intermediateDir, *countryParentGetter, + osmToFeatureFilename); } if (FLAGS_make_transit_cross_mwm_experimental) { if (!transitEdgeFeatureIds.empty()) { - BuildTransitCrossMwmSection(path, dataFile, country, *countryParentGetter, - transitEdgeFeatureIds, + BuildTransitCrossMwmSection(path, dataFile, country, *countryParentGetter, transitEdgeFeatureIds, true /* experimentalTransit */); } } else if (FLAGS_make_transit_cross_mwm) { - BuildTransitCrossMwmSection(path, dataFile, country, *countryParentGetter, - transitEdgeFeatureIds, + BuildTransitCrossMwmSection(path, dataFile, country, *countryParentGetter, transitEdgeFeatureIds, false /* experimentalTransit */); } } diff --git a/generator/geometry_holder.hpp b/generator/geometry_holder.hpp index 2f51d6a4d..c409f1af1 100644 --- a/generator/geometry_holder.hpp +++ b/generator/geometry_holder.hpp @@ -37,24 +37,21 @@ public: using Points = std::vector; using Polygons = std::list; - GeometryHolder(FileGetter geoFileGetter, FileGetter trgFileGetter, FeatureBuilder & fb, - DataHeader const & header) + GeometryHolder(FileGetter geoFileGetter, FileGetter trgFileGetter, FeatureBuilder & fb, DataHeader const & header) : m_geoFileGetter(geoFileGetter) , m_trgFileGetter(trgFileGetter) , m_fb(fb) , m_ptsInner(true) , m_trgInner(true) , m_header(header) - { - } + {} GeometryHolder(FeatureBuilder & fb, DataHeader const & header) : m_fb(fb) , m_ptsInner(true) , m_trgInner(true) , m_header(header) - { - } + {} FeatureBuilder::SupportingData & GetBuffer() { return m_buffer; } @@ -173,10 +170,7 @@ private: class StripEmitter { public: - StripEmitter(Points const & src, Points & dest) : m_src(src), m_dest(dest) - { - m_dest.reserve(m_src.size()); - } + StripEmitter(Points const & src, Points & dest) : m_src(src), m_dest(dest) { m_dest.reserve(m_src.size()); } void operator()(size_t i) { m_dest.push_back(m_src[i]); } private: diff --git a/generator/hierarchy.cpp b/generator/hierarchy.cpp index f7068c1ef..30e58acf0 100644 --- a/generator/hierarchy.cpp +++ b/generator/hierarchy.cpp @@ -17,9 +17,9 @@ #include #include -#include "std/boost_geometry.hpp" #include #include +#include "std/boost_geometry.hpp" BOOST_GEOMETRY_REGISTER_POINT_2D(m2::PointD, double, boost::geometry::cs::cartesian, x, y) BOOST_GEOMETRY_REGISTER_RING(std::vector) @@ -32,8 +32,7 @@ using namespace feature; namespace { -double CalculateOverlapPercentage(std::vector const & lhs, - std::vector const & rhs) +double CalculateOverlapPercentage(std::vector const & lhs, std::vector const & rhs) { if (!boost::geometry::intersects(lhs, rhs)) return 0.0; @@ -49,7 +48,10 @@ double CalculateOverlapPercentage(std::vector const & lhs, } } // namespace -bool FilterFeatureDefault(feature::FeatureBuilder const &) { return true; } +bool FilterFeatureDefault(feature::FeatureBuilder const &) +{ + return true; +} HierarchyPlace::HierarchyPlace(FeatureBuilder const & fb) : m_id(MakeCompositeId(fb)) @@ -78,8 +80,7 @@ bool HierarchyPlace::Contains(HierarchyPlace const & smaller) const if (smaller.IsPoint()) return Contains(smaller.GetCenter()); - return smaller.GetArea() <= GetArea() && - CalculateOverlapPercentage(m_polygon, smaller.m_polygon) > 80.0; + return smaller.GetArea() <= GetArea() && CalculateOverlapPercentage(m_polygon, smaller.m_polygon) > 80.0; } bool HierarchyPlace::Contains(m2::PointD const & point) const @@ -87,10 +88,7 @@ bool HierarchyPlace::Contains(m2::PointD const & point) const return boost::geometry::covered_by(point, m_polygon); } -HierarchyLinker::HierarchyLinker(Node::Ptrs && nodes) - : m_nodes(std::move(nodes)), m_tree(MakeTree4d(m_nodes)) -{ -} +HierarchyLinker::HierarchyLinker(Node::Ptrs && nodes) : m_nodes(std::move(nodes)), m_tree(MakeTree4d(m_nodes)) {} // static HierarchyLinker::Tree4d HierarchyLinker::MakeTree4d(Node::Ptrs const & nodes) @@ -106,7 +104,8 @@ HierarchyLinker::Node::Ptr HierarchyLinker::FindPlaceParent(HierarchyPlace const Node::Ptr parent = nullptr; auto minArea = std::numeric_limits::max(); auto const point = place.GetCenter(); - m_tree.ForEachInRect({point, point}, [&](auto const & candidateNode) { + m_tree.ForEachInRect({point, point}, [&](auto const & candidateNode) + { // https://wiki.openstreetmap.org/wiki/Simple_3D_buildings // An object with tag 'building:part' is a part of a relation with outline 'building' or // is contained in a object with tag 'building'. This case is second. We suppose a building part is @@ -160,8 +159,7 @@ HierarchyLinker::Node::Ptrs HierarchyLinker::Link() return m_nodes; } -HierarchyEntryEnricher::HierarchyEntryEnricher(std::string const & osm2FtIdsPath, - std::string const & countryFullPath) +HierarchyEntryEnricher::HierarchyEntryEnricher(std::string const & osm2FtIdsPath, std::string const & countryFullPath) : m_featureGetter(countryFullPath) { CHECK(m_osm2FtIds.ReadFromFile(osm2FtIdsPath), (osm2FtIdsPath)); @@ -185,14 +183,11 @@ std::optional HierarchyEntryEnricher::GetFeatureCenter(CompositeId c if (!ftPtr) continue; - CHECK(m.emplace(base::Underlying(ftPtr->GetGeomType()), feature::GetCenter(*ftPtr)).second, - (id, optIds)); + CHECK(m.emplace(base::Underlying(ftPtr->GetGeomType()), feature::GetCenter(*ftPtr)).second, (id, optIds)); } - for (auto type : { - base::Underlying(feature::GeomType::Point), - base::Underlying(feature::GeomType::Area), - base::Underlying(feature::GeomType::Line)}) + for (auto type : {base::Underlying(feature::GeomType::Point), base::Underlying(feature::GeomType::Area), + base::Underlying(feature::GeomType::Line)}) { if (m.count(type) != 0) return m[type]; @@ -201,25 +196,24 @@ std::optional HierarchyEntryEnricher::GetFeatureCenter(CompositeId c return {}; } -HierarchyLinesBuilder::HierarchyLinesBuilder(HierarchyLinker::Node::Ptrs && trees) - : m_trees(std::move(trees)) -{ -} +HierarchyLinesBuilder::HierarchyLinesBuilder(HierarchyLinker::Node::Ptrs && trees) : m_trees(std::move(trees)) {} void HierarchyLinesBuilder::SetGetMainTypeFunction(GetMainTypeFn const & getMainType) { m_getMainType = getMainType; } -void HierarchyLinesBuilder::SetGetNameFunction(GetNameFn const & getName) { m_getName = getName; } +void HierarchyLinesBuilder::SetGetNameFunction(GetNameFn const & getName) +{ + m_getName = getName; +} void HierarchyLinesBuilder::SetCountry(storage::CountryId const & country) { m_countryName = country; } -void HierarchyLinesBuilder::SetHierarchyEntryEnricher( - std::unique_ptr && enricher) +void HierarchyLinesBuilder::SetHierarchyEntryEnricher(std::unique_ptr && enricher) { m_enricher = std::move(enricher); } @@ -231,11 +225,7 @@ std::vector HierarchyLinesBuilder::GetHierarchyLines() std::vector lines; for (auto const & tree : m_trees) - { - tree_node::PreOrderVisit(tree, [&](auto const & node) { - lines.emplace_back(Transform(node)); - }); - } + tree_node::PreOrderVisit(tree, [&](auto const & node) { lines.emplace_back(Transform(node)); }); return lines; } @@ -274,18 +264,14 @@ HierarchyLinker::Node::Ptrs BuildHierarchy(std::vector base::EraseIf(fbs, [&](auto const & fb) { return !filter->IsAccepted(fb); }); HierarchyLinker::Node::Ptrs places; places.reserve(fbs.size()); - base::Transform(fbs, std::back_inserter(places), [](auto const & fb) { - return tree_node::MakeTreeNode(HierarchyPlace(fb)); - }); + base::Transform(fbs, std::back_inserter(places), + [](auto const & fb) { return tree_node::MakeTreeNode(HierarchyPlace(fb)); }); auto nodes = HierarchyLinker(std::move(places)).Link(); // We leave only the trees. - base::EraseIf(nodes, [](auto const & node) { - return node->HasParent(); - }); + base::EraseIf(nodes, [](auto const & node) { return node->HasParent(); }); return nodes; } - void AddChildrenTo(HierarchyLinker::Node::Ptrs & trees, std::function(CompositeId const &)> const & fn) { @@ -293,7 +279,8 @@ void AddChildrenTo(HierarchyLinker::Node::Ptrs & trees, { CHECK(!tree->HasParent(), ()); - tree_node::PostOrderVisit(tree, [&](auto const & n) { + tree_node::PostOrderVisit(tree, [&](auto const & n) + { auto const id = n->GetData().GetCompositeId(); auto const & places = fn(id); for (auto place : places) @@ -309,16 +296,15 @@ void FlattenBuildingParts(HierarchyLinker::Node::Ptrs & trees) { for (auto & tree : trees) { - CHECK(!tree->HasParent(), ()); - std::vector< - std::pair> + std::vector> buildingPartsTrees; static auto const & buildingPartChecker = ftypes::IsBuildingPartChecker::Instance(); std::function visit; - visit = [&](auto const & n) { + visit = [&](auto const & n) + { if (buildingPartChecker(n->GetData().GetTypes())) { CHECK(n->HasParent(), ()); @@ -337,7 +323,8 @@ void FlattenBuildingParts(HierarchyLinker::Node::Ptrs & trees) for (auto const & buildingAndParts : buildingPartsTrees) { Unlink(buildingAndParts.second, buildingAndParts.first); - tree_node::PostOrderVisit(buildingAndParts.second, [&](auto const & buildingPartNode) { + tree_node::PostOrderVisit(buildingAndParts.second, [&](auto const & buildingPartNode) + { CHECK(buildingPartChecker(buildingPartNode->GetData().GetTypes()), ()); buildingPartNode->RemoveChildren(); tree_node::Link(buildingPartNode, buildingAndParts.first); diff --git a/generator/hierarchy_entry.cpp b/generator/hierarchy_entry.cpp index 42c243d6d..bdf9549a0 100644 --- a/generator/hierarchy_entry.cpp +++ b/generator/hierarchy_entry.cpp @@ -6,8 +6,8 @@ #include "coding/string_utf8_multilang.hpp" #include "base/assert.hpp" -#include "base/string_utils.hpp" #include "base/stl_helpers.hpp" +#include "base/string_utils.hpp" #include #include @@ -23,7 +23,7 @@ namespace std::string GetRussianName(StringUtf8Multilang const & str) { feature::NameParamsOut out; - feature::GetReadableName({ str, {} /* regionData */, "ru", false /* allowTranslit */ }, out); + feature::GetReadableName({str, {} /* regionData */, "ru", false /* allowTranslit */}, out); std::string result(out.primary); for (auto const & ch : {';', '\n', '\t'}) @@ -37,8 +37,8 @@ namespace generator bool operator==(HierarchyEntry const & lhs, HierarchyEntry const & rhs) { return AlmostEqualAbs(lhs.m_center, rhs.m_center, 1e-7) && - (std::tie(lhs.m_id, lhs.m_parentId, lhs.m_depth, lhs.m_name, lhs.m_country, lhs.m_type) == - std::tie(rhs.m_id, rhs.m_parentId, rhs.m_depth, rhs.m_name, rhs.m_country, rhs.m_type)); + (std::tie(lhs.m_id, lhs.m_parentId, lhs.m_depth, lhs.m_name, lhs.m_country, lhs.m_type) == + std::tie(rhs.m_id, rhs.m_parentId, rhs.m_depth, rhs.m_name, rhs.m_country, rhs.m_type)); } std::string DebugPrint(HierarchyEntry const & entry) @@ -83,7 +83,10 @@ uint32_t GetMainType(FeatureParams::Types const & types) return it != std::cend(types) ? *it : ftype::GetEmptyValue(); } -std::string GetName(StringUtf8Multilang const & str) { return GetRussianName(str); } +std::string GetName(StringUtf8Multilang const & str) +{ + return GetRussianName(str); +} std::string HierarchyEntryToCsvString(HierarchyEntry const & entry, char delim) { @@ -138,8 +141,7 @@ HierarchyEntry HierarchyEntryFromCsvRow(coding::CSVReader::Row const & row) tree_node::types::Ptrs LoadHierachy(std::string const & filename) { std::unordered_map> nodes; - for (auto const & row : coding::CSVRunner( - coding::CSVReader(filename, false /* hasHeader */, kCsvDelimiter))) + for (auto const & row : coding::CSVRunner(coding::CSVReader(filename, false /* hasHeader */, kCsvDelimiter))) { auto entry = HierarchyEntryFromCsvRow(row); auto const id = entry.m_id; diff --git a/generator/holes.cpp b/generator/holes.cpp index 07e378bbd..8fa602e41 100644 --- a/generator/holes.cpp +++ b/generator/holes.cpp @@ -9,30 +9,25 @@ using namespace feature; namespace generator { -HolesAccumulator::HolesAccumulator( - std::shared_ptr const & cache) +HolesAccumulator::HolesAccumulator(std::shared_ptr const & cache) : m_merger(cache) -{ -} +{} FeatureBuilder::Geometry & HolesAccumulator::GetHoles() { ASSERT(m_holes.empty(), ("It is allowed to call only once.")); - m_merger.ForEachArea(false, [this](FeatureBuilder::PointSeq const & v, - std::vector const & /* way osm ids */) - { - m_holes.push_back(std::move(v)); - }); + m_merger.ForEachArea(false, + [this](FeatureBuilder::PointSeq const & v, std::vector const & /* way osm ids */) + { m_holes.push_back(std::move(v)); }); return m_holes; } -HolesProcessor::HolesProcessor( - uint64_t id, std::shared_ptr const & cache) - : m_id(id), m_holes(cache) -{ -} +HolesProcessor::HolesProcessor(uint64_t id, std::shared_ptr const & cache) + : m_id(id) + , m_holes(cache) +{} -base::ControlFlow HolesProcessor::operator() (uint64_t /* id */, RelationElement const & e) +base::ControlFlow HolesProcessor::operator()(uint64_t /* id */, RelationElement const & e) { auto const type = e.GetType(); if (!(type == "multipolygon" || type == "boundary")) @@ -47,16 +42,16 @@ base::ControlFlow HolesProcessor::operator() (uint64_t /* id */, RelationElement return base::ControlFlow::Continue; } -void HolesProcessor::operator() (uint64_t id, std::string const & role) +void HolesProcessor::operator()(uint64_t id, std::string const & role) { if (id != m_id && role == "inner") m_holes(id); } HolesRelation::HolesRelation(std::shared_ptr const & cache) - : m_holes(cache), m_outer(cache) -{ -} + : m_holes(cache) + , m_outer(cache) +{} void HolesRelation::Build(OsmElement const * p) { diff --git a/generator/holes.hpp b/generator/holes.hpp index ade4fef06..686efc22a 100644 --- a/generator/holes.hpp +++ b/generator/holes.hpp @@ -21,7 +21,7 @@ class HolesAccumulator public: explicit HolesAccumulator(std::shared_ptr const & cache); - void operator() (uint64_t id) { m_merger.AddWay(id); } + void operator()(uint64_t id) { m_merger.AddWay(id); } feature::FeatureBuilder::Geometry & GetHoles(); private: @@ -33,17 +33,16 @@ private: class HolesProcessor { public: - explicit HolesProcessor(uint64_t id, - std::shared_ptr const & cache); + explicit HolesProcessor(uint64_t id, std::shared_ptr const & cache); /// 1. relations process function - base::ControlFlow operator() (uint64_t /* id */, RelationElement const & e); + base::ControlFlow operator()(uint64_t /* id */, RelationElement const & e); /// 2. "ways in relation" process function - void operator() (uint64_t id, std::string const & role); + void operator()(uint64_t id, std::string const & role); feature::FeatureBuilder::Geometry & GetHoles() { return m_holes.GetHoles(); } private: - uint64_t m_id; ///< id of way to find it's holes + uint64_t m_id; ///< id of way to find it's holes HolesAccumulator m_holes; }; diff --git a/generator/intermediate_data.cpp b/generator/intermediate_data.cpp index 8e3032117..5957270f8 100644 --- a/generator/intermediate_data.cpp +++ b/generator/intermediate_data.cpp @@ -2,8 +2,8 @@ #include "base/checked_cast.hpp" -#include #include +#include namespace generator::cache { @@ -62,9 +62,7 @@ protected: class RawFilePointStorageMmapReader : public PointStorageReaderInterface { public: - explicit RawFilePointStorageMmapReader(string const & name) - : m_mmapReader(name, MmapReader::Advice::Random) - {} + explicit RawFilePointStorageMmapReader(string const & name) : m_mmapReader(name, MmapReader::Advice::Random) {} // PointStorageReaderInterface overrides: bool GetPoint(uint64_t id, double & lat, double & lon) const override @@ -85,9 +83,7 @@ private: class RawFilePointStorageWriter : public PointStorageWriterBase { public: - explicit RawFilePointStorageWriter(string const & name) - : m_fileWriter(name) - {} + explicit RawFilePointStorageWriter(string const & name) : m_fileWriter(name) {} // PointStorageWriterInterface overrides: void AddPoint(uint64_t id, double lat, double lon) override @@ -108,8 +104,7 @@ private: class RawMemPointStorageReader : public PointStorageReaderInterface { public: - explicit RawMemPointStorageReader(string const & name) - : m_fileReader(name) + explicit RawMemPointStorageReader(string const & name) : m_fileReader(name) { uint64_t const fileSize = m_fileReader.Size(); CHECK_EQUAL(fileSize % sizeof(LatLon), 0, ("Node's coordinates file is broken")); @@ -141,16 +136,9 @@ class RawMemPointStorageWriter : public PointStorageWriterBase static constexpr size_t kBufferSize = 1000000000; public: - explicit RawMemPointStorageWriter(string const & name) - : m_fileWriter(name) - { - m_buffer.reserve(kBufferSize); - } + explicit RawMemPointStorageWriter(string const & name) : m_fileWriter(name) { m_buffer.reserve(kBufferSize); } - ~RawMemPointStorageWriter() noexcept(false) override - { - Flush(); - } + ~RawMemPointStorageWriter() noexcept(false) override { Flush(); } // PointStorageWriterInterface overrides: void AddPoint(uint64_t id, double lat, double lon) override @@ -173,11 +161,8 @@ private: // Sort, according to the seek pos in file. /// @todo Try parallel sort when clang will be able. - //std::sort(std::execution::par, buffer.begin(), buffer.end(), [](LatLonPos const & l, LatLonPos const & r) - std::sort(buffer.begin(), buffer.end(), [](LatLonPos const & l, LatLonPos const & r) - { - return l.m_pos < r.m_pos; - }); + // std::sort(std::execution::par, buffer.begin(), buffer.end(), [](LatLonPos const & l, LatLonPos const & r) + std::sort(buffer.begin(), buffer.end(), [](LatLonPos const & l, LatLonPos const & r) { return l.m_pos < r.m_pos; }); size_t constexpr structSize = sizeof(LatLon); for (auto const & llp : buffer) @@ -219,10 +204,7 @@ private: uint64_t m_pos = 0; public: - explicit CachedPosWriter(std::string const & fPath) : m_writer(fPath) - { - CHECK_EQUAL(m_pos, m_writer.Pos(), ()); - } + explicit CachedPosWriter(std::string const & fPath) : m_writer(fPath) { CHECK_EQUAL(m_pos, m_writer.Pos(), ()); } void Write(uint64_t pos, void const * p, size_t size) { @@ -245,8 +227,7 @@ private: class MapFilePointStorageReader : public PointStorageReaderInterface { public: - explicit MapFilePointStorageReader(string const & name) - : m_fileReader(name + kShortExtension) + explicit MapFilePointStorageReader(string const & name) : m_fileReader(name + kShortExtension) { LOG(LINFO, ("Nodes reading is started")); @@ -273,10 +254,7 @@ public: return false; bool ret = FromLatLon(i->second, lat, lon); if (!ret) - { - LOG(LERROR, ("Inconsistent MapFilePointStorageReader. Node with id =", id, - "must exist but was not found")); - } + LOG(LERROR, ("Inconsistent MapFilePointStorageReader. Node with id =", id, "must exist but was not found")); return ret; } @@ -288,10 +266,7 @@ private: class MapFilePointStorageWriter : public PointStorageWriterBase { public: - explicit MapFilePointStorageWriter(string const & name) - : m_fileWriter(name + kShortExtension) - { - } + explicit MapFilePointStorageWriter(string const & name) : m_fileWriter(name + kShortExtension) {} // PointStorageWriterInterface overrides: void AddPoint(uint64_t id, double lat, double lon) override @@ -351,10 +326,7 @@ bool IndexFileReader::GetValueByKey(Key key, Value & value) const } // IndexFileWriter --------------------------------------------------------------------------------- -IndexFileWriter::IndexFileWriter(string const & name) : - m_fileWriter(name) -{ -} +IndexFileWriter::IndexFileWriter(string const & name) : m_fileWriter(name) {} void IndexFileWriter::WriteAll() { @@ -390,15 +362,18 @@ OSMElementCacheReader::OSMElementCacheReader(IntermediateDataObjectsCache::Alloc // OSMElementCacheWriter --------------------------------------------------------------------------- OSMElementCacheWriter::OSMElementCacheWriter(string const & name) - : m_fileWriter(name), m_offsets(name + OFFSET_EXT), m_name(name) + : m_fileWriter(name) + , m_offsets(name + OFFSET_EXT) + , m_name(name) +{} + +void OSMElementCacheWriter::SaveOffsets() { + m_offsets.WriteAll(); } -void OSMElementCacheWriter::SaveOffsets() { m_offsets.WriteAll(); } - // IntermediateDataObjectsCache -------------------------------------------------------------------- -IntermediateDataObjectsCache::AllocatedObjects & -IntermediateDataObjectsCache::GetOrCreatePointStorageReader( +IntermediateDataObjectsCache::AllocatedObjects & IntermediateDataObjectsCache::GetOrCreatePointStorageReader( feature::GenerateInfo::NodeStorageType type, string const & name) { auto const strType = std::to_string(static_cast(type)); @@ -418,14 +393,13 @@ void IntermediateDataObjectsCache::Clear() std::unordered_map().swap(m_objects); } -IntermediateDataObjectsCache::AllocatedObjects::AllocatedObjects( - feature::GenerateInfo::NodeStorageType type, string const & name) +IntermediateDataObjectsCache::AllocatedObjects::AllocatedObjects(feature::GenerateInfo::NodeStorageType type, + string const & name) { m_storageReader = CreatePointStorageReader(type, name); } -IndexFileReader const & IntermediateDataObjectsCache::AllocatedObjects::GetOrCreateIndexReader( - std::string const & name) +IndexFileReader const & IntermediateDataObjectsCache::AllocatedObjects::GetOrCreateIndexReader(std::string const & name) { static std::mutex m; std::lock_guard lock(m); @@ -434,20 +408,18 @@ IndexFileReader const & IntermediateDataObjectsCache::AllocatedObjects::GetOrCre } // IntermediateDataReader -------------------------------------------------------------------------- -IntermediateDataReader::IntermediateDataReader( - IntermediateDataObjectsCache::AllocatedObjects & objs, feature::GenerateInfo const & info) +IntermediateDataReader::IntermediateDataReader(IntermediateDataObjectsCache::AllocatedObjects & objs, + feature::GenerateInfo const & info) : m_nodes(objs.GetPointStorageReader()) , m_ways(objs, info.GetCacheFileName(WAYS_FILE), info.m_preloadCache) , m_relations(objs, info.GetCacheFileName(RELATIONS_FILE), info.m_preloadCache) , m_nodeToRelations(objs.GetOrCreateIndexReader(info.GetCacheFileName(NODES_FILE, ID2REL_EXT))) , m_wayToRelations(objs.GetOrCreateIndexReader(info.GetCacheFileName(WAYS_FILE, ID2REL_EXT))) - , m_relationToRelations( - objs.GetOrCreateIndexReader(info.GetCacheFileName(RELATIONS_FILE, ID2REL_EXT))) + , m_relationToRelations(objs.GetOrCreateIndexReader(info.GetCacheFileName(RELATIONS_FILE, ID2REL_EXT))) {} // IntermediateDataWriter -------------------------------------------------------------------------- -IntermediateDataWriter::IntermediateDataWriter(PointStorageWriterInterface & nodes, - feature::GenerateInfo const & info) +IntermediateDataWriter::IntermediateDataWriter(PointStorageWriterInterface & nodes, feature::GenerateInfo const & info) : m_nodes(nodes) , m_ways(info.GetCacheFileName(WAYS_FILE)) , m_relations(info.GetCacheFileName(RELATIONS_FILE)) @@ -458,8 +430,8 @@ IntermediateDataWriter::IntermediateDataWriter(PointStorageWriterInterface & nod void IntermediateDataWriter::AddRelation(Key id, RelationElement const & e) { - static std::set const types = {"multipolygon", "route", "boundary", - "associatedStreet", "building", "restriction"}; + static std::set const types = {"multipolygon", "route", "boundary", + "associatedStreet", "building", "restriction"}; auto const relationType = e.GetType(); if (!types.count(relationType)) return; @@ -481,43 +453,36 @@ void IntermediateDataWriter::SaveIndex() } // Functions -std::unique_ptr -CreatePointStorageReader(feature::GenerateInfo::NodeStorageType type, string const & name) +std::unique_ptr CreatePointStorageReader(feature::GenerateInfo::NodeStorageType type, + string const & name) { switch (type) { - case feature::GenerateInfo::NodeStorageType::File: - return std::make_unique(name); - case feature::GenerateInfo::NodeStorageType::Index: - return std::make_unique(name); - case feature::GenerateInfo::NodeStorageType::Memory: - return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::File: return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::Index: return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::Memory: return std::make_unique(name); } UNREACHABLE(); } -std::unique_ptr -CreatePointStorageWriter(feature::GenerateInfo::NodeStorageType type, string const & name) +std::unique_ptr CreatePointStorageWriter(feature::GenerateInfo::NodeStorageType type, + string const & name) { switch (type) { - case feature::GenerateInfo::NodeStorageType::File: - return std::make_unique(name); - case feature::GenerateInfo::NodeStorageType::Index: - return std::make_unique(name); - case feature::GenerateInfo::NodeStorageType::Memory: - return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::File: return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::Index: return std::make_unique(name); + case feature::GenerateInfo::NodeStorageType::Memory: return std::make_unique(name); } UNREACHABLE(); } -IntermediateData::IntermediateData(IntermediateDataObjectsCache & objectsCache, - feature::GenerateInfo const & info) +IntermediateData::IntermediateData(IntermediateDataObjectsCache & objectsCache, feature::GenerateInfo const & info) : m_objectsCache(objectsCache) , m_info(info) { - auto & allocatedObjects = m_objectsCache.GetOrCreatePointStorageReader( - info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE)); + auto & allocatedObjects = + m_objectsCache.GetOrCreatePointStorageReader(info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE)); m_reader = std::make_shared(allocatedObjects, info); } @@ -530,4 +495,4 @@ std::shared_ptr IntermediateData::Clone() const { return std::make_shared(m_objectsCache, m_info); } -} // namespace generator +} // namespace generator::cache diff --git a/generator/intermediate_data.hpp b/generator/intermediate_data.hpp index 84280e452..aad9e8b5b 100644 --- a/generator/intermediate_data.hpp +++ b/generator/intermediate_data.hpp @@ -53,7 +53,7 @@ static_assert(std::is_trivially_copyable::value, ""); class PointStorageWriterInterface { public: - virtual ~PointStorageWriterInterface() noexcept(false) {}; + virtual ~PointStorageWriterInterface() noexcept(false) {} virtual void AddPoint(uint64_t id, double lat, double lon) = 0; virtual uint64_t GetNumProcessedPoints() const = 0; }; @@ -80,10 +80,8 @@ public: { auto range = std::equal_range(m_elements.begin(), m_elements.end(), k, ElementComparator()); for (; range.first != range.second; ++range.first) - { if (toDo((*range.first).second) == base::ControlFlow::Break) break; - } } private: @@ -102,7 +100,6 @@ private: std::vector m_elements; }; - class IndexFileWriter { public: @@ -138,9 +135,9 @@ public: public: AllocatedObjects(feature::GenerateInfo::NodeStorageType type, std::string const & name); - PointStorageReaderInterface const & GetPointStorageReader() const { return *m_storageReader; } + PointStorageReaderInterface const & GetPointStorageReader() const { return *m_storageReader; } - IndexFileReader const & GetOrCreateIndexReader(std::string const & name); + IndexFileReader const & GetOrCreateIndexReader(std::string const & name); private: std::unique_ptr m_storageReader; @@ -255,14 +252,10 @@ public: // Constructs IntermediateDataReader. // objs - intermediate allocated objects. It's used for control allocated objects. // info - information about the generation. - IntermediateDataReader(IntermediateDataObjectsCache::AllocatedObjects & objs, - feature::GenerateInfo const & info); + IntermediateDataReader(IntermediateDataObjectsCache::AllocatedObjects & objs, feature::GenerateInfo const & info); /// \a x \a y are in mercator projection coordinates. @see IntermediateDataWriter::AddNode. - bool GetNode(Key id, double & y, double & x) const override - { - return m_nodes.GetPoint(id, y, x); - } + bool GetNode(Key id, double & y, double & x) const override { return m_nodes.GetPoint(id, y, x); } bool GetWay(Key id, WayElement & e) override { return m_ways.Read(id, e); } bool GetRelation(Key id, RelationElement & e) override { return m_relations.Read(id, e); } @@ -292,11 +285,7 @@ private: class ElementProcessorBase { public: - ElementProcessorBase(CacheReader & reader, ToDo & toDo) - : m_reader(reader) - , m_toDo(toDo) - { - } + ElementProcessorBase(CacheReader & reader, ToDo & toDo) : m_reader(reader), m_toDo(toDo) {} base::ControlFlow operator()(uint64_t id) { @@ -309,16 +298,12 @@ private: ToDo & m_toDo; }; - template struct CachedRelationProcessor : public ElementProcessorBase { using Base = ElementProcessorBase; - CachedRelationProcessor(CacheReader & reader, ToDo & toDo) - : Base(reader, toDo) - { - } + CachedRelationProcessor(CacheReader & reader, ToDo & toDo) : Base(reader, toDo) {} base::ControlFlow operator()(uint64_t id) { return this->m_toDo(id, this->m_reader); } }; @@ -365,17 +350,16 @@ private: cache::IndexFileWriter m_relationToRelations; }; -std::unique_ptr -CreatePointStorageReader(feature::GenerateInfo::NodeStorageType type, std::string const & name); +std::unique_ptr CreatePointStorageReader(feature::GenerateInfo::NodeStorageType type, + std::string const & name); -std::unique_ptr -CreatePointStorageWriter(feature::GenerateInfo::NodeStorageType type, std::string const & name); +std::unique_ptr CreatePointStorageWriter(feature::GenerateInfo::NodeStorageType type, + std::string const & name); class IntermediateData { public: - explicit IntermediateData(IntermediateDataObjectsCache & objectsCache, - feature::GenerateInfo const & info); + explicit IntermediateData(IntermediateDataObjectsCache & objectsCache, feature::GenerateInfo const & info); std::shared_ptr const & GetCache() const; std::shared_ptr Clone() const; diff --git a/generator/intermediate_elements.hpp b/generator/intermediate_elements.hpp index 496dc8400..caf57ce32 100644 --- a/generator/intermediate_elements.hpp +++ b/generator/intermediate_elements.hpp @@ -22,10 +22,7 @@ struct WayElement std::vector m_nodes; explicit WayElement(uint64_t osmId) : m_wayOsmId(osmId) {} - WayElement(uint64_t osmId, std::vector const & nodes) - : m_wayOsmId(osmId), m_nodes(nodes) - { - } + WayElement(uint64_t osmId, std::vector const & nodes) : m_wayOsmId(osmId), m_nodes(nodes) {} bool IsValid() const { return !m_nodes.empty(); } @@ -219,10 +216,8 @@ protected: static std::string_view FindRoleImpl(std::vector const & container, uint64_t id) { for (auto const & e : container) - { if (e.first == id) return e.second; - } return {}; } }; diff --git a/generator/isolines_generator.cpp b/generator/isolines_generator.cpp index 88c360afd..4ef7fef07 100644 --- a/generator/isolines_generator.cpp +++ b/generator/isolines_generator.cpp @@ -18,18 +18,13 @@ std::string_view const kTypeZero = "zero"; std::string GetIsolineName(int altitude, int step, int minAltitude, int maxAltitude) { - if (step > 10 || - abs(altitude) % kNamedAltStep == 0 || - maxAltitude - minAltitude <= kNamedAltRange) - { + if (step > 10 || abs(altitude) % kNamedAltStep == 0 || maxAltitude - minAltitude <= kNamedAltRange) return strings::to_string(altitude); - } return ""; } } // namespace -IsolineFeaturesGenerator::IsolineFeaturesGenerator(std::string const & isolinesDir) - : m_isolinesDir(isolinesDir) +IsolineFeaturesGenerator::IsolineFeaturesGenerator(std::string const & isolinesDir) : m_isolinesDir(isolinesDir) { ASSERT(std::is_sorted(kAltClasses.cbegin(), kAltClasses.cend(), std::greater()), ()); Classificator const & c = classif(); @@ -48,18 +43,14 @@ uint32_t IsolineFeaturesGenerator::GetIsolineType(int altitude) const return m_altClassToType.at(0); for (auto altStep : kAltClasses) - { if (abs(altitude) % altStep == 0) return m_altClassToType.at(altStep); - } return ftype::GetEmptyValue(); } -void IsolineFeaturesGenerator::GenerateIsolines(std::string const & countryName, - FeaturesCollectFn const & fn) const +void IsolineFeaturesGenerator::GenerateIsolines(std::string const & countryName, FeaturesCollectFn const & fn) const { - auto const isolinesPath = topography_generator::GetIsolinesFilePath(countryName, - m_isolinesDir); + auto const isolinesPath = topography_generator::GetIsolinesFilePath(countryName, m_isolinesDir); topography_generator::Contours countryIsolines; if (!topography_generator::LoadContours(isolinesPath, countryIsolines)) { @@ -70,8 +61,8 @@ void IsolineFeaturesGenerator::GenerateIsolines(std::string const & countryName, for (auto & levelIsolines : countryIsolines.m_contours) { auto const altitude = levelIsolines.first; - auto const isolineName = GetIsolineName(altitude, countryIsolines.m_valueStep, - countryIsolines.m_minValue, countryIsolines.m_maxValue); + auto const isolineName = + GetIsolineName(altitude, countryIsolines.m_valueStep, countryIsolines.m_minValue, countryIsolines.m_maxValue); auto const isolineType = GetIsolineType(altitude); if (isolineType == ftype::GetEmptyValue()) { diff --git a/generator/maxspeeds_builder.cpp b/generator/maxspeeds_builder.cpp index efd56129b..60be8b4cd 100644 --- a/generator/maxspeeds_builder.cpp +++ b/generator/maxspeeds_builder.cpp @@ -14,8 +14,8 @@ #include "indexer/feature_data.hpp" #include "indexer/feature_processor.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include "platform/measurement_utils.hpp" @@ -44,7 +44,8 @@ double constexpr kMaxPossibleDefSpeedKmH = 400.0; // This factor should be greater than sqrt(2) / 2 - prefer diagonal link to square path. double constexpr kLinkToMainSpeedFactor = 0.85; -template bool ParseOneSpeedValue(TokenizerT & iter, MaxspeedType & value) +template +bool ParseOneSpeedValue(TokenizerT & iter, MaxspeedType & value) { if (!iter) return false; @@ -98,21 +99,19 @@ class MaxspeedsMwmCollector return osmIdIt->second; } - routing::RoadGeometry const & GetRoad(uint32_t fid) const - { - return m_graph->GetRoadGeometry(fid); - } + routing::RoadGeometry const & GetRoad(uint32_t fid) const { return m_graph->GetRoadGeometry(fid); } // OSM data related warning tag for convenient grep. std::string m_logTag; public: MaxspeedsMwmCollector(string const & dataPath, FeatureIdToOsmId const & ft2osm, IndexGraph * graph) - : m_dataPath(dataPath), m_ft2osm(ft2osm), m_graph(graph) + : m_dataPath(dataPath) + , m_ft2osm(ft2osm) + , m_graph(graph) , m_converter(MaxspeedConverter::Instance()) , m_logTag("SpeedsBuilder") - { - } + {} void Process(string const & maxspeedCsvPath) { @@ -131,24 +130,19 @@ public: return &maxspeedIt->second; }; - auto const GetLastIndex = [&](uint32_t fid) - { - return GetRoad(fid).GetPointsCount() - 2; - }; + auto const GetLastIndex = [&](uint32_t fid) { return GetRoad(fid).GetPointsCount() - 2; }; auto const GetOpposite = [&](Segment const & seg) { // Assume that links are connected with main roads in first or last point, always. uint32_t const fid = seg.GetFeatureId(); return Segment(0, fid, seg.GetSegmentIdx() > 0 ? 0 : GetLastIndex(fid), seg.IsForward()); }; - auto const GetHighwayType = [&](uint32_t fid) - { - return GetRoad(fid).GetHighwayType(); - }; + auto const GetHighwayType = [&](uint32_t fid) { return GetRoad(fid).GetHighwayType(); }; auto const & converter = GetMaxspeedConverter(); using HwTypeT = std::optional; - auto const CalculateSpeed = [&](uint32_t parentFID, Maxspeed const & s, HwTypeT hwType) -> std::optional + auto const CalculateSpeed = [&](uint32_t parentFID, Maxspeed const & s, + HwTypeT hwType) -> std::optional { HwTypeT const parentHwType = GetHighwayType(parentFID); if (!parentHwType) @@ -167,7 +161,7 @@ public: { // Reduce factor from parent road. See DontUseLinksWhenRidingOnMotorway test. return converter.ClosestValidMacro( - { base::asserted_cast(std::lround(s.GetForward() * kLinkToMainSpeedFactor)), s.GetUnits() }); + {base::asserted_cast(std::lround(s.GetForward() * kLinkToMainSpeedFactor)), s.GetUnits()}); } return {}; @@ -180,7 +174,7 @@ public: Maxspeed * maxSpeed = GetSpeed(fid); if (!maxSpeed) - return; + return; auto const osmID = GetOsmID(fid).GetSerialId(); @@ -190,7 +184,9 @@ public: return; } -#define LOG_MAX_SPEED(msg) if (false) LOG(LINFO, msg) +#define LOG_MAX_SPEED(msg) \ + if (false) \ + LOG(LINFO, msg) LOG_MAX_SPEED(("Start osmid =", osmID)); @@ -208,7 +204,7 @@ public: HwTypeT const hwType = GetHighwayType(fid); // Check ingoing first, then - outgoing. - for (bool direction : { false, true }) + for (bool direction : {false, true}) { LOG_MAX_SPEED(("Search dir =", direction)); @@ -253,9 +249,8 @@ public: } } else if (s->GetForward() == routing::kCommonMaxSpeedValue && - reviewed.size() < 4 && // limit with some reasonable transitions - reviewed.find(targetFID) == reviewed.end() && - hwType == GetHighwayType(targetFID)) + reviewed.size() < 4 && // limit with some reasonable transitions + reviewed.find(targetFID) == reviewed.end() && hwType == GetHighwayType(targetFID)) { LOG_MAX_SPEED(("Add reviewed")); @@ -265,7 +260,8 @@ public: } } } - } while (status == 1); + } + while (status == 1); if (status == 2) break; @@ -309,9 +305,7 @@ private: return; } if (backward.IsValid() && backwardMacro == SpeedMacro::Undefined) - { LOG(LWARNING, (m_logTag, "Undefined backward speed macro", backward, "for way", osmID)); - } m_maxspeeds.push_back(ftSpeed); @@ -328,7 +322,7 @@ private: auto & info = m_avgSpeeds[rd.IsInCity() ? 1 : 0][*hwType]; double const lenKM = rd.GetRoadLengthM() / 1000.0; - for (auto const & s : { forward, backward }) + for (auto const & s : {forward, backward}) { if (s.IsNumeric()) { @@ -344,17 +338,17 @@ private: public: void CalculateDefaultTypeSpeeds(MaxspeedsSerializer::HW2SpeedMap typeSpeeds[]) { - std::vector> baseSpeeds( - kHighwayBasedSpeeds.begin(), kHighwayBasedSpeeds.end()); + std::vector> baseSpeeds(kHighwayBasedSpeeds.begin(), + kHighwayBasedSpeeds.end()); // Remove links, because they don't conform speed consistency. - baseSpeeds.erase(std::remove_if(baseSpeeds.begin(), baseSpeeds.end(), [](auto const & e) + baseSpeeds.erase(std::remove_if(baseSpeeds.begin(), baseSpeeds.end(), + [](auto const & e) { - return (e.first == HighwayType::HighwayMotorwayLink || - e.first == HighwayType::HighwayTrunkLink || - e.first == HighwayType::HighwayPrimaryLink || - e.first == HighwayType::HighwaySecondaryLink || + return (e.first == HighwayType::HighwayMotorwayLink || e.first == HighwayType::HighwayTrunkLink || + e.first == HighwayType::HighwayPrimaryLink || e.first == HighwayType::HighwaySecondaryLink || e.first == HighwayType::HighwayTertiaryLink); - }), baseSpeeds.end()); + }), + baseSpeeds.end()); for (int ind = 0; ind < kSpeedsCount; ++ind) { @@ -441,8 +435,8 @@ public: double constexpr eps = 1.0; if (primaryS + eps < secondaryS || secondaryS + eps < tertiaryS || tertiaryS + eps < residentialS) { - LOG(LWARNING, (m_logTag, "Ignore primary, secondary, tertiary, residential speeds:", - primaryS, secondaryS, tertiaryS, residentialS)); + LOG(LWARNING, (m_logTag, "Ignore primary, secondary, tertiary, residential speeds:", primaryS, secondaryS, + tertiaryS, residentialS)); m_avgSpeeds[ind][HighwayType::HighwayPrimary].m_speed = -1; m_avgSpeeds[ind][HighwayType::HighwaySecondary].m_speed = -1; @@ -453,11 +447,11 @@ public: // Update links. std::pair arrLinks[] = { - {HighwayType::HighwayMotorway, HighwayType::HighwayMotorwayLink}, - {HighwayType::HighwayTrunk, HighwayType::HighwayTrunkLink}, - {HighwayType::HighwayPrimary, HighwayType::HighwayPrimaryLink}, - {HighwayType::HighwaySecondary, HighwayType::HighwaySecondaryLink}, - {HighwayType::HighwayTertiary, HighwayType::HighwayTertiaryLink}, + {HighwayType::HighwayMotorway, HighwayType::HighwayMotorwayLink}, + {HighwayType::HighwayTrunk, HighwayType::HighwayTrunkLink}, + {HighwayType::HighwayPrimary, HighwayType::HighwayPrimaryLink}, + {HighwayType::HighwaySecondary, HighwayType::HighwaySecondaryLink}, + {HighwayType::HighwayTertiary, HighwayType::HighwayTertiaryLink}, }; for (auto const & e : arrLinks) { @@ -477,7 +471,7 @@ public: { // Store type speeds in Metric system, like VehicleModel profiles. auto const speedInUnits = m_converter.ClosestValidMacro( - { static_cast(e.second.m_speed), measurement_utils::Units::Metric }); + {static_cast(e.second.m_speed), measurement_utils::Units::Metric}); LOG(LINFO, ("*", e.first, "=", speedInUnits)); @@ -561,8 +555,7 @@ bool ParseMaxspeeds(string const & filePath, OsmIdToMaxspeed & osmIdToMaxspeed) return true; } -void BuildMaxspeedsSection(IndexGraph * graph, string const & dataPath, - FeatureIdToOsmId const & featureIdToOsmId, +void BuildMaxspeedsSection(IndexGraph * graph, string const & dataPath, FeatureIdToOsmId const & featureIdToOsmId, string const & maxspeedsFilename) { MaxspeedsMwmCollector collector(dataPath, featureIdToOsmId, graph); @@ -571,8 +564,8 @@ void BuildMaxspeedsSection(IndexGraph * graph, string const & dataPath, collector.SerializeMaxspeeds(); } -void BuildMaxspeedsSection(IndexGraph * graph, string const & dataPath, - string const & osmToFeaturePath, string const & maxspeedsFilename) +void BuildMaxspeedsSection(IndexGraph * graph, string const & dataPath, string const & osmToFeaturePath, + string const & maxspeedsFilename) { FeatureIdToOsmId featureIdToOsmId; ParseWaysFeatureIdToOsmIdMapping(osmToFeaturePath, featureIdToOsmId); diff --git a/generator/maxspeeds_builder.hpp b/generator/maxspeeds_builder.hpp index af924dd1f..938cdbd2e 100644 --- a/generator/maxspeeds_builder.hpp +++ b/generator/maxspeeds_builder.hpp @@ -13,7 +13,7 @@ namespace routing { class IndexGraph; using OsmIdToMaxspeed = std::map; -} // namesoace routing +} // namespace routing namespace routing_builder { @@ -22,8 +22,7 @@ namespace routing_builder bool ParseMaxspeeds(std::string const & filePath, routing::OsmIdToMaxspeed & osmIdToMaxspeed); void BuildMaxspeedsSection(routing::IndexGraph * graph, std::string const & dataPath, - routing::FeatureIdToOsmId const & featureIdToOsmId, - std::string const & maxspeedsFilename); + routing::FeatureIdToOsmId const & featureIdToOsmId, std::string const & maxspeedsFilename); /// \brief Builds maxspeeds section in mwm with |dataPath|. This section contains max speed limits /// if they are available in file |maxspeedsFilename|. diff --git a/generator/maxspeeds_collector.cpp b/generator/maxspeeds_collector.cpp index 59a8a92ac..34c757982 100644 --- a/generator/maxspeeds_collector.cpp +++ b/generator/maxspeeds_collector.cpp @@ -23,8 +23,7 @@ namespace generator { namespace { -bool ParseMaxspeedAndWriteToStream(std::string const & maxspeed, routing::SpeedInUnits & speed, - std::ostringstream & ss) +bool ParseMaxspeedAndWriteToStream(std::string const & maxspeed, routing::SpeedInUnits & speed, std::ostringstream & ss) { if (maxspeed.empty() || !ParseMaxspeedTag(maxspeed, speed)) return false; @@ -34,8 +33,7 @@ bool ParseMaxspeedAndWriteToStream(std::string const & maxspeed, routing::SpeedI } } // namespace -MaxspeedsCollector::MaxspeedsCollector(std::string const & filename) - : CollectorInterface(filename) +MaxspeedsCollector::MaxspeedsCollector(std::string const & filename) : CollectorInterface(filename) { m_stream.exceptions(std::fstream::failbit | std::fstream::badbit); m_stream.open(GetTmpFilename()); @@ -91,11 +89,8 @@ void MaxspeedsCollector::CollectFeature(feature::FeatureBuilder const & ft, OsmE // like "none" or "walk". In that case units mean nothing and the values should // be processed in a special way. routing::SpeedInUnits maxspeedBackward; - if (ParseMaxspeedTag(maxspeedBackwardStr, maxspeedBackward) && - HaveSameUnits(maxspeed, maxspeedBackward)) - { + if (ParseMaxspeedTag(maxspeedBackwardStr, maxspeedBackward) && HaveSameUnits(maxspeed, maxspeedBackward)) ss << "," << strings::to_string(maxspeedBackward.GetSpeed()); - } } else if (ftypes::IsLinkChecker::Instance()(ft.GetTypes())) { @@ -132,7 +127,10 @@ void MaxspeedsCollector::Save() CHECK(base::CopyFileX(GetTmpFilename(), GetFilename()), ()); } -void MaxspeedsCollector::OrderCollectedData() { OrderTextFileByLine(GetFilename()); } +void MaxspeedsCollector::OrderCollectedData() +{ + OrderTextFileByLine(GetFilename()); +} void MaxspeedsCollector::MergeInto(MaxspeedsCollector & collector) const { diff --git a/generator/maxspeeds_parser.cpp b/generator/maxspeeds_parser.cpp index 928f61d88..072777117 100644 --- a/generator/maxspeeds_parser.cpp +++ b/generator/maxspeeds_parser.cpp @@ -115,13 +115,13 @@ static std::unordered_map const kRoadCategor {"SE:trunk", {90, Units::Metric}}, {"SE:motorway", {110, Units::Metric}}, - {"GB:motorway", {70, Units::Imperial}}, // 70 mph = 112.65408 kmph - {"GB:nsl_dual", {70, Units::Imperial}}, // 70 mph = 112.65408 kmph - {"GB:nsl_single", {60, Units::Imperial}}, // 60 mph = 96.56064 kmph + {"GB:motorway", {70, Units::Imperial}}, // 70 mph = 112.65408 kmph + {"GB:nsl_dual", {70, Units::Imperial}}, // 70 mph = 112.65408 kmph + {"GB:nsl_single", {60, Units::Imperial}}, // 60 mph = 96.56064 kmph - {"UK:motorway", {70, Units::Imperial}}, // 70 mph - {"UK:nsl_dual", {70, Units::Imperial}}, // 70 mph - {"UK:nsl_single", {60, Units::Imperial}}, // 60 mph + {"UK:motorway", {70, Units::Imperial}}, // 70 mph + {"UK:nsl_dual", {70, Units::Imperial}}, // 70 mph + {"UK:nsl_single", {60, Units::Imperial}}, // 60 mph {"UA:urban", {50, Units::Metric}}, {"UA:rural", {90, Units::Metric}}, @@ -151,14 +151,14 @@ bool ParseMaxspeedTag(std::string const & maxspeedValue, routing::SpeedInUnits & if (maxspeedValue == "none") { speed.SetSpeed(routing::kNoneMaxSpeed); - speed.SetUnits(Units::Metric); // It's dummy value in case of kNoneMaxSpeed + speed.SetUnits(Units::Metric); // It's dummy value in case of kNoneMaxSpeed return true; } if (maxspeedValue == "walk") { speed.SetSpeed(routing::kWalkMaxSpeed); - speed.SetUnits(Units::Metric); // It's dummy value in case of kWalkMaxSpeed + speed.SetUnits(Units::Metric); // It's dummy value in case of kWalkMaxSpeed return true; } diff --git a/generator/metalines_builder.cpp b/generator/metalines_builder.cpp index ae669834b..9bbee4795 100644 --- a/generator/metalines_builder.cpp +++ b/generator/metalines_builder.cpp @@ -152,7 +152,8 @@ LineStringMerger::OutputData LineStringMerger::OrderData(InputData const & data) for (auto & p : intermediateData) { auto & lineStrings = intermediateData[p.first]; - std::sort(std::begin(lineStrings), std::end(lineStrings), [](auto const & l, auto const & r) { + std::sort(std::begin(lineStrings), std::end(lineStrings), [](auto const & l, auto const & r) + { auto const & lways = l->GetWays(); auto const & rways = r->GetWays(); return lways.size() == rways.size() ? lways.front() < rways.front() : lways.size() > rways.size(); @@ -166,8 +167,7 @@ LineStringMerger::OutputData LineStringMerger::OrderData(InputData const & data) MetalinesBuilder::MetalinesBuilder(std::string const & filename) : generator::CollectorInterface(filename) , m_writer(std::make_unique(GetTmpFilename())) -{ -} +{} std::shared_ptr MetalinesBuilder::Clone(IDRInterfacePtr const &) const { @@ -192,7 +192,10 @@ void MetalinesBuilder::CollectFeature(FeatureBuilder const & feature, OsmElement LineString(element).Serialize(*m_writer); } -void MetalinesBuilder::Finish() { m_writer.reset(); } +void MetalinesBuilder::Finish() +{ + m_writer.reset(); +} void MetalinesBuilder::Save() { @@ -220,8 +223,8 @@ void MetalinesBuilder::Save() } } - LOG_SHORT(LINFO, ("Wrote", countLines, "metalines [with", countWays , - "ways] with OSM IDs for the entire planet to", GetFilename())); + LOG_SHORT(LINFO, ("Wrote", countLines, "metalines [with", countWays, "ways] with OSM IDs for the entire planet to", + GetFilename())); } void MetalinesBuilder::OrderCollectedData() diff --git a/generator/metalines_builder.hpp b/generator/metalines_builder.hpp index f4a6b4768..eacedcaa3 100644 --- a/generator/metalines_builder.hpp +++ b/generator/metalines_builder.hpp @@ -4,8 +4,8 @@ #include "generator/feature_builder.hpp" #include "generator/osm_element.hpp" -#include "coding/reader.hpp" #include "coding/read_write_utils.hpp" +#include "coding/reader.hpp" #include "coding/write_to_sink.hpp" #include @@ -105,4 +105,4 @@ private: // Read an intermediate file from MetalinesBuilder and convert it to an mwm section. bool WriteMetalinesSection(std::string const & mwmPath, std::string const & metalinesPath, std::string const & osmIdsToFeatureIdsPath); -} // namespace feature +} // namespace feature diff --git a/generator/mini_roundabout_info.cpp b/generator/mini_roundabout_info.cpp index b99bb50d3..eb6c2b4e9 100644 --- a/generator/mini_roundabout_info.cpp +++ b/generator/mini_roundabout_info.cpp @@ -11,9 +11,9 @@ namespace generator { MiniRoundaboutInfo::MiniRoundaboutInfo(OsmElement const & element) - : m_id(element.m_id), m_coord(element.m_lat, element.m_lon) -{ -} + : m_id(element.m_id) + , m_coord(element.m_lat, element.m_lon) +{} bool MiniRoundaboutInfo::Normalize() { @@ -30,8 +30,7 @@ bool MiniRoundaboutInfo::IsProcessRoad(feature::FeatureBuilder const & fb) return fb.IsLine() && routing::IsCarRoad(fb.GetTypes()); } -MiniRoundaboutData::MiniRoundaboutData(std::vector && data) - : m_data(std::move(data)) +MiniRoundaboutData::MiniRoundaboutData(std::vector && data) : m_data(std::move(data)) { for (auto const & d : m_data) m_ways.insert(std::end(m_ways), std::cbegin(d.m_ways), std::cend(d.m_ways)); diff --git a/generator/mini_roundabout_info.hpp b/generator/mini_roundabout_info.hpp index db830176b..bc582237e 100644 --- a/generator/mini_roundabout_info.hpp +++ b/generator/mini_roundabout_info.hpp @@ -10,7 +10,10 @@ #include -namespace feature { class FeatureBuilder; } +namespace feature +{ +class FeatureBuilder; +} namespace generator { diff --git a/generator/mini_roundabout_transformer.cpp b/generator/mini_roundabout_transformer.cpp index d82ed5e1f..d812c78d7 100644 --- a/generator/mini_roundabout_transformer.cpp +++ b/generator/mini_roundabout_transformer.cpp @@ -45,17 +45,14 @@ feature::FeatureBuilder::PointSeq::iterator GetIterOnRoad(m2::PointD const & poi feature::FeatureBuilder::PointSeq & road) { return std::find_if(road.begin(), road.end(), [&point](m2::PointD const & pointOnRoad) - { - return AlmostEqualAbs(pointOnRoad, point, kMwmPointAccuracy); - }); + { return AlmostEqualAbs(pointOnRoad, point, kMwmPointAccuracy); }); } -} // namespace +} // namespace MiniRoundaboutTransformer::MiniRoundaboutTransformer(std::vector const & data, feature::AffiliationInterface const & affiliation) : MiniRoundaboutTransformer(data, affiliation, kDefaultRadiusMeters) -{ -} +{} MiniRoundaboutTransformer::MiniRoundaboutTransformer(std::vector const & data, feature::AffiliationInterface const & affiliation, @@ -63,8 +60,7 @@ MiniRoundaboutTransformer::MiniRoundaboutTransformer(std::vector const kHighwayTypes = { - cl.GetTypeByPath({"highway", "motorway"}), - cl.GetTypeByPath({"highway", "motorway_link"}), - cl.GetTypeByPath({"highway", "trunk"}), - cl.GetTypeByPath({"highway", "trunk_link"}), - cl.GetTypeByPath({"highway", "primary"}), - cl.GetTypeByPath({"highway", "primary_link"}), - cl.GetTypeByPath({"highway", "secondary"}), - cl.GetTypeByPath({"highway", "secondary_link"}), - cl.GetTypeByPath({"highway", "tertiary"}), - cl.GetTypeByPath({"highway", "tertiary_link"}), - cl.GetTypeByPath({"highway", "unclassified"}), - cl.GetTypeByPath({"highway", "road"}), - cl.GetTypeByPath({"highway", "residential"}), - cl.GetTypeByPath({"highway", "living_street"}), - cl.GetTypeByPath({"highway", "service"}), - cl.GetTypeByPath({"highway", "track"}), + cl.GetTypeByPath({"highway", "motorway"}), cl.GetTypeByPath({"highway", "motorway_link"}), + cl.GetTypeByPath({"highway", "trunk"}), cl.GetTypeByPath({"highway", "trunk_link"}), + cl.GetTypeByPath({"highway", "primary"}), cl.GetTypeByPath({"highway", "primary_link"}), + cl.GetTypeByPath({"highway", "secondary"}), cl.GetTypeByPath({"highway", "secondary_link"}), + cl.GetTypeByPath({"highway", "tertiary"}), cl.GetTypeByPath({"highway", "tertiary_link"}), + cl.GetTypeByPath({"highway", "unclassified"}), cl.GetTypeByPath({"highway", "road"}), + cl.GetTypeByPath({"highway", "residential"}), cl.GetTypeByPath({"highway", "living_street"}), + cl.GetTypeByPath({"highway", "service"}), cl.GetTypeByPath({"highway", "track"}), }; for (uint32_t t : foundTypes) @@ -137,8 +125,8 @@ feature::FeatureBuilder MiniRoundaboutTransformer::CreateRoundaboutFb(PointsT && } MiniRoundaboutTransformer::PointsT MiniRoundaboutTransformer::CreateSurrogateRoad( - RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, - PointsT & road, PointsT::iterator & itPointUpd) const + RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, PointsT & road, + PointsT::iterator & itPointUpd) const { PointsT surrogateRoad(itPointUpd, road.end()); auto itPointOnSurrogateRoad = surrogateRoad.begin(); @@ -146,8 +134,7 @@ MiniRoundaboutTransformer::PointsT MiniRoundaboutTransformer::CreateSurrogateRoa ++itPointOnSurrogateRoad; m2::PointD const nextPointOnSurrogateRoad = GetPointAtDistFromTarget( - *itPointOnSurrogateRoad /* source */, roundaboutOnRoad.m_location /* target */, - m_radiusMercator /* dist */); + *itPointOnSurrogateRoad /* source */, roundaboutOnRoad.m_location /* target */, m_radiusMercator /* dist */); if (AlmostEqualAbs(nextPointOnSurrogateRoad, *itPointOnSurrogateRoad, kMwmPointAccuracy)) return {}; @@ -159,8 +146,8 @@ MiniRoundaboutTransformer::PointsT MiniRoundaboutTransformer::CreateSurrogateRoa return surrogateRoad; } -bool MiniRoundaboutTransformer::AddRoundaboutToRoad(RoundaboutUnit const & roundaboutOnRoad, - PointsT & roundaboutCircle, PointsT & road, +bool MiniRoundaboutTransformer::AddRoundaboutToRoad(RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, + PointsT & road, std::vector & newRoads) const { auto const roundaboutCenter = roundaboutOnRoad.m_location; @@ -170,9 +157,8 @@ bool MiniRoundaboutTransformer::AddRoundaboutToRoad(RoundaboutUnit const & round auto itPointNearRoundabout = itPointUpd; bool const isMiddlePoint = MoveIterAwayFromRoundabout(itPointNearRoundabout, road); - m2::PointD const nextPointOnRoad = - GetPointAtDistFromTarget(*itPointNearRoundabout /* source */, roundaboutCenter /* target */, - m_radiusMercator /* dist */); + m2::PointD const nextPointOnRoad = GetPointAtDistFromTarget( + *itPointNearRoundabout /* source */, roundaboutCenter /* target */, m_radiusMercator /* dist */); if (isMiddlePoint && !AlmostEqualAbs(nextPointOnRoad, *itPointNearRoundabout, kMwmPointAccuracy)) { @@ -197,12 +183,12 @@ void MiniRoundaboutTransformer::AddRoad(feature::FeatureBuilder && road) CHECK(m_roads.emplace(id, std::move(road)).second, ()); } -void MiniRoundaboutTransformer::ProcessRoundabouts(std::function const & fn) +void MiniRoundaboutTransformer::ProcessRoundabouts(std::function const & fn) { // Some mini-roundabouts are mapped in the middle of the road. These roads should be split // in two parts on the opposite sides of the roundabout. New roads are saved in |fbsRoads|. std::vector fbsRoads; - size_t constexpr kReserveSize = 4*1024; + size_t constexpr kReserveSize = 4 * 1024; fbsRoads.reserve(kReserveSize); size_t transformed = 0; @@ -296,10 +282,12 @@ void MiniRoundaboutTransformer::ProcessRoundabouts(std::function PointToPolygon(m2::PointD const & center, double radiusMercator, - size_t verticesCount, double initAngleDeg) +std::vector PointToPolygon(m2::PointD const & center, double radiusMercator, size_t verticesCount, + double initAngleDeg) { CHECK_GREATER(verticesCount, 2, ()); CHECK_GREATER(radiusMercator, 0.0, ()); @@ -323,8 +311,7 @@ std::vector PointToPolygon(m2::PointD const & center, double radiusM for (size_t i = 0; i < verticesCount; ++i) { - vertices.emplace_back(center.x + radiusMercator * cos(angle), - center.y + radiusMercator * sin(angle)); + vertices.emplace_back(center.x + radiusMercator * cos(angle), center.y + radiusMercator * sin(angle)); angle += kAngularPitch; } diff --git a/generator/mini_roundabout_transformer.hpp b/generator/mini_roundabout_transformer.hpp index 76bdd2842..9a5792bdd 100644 --- a/generator/mini_roundabout_transformer.hpp +++ b/generator/mini_roundabout_transformer.hpp @@ -25,39 +25,35 @@ public: MiniRoundaboutTransformer(std::vector const & data, feature::AffiliationInterface const & affiliation); MiniRoundaboutTransformer(std::vector const & data, - feature::AffiliationInterface const & affiliation, - double radiusMeters); + feature::AffiliationInterface const & affiliation, double radiusMeters); void AddRoad(feature::FeatureBuilder && road); /// \brief Generates ways with junction=roundabout. /// These features are obtained from points with highway=mini_roundabout. - void ProcessRoundabouts(std::function const & fn); + void ProcessRoundabouts(std::function const & fn); void SetLeftHandTraffic(bool isLeftHand) { m_leftHandTraffic = isLeftHand; } private: using PointsT = feature::FeatureBuilder::PointSeq; - feature::FeatureBuilder CreateRoundaboutFb(PointsT && way,uint32_t roadType); + feature::FeatureBuilder CreateRoundaboutFb(PointsT && way, uint32_t roadType); /// \brief Splits |road| in two parts: part before the |roundabout| and after. /// Returns second road to |newRoads| - the artificial one. - PointsT CreateSurrogateRoad( - RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, - PointsT & road, PointsT::iterator & itPointUpd) const; + PointsT CreateSurrogateRoad(RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, PointsT & road, + PointsT::iterator & itPointUpd) const; /// \brief Creates new point and adds it to |roundabout| circle and to the |road|. - bool AddRoundaboutToRoad(RoundaboutUnit const & roundaboutOnRoad, - PointsT & roundaboutCircle, PointsT & road, + bool AddRoundaboutToRoad(RoundaboutUnit const & roundaboutOnRoad, PointsT & roundaboutCircle, PointsT & road, std::vector & newRoads) const; - std::vector const & m_roundabouts; double const m_radiusMercator = 0.0; feature::AffiliationInterface const * m_affiliation = nullptr; std::unordered_map m_roads; // Skip 2 bytes to satisfy base::GeoObjectId constraints. - uint64_t m_newWayId = 1ULL << (63-16); + uint64_t m_newWayId = 1ULL << (63 - 16); bool m_leftHandTraffic = false; }; @@ -66,14 +62,13 @@ double DistanceOnPlain(m2::PointD const & a, m2::PointD const & b); /// \returns The point that is located on the segment (|source|, |target|) and lies in |dist| /// or less from |target|. -m2::PointD GetPointAtDistFromTarget(m2::PointD const & source, m2::PointD const & target, - double dist); +m2::PointD GetPointAtDistFromTarget(m2::PointD const & source, m2::PointD const & target, double dist); /// \brief Creates a regular polygon with |verticesCount| inscribed in a circle with |center| and /// |radiusMercator|. The polygon is rotated by an angle |initAngleDeg| CCW. /// \returns vector of polygon vertices. -std::vector PointToPolygon(m2::PointD const & center, double radiusMercator, - size_t verticesCount = 12, double initAngleDeg = 0.0); +std::vector PointToPolygon(m2::PointD const & center, double radiusMercator, size_t verticesCount = 12, + double initAngleDeg = 0.0); /// \brief Inserts point (which lies on circle) between 2 points already present in the circle. void AddPointToCircle(std::vector & circle, m2::PointD const & point); diff --git a/generator/osm2meta.cpp b/generator/osm2meta.cpp index 26e3537b1..e225cbe90 100644 --- a/generator/osm2meta.cpp +++ b/generator/osm2meta.cpp @@ -1,8 +1,8 @@ #include "generator/osm2meta.hpp" #include "indexer/classificator.hpp" -#include "indexer/ftypes_matcher.hpp" #include "indexer/editable_map_object.hpp" +#include "indexer/ftypes_matcher.hpp" #include "platform/measurement_utils.hpp" @@ -61,6 +61,7 @@ public: RemoveDuplicatesAndKeepOrder(m_values); return strings::JoinStrings(m_values, kOSMMultivalueDelimiter); } + private: std::vector m_values; }; @@ -68,8 +69,8 @@ private: bool IsNoNameNoAddressBuilding(FeatureParams const & params) { static uint32_t const buildingType = classif().GetTypeByPath({"building"}); - return params.m_types.size() == 1 && params.m_types[0] == buildingType && - params.house.Get().empty() && params.name.IsEmpty(); + return params.m_types.size() == 1 && params.m_types[0] == buildingType && params.house.Get().empty() && + params.name.IsEmpty(); } bool Prefix2Double(std::string const & str, double & d) @@ -103,10 +104,8 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_operator(std::string con { using namespace ftypes; auto const & t = m_params.m_types; - if (IsATMChecker::Instance()(t) || - IsRecyclingCentreChecker::Instance()(t) || - IsRecyclingContainerChecker::Instance()(t) || - IsPostPoiChecker::Instance()(t) || + if (IsATMChecker::Instance()(t) || IsRecyclingCentreChecker::Instance()(t) || + IsRecyclingContainerChecker::Instance()(t) || IsPostPoiChecker::Instance()(t) || IsOperatorOthersPoiChecker::Instance()(t)) { return v; @@ -223,7 +222,10 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_email(std::string const return v; } -std::string MetadataTagProcessorImpl::ValidateAndFormat_postcode(std::string const & v) { return v; } +std::string MetadataTagProcessorImpl::ValidateAndFormat_postcode(std::string const & v) +{ + return v; +} std::string MetadataTagProcessorImpl::ValidateAndFormat_flats(std::string const & v) { @@ -335,16 +337,16 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_panoramax(std::string v) { static auto const s_panoramaxRegex = std::regex(R"(^([a-z0-9]{8}(-[a-z0-9]{4}){3}-[a-z0-9]{12})$)"); - if (std::regex_match(v, s_panoramaxRegex)) + if (std::regex_match(v, s_panoramaxRegex)) return v; - url::Url const parsedUrl = url::Url::FromString(v); - if (const std::string* paramValue = parsedUrl.GetParamValue("pic")) - { - if (std::regex_match(*paramValue, s_panoramaxRegex)) - return v; - } - LOG(LDEBUG, ("Invalid Panoramax tag value:", v)); - return {}; + url::Url const parsedUrl = url::Url::FromString(v); + if (std::string const * paramValue = parsedUrl.GetParamValue("pic")) + { + if (std::regex_match(*paramValue, s_panoramaxRegex)) + return v; + } + LOG(LDEBUG, ("Invalid Panoramax tag value:", v)); + return {}; } std::string MetadataTagProcessorImpl::ValidateAndFormat_airport_iata(std::string const & v) const @@ -409,7 +411,8 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_duration(std::string con if (!ftypes::IsWayWithDurationChecker::Instance()(m_params.m_types)) return {}; - auto const format = [](double hours) -> std::string { + auto const format = [](double hours) -> std::string + { if (AlmostEqualAbs(hours, 0.0, 1e-5)) return {}; @@ -419,7 +422,8 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_duration(std::string con return ss.str(); }; - auto const readNumber = [&v](size_t & pos) -> std::optional { + auto const readNumber = [&v](size_t & pos) -> std::optional + { uint32_t number = 0; size_t const startPos = pos; while (pos < v.size() && isdigit(v[pos])) @@ -435,7 +439,8 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_duration(std::string con return {number}; }; - auto const convert = [](char type, uint32_t number) -> std::optional { + auto const convert = [](char type, uint32_t number) -> std::optional + { switch (type) { case 'H': return number; @@ -509,7 +514,6 @@ std::string MetadataTagProcessorImpl::ValidateAndFormat_duration(std::string con return format(hours); } - MetadataTagProcessor::~MetadataTagProcessor() { if (!m_description.IsEmpty()) @@ -622,7 +626,7 @@ void MetadataTagProcessor::operator()(std::string const & k, std::string const & case Metadata::FMD_NETWORK: valid = ValidateAndFormat_operator(v); break; // Metadata types we do not get from OSM. case Metadata::FMD_CUISINE: - case Metadata::FMD_DESCRIPTION: // processed separately + case Metadata::FMD_DESCRIPTION: // processed separately case Metadata::FMD_TEST_ID: case Metadata::FMD_CUSTOM_IDS: case Metadata::FMD_PRICE_RATES: diff --git a/generator/osm2meta.hpp b/generator/osm2meta.hpp index f9bd112ab..6c29019cb 100644 --- a/generator/osm2meta.hpp +++ b/generator/osm2meta.hpp @@ -10,31 +10,31 @@ struct MetadataTagProcessorImpl MetadataTagProcessorImpl(FeatureBuilderParams & params) : m_params(params) {} std::string ValidateAndFormat_maxspeed(std::string const & v) const; - static std::string ValidateAndFormat_stars(std::string const & v) ; + static std::string ValidateAndFormat_stars(std::string const & v); std::string ValidateAndFormat_operator(std::string const & v) const; - static std::string ValidateAndFormat_url(std::string const & v) ; - static std::string ValidateAndFormat_phone(std::string const & v) ; - static std::string ValidateAndFormat_opening_hours(std::string const & v) ; - static std::string ValidateAndFormat_date(std::string const & v) ; + static std::string ValidateAndFormat_url(std::string const & v); + static std::string ValidateAndFormat_phone(std::string const & v); + static std::string ValidateAndFormat_opening_hours(std::string const & v); + static std::string ValidateAndFormat_date(std::string const & v); std::string ValidateAndFormat_ele(std::string const & v) const; - static std::string ValidateAndFormat_destination(std::string const & v) ; - static std::string ValidateAndFormat_local_ref(std::string const & v) ; - static std::string ValidateAndFormat_destination_ref(std::string const & v) ; - static std::string ValidateAndFormat_junction_ref(std::string const & v) ; - static std::string ValidateAndFormat_turn_lanes(std::string const & v) ; - static std::string ValidateAndFormat_turn_lanes_forward(std::string const & v) ; - static std::string ValidateAndFormat_turn_lanes_backward(std::string const & v) ; - static std::string ValidateAndFormat_email(std::string const & v) ; - static std::string ValidateAndFormat_postcode(std::string const & v) ; - static std::string ValidateAndFormat_flats(std::string const & v) ; - static std::string ValidateAndFormat_internet(std::string v) ; - static std::string ValidateAndFormat_height(std::string const & v) ; - static std::string ValidateAndFormat_building_levels(std::string v) ; - static std::string ValidateAndFormat_level(std::string v) ; - static std::string ValidateAndFormat_denomination(std::string const & v) ; - static std::string ValidateAndFormat_wikipedia(std::string v) ; - static std::string ValidateAndFormat_wikimedia_commons(std::string v) ; - static std::string ValidateAndFormat_panoramax(std::string v) ; + static std::string ValidateAndFormat_destination(std::string const & v); + static std::string ValidateAndFormat_local_ref(std::string const & v); + static std::string ValidateAndFormat_destination_ref(std::string const & v); + static std::string ValidateAndFormat_junction_ref(std::string const & v); + static std::string ValidateAndFormat_turn_lanes(std::string const & v); + static std::string ValidateAndFormat_turn_lanes_forward(std::string const & v); + static std::string ValidateAndFormat_turn_lanes_backward(std::string const & v); + static std::string ValidateAndFormat_email(std::string const & v); + static std::string ValidateAndFormat_postcode(std::string const & v); + static std::string ValidateAndFormat_flats(std::string const & v); + static std::string ValidateAndFormat_internet(std::string v); + static std::string ValidateAndFormat_height(std::string const & v); + static std::string ValidateAndFormat_building_levels(std::string v); + static std::string ValidateAndFormat_level(std::string v); + static std::string ValidateAndFormat_denomination(std::string const & v); + static std::string ValidateAndFormat_wikipedia(std::string v); + static std::string ValidateAndFormat_wikimedia_commons(std::string v); + static std::string ValidateAndFormat_panoramax(std::string v); std::string ValidateAndFormat_airport_iata(std::string const & v) const; static std::string ValidateAndFormat_brand(std::string const & v); std::string ValidateAndFormat_duration(std::string const & v) const; diff --git a/generator/osm2type.cpp b/generator/osm2type.cpp index f5a1a1855..09f871139 100644 --- a/generator/osm2type.cpp +++ b/generator/osm2type.cpp @@ -208,29 +208,23 @@ private: static bool IsNegative(string const & value) { for (char const * s : {"no", "none", "false"}) - { if (value == s) return true; - } return false; } static bool IsNegativeRouting(string const & value) { for (char const * s : {"use_sidepath", "separate"}) - { if (value == s) return true; - } return IsNegative(value); } static bool IsPositiveRouting(string const & value) { // This values neither positive and neither negative. for (char const * s : {"unknown", "dismount"}) - { if (value == s) return false; - } return !IsNegativeRouting(value); } @@ -250,10 +244,10 @@ public: Lit, NoFoot, YesFoot, - NoSidewalk, // no dedicated sidewalk, doesn't mean that foot is not allowed, just lower weight + NoSidewalk, // no dedicated sidewalk, doesn't mean that foot is not allowed, just lower weight NoBicycle, YesBicycle, - NoCycleway, // no dedicated cycleway, doesn't mean that bicycle is not allowed, just lower weight + NoCycleway, // no dedicated cycleway, doesn't mean that bicycle is not allowed, just lower weight BicycleBidir, SurfacePavedGood, SurfacePavedBad, @@ -281,37 +275,37 @@ public: Classificator const & c = classif(); static std::map> const kTypeToName = { - {Entrance, {"entrance"}}, - {Highway, {"highway"}}, - {Address, {"building", "address"}}, - {OneWay, {"hwtag", "oneway"}}, - {Private, {"hwtag", "private"}}, - {Lit, {"hwtag", "lit"}}, - {NoFoot, {"hwtag", "nofoot"}}, - {YesFoot, {"hwtag", "yesfoot"}}, - {NoSidewalk, {"hwtag", "nosidewalk"}}, - {NoBicycle, {"hwtag", "nobicycle"}}, - {YesBicycle, {"hwtag", "yesbicycle"}}, - {NoCycleway, {"hwtag", "nocycleway"}}, - {BicycleBidir, {"hwtag", "bidir_bicycle"}}, - {SurfacePavedGood, {"psurface", "paved_good"}}, - {SurfacePavedBad, {"psurface", "paved_bad"}}, + {Entrance, {"entrance"}}, + {Highway, {"highway"}}, + {Address, {"building", "address"}}, + {OneWay, {"hwtag", "oneway"}}, + {Private, {"hwtag", "private"}}, + {Lit, {"hwtag", "lit"}}, + {NoFoot, {"hwtag", "nofoot"}}, + {YesFoot, {"hwtag", "yesfoot"}}, + {NoSidewalk, {"hwtag", "nosidewalk"}}, + {NoBicycle, {"hwtag", "nobicycle"}}, + {YesBicycle, {"hwtag", "yesbicycle"}}, + {NoCycleway, {"hwtag", "nocycleway"}}, + {BicycleBidir, {"hwtag", "bidir_bicycle"}}, + {SurfacePavedGood, {"psurface", "paved_good"}}, + {SurfacePavedBad, {"psurface", "paved_bad"}}, {SurfaceUnpavedGood, {"psurface", "unpaved_good"}}, - {SurfaceUnpavedBad, {"psurface", "unpaved_bad"}}, - {HasParts, {"building", "has_parts"}}, - {NoCar, {"hwtag", "nocar"}}, - {YesCar, {"hwtag", "yescar"}}, - {InternetAny, {"internet_access"}}, - {Wlan, {"internet_access", "wlan"}}, - {RailwayStation, {"railway", "station"}}, - {SubwayStation, {"railway", "station", "subway"}}, - {WheelchairAny, {"wheelchair"}}, - {WheelchairYes, {"wheelchair", "yes"}}, - {BarrierGate, {"barrier", "gate"}}, - {Toll, {"hwtag", "toll"}}, - {BicycleOnedir, {"hwtag", "onedir_bicycle"}}, - {Ferry, {"route", "ferry"}}, - {ShuttleTrain, {"route", "shuttle_train"}}, + {SurfaceUnpavedBad, {"psurface", "unpaved_bad"}}, + {HasParts, {"building", "has_parts"}}, + {NoCar, {"hwtag", "nocar"}}, + {YesCar, {"hwtag", "yescar"}}, + {InternetAny, {"internet_access"}}, + {Wlan, {"internet_access", "wlan"}}, + {RailwayStation, {"railway", "station"}}, + {SubwayStation, {"railway", "station", "subway"}}, + {WheelchairAny, {"wheelchair"}}, + {WheelchairYes, {"wheelchair", "yes"}}, + {BarrierGate, {"barrier", "gate"}}, + {Toll, {"hwtag", "toll"}}, + {BicycleOnedir, {"hwtag", "onedir_bicycle"}}, + {Ferry, {"route", "ferry"}}, + {ShuttleTrain, {"route", "shuttle_train"}}, }; m_types.resize(static_cast(Count)); @@ -319,10 +313,7 @@ public: m_types[static_cast(kv.first)] = c.GetTypeByPath(kv.second); } - uint32_t Get(CachedTypes::Type t) const - { - return m_types[static_cast(t)]; - } + uint32_t Get(CachedTypes::Type t) const { return m_types[static_cast(t)]; } bool IsHighway(uint32_t t) const { @@ -336,10 +327,7 @@ public: return t == Get(Ferry) || t == Get(ShuttleTrain); } - bool IsRailwayStation(uint32_t t) const - { - return t == Get(RailwayStation); - } + bool IsRailwayStation(uint32_t t) const { return t == Get(RailwayStation); } bool IsSubwayStation(uint32_t t) const { @@ -399,10 +387,8 @@ void MatchTypes(OsmElement * p, FeatureBuilderParams & params, TypesFilterFnT co std::vector matchedTypes; for (auto const & [typeString, rule] : rules) - { if (rule.Matches(p->m_tags)) matchedTypes.push_back(typeString); - } LeaveLongestTypes(matchedTypes); @@ -436,72 +422,72 @@ string MatchCity(ms::LatLon const & ll) // Draw boundary around metro with http://bboxfinder.com (set to Lon/Lat) // City name should be equal with railway-station-subway-CITY classifier types. static std::map const cities = { - {"adana", {35.216442,36.934693,35.425525,37.065481}}, + {"adana", {35.216442, 36.934693, 35.425525, 37.065481}}, {"algiers", {2.949538, 36.676777, 3.256914, 36.826518}}, {"almaty", {76.7223358154, 43.1480920701, 77.123336792, 43.4299852362}}, {"amsterdam", {4.65682983398, 52.232846171, 5.10040283203, 52.4886341706}}, {"ankara", {32.4733, 39.723, 33.0499, 40.086}}, {"athens", {23.518075, 37.849188, 23.993853, 38.129109}}, - {"baku", {49.7315,40.319728,49.978006,40.453619}}, + {"baku", {49.7315, 40.319728, 49.978006, 40.453619}}, {"bangkok", {100.159606934, 13.4363737155, 100.909423828, 14.3069694978}}, {"barcelona", {1.94458007812, 41.2489025224, 2.29614257812, 41.5414776668}}, {"beijing", {115.894775391, 39.588757277, 117.026367187, 40.2795256688}}, {"berlin", {13.061007, 52.290099, 13.91399, 52.760803}}, {"boston", {-71.2676239014, 42.2117365893, -70.8879089355, 42.521711682}}, - {"bengalore", {77.393079,12.807501,77.806439,13.17014}}, - {"bilbao", {-3.129730,43.202673,-2.859879,43.420011}}, + {"bengalore", {77.393079, 12.807501, 77.806439, 13.17014}}, + {"bilbao", {-3.129730, 43.202673, -2.859879, 43.420011}}, {"brasilia", {-48.334467, -16.036627, -47.358264, -15.50321}}, - {"brescia", {10.128068,45.478792,10.312432,45.595665}}, + {"brescia", {10.128068, 45.478792, 10.312432, 45.595665}}, {"brussels", {4.2448425293, 50.761653413, 4.52499389648, 50.9497757762}}, {"bucharest", {25.905198, 44.304636, 26.29032, 44.588137}}, {"budapest", {18.7509155273, 47.3034470439, 19.423828125, 47.7023684666}}, {"buenos_aires", {-58.9910888672, -35.1221551064, -57.8045654297, -34.2685661867}}, - {"bursa", {28.771425,40.151234,29.297395,40.315832}}, + {"bursa", {28.771425, 40.151234, 29.297395, 40.315832}}, {"cairo", {30.3232, 29.6163, 31.9891, 30.6445}}, - {"caracas", {-67.109144,10.317298,-66.754835,10.551623}}, - {"catania", {14.94978,37.443756,15.126343,37.540221}}, - {"changchun", {124.6144,43.6274,125.9163,44.1578}}, - {"chengdu", {103.6074,30.3755,104.4863,31.0462}}, + {"caracas", {-67.109144, 10.317298, -66.754835, 10.551623}}, + {"catania", {14.94978, 37.443756, 15.126343, 37.540221}}, + {"changchun", {124.6144, 43.6274, 125.9163, 44.1578}}, + {"chengdu", {103.6074, 30.3755, 104.4863, 31.0462}}, {"chicago", {-88.3163452148, 41.3541338721, -87.1270751953, 42.2691794924}}, - {"chongqing", {105.9873,29.1071,107.0255,30.0102}}, - {"dalian", {121.284679,38.752352,121.90678,39.167744}}, + {"chongqing", {105.9873, 29.1071, 107.0255, 30.0102}}, + {"dalian", {121.284679, 38.752352, 121.90678, 39.167744}}, {"delhi", {76.8026733398, 28.3914003758, 77.5511169434, 28.9240352884}}, {"dnepro", {34.7937011719, 48.339820521, 35.2798461914, 48.6056737841}}, {"dubai", {55.01953125, 24.9337667594, 55.637512207, 25.6068559937}}, {"ekb", {60.3588867188, 56.6622647682, 61.0180664062, 57.0287738515}}, {"frankfurt", {8.36334228516, 49.937079757, 8.92364501953, 50.2296379179}}, - {"fukuoka", {130.285484,33.544873,130.51757,33.70268}}, - {"glasgow", {-4.542417,55.753178,-3.943662,55.982611}}, + {"fukuoka", {130.285484, 33.544873, 130.51757, 33.70268}}, + {"glasgow", {-4.542417, 55.753178, -3.943662, 55.982611}}, {"guangzhou", {112.560424805, 22.4313401564, 113.766174316, 23.5967112789}}, {"hamburg", {9.75860595703, 53.39151869, 10.2584838867, 53.6820686709}}, {"helsinki", {24.3237304688, 59.9989861206, 25.48828125, 60.44638186}}, - {"hiroshima", {132.256736,34.312824,132.621345,34.55182}}, - {"hongkong", {113.934086,22.150767,114.424924,22.515215}}, - {"isfahan", {51.472344,32.504644,51.865369,32.820396}}, + {"hiroshima", {132.256736, 34.312824, 132.621345, 34.55182}}, + {"hongkong", {113.934086, 22.150767, 114.424924, 22.515215}}, + {"isfahan", {51.472344, 32.504644, 51.865369, 32.820396}}, {"istanbul", {28.4155, 40.7172, 29.7304, 41.4335}}, - {"izmir", {26.953591,38.262044,27.318199,38.543469}}, + {"izmir", {26.953591, 38.262044, 27.318199, 38.543469}}, {"kazan", {48.8067626953, 55.6372985742, 49.39453125, 55.9153515154}}, {"kharkiv", {36.078138, 49.854027, 36.51107, 50.141277}}, {"kiev", {30.1354980469, 50.2050332649, 31.025390625, 50.6599083609}}, - {"kobe", {135.066888,34.617728,135.32232,34.776364}}, - {"kolkata", {88.240623,22.450324,88.458955,22.632536}}, + {"kobe", {135.066888, 34.617728, 135.32232, 34.776364}}, + {"kolkata", {88.240623, 22.450324, 88.458955, 22.632536}}, {"koln", {6.7943572998, 50.8445380881, 7.12669372559, 51.0810964366}}, - {"kunming", {102.0983,24.3319,103.5969,25.7119}}, + {"kunming", {102.0983, 24.3319, 103.5969, 25.7119}}, {"kyoto", {135.619598, 34.874916, 135.878442, 35.113709}}, - {"lausanne", {6.583868,46.504301,6.720813,46.602578}}, - {"lille", {2.789132,50.441626,3.329113,50.794609}}, + {"lausanne", {6.583868, 46.504301, 6.720813, 46.602578}}, + {"lille", {2.789132, 50.441626, 3.329113, 50.794609}}, {"lima", {-77.2750854492, -12.3279274859, -76.7999267578, -11.7988014362}}, {"lisboa", {-9.42626953125, 38.548165423, -8.876953125, 38.9166815364}}, {"london", {-0.4833984375, 51.3031452592, 0.2197265625, 51.6929902115}}, {"la", {-118.944112, 32.806553, -117.644787, 34.822766}}, {"lyon", {4.5741, 45.5842, 5.1603, 45.9393}}, {"madrid", {-4.00451660156, 40.1536868578, -3.32885742188, 40.6222917831}}, - {"malaga", {-5.611777,36.310352,-3.765967,37.282445}}, - {"manila", {120.936229,14.550825,121.026167,14.639547}}, - {"maracaibo", {-71.812942,10.570632,-71.581199,10.758897}}, - {"mashhad", {59.302159,36.13267,59.83225,36.530945}}, + {"malaga", {-5.611777, 36.310352, -3.765967, 37.282445}}, + {"manila", {120.936229, 14.550825, 121.026167, 14.639547}}, + {"maracaibo", {-71.812942, 10.570632, -71.581199, 10.758897}}, + {"mashhad", {59.302159, 36.13267, 59.83225, 36.530945}}, {"mecca", {39.663307, 21.274985, 40.056236, 21.564195}}, - {"medellin", {-75.719423,6.162617,-75.473408,6.376421}}, + {"medellin", {-75.719423, 6.162617, -75.473408, 6.376421}}, {"mexico", {-99.3630981445, 19.2541083164, -98.879699707, 19.5960192403}}, {"milan", {9.02252197266, 45.341528405, 9.35760498047, 45.5813674681}}, {"minsk", {27.2845458984, 53.777934972, 27.8393554688, 54.0271334441}}, @@ -509,43 +495,43 @@ string MatchCity(ms::LatLon const & ll) {"moscow", {36.9964599609, 55.3962717136, 38.1884765625, 56.1118730004}}, {"mumbai", {72.7514648437, 18.8803004445, 72.9862976074, 19.2878132403}}, {"munchen", {11.3433837891, 47.9981928195, 11.7965698242, 48.2730267576}}, - {"nagoya", {136.791969,35.025951,137.060899,35.260229}}, + {"nagoya", {136.791969, 35.025951, 137.060899, 35.260229}}, {"newyork", {-74.4104003906, 40.4134960497, -73.4600830078, 41.1869224229}}, {"nnov", {43.6431884766, 56.1608472541, 44.208984375, 56.4245355509}}, {"novosibirsk", {82.4578857422, 54.8513152597, 83.2983398438, 55.2540770671}}, {"osaka", {134.813232422, 34.1981730963, 136.076660156, 35.119908571}}, {"oslo", {10.3875732422, 59.7812868211, 10.9286499023, 60.0401604652}}, - {"palma", {2.556669,39.503227,2.841284,39.670445}}, + {"palma", {2.556669, 39.503227, 2.841284, 39.670445}}, {"panama", {-79.633827, 8.880788, -79.367367, 9.149179}}, {"paris", {2.09014892578, 48.6637569323, 2.70538330078, 49.0414689141}}, {"philadelphia", {-75.276761, 39.865446, -74.964493, 40.137768}}, - {"porto", {-8.758979,41.095783,-8.540001,41.378495}}, + {"porto", {-8.758979, 41.095783, -8.540001, 41.378495}}, {"pyongyang", {125.48888, 38.780932, 126.12748, 39.298738}}, {"qingdao", {119.708, 35.668, 120.758, 36.480}}, - {"rennes", {-2.28897,47.934093,-1.283944,48.379636}}, + {"rennes", {-2.28897, 47.934093, -1.283944, 48.379636}}, {"rio", {-43.4873199463, -23.0348745407, -43.1405639648, -22.7134898498}}, {"roma", {12.3348999023, 41.7672146942, 12.6397705078, 42.0105298189}}, {"rotterdam", {3.940749, 51.842118, 4.601808, 52.004528}}, {"samara", {50.001145, 53.070867, 50.434992, 53.339216}}, {"santiago", {-71.015625, -33.8133843291, -70.3372192383, -33.1789392606}}, - {"santo_domingo", {-70.029669,18.390645,-69.831571,18.573966}}, + {"santo_domingo", {-70.029669, 18.390645, -69.831571, 18.573966}}, {"saopaulo", {-46.9418334961, -23.8356009866, -46.2963867187, -23.3422558351}}, - {"sapporo", {141.160343,42.945651,141.577136,43.243986}}, - {"sendai", {140.469472,38.050849,141.260304,38.454699}}, + {"sapporo", {141.160343, 42.945651, 141.577136, 43.243986}}, + {"sendai", {140.469472, 38.050849, 141.260304, 38.454699}}, {"seoul", {126.540527344, 37.3352243593, 127.23815918, 37.6838203267}}, {"sf", {-122.72277832, 37.1690715771, -121.651611328, 38.0307856938}}, {"shanghai", {119.849853516, 30.5291450367, 122.102050781, 32.1523618947}}, - {"shenzhen", {113.747866,22.464779,114.477038,22.816068}}, - {"shiraz", {52.382254,29.498738,52.667513,29.840346}}, + {"shenzhen", {113.747866, 22.464779, 114.477038, 22.816068}}, + {"shiraz", {52.382254, 29.498738, 52.667513, 29.840346}}, {"singapore", {103.624420166, 1.21389843409, 104.019927979, 1.45278619819}}, {"sofia", {23.195085, 42.574041, 23.503569, 42.835375}}, {"spb", {29.70703125, 59.5231755354, 31.3110351562, 60.2725145948}}, {"stockholm", {17.5726318359, 59.1336814082, 18.3966064453, 59.5565918857}}, {"stuttgart", {9.0877532959, 48.7471343254, 9.29306030273, 48.8755544436}}, {"sydney", {150.42755127, -34.3615762875, 151.424560547, -33.4543597895}}, - {"tabriz", {46.18432,38.015584,46.4126,38.15366}}, + {"tabriz", {46.18432, 38.015584, 46.4126, 38.15366}}, {"taipei", {121.368713379, 24.9312761454, 121.716156006, 25.1608229799}}, - {"taoyuan", {110.8471,28.4085,111.6109,29.4019}}, + {"taoyuan", {110.8471, 28.4085, 111.6109, 29.4019}}, {"tashkent", {69.12171, 41.163421, 69.476967, 41.398638}}, {"tbilisi", {44.596922, 41.619315, 45.019694, 41.843421}}, {"tehran", {50.6575, 35.353216, 52.007904, 35.974672}}, @@ -555,17 +541,15 @@ string MatchCity(ms::LatLon const & ll) {"vienna", {16.0894775391, 48.0633965378, 16.6387939453, 48.3525987075}}, {"warszawa", {20.7202148438, 52.0322181041, 21.3024902344, 52.4091212523}}, {"washington", {-77.4920654297, 38.5954071994, -76.6735839844, 39.2216149801}}, - {"wuhan", {113.6925,29.972,115.0769,31.3622}}, + {"wuhan", {113.6925, 29.972, 115.0769, 31.3622}}, {"yerevan", {44.359899, 40.065411, 44.645352, 40.26398}}, {"yokohama", {139.464781, 35.312501, 139.776935, 35.592738}}, }; m2::PointD const pt(ll.m_lon, ll.m_lat); for (auto const & city : cities) - { if (city.second.IsPointInside(pt)) return city.first; - } return {}; } @@ -573,17 +557,16 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) { string surface; string smoothness; - double surfaceGrade = 2; // default is "normal" + double surfaceGrade = 2; // default is "normal" string highway; string trackGrade; for (auto const & tag : p->m_tags) - { if (tag.m_key == "surface") surface = tag.m_value; else if (tag.m_key == "smoothness") smoothness = tag.m_value; - else if (tag.m_key == "surface:grade") // discouraged, 25k usages as of 2024 + else if (tag.m_key == "surface:grade") // discouraged, 25k usages as of 2024 (void)strings::to_double(tag.m_value, surfaceGrade); else if (tag.m_key == "tracktype") trackGrade = tag.m_value; @@ -591,36 +574,46 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) highway = tag.m_value; else if (tag.m_key == "4wd_only" && (tag.m_value == "yes" || tag.m_value == "recommended")) return "unpaved_bad"; - } // According to https://wiki.openstreetmap.org/wiki/Key:surface static base::StringIL pavedSurfaces = { - "asphalt", "cobblestone", "chipseal", "concrete", "grass_paver", "stone", - "metal", "paved", "paving_stones", "sett", "brick", "bricks", "unhewn_cobblestone", "wood" - }; + "asphalt", "cobblestone", "chipseal", "concrete", "grass_paver", "stone", "metal", "paved", + "paving_stones", "sett", "brick", "bricks", "unhewn_cobblestone", "wood"}; // All not explicitly listed surface types are considered unpaved good, e.g. "compacted", "fine_gravel". - static base::StringIL badSurfaces = { - "cobblestone", "dirt", "earth", "soil", "grass", "gravel", "ground", "metal", "mud", "rock", "stone", "unpaved", - "pebblestone", "sand", "sett", "brick", "bricks", "snow", "stepping_stones", "unhewn_cobblestone", - "grass_paver", "wood", "woodchips" - }; + static base::StringIL badSurfaces = {"cobblestone", + "dirt", + "earth", + "soil", + "grass", + "gravel", + "ground", + "metal", + "mud", + "rock", + "stone", + "unpaved", + "pebblestone", + "sand", + "sett", + "brick", + "bricks", + "snow", + "stepping_stones", + "unhewn_cobblestone", + "grass_paver", + "wood", + "woodchips"}; - static base::StringIL veryBadSurfaces = { - "dirt", "earth", "soil", "grass", "ground", "mud", "rock", "sand", "snow", - "stepping_stones", "woodchips" - }; + static base::StringIL veryBadSurfaces = {"dirt", "earth", "soil", "grass", "ground", "mud", + "rock", "sand", "snow", "stepping_stones", "woodchips"}; // surface=tartan/artificial_turf/clay are not used for highways (but for sport pitches etc). - static base::StringIL veryBadSmoothness = { - "very_bad", "horrible", "very_horrible", "impassable", - "robust_wheels", "high_clearance", "off_road_wheels", "rough" - }; + static base::StringIL veryBadSmoothness = {"very_bad", "horrible", "very_horrible", "impassable", + "robust_wheels", "high_clearance", "off_road_wheels", "rough"}; - static base::StringIL midSmoothness = { - "unknown", "intermediate" - }; + static base::StringIL midSmoothness = {"unknown", "intermediate"}; auto const Has = [](base::StringIL const & il, string const & v) { @@ -648,17 +641,15 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) string const kPath = "path"; if (highway == kFootway || highway == kPath || highway == kCycleway) { - static base::StringIL goodPathSmoothness = { - "excellent", "good", "very_good", "intermediate" - }; + static base::StringIL goodPathSmoothness = {"excellent", "good", "very_good", "intermediate"}; bool const hasQuality = !smoothness.empty() || !trackGrade.empty(); bool const isGood = (smoothness.empty() || Has(goodPathSmoothness, smoothness)) && (trackGrade.empty() || trackGrade == "grade1" || trackGrade == "grade2"); bool const isMed = (smoothness == "intermediate" || trackGrade == "grade2"); - bool const hasTrailTags = p->HasTag("sac_scale") || p->HasTag("trail_visibility") || - p->HasTag("ford") || p->HasTag("informal", "yes"); - bool const hasUrbanTags = p->HasTag("footway") || p->HasTag("segregated") || - (p->HasTag("lit") && !p->HasTag("lit", "no")); + bool const hasTrailTags = + p->HasTag("sac_scale") || p->HasTag("trail_visibility") || p->HasTag("ford") || p->HasTag("informal", "yes"); + bool const hasUrbanTags = + p->HasTag("footway") || p->HasTag("segregated") || (p->HasTag("lit") && !p->HasTag("lit", "no")); bool isFormed = !surface.empty() && Has(pavedSurfaces, surface); // Treat "compacted" and "fine_gravel" as formed when in good or default quality. @@ -671,7 +662,8 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) auto const ConvertTo = [&](string const & newType) { // TODO(@pastk): remove redundant tags, e.g. if converted to cycleway then remove "bicycle=yes". - LOG(LDEBUG, ("Convert", DebugPrintID(*p), "to", newType, isFormed, isGood, hasTrailTags, hasUrbanTags, p->m_tags)); + LOG(LDEBUG, + ("Convert", DebugPrintID(*p), "to", newType, isFormed, isGood, hasTrailTags, hasUrbanTags, p->m_tags)); p->UpdateTag("highway", newType); }; @@ -683,23 +675,18 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) if (toPath ? !isFormed : isFormed) ConvertTo(toType); } - else + else if (hasQuality && !isMed) { - if (hasQuality && !isMed) - { - if (toPath ? !isGood : isGood) - ConvertTo(toType); - } - else if (toPath ? (hasTrailTags && !hasUrbanTags) : (!hasTrailTags && hasUrbanTags)) + if (toPath ? !isGood : isGood) ConvertTo(toType); } + else if (toPath ? (hasTrailTags && !hasUrbanTags) : (!hasTrailTags && hasUrbanTags)) + ConvertTo(toType); }; if (highway == kCycleway) { - static base::StringIL segregatedSidewalks = { - "right", "left", "both" - }; + static base::StringIL segregatedSidewalks = {"right", "left", "both"}; if (p->HasTag("segregated", "yes") || Has(segregatedSidewalks, p->GetTag("sidewalk"))) { LOG(LDEBUG, ("Add a separate footway to", DebugPrintID(*p), p->m_tags)); @@ -713,7 +700,7 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) // A non-segregated shared footway/cycleway. ConvertTo(kFootway); p->AddTag("bicycle", "designated"); - ConvertPathOrFootway(true /* toPath */); // In case its unpaved. + ConvertPathOrFootway(true /* toPath */); // In case its unpaved. } } } @@ -767,12 +754,10 @@ string DetermineSurfaceAndHighwayType(OsmElement * p) if (Has(midSmoothness, smoothness)) { if (isPaved) - { if (highway == "motorway" || highway == "trunk") return {}; else isGood = false; - } else isGood = !Has(badSurfaces, surface); } @@ -800,14 +785,12 @@ string DeterminePathGrade(OsmElement * p) if (scale.empty() && visibility.empty()) return {}; - static base::StringIL expertScales = { - "alpine_hiking", "demanding_alpine_hiking", "difficult_alpine_hiking" - }; + static base::StringIL expertScales = {"alpine_hiking", "demanding_alpine_hiking", "difficult_alpine_hiking"}; static base::StringIL difficultVisibilities = { - "bad", "poor" // poor is not official + "bad", "poor" // poor is not official }; static base::StringIL expertVisibilities = { - "horrible", "no", "very_bad" // very_bad is not official + "horrible", "no", "very_bad" // very_bad is not official }; if (base::IsExist(expertScales, scale) || base::IsExist(expertVisibilities, visibility)) @@ -1033,10 +1016,8 @@ bool IsCarDesignatedHighway(uint32_t type) { case ftypes::IsWayChecker::Motorway: case ftypes::IsWayChecker::Regular: - case ftypes::IsWayChecker::Minors: - return true; - default: - return false; + case ftypes::IsWayChecker::Minors: return true; + default: return false; } } @@ -1054,10 +1035,7 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) { static CachedTypes const types; - auto const AddParam = [¶ms](ftype::CachedTypes::Type type) - { - params.AddType(types.Get(type)); - }; + auto const AddParam = [¶ms](ftype::CachedTypes::Type type) { params.AddType(types.Get(type)); }; if (!params.house.IsEmpty()) { @@ -1068,8 +1046,7 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) { /// @todo Make a function like HaveAddressLikeType ? ftype::TruncValue(t, 1); - if (t != types.Get(CachedTypes::WheelchairAny) && - t != types.Get(CachedTypes::InternetAny)) + if (t != types.Get(CachedTypes::WheelchairAny) && t != types.Get(CachedTypes::InternetAny)) { hasSuitableType = true; break; @@ -1093,14 +1070,13 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) } } } - exit:; + exit:; } } // Process yes/no tags. TagProcessor(p).ApplyRules({ - {"wheelchair", "designated", - [&AddParam] { AddParam(CachedTypes::WheelchairYes); }}, + {"wheelchair", "designated", [&AddParam] { AddParam(CachedTypes::WheelchairYes); }}, {"wifi", "~", [&AddParam] { AddParam(CachedTypes::Wlan); }}, }); @@ -1116,8 +1092,20 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) // Foot attr is stronger than Sidewalk, // Bicycle attr is stronger than Cycleway, // MotorCar attr is stronger than MotorVehicle. - struct Flags { enum Type { Foot = 0, Sidewalk, Bicycle, Cycleway, MotorCar, MotorVehicle, Count }; }; - int flags[Flags::Count] = {0}; // 1 for Yes, -1 for No, 0 for Undefined + struct Flags + { + enum Type + { + Foot = 0, + Sidewalk, + Bicycle, + Cycleway, + MotorCar, + MotorVehicle, + Count + }; + }; + int flags[Flags::Count] = {0}; // 1 for Yes, -1 for No, 0 for Undefined for (uint32_t const vType : vTypes) { @@ -1130,31 +1118,34 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) {"oneway", "yes", [&addOneway] { addOneway = true; }}, {"oneway", "1", [&addOneway] { addOneway = true; }}, {"oneway", "-1", - [&addOneway, ¶ms] { - addOneway = true; - params.SetReversedGeometry(true); - }}, + [&addOneway, ¶ms] + { + addOneway = true; + params.SetReversedGeometry(true); + }}, {"oneway", "!", [&noOneway] { noOneway = true; }}, -// Unlike "roundabout", "circular" is not assumed to force oneway=yes -// (https://wiki.openstreetmap.org/wiki/Tag:junction%3Dcircular), but! -// There are a lot of junction=circular without oneway tag, which is a mapping error (run overpass under England). -// And most of this junctions are assumed to be oneway. + // Unlike "roundabout", "circular" is not assumed to force oneway=yes + // (https://wiki.openstreetmap.org/wiki/Tag:junction%3Dcircular), but! + // There are a lot of junction=circular without oneway tag, which is a mapping error (run overpass under + // England). And most of this junctions are assumed to be oneway. {"junction", "circular", [&addOneway] { addOneway = true; }}, {"junction", "roundabout", [&addOneway] { addOneway = true; }}, -// Add faux oneways as access keys don't support forward/backward modifiers -// Bicycles are not motor vehicles, so don't add oneways for them. + // Add faux oneways as access keys don't support forward/backward modifiers + // Bicycles are not motor vehicles, so don't add oneways for them. {"motor_vehicle:backward", "no", [&addOneway] { addOneway = true; }}, {"vehicle:backward", "no", [&addOneway] { addOneway = true; }}, {"motor_vehicle:forward", "no", - [&addOneway, ¶ms] { - addOneway = true; - params.SetReversedGeometry(true); - }}, + [&addOneway, ¶ms] + { + addOneway = true; + params.SetReversedGeometry(true); + }}, {"vehicle:forward", "no", - [&addOneway, ¶ms] { - addOneway = true; - params.SetReversedGeometry(true); - }}, + [&addOneway, ¶ms] + { + addOneway = true; + params.SetReversedGeometry(true); + }}, {"motor_vehicle:backward", "no", [&AddParam] { AddParam(CachedTypes::BicycleBidir); }}, {"motor_vehicle:forward", "no", [&AddParam] { AddParam(CachedTypes::BicycleBidir); }}, {"access", "private", [&AddParam] { AddParam(CachedTypes::Private); }}, @@ -1204,9 +1195,8 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) if (addOneway && !noOneway) params.AddType(types.Get(CachedTypes::OneWay)); - auto const ApplyFlag = [&flags, &AddParam](Flags::Type f, CachedTypes::Type yes, - CachedTypes::Type no0, CachedTypes::Type no1, - bool isDesignated) + auto const ApplyFlag = [&flags, &AddParam](Flags::Type f, CachedTypes::Type yes, CachedTypes::Type no0, + CachedTypes::Type no1, bool isDesignated) { if (flags[f] == 1 && !isDesignated) AddParam(yes); @@ -1238,10 +1228,12 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) {"foot", "~", [&AddParam] { AddParam(CachedTypes::YesFoot); }}, {"ferry", "footway", [&AddParam] { AddParam(CachedTypes::YesFoot); }}, {"ferry", "pedestrian", [&AddParam] { AddParam(CachedTypes::YesFoot); }}, - {"ferry", "path", [¶ms] { - params.AddType(types.Get(CachedTypes::YesFoot)); - params.AddType(types.Get(CachedTypes::YesBicycle)); - }}, + {"ferry", "path", + [¶ms] + { + params.AddType(types.Get(CachedTypes::YesFoot)); + params.AddType(types.Get(CachedTypes::YesBicycle)); + }}, {"bicycle", "!", [&AddParam] { AddParam(CachedTypes::NoBicycle); }}, {"bicycle", "~", [&AddParam] { AddParam(CachedTypes::YesBicycle); }}, @@ -1277,13 +1269,11 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) {"network", "New York City Subway", [¶ms] { params.SetRwSubwayType("newyork"); }}, {"network", "Московский метрополитен", [¶ms] { params.SetRwSubwayType("moscow"); }}, {"network", "Петербургский метрополитен", [¶ms] { params.SetRwSubwayType("spb"); }}, - {"network", "Verkehrsverbund Berlin-Brandenburg", - [¶ms] { params.SetRwSubwayType("berlin"); }}, + {"network", "Verkehrsverbund Berlin-Brandenburg", [¶ms] { params.SetRwSubwayType("berlin"); }}, {"network", "Минский метрополитен", [¶ms] { params.SetRwSubwayType("minsk"); }}, {"network", "Київський метрополітен", [¶ms] { params.SetRwSubwayType("kiev"); }}, - {"operator", "КП «Київський метрополітен»", - [¶ms] { params.SetRwSubwayType("kiev"); }}, + {"operator", "КП «Київський метрополітен»", [¶ms] { params.SetRwSubwayType("kiev"); }}, {"network", "RATP", [¶ms] { params.SetRwSubwayType("paris"); }}, {"network", "Metro de Barcelona", [¶ms] { params.SetRwSubwayType("barcelona"); }}, @@ -1310,8 +1300,8 @@ void PostprocessElement(OsmElement * p, FeatureBuilderParams & params) } } // namespace -void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, - TypesFilterFnT const & filterType, CalculateOriginFnT const & calcOrg) +void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, TypesFilterFnT const & filterType, + CalculateOriginFnT const & calcOrg) { // At this point, some preprocessing could've been done to the tags already // in TranslatorInterface::Preprocess(), e.g. converting tags according to replaced_tags.txt. @@ -1328,89 +1318,60 @@ void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, std::string houseName, houseNumber, conscriptionHN, streetHN, addrPostcode; std::string addrCity, addrSuburb; feature::AddressData addr; - TagProcessor(p).ApplyRules( + TagProcessor(p).ApplyRules({ + {"addr:housenumber", "*", [&houseNumber](string & k, string & v) { houseNumber = std::move(v); }}, + {"addr:conscriptionnumber", "*", [&conscriptionHN](string & k, string & v) { conscriptionHN = std::move(v); }}, + {"addr:provisionalnumber", "*", [&conscriptionHN](string & k, string & v) { conscriptionHN = std::move(v); }}, + {"addr:streetnumber", "*", [&streetHN](string & k, string & v) { streetHN = std::move(v); }}, + {"contact:housenumber", "*", + [&houseNumber](string & k, string & v) { - {"addr:housenumber", "*", [&houseNumber](string & k, string & v) - { - houseNumber = std::move(v); - }}, - {"addr:conscriptionnumber", "*", [&conscriptionHN](string & k, string & v) - { - conscriptionHN = std::move(v); - }}, - {"addr:provisionalnumber", "*", [&conscriptionHN](string & k, string & v) - { - conscriptionHN = std::move(v); - }}, - {"addr:streetnumber", "*", [&streetHN](string & k, string & v) - { - streetHN = std::move(v); - }}, - {"contact:housenumber", "*", [&houseNumber](string & k, string & v) - { - if (houseNumber.empty()) - houseNumber = std::move(v); - }}, - {"addr:housename", "*", [&houseName](string & k, string & v) - { - houseName = std::move(v); - }}, - {"addr:street", "*", [&addr](string & k, string & v) - { - addr.Set(feature::AddressData::Type::Street, std::move(v)); - }}, - {"contact:street", "*", [&addr](string & k, string & v) - { - addr.SetIfAbsent(feature::AddressData::Type::Street, std::move(v)); - }}, - {"addr:place", "*", [&addr](string & k, string & v) - { - addr.Set(feature::AddressData::Type::Place, std::move(v)); - }}, - {"addr:city", "*", [&addrCity](string & k, string & v) - { - addrCity = std::move(v); - }}, - {"addr:suburb", "*", [&addrSuburb](string & k, string & v) - { - addrSuburb = std::move(v); - }}, - {"addr:postcode", "*", [&addrPostcode](string & k, string & v) - { - addrPostcode = std::move(v); - }}, - {"postal_code", "*", [&addrPostcode](string & k, string & v) - { - addrPostcode = std::move(v); - }}, - {"contact:postcode", "*", [&addrPostcode](string & k, string & v) - { - if (addrPostcode.empty()) - addrPostcode = std::move(v); - }}, - {"population", "*", [¶ms](string & k, string & v) - { - // Get population rank. - uint64_t const population = generator::osm_element::GetPopulation(v); - if (population != 0) - params.rank = feature::PopulationToRank(population); - }}, - {"ref", "*", [¶ms](string & k, string & v) - { - // Get reference; its used for selected types only, see FeatureBuilder::PreSerialize(). - params.ref = std::move(v); - }}, - {"layer", "*", [¶ms](string & k, string & v) - { - // Get layer. - if (params.layer == feature::LAYER_EMPTY) - { - // atoi error value (0) should match empty layer constant. - static_assert(feature::LAYER_EMPTY == 0); - params.layer = atoi(v.c_str()); - params.layer = math::Clamp(params.layer, int8_t{feature::LAYER_LOW}, int8_t{feature::LAYER_HIGH}); - } - }}, + if (houseNumber.empty()) + houseNumber = std::move(v); + }}, + {"addr:housename", "*", [&houseName](string & k, string & v) { houseName = std::move(v); }}, + {"addr:street", "*", + [&addr](string & k, string & v) { addr.Set(feature::AddressData::Type::Street, std::move(v)); }}, + {"contact:street", "*", + [&addr](string & k, string & v) { addr.SetIfAbsent(feature::AddressData::Type::Street, std::move(v)); }}, + {"addr:place", "*", + [&addr](string & k, string & v) { addr.Set(feature::AddressData::Type::Place, std::move(v)); }}, + {"addr:city", "*", [&addrCity](string & k, string & v) { addrCity = std::move(v); }}, + {"addr:suburb", "*", [&addrSuburb](string & k, string & v) { addrSuburb = std::move(v); }}, + {"addr:postcode", "*", [&addrPostcode](string & k, string & v) { addrPostcode = std::move(v); }}, + {"postal_code", "*", [&addrPostcode](string & k, string & v) { addrPostcode = std::move(v); }}, + {"contact:postcode", "*", + [&addrPostcode](string & k, string & v) + { + if (addrPostcode.empty()) + addrPostcode = std::move(v); + }}, + {"population", "*", + [¶ms](string & k, string & v) + { + // Get population rank. + uint64_t const population = generator::osm_element::GetPopulation(v); + if (population != 0) + params.rank = feature::PopulationToRank(population); + }}, + {"ref", "*", + [¶ms](string & k, string & v) + { + // Get reference; its used for selected types only, see FeatureBuilder::PreSerialize(). + params.ref = std::move(v); + }}, + {"layer", "*", + [¶ms](string & k, string & v) + { + // Get layer. + if (params.layer == feature::LAYER_EMPTY) + { + // atoi error value (0) should match empty layer constant. + static_assert(feature::LAYER_EMPTY == 0); + params.layer = atoi(v.c_str()); + params.layer = math::Clamp(params.layer, int8_t{feature::LAYER_LOW}, int8_t{feature::LAYER_HIGH}); + } + }}, }); // OSM consistency check with house numbers. @@ -1424,7 +1385,8 @@ void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, auto i = houseNumber.find('/'); if (i == std::string::npos) { - LOG(LWARNING, (kHNLogTag, "Override housenumber for:", DebugPrintID(*p), houseNumber, conscriptionHN, streetHN)); + LOG(LWARNING, + (kHNLogTag, "Override housenumber for:", DebugPrintID(*p), houseNumber, conscriptionHN, streetHN)); houseNumber = conscriptionHN + "/" + streetHN; } } @@ -1450,6 +1412,7 @@ void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, class CityBBox { std::vector m_rects; + public: CityBBox() { @@ -1462,10 +1425,8 @@ void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, { auto const ll = mercator::ToLatLon(pt); for (auto const & r : m_rects) - { if (r.IsPointInside({ll.m_lon, ll.m_lat})) return true; - } return false; } }; @@ -1485,17 +1446,14 @@ void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, params.SetHouseNumberAndHouseName(std::move(houseNumber), std::move(houseName)); // Fetch piste:name and piste:ref if there are no other name/ref values. - TagProcessor(p).ApplyRules( + TagProcessor(p).ApplyRules({ + {"piste:ref", "*", + [¶ms](string & k, string & v) { - {"piste:ref", "*", [¶ms](string & k, string & v) - { - if (params.ref.empty()) - params.ref = std::move(v); - }}, - {"piste:name", "*", [¶ms](string & k, string & v) - { - params.SetDefaultNameIfEmpty(std::move(v)); - }}, + if (params.ref.empty()) + params.ref = std::move(v); + }}, + {"piste:name", "*", [¶ms](string & k, string & v) { params.SetDefaultNameIfEmpty(std::move(v)); }}, }); // Stage4: Match tags to classificator feature types via mapcss-mapping.csv. diff --git a/generator/osm2type.hpp b/generator/osm2type.hpp index 83c37e599..7647d735b 100644 --- a/generator/osm2type.hpp +++ b/generator/osm2type.hpp @@ -11,12 +11,12 @@ struct OsmElement; namespace ftype { -using TypesFilterFnT = std::function; -using CalculateOriginFnT = std::function (OsmElement const * p)>; +using TypesFilterFnT = std::function; +using CalculateOriginFnT = std::function(OsmElement const * p)>; /// Get the types, name and layer for feature with the tree of tags. /// @param[in] calcOrg Not empty in generator, maybe empty in unit tests. void GetNameAndType(OsmElement * p, FeatureBuilderParams & params, TypesFilterFnT const & filterType = &feature::IsUsefulType, CalculateOriginFnT const & calcOrg = {}); -} // namespace ftype +} // namespace ftype diff --git a/generator/osm_element.cpp b/generator/osm_element.cpp index 62f2a7104..27872da3c 100644 --- a/generator/osm_element.cpp +++ b/generator/osm_element.cpp @@ -4,8 +4,8 @@ #include "base/logging.hpp" #include "base/math.hpp" -#include "base/string_utils.hpp" #include "base/stl_helpers.hpp" +#include "base/string_utils.hpp" #include @@ -13,24 +13,15 @@ std::string DebugPrint(OsmElement::EntityType type) { switch (type) { - case OsmElement::EntityType::Unknown: - return "unknown"; - case OsmElement::EntityType::Bounds: - return "bounds"; - case OsmElement::EntityType::Way: - return "way"; - case OsmElement::EntityType::Tag: - return "tag"; - case OsmElement::EntityType::Relation: - return "relation"; - case OsmElement::EntityType::Osm: - return "osm"; - case OsmElement::EntityType::Node: - return "node"; - case OsmElement::EntityType::Nd: - return "nd"; - case OsmElement::EntityType::Member: - return "member"; + case OsmElement::EntityType::Unknown: return "unknown"; + case OsmElement::EntityType::Bounds: return "bounds"; + case OsmElement::EntityType::Way: return "way"; + case OsmElement::EntityType::Tag: return "tag"; + case OsmElement::EntityType::Relation: return "relation"; + case OsmElement::EntityType::Osm: return "osm"; + case OsmElement::EntityType::Node: return "node"; + case OsmElement::EntityType::Nd: return "nd"; + case OsmElement::EntityType::Member: return "member"; } UNREACHABLE(); } @@ -38,15 +29,14 @@ std::string DebugPrint(OsmElement::EntityType type) namespace { std::string_view constexpr kUselessKeys[] = { - "created_by", "source", "odbl", "note", "fixme", "iemv", + "created_by", "source", "odbl", "note", "fixme", "iemv", - // Skip tags for speedup, now we don't use it - "not:", "artist_name", "whitewater",// https://wiki.openstreetmap.org/wiki/Whitewater_sports + // Skip tags for speedup, now we don't use it + "not:", "artist_name", "whitewater", // https://wiki.openstreetmap.org/wiki/Whitewater_sports - // In future we can use this tags for improve our search - "nat_name", "reg_name", "loc_name", "lock_name", "local_name", "short_name", "official_name" -}; -} // namespace + // In future we can use this tags for improve our search + "nat_name", "reg_name", "loc_name", "lock_name", "local_name", "short_name", "official_name"}; +} // namespace void OsmElement::AddTag(std::string_view key, std::string_view value) { @@ -58,10 +48,8 @@ void OsmElement::AddTag(std::string_view key, std::string_view value) return; for (auto const & useless : kUselessKeys) - { if (key == useless) return; - } m_tags.emplace_back(key, value); } @@ -83,10 +71,7 @@ void OsmElement::Validate() struct MembersCompare { - bool operator()(Member const * l, Member const * r) const - { - return *l < *r; - } + bool operator()(Member const * l, Member const * r) const { return *l < *r; } }; // Don't to change the initial order of m_members, so make intermediate set. @@ -105,10 +90,8 @@ void OsmElement::Validate() if (theSet.size() != m_members.size()) { - m_members.erase(std::remove_if(m_members.begin(), m_members.end(), [](Member const & m) - { - return m.m_ref == 0; - }), m_members.end()); + m_members.erase(std::remove_if(m_members.begin(), m_members.end(), [](Member const & m) { return m.m_ref == 0; }), + m_members.end()); } } @@ -139,9 +122,7 @@ std::string OsmElement::ToString(std::string const & shift) const ss << "Node: " << m_id << " (" << std::fixed << std::setw(7) << m_lat << ", " << m_lon << ")" << " tags: " << m_tags.size(); break; - case EntityType::Nd: - ss << "Nd ref: " << m_ref; - break; + case EntityType::Nd: ss << "Nd ref: " << m_ref; break; case EntityType::Way: ss << "Way: " << m_id << " nds: " << m_nodes.size() << " tags: " << m_tags.size(); if (!m_nodes.empty()) @@ -162,15 +143,11 @@ std::string OsmElement::ToString(std::string const & shift) const ss << shift2 << e.m_ref << " " << DebugPrint(e.m_type) << " " << e.m_role; } break; - case EntityType::Tag: - ss << "Tag: " << m_k << " = " << m_v; - break; + case EntityType::Tag: ss << "Tag: " << m_k << " = " << m_v; break; case EntityType::Member: ss << "Member: " << m_ref << " type: " << DebugPrint(m_memberType) << " role: " << m_role; break; - default: - UNREACHABLE(); - break; + default: UNREACHABLE(); break; } if (!m_tags.empty()) @@ -185,18 +162,11 @@ std::string OsmElement::ToString(std::string const & shift) const bool OsmElement::operator==(OsmElement const & other) const { - return m_type == other.m_type - && m_id == other.m_id - && AlmostEqualAbs(m_lon, other.m_lon, mercator::kPointEqualityEps) - && AlmostEqualAbs(m_lat, other.m_lat, mercator::kPointEqualityEps) - && m_ref == other.m_ref - && m_k == other.m_k - && m_v == other.m_v - && m_memberType == other.m_memberType - && m_role == other.m_role - && m_nodes == other.m_nodes - && m_members == other.m_members - && m_tags == other.m_tags; + return m_type == other.m_type && m_id == other.m_id && + AlmostEqualAbs(m_lon, other.m_lon, mercator::kPointEqualityEps) && + AlmostEqualAbs(m_lat, other.m_lat, mercator::kPointEqualityEps) && m_ref == other.m_ref && m_k == other.m_k && + m_v == other.m_v && m_memberType == other.m_memberType && m_role == other.m_role && m_nodes == other.m_nodes && + m_members == other.m_members && m_tags == other.m_tags; } std::string OsmElement::GetTag(std::string const & key) const @@ -221,15 +191,10 @@ base::GeoObjectId GetGeoObjectId(OsmElement const & element) { switch (element.m_type) { - case OsmElement::EntityType::Node: - return base::MakeOsmNode(element.m_id); - case OsmElement::EntityType::Way: - return base::MakeOsmWay(element.m_id); - case OsmElement::EntityType::Relation: - return base::MakeOsmRelation(element.m_id); - default: - UNREACHABLE(); - return base::GeoObjectId(); + case OsmElement::EntityType::Node: return base::MakeOsmNode(element.m_id); + case OsmElement::EntityType::Way: return base::MakeOsmWay(element.m_id); + case OsmElement::EntityType::Relation: return base::MakeOsmRelation(element.m_id); + default: UNREACHABLE(); return base::GeoObjectId(); } } diff --git a/generator/osm_element.hpp b/generator/osm_element.hpp index 28d1a89a8..f8d59c6cc 100644 --- a/generator/osm_element.hpp +++ b/generator/osm_element.hpp @@ -11,21 +11,20 @@ struct OsmElement enum class EntityType { Unknown = 0x0, - Bounds = 0x6F62, // "bo" - Node = 0x6F6E, // "no" - Way = 0x6177, // "wa" - Relation = 0x6572, // "re" - Tag = 0x6174, // "ta" - Nd = 0x646E, // "nd" - Member = 0x656D, // "me" - Osm = 0x736F, // "os" + Bounds = 0x6F62, // "bo" + Node = 0x6F6E, // "no" + Way = 0x6177, // "wa" + Relation = 0x6572, // "re" + Tag = 0x6174, // "ta" + Nd = 0x646E, // "nd" + Member = 0x656D, // "me" + Osm = 0x736F, // "os" }; struct Member { Member() = default; - Member(uint64_t ref, EntityType type, std::string const & role) - : m_ref(ref), m_type(type), m_role(role) {} + Member(uint64_t ref, EntityType type, std::string const & role) : m_ref(ref), m_type(type), m_role(role) {} bool operator==(Member const & other) const { @@ -50,10 +49,7 @@ struct OsmElement Tag() = default; Tag(std::string_view key, std::string_view value) : m_key(key), m_value(value) {} - bool operator==(Tag const & other) const - { - return m_key == other.m_key && m_value == other.m_value; - } + bool operator==(Tag const & other) const { return m_key == other.m_key && m_value == other.m_value; } bool operator<(Tag const & other) const { @@ -83,11 +79,11 @@ struct OsmElement std::string ToString(std::string const & shift = std::string()) const; std::vector const & Nodes() const { return m_nodes; } - std::vector & NodesRef() { return m_nodes; } + std::vector & NodesRef() { return m_nodes; } std::vector const & Members() const { return m_members; } - std::vector & MembersRef() { return m_members; } + std::vector & MembersRef() { return m_members; } std::vector const & Tags() const { return m_tags; } - std::vector & TagsRef() { return m_tags; } + std::vector & TagsRef() { return m_tags; } bool IsNode() const { return m_type == EntityType::Node; } bool IsWay() const { return m_type == EntityType::Way; } @@ -97,10 +93,7 @@ struct OsmElement bool operator==(OsmElement const & other) const; void AddNd(uint64_t ref) { m_nodes.emplace_back(ref); } - void AddMember(uint64_t ref, EntityType type, std::string const & role) - { - m_members.emplace_back(ref, type, role); - } + void AddMember(uint64_t ref, EntityType type, std::string const & role) { m_members.emplace_back(ref, type, role); } void AddTag(std::string_view key, std::string_view value); void AddTag(Tag const & tag) { AddTag(tag.m_key, tag.m_value); } diff --git a/generator/osm_element_helpers.cpp b/generator/osm_element_helpers.cpp index ea3f72f09..5991699ce 100644 --- a/generator/osm_element_helpers.cpp +++ b/generator/osm_element_helpers.cpp @@ -11,14 +11,12 @@ uint64_t GetPopulation(std::string const & str) { std::string number; for (auto const c : str) - { if (isdigit(c)) number += c; else if (c == '.' || c == ',' || c == ' ') continue; else break; - } if (number.empty()) return 0; @@ -69,7 +67,7 @@ uint8_t GetAdminLevel(OsmElement const & elem) return static_cast(res); // There are too many custom admin_level value. - //LOG(LWARNING, ("Failed to get admin_level from", str, elem.m_id)); + // LOG(LWARNING, ("Failed to get admin_level from", str, elem.m_id)); } return 0; } diff --git a/generator/osm_o5m_source.hpp b/generator/osm_o5m_source.hpp index b2aa53525..0bdb440a0 100644 --- a/generator/osm_o5m_source.hpp +++ b/generator/osm_o5m_source.hpp @@ -26,13 +26,16 @@ class StreamBuffer TReadFunc m_reader; TBuffer m_buffer; size_t const m_maxBufferSize; - size_t m_recap; // recap read bytes + size_t m_recap; // recap read bytes TBuffer::const_iterator m_position; public: StreamBuffer(TReadFunc reader, size_t readBufferSizeInBytes) - : m_reader(reader), m_buffer(readBufferSizeInBytes), m_maxBufferSize(readBufferSizeInBytes), m_recap(0) + : m_reader(reader) + , m_buffer(readBufferSizeInBytes) + , m_maxBufferSize(readBufferSizeInBytes) + , m_recap(0) { Refill(); } @@ -109,7 +112,6 @@ private: } }; - class O5MSource { public: @@ -127,33 +129,35 @@ public: Reset = 0xff }; - friend std::ostream & operator << (std::ostream & s, EntityType const & type) + friend std::ostream & operator<<(std::ostream & s, EntityType const & type) { switch (type) { - case EntityType::End: s << "O5M_CMD_END"; break; - case EntityType::Node: s << "O5M_CMD_NODE"; break; - case EntityType::Way: s << "O5M_CMD_WAY"; break; - case EntityType::Relation: s << "O5M_CMD_REL"; break; - case EntityType::BBox: s << "O5M_CMD_BBOX"; break; - case EntityType::Timestamp: s << "O5M_CMD_TSTAMP"; break; - case EntityType::Header: s << "O5M_CMD_HEADER"; break; - case EntityType::Sync: s << "O5M_CMD_SYNC"; break; - case EntityType::Jump: s << "O5M_CMD_JUMP"; break; - case EntityType::Reset: s << "O5M_CMD_RESET"; break; - default: return s << "Unknown command: " << std::hex << base::Underlying(type); + case EntityType::End: s << "O5M_CMD_END"; break; + case EntityType::Node: s << "O5M_CMD_NODE"; break; + case EntityType::Way: s << "O5M_CMD_WAY"; break; + case EntityType::Relation: s << "O5M_CMD_REL"; break; + case EntityType::BBox: s << "O5M_CMD_BBOX"; break; + case EntityType::Timestamp: s << "O5M_CMD_TSTAMP"; break; + case EntityType::Header: s << "O5M_CMD_HEADER"; break; + case EntityType::Sync: s << "O5M_CMD_SYNC"; break; + case EntityType::Jump: s << "O5M_CMD_JUMP"; break; + case EntityType::Reset: s << "O5M_CMD_RESET"; break; + default: return s << "Unknown command: " << std::hex << base::Underlying(type); } return s; } protected: - struct StringTableRecord { // This important value got from // documentation ( https://wiki.openstreetmap.org/wiki/O5m#Strings ) on O5M format. // If change it all will be broken. - enum { MaxEntrySize = 252 }; + enum + { + MaxEntrySize = 252 + }; char key[MaxEntrySize]; char value[MaxEntrySize]; @@ -188,10 +192,9 @@ protected: int32_t m_lat = 0; uint64_t m_timestamp = 0; uint64_t m_changeset = 0; - int64_t m_middlePartSize = 0; // Length of the references section + int64_t m_middlePartSize = 0; // Length of the references section public: - template class SubElements { @@ -209,8 +212,7 @@ public: public: Iterator() : m_reader(nullptr) {} - explicit Iterator(O5MSource * reader, TSubElementGetter const & func) - : m_reader(reader), m_func(func) + explicit Iterator(O5MSource * reader, TSubElementGetter const & func) : m_reader(reader), m_func(func) { NextValue(); } @@ -218,7 +220,11 @@ public: bool operator==(Iterator const & iter) const { return m_reader == iter.m_reader; } bool operator!=(Iterator const & iter) const { return !(*this == iter); } - Iterator & operator++() { NextValue(); return *this; } + Iterator & operator++() + { + NextValue(); + return *this; + } void NextValue() { m_reader = m_reader ? m_func(&m_val) : nullptr; } @@ -227,7 +233,12 @@ public: SubElements(O5MSource * reader, TSubElementGetter const & func) : m_reader(reader), m_func(func) {} - void Skip() { while (m_reader && m_func(nullptr)) { /* no-op */ } } + void Skip() + { + while (m_reader && m_func(nullptr)) + { /* no-op */ + } + } Iterator const begin() const { return Iterator(m_reader, m_func); } Iterator const end() const { return Iterator(); } @@ -252,18 +263,14 @@ public: TRefs Members() const { - return TRefs((type == EntityType::Relation) ? m_reader : nullptr, [this](Member * val) - { - return (m_reader) ? m_reader->ReadMember(val) : nullptr; - }); + return TRefs((type == EntityType::Relation) ? m_reader : nullptr, + [this](Member * val) { return (m_reader) ? m_reader->ReadMember(val) : nullptr; }); } TNodes Nodes() const { - return TNodes((type == EntityType::Way) ? m_reader : nullptr, [this](int64_t * val) - { - return (m_reader) ? m_reader->ReadNd(val) : nullptr; - }); + return TNodes((type == EntityType::Way) ? m_reader : nullptr, + [this](int64_t * val) { return (m_reader) ? m_reader->ReadNd(val) : nullptr; }); } TTags Tags() const @@ -271,10 +278,8 @@ public: Members().Skip(); Nodes().Skip(); bool const validType = (type == EntityType::Node || type == EntityType::Way || type == EntityType::Relation); - return TTags(validType ? m_reader : nullptr, [this](KeyValue * val) - { - return (m_reader) ? m_reader->ReadStringPair(val) : nullptr; - }); + return TTags(validType ? m_reader : nullptr, + [this](KeyValue * val) { return (m_reader) ? m_reader->ReadStringPair(val) : nullptr; }); } void SkipRemainder() const @@ -285,11 +290,14 @@ public: if (!(type == EntityType::Node || type == EntityType::Way || type == EntityType::Relation)) return; if (type == EntityType::Way) - while (m_reader->ReadNd(nullptr)); + while (m_reader->ReadNd(nullptr)) + ; if (type == EntityType::Relation) - while (m_reader->ReadMember(nullptr)); + while (m_reader->ReadMember(nullptr)) + ; - while (m_reader->ReadStringPair(nullptr)); + while (m_reader->ReadStringPair(nullptr)) + ; } Entity() : m_reader(nullptr) {} @@ -309,7 +317,8 @@ public: { b = m_buffer.Get(); ret |= (uint64_t)(b & 0x7f) << (i++ * 7); - } while (b & 0x80); + } + while (b & 0x80); size_t const rb = m_buffer.Recap(); m_remainder -= rb; m_middlePartSize -= rb; @@ -334,27 +343,27 @@ public: int64_t current = 0; EntityType type = EntityType::Reset; - switch (kv.key[0]) { - case '0': - { - current = (m_currentNodeRef += delta); - type = EntityType::Node; - break; - } - case '1': - { - current = (m_currentWayRef += delta); - type = EntityType::Way; - break; - } - case '2': - { - current = (m_currentRelationRef += delta); - type = EntityType::Relation; - break; - } - default: - CHECK(false, ("Unexpected relation type:", kv.key)); + switch (kv.key[0]) + { + case '0': + { + current = (m_currentNodeRef += delta); + type = EntityType::Node; + break; + } + case '1': + { + current = (m_currentWayRef += delta); + type = EntityType::Way; + break; + } + case '2': + { + current = (m_currentRelationRef += delta); + type = EntityType::Relation; + break; + } + default: CHECK(false, ("Unexpected relation type:", kv.key)); } if (ref) { @@ -401,7 +410,8 @@ public: { *pBuf = m_buffer.Get(); sizes[i]++; - } while (*(pBuf++)); + } + while (*(pBuf++)); } size_t const rb = m_buffer.Recap(); m_remainder -= rb; @@ -478,52 +488,51 @@ public: entity->user = nullptr; m_middlePartSize = 0; - m_remainder = ReadVarUInt(); // entity size + m_remainder = ReadVarUInt(); // entity size switch (entity->type) { - case EntityType::Node: - { - ReadIdAndVersion(entity); - ReadLonLat(entity); - } - break; - case EntityType::Way: - { - ReadIdAndVersion(entity); - m_middlePartSize = ReadVarUInt(); - } - break; - case EntityType::Relation: - { - ReadIdAndVersion(entity); - m_middlePartSize = ReadVarUInt(); - } - break; - case EntityType::BBox: - { - } - break; - case EntityType::Timestamp: - { - ReadVarUInt(); - } - break; - case EntityType::Header: - { - } - break; - case EntityType::Sync: - { - } - break; - case EntityType::Jump: - { - } - break; + case EntityType::Node: + { + ReadIdAndVersion(entity); + ReadLonLat(entity); + } + break; + case EntityType::Way: + { + ReadIdAndVersion(entity); + m_middlePartSize = ReadVarUInt(); + } + break; + case EntityType::Relation: + { + ReadIdAndVersion(entity); + m_middlePartSize = ReadVarUInt(); + } + break; + case EntityType::BBox: + { + } + break; + case EntityType::Timestamp: + { + ReadVarUInt(); + } + break; + case EntityType::Header: + { + } + break; + case EntityType::Sync: + { + } + break; + case EntityType::Jump: + { + } + break; - default: - break; + default: break; } return this; } @@ -554,7 +563,6 @@ public: } public: - class Iterator { O5MSource * m_reader; @@ -570,7 +578,11 @@ public: bool operator==(Iterator const & iter) const { return m_reader == iter.m_reader; } bool operator!=(Iterator const & iter) const { return !(*this == iter); } - Iterator & operator++() { NextValue(); return *this; } + Iterator & operator++() + { + NextValue(); + return *this; + } void NextValue() { m_reader = m_reader->ReadEntity(&m_entity) ? m_reader : nullptr; } @@ -583,9 +595,7 @@ public: O5MSource(TReadFunc reader, size_t readBufferSizeInBytes = 60000) : m_buffer(reader, readBufferSizeInBytes) { if (EntityType::Reset != EntityType(m_buffer.Get())) - { throw std::runtime_error("Incorrect o5m start"); - } CheckHeader(); InitStringTable(); } @@ -608,17 +618,15 @@ public: s << EntityType(em.type) << " ID: " << em.id; if (em.version) { -// time_t timestamp = em.timestamp; -// tm stm = *gmtime(×tamp); -// s << " Version: " << em.version << " timestamp: " << asctime_r(&stm, "%FT%TZ"); + // time_t timestamp = em.timestamp; + // tm stm = *gmtime(×tamp); + // s << " Version: " << em.version << " timestamp: " << asctime_r(&stm, "%FT%TZ"); s << " Version: " << em.version << " timestamp: " << em.timestamp; s << " changeset: " << em.changeset << " uid: " << em.uid << " user: " << em.user; } if (em.type == EntityType::Node) - { s << std::endl << " lon: " << em.lon << " lat: " << em.lat; - } return s; } }; diff --git a/generator/osm_source.cpp b/generator/osm_source.cpp index a5f0e2510..f32a6b151 100644 --- a/generator/osm_source.cpp +++ b/generator/osm_source.cpp @@ -73,17 +73,12 @@ void AddElementToCache(cache::IntermediateDataWriter & cache, OsmElement && elem { switch (member.m_type) { - case OsmElement::EntityType::Node: - relation.m_nodes.emplace_back(member.m_ref, std::move(member.m_role)); - break; - case OsmElement::EntityType::Way: - relation.m_ways.emplace_back(member.m_ref, std::move(member.m_role)); - break; + case OsmElement::EntityType::Node: relation.m_nodes.emplace_back(member.m_ref, std::move(member.m_role)); break; + case OsmElement::EntityType::Way: relation.m_ways.emplace_back(member.m_ref, std::move(member.m_role)); break; case OsmElement::EntityType::Relation: relation.m_relations.emplace_back(member.m_ref, std::move(member.m_role)); break; - default: - break; + default: break; } } @@ -95,8 +90,7 @@ void AddElementToCache(cache::IntermediateDataWriter & cache, OsmElement && elem break; } - default: - break; + default: break; } } @@ -126,12 +120,9 @@ void ProcessOsmElementsFromO5M(SourceReader & stream, std::function(buffer), size); - }) + , m_dataset([&](uint8_t * buffer, size_t size) { return m_stream.Read(reinterpret_cast(buffer), size); }) , m_pos(m_dataset.begin()) -{ -} +{} bool ProcessorOsmElementsFromO5M::TryRead(OsmElement & element) { @@ -139,7 +130,8 @@ bool ProcessorOsmElementsFromO5M::TryRead(OsmElement & element) return false; using Type = osm::O5MSource::EntityType; - auto const translate = [](Type t) -> OsmElement::EntityType { + auto const translate = [](Type t) -> OsmElement::EntityType + { switch (t) { case Type::Node: return OsmElement::EntityType::Node; @@ -191,13 +183,9 @@ bool ProcessorOsmElementsFromO5M::TryRead(OsmElement & element) } ProcessorOsmElementsFromXml::ProcessorOsmElementsFromXml(SourceReader & stream) - : m_xmlSource([&, this](OsmElement && e) - { - m_queue.emplace(std::move(e)); - }) + : m_xmlSource([&, this](OsmElement && e) { m_queue.emplace(std::move(e)); }) , m_parser(stream, m_xmlSource) -{ -} +{} bool ProcessorOsmElementsFromXml::TryReadFromQueue(OsmElement & element) { @@ -217,7 +205,8 @@ bool ProcessorOsmElementsFromXml::TryRead(OsmElement & element) { if (TryReadFromQueue(element)) return true; - } while (m_parser.Read()); + } + while (m_parser.Read()); return TryReadFromQueue(element); } @@ -228,8 +217,7 @@ bool ProcessorOsmElementsFromXml::TryRead(OsmElement & element) bool GenerateIntermediateData(feature::GenerateInfo & info) { - auto nodes = - cache::CreatePointStorageWriter(info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE)); + auto nodes = cache::CreatePointStorageWriter(info.m_nodeStorageType, info.GetCacheFileName(NODES_FILE)); cache::IntermediateDataWriter cache(*nodes, info); TownsDumper towns; SourceReader reader = info.m_osmFileName.empty() ? SourceReader() : SourceReader(info.m_osmFileName); @@ -244,12 +232,8 @@ bool GenerateIntermediateData(feature::GenerateInfo & info) switch (info.m_osmFileType) { - case feature::GenerateInfo::OsmSourceType::XML: - ProcessOsmElementsFromXML(reader, processor); - break; - case feature::GenerateInfo::OsmSourceType::O5M: - ProcessOsmElementsFromO5M(reader, processor); - break; + case feature::GenerateInfo::OsmSourceType::XML: ProcessOsmElementsFromXML(reader, processor); break; + case feature::GenerateInfo::OsmSourceType::O5M: ProcessOsmElementsFromO5M(reader, processor); break; } cache.SaveIndex(); diff --git a/generator/osm_source.hpp b/generator/osm_source.hpp index 2b7c0359a..e79bd8ea2 100644 --- a/generator/osm_source.hpp +++ b/generator/osm_source.hpp @@ -47,8 +47,8 @@ public: bool GenerateIntermediateData(feature::GenerateInfo & info); -void ProcessOsmElementsFromO5M(SourceReader & stream, std::function const & processor); -void ProcessOsmElementsFromXML(SourceReader & stream, std::function const & processor); +void ProcessOsmElementsFromO5M(SourceReader & stream, std::function const & processor); +void ProcessOsmElementsFromXML(SourceReader & stream, std::function const & processor); class ProcessorOsmElementsInterface { diff --git a/generator/osm_xml_source.hpp b/generator/osm_xml_source.hpp index a57ff5469..541e152e5 100644 --- a/generator/osm_xml_source.hpp +++ b/generator/osm_xml_source.hpp @@ -6,8 +6,8 @@ #include "base/string_utils.hpp" #include -#include #include +#include class XMLSource { @@ -55,9 +55,7 @@ public: switch (++m_depth) { - case 1: - m_current = nullptr; - break; + case 1: m_current = nullptr; break; case 2: m_current = &m_parent; m_current->m_type = tagKey; @@ -74,8 +72,7 @@ public: { switch (--m_depth) { - case 0: - break; + case 0: break; case 1: // Skip useless tags. See XMLSource::Push function above. @@ -93,14 +90,9 @@ public: case OsmElement::EntityType::Member: m_parent.AddMember(m_child.m_ref, m_child.m_memberType, m_child.m_role); break; - case OsmElement::EntityType::Tag: - m_parent.AddTag(m_child.m_k, m_child.m_v); - break; - case OsmElement::EntityType::Nd: - m_parent.AddNd(m_child.m_ref); - break; - default: - break; + case OsmElement::EntityType::Tag: m_parent.AddTag(m_child.m_k, m_child.m_v); break; + case OsmElement::EntityType::Nd: m_parent.AddNd(m_child.m_ref); break; + default: break; } m_current = &m_parent; m_child.Clear(); diff --git a/generator/place_processor.cpp b/generator/place_processor.cpp index f50b0dbef..bf722aaf7 100644 --- a/generator/place_processor.cpp +++ b/generator/place_processor.cpp @@ -14,7 +14,6 @@ #include #include - namespace generator { using namespace feature; @@ -66,15 +65,10 @@ bool IsWorsePlace(FeaturePlace const & left, FeaturePlace const & right) double constexpr kIsAreaTooBigCoeff = -0.5; auto const normalizeRank = [](uint8_t rank) - { - return static_cast(rank) / static_cast(std::numeric_limits::max()); - }; + { return static_cast(rank) / static_cast(std::numeric_limits::max()); }; auto const normalizeLangsCount = [](uint8_t langsCount) - { - return static_cast(langsCount) / - static_cast(StringUtf8Multilang::kMaxSupportedLanguages); - }; + { return static_cast(langsCount) / static_cast(StringUtf8Multilang::kMaxSupportedLanguages); }; auto const normalizeArea = [](double area) { @@ -125,18 +119,14 @@ bool IsWorsePlace(FeaturePlace const & left, FeaturePlace const & right) auto const isCapital = ftypes::IsCapitalChecker::Instance()(placeType); auto const type = place.m_fb.GetMostGenericOsmId().GetType(); - auto const isNode = (type == base::GeoObjectId::Type::OsmNode) || - (type == base::GeoObjectId::Type::ObsoleteOsmNode); + auto const isNode = + (type == base::GeoObjectId::Type::OsmNode) || (type == base::GeoObjectId::Type::ObsoleteOsmNode); - auto const tooBig = - isAreaTooBig(ftypes::IsLocalityChecker::Instance().GetType(placeType), area); + auto const tooBig = isAreaTooBig(ftypes::IsLocalityChecker::Instance().GetType(placeType), area); - return kRankCoeff * normalizeRank(rank) + - kLangsCountCoeff * normalizeLangsCount(langsCount) + - kAreaCoeff * normalizeArea(area) + - kIsCapitalCoeff * (isCapital ? 1.0 : 0.0) + - kIsNodeCoeff * (isNode ? 1.0 : 0.0) + - kIsAreaTooBigCoeff * (tooBig ? 1.0 : 0.0); + return kRankCoeff * normalizeRank(rank) + kLangsCountCoeff * normalizeLangsCount(langsCount) + + kAreaCoeff * normalizeArea(area) + kIsCapitalCoeff * (isCapital ? 1.0 : 0.0) + + kIsNodeCoeff * (isNode ? 1.0 : 0.0) + kIsAreaTooBigCoeff * (tooBig ? 1.0 : 0.0); }; return getScore(left) < getScore(right); @@ -147,9 +137,7 @@ std::vector> FindClusters(std::vector> FindClusters(std::vector PlaceProcessor::ProcessPlaces(std::vector * ids/* = nullptr*/) +std::vector PlaceProcessor::ProcessPlaces(std::vector * ids /* = nullptr*/) { std::vector finalPlaces; for (auto const & name2PlacesEntry : m_nameToPlaces) @@ -190,10 +177,7 @@ std::vector PlaceProcessor::ProcessPlaces(std::vectorm_fb; @@ -203,10 +187,8 @@ std::vector PlaceProcessor::ProcessPlaces(std::vectorm_fb.GetMostGenericOsmId(); - }); + base::Transform(cluster, std::back_inserter(fbIDs), + [](FeaturePlace const * fp) { return fp->m_fb.GetMostGenericOsmId(); }); auto const bestBnd = m_boundariesHolder.GetBestBoundary(fbIDs, bestFb.GetKeyPoint()); if (bestBnd) @@ -242,8 +224,8 @@ std::vector PlaceProcessor::ProcessPlaces(std::vectorGetPopulation(), bndLocality)); + double const circleArea = + ms::CircleAreaOnEarth(GetRadiusByPopulationForRouting(bestBnd->GetPopulation(), bndLocality)); if (exactArea > circleArea * 20.0) { LOG(LWARNING, (m_logTag, "Delete big boundary for", id, exactArea / circleArea)); @@ -276,8 +258,8 @@ FeaturePlace PlaceProcessor::CreatePlace(feature::FeatureBuilder && fb) const { if (!r.IsIntersect(rect)) { - LOG(LERROR, (m_logTag, "FB center not in polygon's bound for:", id, - mercator::ToLatLon(rect), mercator::ToLatLon(r))); + LOG(LERROR, + (m_logTag, "FB center not in polygon's bound for:", id, mercator::ToLatLon(rect), mercator::ToLatLon(r))); } rect.Add(r); } diff --git a/generator/place_processor.hpp b/generator/place_processor.hpp index da438290e..2cfeeef9b 100644 --- a/generator/place_processor.hpp +++ b/generator/place_processor.hpp @@ -60,4 +60,4 @@ private: std::string m_logTag; }; -} // namespace generator +} // namespace generator diff --git a/generator/popular_places_section_builder.cpp b/generator/popular_places_section_builder.cpp index 89b6335d5..8f56681c9 100644 --- a/generator/popular_places_section_builder.cpp +++ b/generator/popular_places_section_builder.cpp @@ -42,8 +42,7 @@ void LoadPopularPlaces(std::string const & srcFilename, PopularPlaces & places) if (popularityIndex > std::numeric_limits::max()) { - LOG(LERROR, ("The popularity index value is higher than max supported value:", srcFilename, - "parsed row:", row)); + LOG(LERROR, ("The popularity index value is higher than max supported value:", srcFilename, "parsed row:", row)); return; } @@ -60,7 +59,8 @@ void LoadPopularPlaces(std::string const & srcFilename, PopularPlaces & places) namespace { -template void BuildPopularPlacesImpl(std::string const & mwmFile, RankGetterT && getter) +template +void BuildPopularPlacesImpl(std::string const & mwmFile, RankGetterT && getter) { bool popularPlaceFound = false; @@ -97,7 +97,7 @@ PopularityIndex CalcRank(std::string const & str) return std::min(1.0, charsNum / 100000.0) * std::numeric_limits::max(); } -} // namespace +} // namespace void BuildPopularPlacesFromDescriptions(std::string const & mwmFile) { @@ -126,8 +126,8 @@ void BuildPopularPlacesFromDescriptions(std::string const & mwmFile) }); } -void BuildPopularPlacesFromWikiDump(std::string const & mwmFile, - std::string const & wikipediaDir, std::string const & idToWikidataPath) +void BuildPopularPlacesFromWikiDump(std::string const & mwmFile, std::string const & wikipediaDir, + std::string const & idToWikidataPath) { LOG(LINFO, ("Build Popular Places section")); @@ -152,7 +152,6 @@ void BuildPopularPlacesFromWikiDump(std::string const & mwmFile, }); } - PopularPlaces const & GetOrLoadPopularPlaces(std::string const & filename) { static std::mutex m; diff --git a/generator/popular_places_section_builder.hpp b/generator/popular_places_section_builder.hpp index 876652b64..cd6ededae 100644 --- a/generator/popular_places_section_builder.hpp +++ b/generator/popular_places_section_builder.hpp @@ -13,8 +13,8 @@ using PopularPlaces = std::unordered_map; void LoadPopularPlaces(std::string const & srcFilename, PopularPlaces & places); void BuildPopularPlacesFromDescriptions(std::string const & mwmFile); -void BuildPopularPlacesFromWikiDump(std::string const & mwmFile, - std::string const & wikipediaDir, std::string const & idToWikidataPath); +void BuildPopularPlacesFromWikiDump(std::string const & mwmFile, std::string const & wikipediaDir, + std::string const & idToWikidataPath); PopularPlaces const & GetOrLoadPopularPlaces(std::string const & filename); } // namespace generator diff --git a/generator/postcode_points_builder.cpp b/generator/postcode_points_builder.cpp index 39692d527..40ddad990 100644 --- a/generator/postcode_points_builder.cpp +++ b/generator/postcode_points_builder.cpp @@ -44,9 +44,8 @@ struct FieldIndices using ZipIndexValue = std::pair; -void GetPostcodes(std::string const & filename, storage::CountryId const & countryId, - FieldIndices const & fieldIndices, char const * separator, bool hasHeader, - storage::CountryInfoGetter const & infoGetter, +void GetPostcodes(std::string const & filename, storage::CountryId const & countryId, FieldIndices const & fieldIndices, + char const * separator, bool hasHeader, storage::CountryInfoGetter const & infoGetter, std::vector & valueMapping, std::vector & keyValuePairs) { ASSERT(!filename.empty(), ()); @@ -93,8 +92,8 @@ void GetPostcodes(std::string const & filename, storage::CountryId const & count } void GetUKPostcodes(std::string const & filename, storage::CountryId const & countryId, - storage::CountryInfoGetter const & infoGetter, - std::vector & valueMapping, std::vector & keyValuePairs) + storage::CountryInfoGetter const & infoGetter, std::vector & valueMapping, + std::vector & keyValuePairs) { // * Follow these steps to prepare GB dataset: https://github.com/osm-search/gb-postcode-data // * Direct from Nominatim: https://nominatim.org/data/gb_postcodes.csv.gz @@ -105,13 +104,13 @@ void GetUKPostcodes(std::string const & filename, storage::CountryId const & cou ukFieldIndices.m_longIndex = 2; ukFieldIndices.m_datasetCount = 3; - GetPostcodes(filename, countryId, ukFieldIndices, "," /* separator */, true /* hasHeader */, - infoGetter, valueMapping, keyValuePairs); + GetPostcodes(filename, countryId, ukFieldIndices, "," /* separator */, true /* hasHeader */, infoGetter, valueMapping, + keyValuePairs); } void GetUSPostcodes(std::string const & filename, storage::CountryId const & countryId, - storage::CountryInfoGetter const & infoGetter, - std::vector & valueMapping, std::vector & keyValuePairs) + storage::CountryInfoGetter const & infoGetter, std::vector & valueMapping, + std::vector & keyValuePairs) { // * Get data source from here: https://simplemaps.com/data/us-zips // "zip","lat","lng","city","state_id","state_name", ... @@ -121,11 +120,11 @@ void GetUSPostcodes(std::string const & filename, storage::CountryId const & cou usFieldIndices.m_postcodeIndex = 0; usFieldIndices.m_latIndex = 1; usFieldIndices.m_longIndex = 2; - usFieldIndices.m_datasetCount = 3; // actually, there are more fields, but doesn't matter here + usFieldIndices.m_datasetCount = 3; // actually, there are more fields, but doesn't matter here // US dataset may contain complex json values, but doesn't matter for parsing first 3 entries. - GetPostcodes(filename, countryId, usFieldIndices, "," /* separator */, true /* hasHeader */, - infoGetter, valueMapping, keyValuePairs); + GetPostcodes(filename, countryId, usFieldIndices, "," /* separator */, true /* hasHeader */, infoGetter, valueMapping, + keyValuePairs); } bool BuildPostcodePointsImpl(FilesContainerR & container, storage::CountryId const & country, @@ -164,8 +163,8 @@ bool BuildPostcodePointsImpl(FilesContainerR & container, storage::CountryId con { FileWriter tmpWriter(tmpName); SingleValueSerializer serializer; - trie::Build( - tmpWriter, serializer, postcodesKeyValuePairs); + trie::Build(tmpWriter, serializer, + postcodesKeyValuePairs); } rw_ops::Reverse(FileReader(tmpName), writer); @@ -198,8 +197,7 @@ bool BuildPostcodePointsImpl(FilesContainerR & container, storage::CountryId con bool BuildPostcodePointsWithInfoGetter(std::string const & path, storage::CountryId const & country, PostcodePointsDatasetType type, std::string const & datasetPath, - bool forceRebuild, - storage::CountryInfoGetter const & infoGetter) + bool forceRebuild, storage::CountryInfoGetter const & infoGetter) { auto const filename = base::JoinPath(path, country + DATA_FILE_EXTENSION); Platform & platform = GetPlatform(); @@ -209,16 +207,15 @@ bool BuildPostcodePointsWithInfoGetter(std::string const & path, storage::Countr auto const postcodesFilePath = filename + "." + POSTCODE_POINTS_FILE_TAG EXTENSION_TMP; // Temporary file used to reverse trie part of postcodes section. - auto const trieTmpFilePath = - filename + "." + POSTCODE_POINTS_FILE_TAG + "_trie" + EXTENSION_TMP; + auto const trieTmpFilePath = filename + "." + POSTCODE_POINTS_FILE_TAG + "_trie" + EXTENSION_TMP; SCOPE_GUARD(postcodesFileGuard, std::bind(&FileWriter::DeleteFileX, postcodesFilePath)); SCOPE_GUARD(trieTmpFileGuard, std::bind(&FileWriter::DeleteFileX, trieTmpFilePath)); try { FileWriter writer(postcodesFilePath); - if (!BuildPostcodePointsImpl(readContainer, storage::CountryId(country), type, datasetPath, - trieTmpFilePath, infoGetter, writer)) + if (!BuildPostcodePointsImpl(readContainer, storage::CountryId(country), type, datasetPath, trieTmpFilePath, + infoGetter, writer)) { // No postcodes for country. return true; @@ -242,15 +239,13 @@ bool BuildPostcodePointsWithInfoGetter(std::string const & path, storage::Countr return true; } -bool BuildPostcodePoints(std::string const & path, storage::CountryId const & country, - PostcodePointsDatasetType type, std::string const & datasetPath, - bool forceRebuild) +bool BuildPostcodePoints(std::string const & path, storage::CountryId const & country, PostcodePointsDatasetType type, + std::string const & datasetPath, bool forceRebuild) { auto const & platform = GetPlatform(); auto const infoGetter = storage::CountryInfoReader::CreateCountryInfoGetter(platform); CHECK(infoGetter, ()); - return BuildPostcodePointsWithInfoGetter(path, country, type, datasetPath, forceRebuild, - *infoGetter); + return BuildPostcodePointsWithInfoGetter(path, country, type, datasetPath, forceRebuild, *infoGetter); } } // namespace indexer diff --git a/generator/postcode_points_builder.hpp b/generator/postcode_points_builder.hpp index f698cc34d..689ce4f69 100644 --- a/generator/postcode_points_builder.hpp +++ b/generator/postcode_points_builder.hpp @@ -16,12 +16,10 @@ enum class PostcodePointsDatasetType }; // Builds postcodes section with external postcodes data and writes it to the mwm file. -bool BuildPostcodePoints(std::string const & path, std::string const & country, - PostcodePointsDatasetType type, std::string const & datasetPath, - bool forceRebuild); +bool BuildPostcodePoints(std::string const & path, std::string const & country, PostcodePointsDatasetType type, + std::string const & datasetPath, bool forceRebuild); // Exposed for testing. bool BuildPostcodePointsWithInfoGetter(std::string const & path, std::string const & country, - PostcodePointsDatasetType type, - std::string const & datasetPath, bool forceRebuild, - storage::CountryInfoGetter const & infoGetter); + PostcodePointsDatasetType type, std::string const & datasetPath, + bool forceRebuild, storage::CountryInfoGetter const & infoGetter); } // namespace indexer diff --git a/generator/processor_booking.hpp b/generator/processor_booking.hpp index bbf3ed531..40bf5c6ba 100644 --- a/generator/processor_booking.hpp +++ b/generator/processor_booking.hpp @@ -18,11 +18,10 @@ template class ProcessorBooking : public FeatureProcessorInterface { public: - ProcessorBooking(Dataset const & dataset, - std::map & features) - : m_dataset(dataset), m_features(features) - { - } + ProcessorBooking(Dataset const & dataset, std::map & features) + : m_dataset(dataset) + , m_features(features) + {} // FeatureProcessorInterface overrides: std::shared_ptr Clone() const override diff --git a/generator/processor_coastline.cpp b/generator/processor_coastline.cpp index d53e42e40..00da86817 100644 --- a/generator/processor_coastline.cpp +++ b/generator/processor_coastline.cpp @@ -6,14 +6,12 @@ namespace generator { -ProcessorCoastline::ProcessorCoastline(std::shared_ptr const & queue) - : m_queue(queue) +ProcessorCoastline::ProcessorCoastline(std::shared_ptr const & queue) : m_queue(queue) { m_processingChain = std::make_shared(); m_processingChain->Add(std::make_shared()); auto affiliation = std::make_shared(WORLD_COASTS_FILE_NAME); - m_affiliationsLayer = - std::make_shared(kAffiliationsBufferSize, affiliation, m_queue); + m_affiliationsLayer = std::make_shared(kAffiliationsBufferSize, affiliation, m_queue); m_processingChain->Add(m_affiliationsLayer); } @@ -27,5 +25,8 @@ void ProcessorCoastline::Process(feature::FeatureBuilder & feature) m_processingChain->Handle(feature); } -void ProcessorCoastline::Finish() { m_affiliationsLayer->AddBufferToQueue(); } +void ProcessorCoastline::Finish() +{ + m_affiliationsLayer->AddBufferToQueue(); +} } // namespace generator diff --git a/generator/processor_complex.cpp b/generator/processor_complex.cpp index 02b5a88e3..358ee051d 100644 --- a/generator/processor_complex.cpp +++ b/generator/processor_complex.cpp @@ -16,10 +16,8 @@ ProcessorComplex::ProcessorComplex(std::shared_ptr const , m_haveBordersForWholeWorld(haveBordersForWholeWorld) { m_processingChain = std::make_shared(); - auto affiliation = std::make_shared( - bordersPath, haveBordersForWholeWorld); - m_affiliationsLayer = - std::make_shared>(kAffiliationsBufferSize, affiliation, m_queue); + auto affiliation = std::make_shared(bordersPath, haveBordersForWholeWorld); + m_affiliationsLayer = std::make_shared>(kAffiliationsBufferSize, affiliation, m_queue); m_processingChain->Add(m_affiliationsLayer); } @@ -33,5 +31,8 @@ void ProcessorComplex::Process(feature::FeatureBuilder & feature) m_processingChain->Handle(feature); } -void ProcessorComplex::Finish() { m_affiliationsLayer->AddBufferToQueue(); } +void ProcessorComplex::Finish() +{ + m_affiliationsLayer->AddBufferToQueue(); +} } // namespace generator diff --git a/generator/processor_complex.hpp b/generator/processor_complex.hpp index 8961d0e1d..46db61473 100644 --- a/generator/processor_complex.hpp +++ b/generator/processor_complex.hpp @@ -18,8 +18,8 @@ namespace generator class ProcessorComplex : public FeatureProcessorInterface { public: - explicit ProcessorComplex(std::shared_ptr const & queue, - std::string const & bordersPath, bool haveBordersForWholeWorld); + explicit ProcessorComplex(std::shared_ptr const & queue, std::string const & bordersPath, + bool haveBordersForWholeWorld); // FeatureProcessorInterface overrides: std::shared_ptr Clone() const override; diff --git a/generator/processor_country.cpp b/generator/processor_country.cpp index c13d75335..b8e4f4b30 100644 --- a/generator/processor_country.cpp +++ b/generator/processor_country.cpp @@ -5,8 +5,8 @@ namespace generator { ProcessorCountry::ProcessorCountry(AffiliationInterfacePtr affiliations, std::shared_ptr queue) -: m_affiliations(std::move(affiliations)) -, m_queue(std::move(queue)) + : m_affiliations(std::move(affiliations)) + , m_queue(std::move(queue)) { ASSERT(m_affiliations && m_queue, ()); @@ -28,5 +28,8 @@ void ProcessorCountry::Process(feature::FeatureBuilder & feature) m_processingChain->Handle(feature); } -void ProcessorCountry::Finish() { m_affiliationsLayer->AddBufferToQueue(); } +void ProcessorCountry::Finish() +{ + m_affiliationsLayer->AddBufferToQueue(); +} } // namespace generator diff --git a/generator/processor_country.hpp b/generator/processor_country.hpp index f12296290..e2b19f2eb 100644 --- a/generator/processor_country.hpp +++ b/generator/processor_country.hpp @@ -26,7 +26,7 @@ private: std::shared_ptr m_affiliationsLayer; std::shared_ptr m_processingChain; - //std::shared_ptr m_complexFeaturesMixer; + // std::shared_ptr m_complexFeaturesMixer; }; } // namespace generator diff --git a/generator/processor_factory.hpp b/generator/processor_factory.hpp index c12e7aef7..1be56db76 100644 --- a/generator/processor_factory.hpp +++ b/generator/processor_factory.hpp @@ -3,11 +3,11 @@ #include "generator/factory_utils.hpp" #include "generator/processor_booking.hpp" #include "generator/processor_coastline.hpp" -//#include "generator/processor_complex.hpp" +// #include "generator/processor_complex.hpp" #include "generator/processor_country.hpp" #include "generator/processor_interface.hpp" #include "generator/processor_noop.hpp" -//#include "generator/processor_simple.hpp" +// #include "generator/processor_simple.hpp" #include "generator/processor_world.hpp" #include "base/assert.hpp" @@ -19,13 +19,13 @@ namespace generator { enum class ProcessorType { - //Simple, + // Simple, Country, Coastline, World, Noop, - //Complex, - //Booking, + // Complex, + // Booking, }; template @@ -35,10 +35,11 @@ std::shared_ptr CreateProcessor(ProcessorType type, A { case ProcessorType::Coastline: return create(std::forward(args)...); case ProcessorType::Country: return create(std::forward(args)...); - //case ProcessorType::Simple: return create(std::forward(args)...); + // case ProcessorType::Simple: return create(std::forward(args)...); case ProcessorType::World: return create(std::forward(args)...); - case ProcessorType::Noop: return create(std::forward(args)...); - //case ProcessorType::Complex: return create(std::forward(args)...); + case ProcessorType::Noop: + return create(std::forward(args)...); + // case ProcessorType::Complex: return create(std::forward(args)...); } UNREACHABLE(); } diff --git a/generator/processor_noop.hpp b/generator/processor_noop.hpp index 7e0e1ecd5..f96ab43dd 100644 --- a/generator/processor_noop.hpp +++ b/generator/processor_noop.hpp @@ -13,10 +13,7 @@ class ProcessorNoop : public FeatureProcessorInterface { public: // FeatureProcessorInterface overrides: - std::shared_ptr Clone() const override - { - return std::make_shared(); - } + std::shared_ptr Clone() const override { return std::make_shared(); } void Process(feature::FeatureBuilder &) override {} void Finish() override {} diff --git a/generator/processor_simple.cpp b/generator/processor_simple.cpp index f5a004913..615425678 100644 --- a/generator/processor_simple.cpp +++ b/generator/processor_simple.cpp @@ -7,15 +7,14 @@ namespace generator { -ProcessorSimple::ProcessorSimple(std::shared_ptr const & queue, - std::string const & name) - : m_name(name), m_queue(queue) +ProcessorSimple::ProcessorSimple(std::shared_ptr const & queue, std::string const & name) + : m_name(name) + , m_queue(queue) { m_processingChain = std::make_shared(); auto affiliation = std::make_shared(name); - m_affiliationsLayer = - std::make_shared>( - kAffiliationsBufferSize, affiliation, m_queue); + m_affiliationsLayer = std::make_shared>( + kAffiliationsBufferSize, affiliation, m_queue); m_processingChain->Add(m_affiliationsLayer); } @@ -24,7 +23,13 @@ std::shared_ptr ProcessorSimple::Clone() const return std::make_shared(m_queue, m_name); } -void ProcessorSimple::Process(feature::FeatureBuilder & fb) { m_processingChain->Handle(fb); } +void ProcessorSimple::Process(feature::FeatureBuilder & fb) +{ + m_processingChain->Handle(fb); +} -void ProcessorSimple::Finish() { m_affiliationsLayer->AddBufferToQueue(); } +void ProcessorSimple::Finish() +{ + m_affiliationsLayer->AddBufferToQueue(); +} } // namespace generator diff --git a/generator/processor_simple.hpp b/generator/processor_simple.hpp index 60d536c4d..4badf8ae5 100644 --- a/generator/processor_simple.hpp +++ b/generator/processor_simple.hpp @@ -14,8 +14,7 @@ class ProcessorSimple : public FeatureProcessorInterface { public: // |name| is bucket name. For example it may be "World", "geo_objects", "regions" etc. - explicit ProcessorSimple(std::shared_ptr const & queue, - std::string const & name); + explicit ProcessorSimple(std::shared_ptr const & queue, std::string const & name); // FeatureProcessorInterface overrides: std::shared_ptr Clone() const override; @@ -27,8 +26,7 @@ public: private: std::string m_name; - std::shared_ptr> - m_affiliationsLayer; + std::shared_ptr> m_affiliationsLayer; std::shared_ptr m_queue; std::shared_ptr m_processingChain; }; diff --git a/generator/processor_world.cpp b/generator/processor_world.cpp index b7407acee..de6e93588 100644 --- a/generator/processor_world.cpp +++ b/generator/processor_world.cpp @@ -8,14 +8,14 @@ namespace generator { ProcessorWorld::ProcessorWorld(std::shared_ptr const & queue, std::string const & popularityFilename) - : m_popularityFilename(popularityFilename), m_queue(queue) + : m_popularityFilename(popularityFilename) + , m_queue(queue) { m_processingChain = std::make_shared(); m_processingChain->Add(std::make_shared()); m_processingChain->Add(std::make_shared(popularityFilename)); auto affiliation = std::make_shared(WORLD_FILE_NAME); - m_affiliationsLayer = - std::make_shared(kAffiliationsBufferSize, affiliation, m_queue); + m_affiliationsLayer = std::make_shared(kAffiliationsBufferSize, affiliation, m_queue); m_processingChain->Add(m_affiliationsLayer); } @@ -29,5 +29,8 @@ void ProcessorWorld::Process(feature::FeatureBuilder & feature) m_processingChain->Handle(feature); } -void ProcessorWorld::Finish() { m_affiliationsLayer->AddBufferToQueue(); } +void ProcessorWorld::Finish() +{ + m_affiliationsLayer->AddBufferToQueue(); +} } // namespace generator diff --git a/generator/processor_world.hpp b/generator/processor_world.hpp index f070e07ff..44c15cce5 100644 --- a/generator/processor_world.hpp +++ b/generator/processor_world.hpp @@ -18,8 +18,7 @@ namespace generator class ProcessorWorld : public FeatureProcessorInterface { public: - explicit ProcessorWorld(std::shared_ptr const & queue, - std::string const & popularityFilename); + explicit ProcessorWorld(std::shared_ptr const & queue, std::string const & popularityFilename); // FeatureProcessorInterface overrides: std::shared_ptr Clone() const override; diff --git a/generator/pygen/pygen.cpp b/generator/pygen/pygen.cpp index 0c9da540b..9d668fb3b 100644 --- a/generator/pygen/pygen.cpp +++ b/generator/pygen/pygen.cpp @@ -47,18 +47,18 @@ uint32_t const kInvalidIndex = std::numeric_limits::max(); class FeatureTypeWrapper { public: - explicit FeatureTypeWrapper(boost::shared_ptr const & mwm, - boost::shared_ptr const & feature) - : m_mwm(mwm), m_feature(feature) - { - } + explicit FeatureTypeWrapper(boost::shared_ptr const & mwm, boost::shared_ptr const & feature) + : m_mwm(mwm) + , m_feature(feature) + {} uint32_t GetIndex() const { return m_feature->GetID().m_index; } bp::list GetTypes() { bp::list types; - m_feature->ForEachType([&](auto t) { + m_feature->ForEachType([&](auto t) + { // A type can be invalid because the type was marked as deprecated in mapcss file. types.append(classif().IsTypeValid(t) ? classif().GetIndexForType(t) : kInvalidIndex); }); @@ -79,9 +79,7 @@ public: { bp::dict mnames; auto const & name = m_feature->GetNames(); - name.ForEach([&](auto code, auto && str) { - mnames[StringUtf8Multilang::GetLangByCode(code)] = str; - }); + name.ForEach([&](auto code, auto && str) { mnames[StringUtf8Multilang::GetLangByCode(code)] = str; }); return mnames; } @@ -113,17 +111,13 @@ public: case GeomType::Point: case GeomType::Line: { - m_feature->ForEachPoint([&](auto const & p) { geometry.append(p); }, - FeatureType::BEST_GEOMETRY); + m_feature->ForEachPoint([&](auto const & p) { geometry.append(p); }, FeatureType::BEST_GEOMETRY); } break; case GeomType::Area: { - m_feature->ForEachTriangle( - [&](auto const & p1, auto const & p2, auto const & p3) { - geometry.append(m2::TriangleD(p1, p2, p3)); - }, - FeatureType::BEST_GEOMETRY); + m_feature->ForEachTriangle([&](auto const & p1, auto const & p2, auto const & p3) + { geometry.append(m2::TriangleD(p1, p2, p3)); }, FeatureType::BEST_GEOMETRY); } break; case GeomType::Undefined: break; @@ -207,8 +201,7 @@ private: , m_mwmValue(m_ds.GetLocalCountryFile()) , m_guard(std::make_unique(m_ds.GetDataSource(), m_ds.GetMwmId())) , m_parse(parse) - { - } + {} void SetSelfPtr(boost::weak_ptr const & self) { m_self = self; } @@ -219,8 +212,7 @@ private: bool m_parse = false; }; -BOOST_PYTHON_FUNCTION_OVERLOADS(MwmCreateOverloads, Mwm::Create, 1 /* min_args */, - 2 /* max_args */); +BOOST_PYTHON_FUNCTION_OVERLOADS(MwmCreateOverloads, Mwm::Create, 1 /* min_args */, 2 /* max_args */); class MwmIter { @@ -243,7 +235,10 @@ private: uint32_t m_current = 0; }; -MwmIter Mwm::MakeMwmIter() { return MwmIter(m_self.lock()); } +MwmIter Mwm::MakeMwmIter() +{ + return MwmIter(m_self.lock()); +} std::string ReadAll(std::string const & filename) { @@ -255,23 +250,18 @@ std::string ReadAll(std::string const & filename) void InitClassificator(std::string const & resourcePath) { - classificator::LoadTypes( - ReadAll(base::JoinPath(resourcePath, "classificator.txt")), - ReadAll(base::JoinPath(resourcePath, "types.txt")) - ); + classificator::LoadTypes(ReadAll(base::JoinPath(resourcePath, "classificator.txt")), + ReadAll(base::JoinPath(resourcePath, "types.txt"))); } struct GeometryNamespace -{ -}; +{}; struct MwmNamespace -{ -}; +{}; struct ClassifNamespace -{ -}; +{}; } // namespace BOOST_PYTHON_MODULE(pygen) @@ -298,19 +288,18 @@ BOOST_PYTHON_MODULE(pygen) .add_property("min_y", &m2::RectD::minY, &m2::RectD::setMinY) .add_property("max_x", &m2::RectD::maxX, &m2::RectD::setMaxX) .add_property("max_y", &m2::RectD::maxY, &m2::RectD::setMaxY) - .add_property( - "right_top", &m2::RectD::RightTop, - +[](m2::RectD & self, m2::RectD const & p) { - self.setMaxX(p.maxX()); - self.setMaxY(p.maxY()); - }) - .add_property( - "left_bottom", &m2::RectD::LeftBottom, - +[](m2::RectD & self, m2::RectD const & p) { - self.setMinX(p.minX()); - self.setMinY(p.minY()); - }) - .def("__repr__", static_cast(m2::DebugPrint)); + .add_property("right_top", &m2::RectD::RightTop, + +[](m2::RectD & self, m2::RectD const & p) + { + self.setMaxX(p.maxX()); + self.setMaxY(p.maxY()); + }) + .add_property("left_bottom", &m2::RectD::LeftBottom, + +[](m2::RectD & self, m2::RectD const & p) + { + self.setMinX(p.minX()); + self.setMinY(p.minY()); + }).def("__repr__", static_cast(m2::DebugPrint)); } { bp::scope mwmNamespace = bp::class_("mwm"); @@ -330,15 +319,13 @@ BOOST_PYTHON_MODULE(pygen) .def_readwrite("tag", &FilesContainerR::TagInfo::m_tag) .def_readwrite("offset", &FilesContainerR::TagInfo::m_offset) .def_readwrite("size", &FilesContainerR::TagInfo::m_size) - .def("__repr__", - static_cast(DebugPrint)); + .def("__repr__", static_cast(DebugPrint)); bp::class_("MwmVersion", bp::no_init) .def("format", &version::MwmVersion::GetFormat) .def("seconds_since_epoch", &version::MwmVersion::GetSecondsSinceEpoch) .def("version", &version::MwmVersion::GetVersion) - .def("__repr__", - static_cast(version::DebugPrint)); + .def("__repr__", static_cast(version::DebugPrint)); bp::class_("FeatureType", bp::no_init) .def("index", &FeatureTypeWrapper::GetIndex) @@ -355,17 +342,14 @@ BOOST_PYTHON_MODULE(pygen) .def("center", &FeatureTypeWrapper::GetCenter) .def("geometry", &FeatureTypeWrapper::GetGeometry) .def("limit_rect", &FeatureTypeWrapper::GetLimitRect) - .def( - "parse", - +[](FeatureTypeWrapper & self) { - self.ParseAll(); - return self; - }) - .def("__repr__", &FeatureTypeWrapper::DebugString); + .def("parse", +[](FeatureTypeWrapper & self) + { + self.ParseAll(); + return self; + }).def("__repr__", &FeatureTypeWrapper::DebugString); bp::class_("MwmIter", bp::no_init) - .def( - "__iter__", +[](MwmIter self) { return self; }) + .def("__iter__", +[](MwmIter self) { return self; }) .def("__next__", &MwmIter::Next) .def("next", &MwmIter::Next); @@ -384,11 +368,7 @@ BOOST_PYTHON_MODULE(pygen) bp::def("init_classificator", InitClassificator); - bp::def( - "readable_type", +[](uint32_t index) { - return index == kInvalidIndex - ? "unknown" - : classif().GetReadableObjectName(classif().GetTypeForIndex(index)); - }); + bp::def("readable_type", +[](uint32_t index) + { return index == kInvalidIndex ? "unknown" : classif().GetReadableObjectName(classif().GetTypeForIndex(index)); }); } } diff --git a/generator/raw_generator.cpp b/generator/raw_generator.cpp index 32da41033..3f284ad65 100644 --- a/generator/raw_generator.cpp +++ b/generator/raw_generator.cpp @@ -1,6 +1,6 @@ #include "generator/raw_generator.hpp" -//#include "generator/complex_loader.hpp" +// #include "generator/complex_loader.hpp" #include "generator/features_processing_helpers.hpp" #include "generator/final_processor_cities.hpp" #include "generator/final_processor_coastline.hpp" @@ -23,22 +23,17 @@ namespace class Stats { public: - Stats(size_t logCallCountThreshold) - : m_timer(true /* start */), m_logCallCountThreshold(logCallCountThreshold) - { - } + Stats(size_t logCallCountThreshold) : m_timer(true /* start */), m_logCallCountThreshold(logCallCountThreshold) {} void Log(std::vector const & elements, uint64_t pos, bool forcePrint = false) { for (auto const & e : elements) - { if (e.IsNode()) ++m_nodeCounter; else if (e.IsWay()) ++m_wayCounter; else if (e.IsRelation()) ++m_relationCounter; - } m_element_counter += elements.size(); if (!forcePrint && m_callCount != m_logCallCountThreshold) @@ -51,12 +46,11 @@ public: auto const posMiB = pos / kBytesInMiB; auto const elapsedSeconds = m_timer.ElapsedSeconds(); auto const avgSpeedMiBPerSec = posMiB / elapsedSeconds; - auto const speedMiBPerSec = - (pos - m_prevFilePos) / (elapsedSeconds - m_prevElapsedSeconds) / kBytesInMiB; + auto const speedMiBPerSec = (pos - m_prevFilePos) / (elapsedSeconds - m_prevElapsedSeconds) / kBytesInMiB; - LOG(LINFO, ("Read", m_element_counter, "elements [pos:", posMiB, - "MiB, avg read speed:", avgSpeedMiBPerSec, " MiB/s, read speed:", speedMiBPerSec, - "MiB/s [n:", m_nodeCounter, ", w:", m_wayCounter, ", r:", m_relationCounter, "]]")); + LOG(LINFO, ("Read", m_element_counter, "elements [pos:", posMiB, "MiB, avg read speed:", avgSpeedMiBPerSec, + " MiB/s, read speed:", speedMiBPerSec, "MiB/s [n:", m_nodeCounter, ", w:", m_wayCounter, + ", r:", m_relationCounter, "]]")); m_prevFilePos = pos; m_prevElapsedSeconds = elapsedSeconds; @@ -86,8 +80,7 @@ RawGenerator::RawGenerator(feature::GenerateInfo & genInfo, size_t threadsCount, , m_cache(std::make_shared(m_intermediateDataObjectsCache, genInfo)) , m_queue(std::make_shared()) , m_translators(std::make_shared()) -{ -} +{} void RawGenerator::ForceReloadCache() { @@ -95,11 +88,11 @@ void RawGenerator::ForceReloadCache() m_cache = std::make_shared(m_intermediateDataObjectsCache, m_genInfo); } -void RawGenerator::GenerateCountries(bool isTests/* = false*/) +void RawGenerator::GenerateCountries(bool isTests /* = false*/) { -// if (!m_genInfo.m_complexHierarchyFilename.empty()) -// m_hierarchyNodesSet = GetOrCreateComplexLoader(m_genInfo.m_complexHierarchyFilename).GetIdsSet(); -// auto const complexFeaturesMixer = std::make_shared(m_hierarchyNodesSet); + // if (!m_genInfo.m_complexHierarchyFilename.empty()) + // m_hierarchyNodesSet = GetOrCreateComplexLoader(m_genInfo.m_complexHierarchyFilename).GetIdsSet(); + // auto const complexFeaturesMixer = std::make_shared(m_hierarchyNodesSet); AffiliationInterfacePtr affiliation; if (isTests) @@ -108,8 +101,8 @@ void RawGenerator::GenerateCountries(bool isTests/* = false*/) } else { - affiliation = std::make_shared( - m_genInfo.m_targetDir, m_genInfo.m_haveBordersForWholeWorld); + affiliation = std::make_shared(m_genInfo.m_targetDir, + m_genInfo.m_haveBordersForWholeWorld); } auto processor = CreateProcessor(ProcessorType::Country, affiliation, m_queue); @@ -118,14 +111,14 @@ void RawGenerator::GenerateCountries(bool isTests/* = false*/) /// and dispatches FB into Coastline, World, Country, City processors. /// Now we have at least 2x similar work in OsmElement->GetNameAndType->FeatureBuilder (for Country and World). - m_translators->Append(CreateTranslator(TranslatorType::Country, processor, m_cache, m_genInfo, - isTests ? nullptr : affiliation)); + m_translators->Append( + CreateTranslator(TranslatorType::Country, processor, m_cache, m_genInfo, isTests ? nullptr : affiliation)); m_finalProcessors.emplace(CreateCountryFinalProcessor(affiliation, false)); m_finalProcessors.emplace(CreatePlacesFinalProcessor(affiliation)); } -void RawGenerator::GenerateWorld(bool cutBordersByWater/* = true */) +void RawGenerator::GenerateWorld(bool cutBordersByWater /* = true */) { auto processor = CreateProcessor(ProcessorType::World, m_queue, m_genInfo.m_popularPlacesFilename); m_translators->Append(CreateTranslator(TranslatorType::World, processor, m_cache, m_genInfo)); @@ -144,9 +137,8 @@ void RawGenerator::GenerateCustom(std::shared_ptr const & t m_translators->Append(translator); } -void RawGenerator::GenerateCustom( - std::shared_ptr const & translator, - std::shared_ptr const & finalProcessor) +void RawGenerator::GenerateCustom(std::shared_ptr const & translator, + std::shared_ptr const & finalProcessor) { m_translators->Append(translator); m_finalProcessors.emplace(finalProcessor); @@ -184,8 +176,8 @@ RawGenerator::FinalProcessorPtr RawGenerator::CreateCoslineFinalProcessor() return finalProcessor; } -RawGenerator::FinalProcessorPtr RawGenerator::CreateCountryFinalProcessor( - AffiliationInterfacePtr const & affiliations, bool addAds) +RawGenerator::FinalProcessorPtr RawGenerator::CreateCountryFinalProcessor(AffiliationInterfacePtr const & affiliations, + bool addAds) { auto finalProcessor = std::make_shared(affiliations, m_genInfo.m_tmpDir, m_threadsCount); finalProcessor->SetIsolinesDir(m_genInfo.m_isolinesDir); @@ -197,9 +189,8 @@ RawGenerator::FinalProcessorPtr RawGenerator::CreateCountryFinalProcessor( if (m_genInfo.m_emitCoasts) { - finalProcessor->SetCoastlines( - m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME, ".geom"), - m_genInfo.GetTmpFileName(WORLD_COASTS_FILE_NAME)); + finalProcessor->SetCoastlines(m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME, ".geom"), + m_genInfo.GetTmpFileName(WORLD_COASTS_FILE_NAME)); } finalProcessor->SetCityBoundariesFiles(m_genInfo.GetIntermediateFileName(CITY_BOUNDARIES_COLLECTOR_FILENAME)); @@ -212,7 +203,7 @@ RawGenerator::FinalProcessorPtr RawGenerator::CreateWorldFinalProcessor(bool cut if (cutBordersByWater) { // This file should exist or read exception will be thrown otherwise. - coastlineGeom = m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME, RAW_GEOM_FILE_EXTENSION); + coastlineGeom = m_genInfo.GetIntermediateFileName(WORLD_COASTS_FILE_NAME, RAW_GEOM_FILE_EXTENSION); } auto finalProcessor = std::make_shared(m_genInfo.m_tmpDir, coastlineGeom); @@ -230,8 +221,7 @@ RawGenerator::FinalProcessorPtr RawGenerator::CreatePlacesFinalProcessor(Affilia bool RawGenerator::GenerateFilteredFeatures() { - SourceReader reader = - m_genInfo.m_osmFileName.empty() ? SourceReader() : SourceReader(m_genInfo.m_osmFileName); + SourceReader reader = m_genInfo.m_osmFileName.empty() ? SourceReader() : SourceReader(m_genInfo.m_osmFileName); std::unique_ptr sourceProcessor; switch (m_genInfo.m_osmFileType) @@ -266,13 +256,13 @@ bool RawGenerator::GenerateFilteredFeatures() ++idx; isEnd = idx < m_chunkSize; - stats.Log(elements, reader.Pos(), isEnd/* forcePrint */); + stats.Log(elements, reader.Pos(), isEnd /* forcePrint */); if (isEnd) elements.resize(idx); translators.Emit(std::move(elements)); - - } while (!isEnd); + } + while (!isEnd); LOG(LINFO, ("OSM source input was processed.")); if (!translators.Finish()) diff --git a/generator/raw_generator.hpp b/generator/raw_generator.hpp index 7ba959f6e..ec786382c 100644 --- a/generator/raw_generator.hpp +++ b/generator/raw_generator.hpp @@ -19,16 +19,14 @@ namespace generator class RawGenerator { public: - explicit RawGenerator(feature::GenerateInfo & genInfo, size_t threadsCount = 1, - size_t chunkSize = 1024); + explicit RawGenerator(feature::GenerateInfo & genInfo, size_t threadsCount = 1, size_t chunkSize = 1024); void GenerateCountries(bool isTests = false); void GenerateWorld(bool cutBordersByWater = true); void GenerateCoasts(); void GenerateCustom(std::shared_ptr const & translator); - void GenerateCustom( - std::shared_ptr const & translator, - std::shared_ptr const & finalProcessor); + void GenerateCustom(std::shared_ptr const & translator, + std::shared_ptr const & finalProcessor); bool Execute(); std::vector const & GetNames() const { return m_names; } std::shared_ptr GetQueue() { return m_queue; } @@ -56,9 +54,8 @@ private: std::shared_ptr m_cache; std::shared_ptr m_queue; std::shared_ptr m_translators; - std::priority_queue, FinalProcessorPtrCmp> - m_finalProcessors; + std::priority_queue, FinalProcessorPtrCmp> m_finalProcessors; std::vector m_names; - //std::unordered_set m_hierarchyNodesSet; + // std::unordered_set m_hierarchyNodesSet; }; } // namespace generator diff --git a/generator/raw_generator_writer.cpp b/generator/raw_generator_writer.cpp index bb9c7ff41..e5361caa1 100644 --- a/generator/raw_generator_writer.cpp +++ b/generator/raw_generator_writer.cpp @@ -8,17 +8,20 @@ namespace generator { -RawGeneratorWriter::RawGeneratorWriter(std::shared_ptr const & queue, - std::string const & path) - : m_queue(queue), m_path(path) -{ -} +RawGeneratorWriter::RawGeneratorWriter(std::shared_ptr const & queue, std::string const & path) + : m_queue(queue) + , m_path(path) +{} -RawGeneratorWriter::~RawGeneratorWriter() { ShutdownAndJoin(); } +RawGeneratorWriter::~RawGeneratorWriter() +{ + ShutdownAndJoin(); +} void RawGeneratorWriter::Run() { - m_thread = std::thread([&]() { + m_thread = std::thread([&]() + { while (true) { FeatureProcessorChunk chunk; @@ -39,7 +42,7 @@ std::vector RawGeneratorWriter::GetNames() std::vector names; names.reserve(m_writers.size()); - for (const auto & p : m_writers) + for (auto const & p : m_writers) names.emplace_back(p.first); return names; diff --git a/generator/raw_generator_writer.hpp b/generator/raw_generator_writer.hpp index 037e29f19..c80fd81d6 100644 --- a/generator/raw_generator_writer.hpp +++ b/generator/raw_generator_writer.hpp @@ -14,8 +14,7 @@ namespace generator class RawGeneratorWriter { public: - RawGeneratorWriter(std::shared_ptr const & queue, - std::string const & path); + RawGeneratorWriter(std::shared_ptr const & queue, std::string const & path); ~RawGeneratorWriter(); void Run(); @@ -23,8 +22,7 @@ public: std::vector GetNames(); private: - using FeatureBuilderWriter = - feature::FeatureBuilderWriter; + using FeatureBuilderWriter = feature::FeatureBuilderWriter; void Write(std::vector const & vecChanks); diff --git a/generator/relation_tags.cpp b/generator/relation_tags.cpp index 14b77a383..119ecd19c 100644 --- a/generator/relation_tags.cpp +++ b/generator/relation_tags.cpp @@ -6,7 +6,6 @@ #include "base/string_utils.hpp" - namespace generator { RelationTagsBase::RelationTagsBase() : m_cache(14 /* logCacheSize */) {} @@ -50,16 +49,15 @@ void RelationTagsNode::Process(RelationElement const & e) bool const isBoundary = (type == "boundary"); bool const isPlaceDest = Base::IsKeyTagExists("place") || Base::IsKeyTagExists("de:place"); - bool const processAssociatedStreet = type == "associatedStreet" && - Base::IsKeyTagExists("addr:housenumber") && - !Base::IsKeyTagExists("addr:street"); + bool const processAssociatedStreet = + type == "associatedStreet" && Base::IsKeyTagExists("addr:housenumber") && !Base::IsKeyTagExists("addr:street"); for (auto const & p : e.m_tags) { // - used in railway station processing // - used in routing information // - used in building addresses matching - if (p.first == "network" || p.first == "operator" || p.first == "route" || - p.first == "maxspeed" || p.first.starts_with("addr:")) + if (p.first == "network" || p.first == "operator" || p.first == "route" || p.first == "maxspeed" || + p.first.starts_with("addr:")) { if (!Base::IsKeyTagExists(p.first)) Base::AddCustomTag(p); @@ -87,7 +85,7 @@ bool RelationTagsWay::IsAcceptBoundary(RelationElement const & e) const // Skip religious_administration, political, etc ... // https://github.com/organicmaps/organicmaps/issues/4702 auto const v = e.GetTagValue("boundary"); - return (!v.empty () && classif().GetTypeByPathSafe({"boundary", v}) != Classificator::INVALID_TYPE); + return (!v.empty() && classif().GetTypeByPathSafe({"boundary", v}) != Classificator::INVALID_TYPE); } void RelationTagsWay::Process(RelationElement const & e) @@ -169,9 +167,8 @@ void RelationTagsWay::Process(RelationElement const & e) bool const isPlaceDest = Base::IsKeyTagExists("place") || Base::IsKeyTagExists("de:place"); bool const isAssociatedStreet = type == "associatedStreet"; - bool const processAssociatedStreet = isAssociatedStreet && - Base::IsKeyTagExists("addr:housenumber") && - !Base::IsKeyTagExists("addr:street"); + bool const processAssociatedStreet = + isAssociatedStreet && Base::IsKeyTagExists("addr:housenumber") && !Base::IsKeyTagExists("addr:street"); for (auto const & p : e.m_tags) { @@ -189,8 +186,8 @@ void RelationTagsWay::Process(RelationElement const & e) Base::AddCustomTag("addr:street", p.second); // All "name" tags should be skipped. - if (p.first.starts_with("name") || p.first.starts_with("int_name") || - p.first.starts_with("old_name") || p.first.starts_with("alt_name")) + if (p.first.starts_with("name") || p.first.starts_with("int_name") || p.first.starts_with("old_name") || + p.first.starts_with("alt_name")) { continue; } diff --git a/generator/relation_tags.hpp b/generator/relation_tags.hpp index 946513cf4..2d5671c9b 100644 --- a/generator/relation_tags.hpp +++ b/generator/relation_tags.hpp @@ -26,7 +26,7 @@ public: void Reset(uint64_t fID, OsmElement * p); template - base::ControlFlow operator() (uint64_t id, Reader & reader) + base::ControlFlow operator()(uint64_t id, Reader & reader) { bool exists = false; RelationElement & e = m_cache.Find(id, exists); @@ -41,10 +41,7 @@ protected: static bool IsSkipRelation(std::string_view type); bool IsKeyTagExists(std::string_view const & key) const; void AddCustomTag(std::string_view key, std::string_view value); - void AddCustomTag(std::pair const & p) - { - AddCustomTag(p.first, p.second); - } + void AddCustomTag(std::pair const & p) { AddCustomTag(p.first, p.second); } void AddTagIfNotExist(std::string_view key, std::string_view value); virtual void Process(RelationElement const & e) = 0; @@ -62,7 +59,7 @@ protected: void Process(RelationElement const & e) override; private: - using Base = RelationTagsBase; + using Base = RelationTagsBase; }; class RelationTagsWay : public RelationTagsBase diff --git a/generator/relation_tags_enricher.cpp b/generator/relation_tags_enricher.cpp index 0c9ab0904..fd572af61 100644 --- a/generator/relation_tags_enricher.cpp +++ b/generator/relation_tags_enricher.cpp @@ -6,7 +6,8 @@ namespace generator { RelationTagsEnricher::RelationTagsEnricher(std::shared_ptr const & cache) - : m_cache(cache) {} + : m_cache(cache) +{} void RelationTagsEnricher::operator()(OsmElement & p) { diff --git a/generator/restriction_collector.cpp b/generator/restriction_collector.cpp index 7ee00f048..a5aa148e5 100644 --- a/generator/restriction_collector.cpp +++ b/generator/restriction_collector.cpp @@ -30,7 +30,8 @@ char const kOnly[] = "Only"; char const kNoUTurn[] = "NoUTurn"; char const kOnlyUTurn[] = "OnlyUTurn"; -template bool ParseLineOfWayIds(TokenizerT & iter, std::vector & numbers) +template +bool ParseLineOfWayIds(TokenizerT & iter, std::vector & numbers) { uint64_t number = 0; for (; iter; ++iter) @@ -52,14 +53,15 @@ RestrictionCollector::RestrictionCollector(std::string const & osmIdsToFeatureId bool RestrictionCollector::Process(std::string const & restrictionPath) { - SCOPE_GUARD(clean, [this]() { + SCOPE_GUARD(clean, [this]() + { m_osmIdToFeatureIds.clear(); m_restrictions.clear(); }); if (!ParseRestrictions(restrictionPath)) { - LOG(LWARNING, ("An error happened while parsing restrictions from file:", restrictionPath)); + LOG(LWARNING, ("An error happened while parsing restrictions from file:", restrictionPath)); return false; } @@ -117,8 +119,7 @@ bool RestrictionCollector::ParseRestrictions(std::string const & path) return true; } -Joint::Id RestrictionCollector::GetFirstCommonJoint(uint32_t firstFeatureId, - uint32_t secondFeatureId) const +Joint::Id RestrictionCollector::GetFirstCommonJoint(uint32_t firstFeatureId, uint32_t secondFeatureId) const { uint32_t const firstLen = m_indexGraph.GetRoadGeometry(firstFeatureId).GetPointsCount(); uint32_t const secondLen = m_indexGraph.GetRoadGeometry(secondFeatureId).GetPointsCount(); @@ -128,22 +129,17 @@ Joint::Id RestrictionCollector::GetFirstCommonJoint(uint32_t firstFeatureId, std::unordered_set used; for (uint32_t i = 0; i < firstLen; ++i) - { if (firstRoad.GetJointId(i) != Joint::kInvalidId) used.emplace(firstRoad.GetJointId(i)); - } for (uint32_t i = 0; i < secondLen; ++i) - { if (used.count(secondRoad.GetJointId(i)) != 0) return secondRoad.GetJointId(i); - } return Joint::kInvalidId; } -bool RestrictionCollector::FeatureHasPointWithCoords(uint32_t featureId, - m2::PointD const & coords) const +bool RestrictionCollector::FeatureHasPointWithCoords(uint32_t featureId, m2::PointD const & coords) const { auto const & roadGeometry = m_indexGraph.GetRoadGeometry(featureId); uint32_t const pointsCount = roadGeometry.GetPointsCount(); @@ -157,8 +153,7 @@ bool RestrictionCollector::FeatureHasPointWithCoords(uint32_t featureId, return false; } -bool RestrictionCollector::FeaturesAreCross(m2::PointD const & coords, - uint32_t prev, uint32_t cur) const +bool RestrictionCollector::FeaturesAreCross(m2::PointD const & coords, uint32_t prev, uint32_t cur) const { if (coords == kNoCoords) return GetFirstCommonJoint(prev, cur) != Joint::kInvalidId; @@ -177,8 +172,7 @@ Restriction::Type ConvertUTurnToSimpleRestriction(Restriction::Type type) // OsmId of |from| member is differ from |to| member. // So we "convert" such no_u_turn to any no_* restriction. // And we do the same thing with only_u_turn. - return type == Restriction::Type::NoUTurn ? Restriction::Type::No - : Restriction::Type::Only; + return type == Restriction::Type::NoUTurn ? Restriction::Type::No : Restriction::Type::Only; } void ConvertToUTurnIfPossible(Restriction::Type & type, m2::PointD const & coords, @@ -194,17 +188,11 @@ void ConvertToUTurnIfPossible(Restriction::Type & type, m2::PointD const & coord // with the same |from| and |to| member with node as |via|): // // So we "convert" such relations to no_u_turn or only_u_turn restrictions. - if (featureIds.size() == 2 && - featureIds.front() == featureIds.back() && - coords != RestrictionCollector::kNoCoords) - { - type = type == Restriction::Type::No ? Restriction::Type::NoUTurn - : Restriction::Type::OnlyUTurn; - } + if (featureIds.size() == 2 && featureIds.front() == featureIds.back() && coords != RestrictionCollector::kNoCoords) + type = type == Restriction::Type::No ? Restriction::Type::NoUTurn : Restriction::Type::OnlyUTurn; } -bool RestrictionCollector::CheckAndProcessUTurn(Restriction::Type & restrictionType, - m2::PointD const & coords, +bool RestrictionCollector::CheckAndProcessUTurn(Restriction::Type & restrictionType, m2::PointD const & coords, std::vector & featureIds) const { CHECK(IsUTurnType(restrictionType), ()); @@ -245,10 +233,8 @@ bool RestrictionCollector::CheckAndProcessUTurn(Restriction::Type & restrictionT // According to the wiki: via must be at the end or at the beginning of feature. // https://wiki.openstreetmap.org/wiki/Relation:restriction static auto constexpr kEps = 1e-5; - bool const viaIsFirstNode = - AlmostEqualAbs(coords, mercator::FromLatLon(road.GetPoint(0)), kEps); - bool const viaIsLastNode = - AlmostEqualAbs(coords, mercator::FromLatLon(road.GetPoint(n - 1)), kEps); + bool const viaIsFirstNode = AlmostEqualAbs(coords, mercator::FromLatLon(road.GetPoint(0)), kEps); + bool const viaIsLastNode = AlmostEqualAbs(coords, mercator::FromLatLon(road.GetPoint(n - 1)), kEps); if (viaIsFirstNode) { @@ -268,8 +254,7 @@ bool RestrictionCollector::CheckAndProcessUTurn(Restriction::Type & restrictionT return true; } -bool RestrictionCollector::IsRestrictionValid(Restriction::Type & restrictionType, - m2::PointD const & coords, +bool RestrictionCollector::IsRestrictionValid(Restriction::Type & restrictionType, m2::PointD const & coords, std::vector & featureIds) const { if (featureIds.empty() || !m_indexGraph.IsRoad(featureIds[0])) @@ -294,8 +279,7 @@ bool RestrictionCollector::IsRestrictionValid(Restriction::Type & restrictionTyp return CheckAndProcessUTurn(restrictionType, coords, featureIds); } -bool RestrictionCollector::AddRestriction(m2::PointD const & coords, - Restriction::Type restrictionType, +bool RestrictionCollector::AddRestriction(m2::PointD const & coords, Restriction::Type restrictionType, std::vector const & osmIds) { std::vector featureIds(osmIds.size()); @@ -353,8 +337,7 @@ void FromString(std::string_view str, Restriction::Type & type) return; } - CHECK(false, - ("Invalid line:", str, "expected:", kNo, "or", kOnly, "or", kNoUTurn, "or", kOnlyUTurn)); + CHECK(false, ("Invalid line:", str, "expected:", kNo, "or", kOnly, "or", kNoUTurn, "or", kOnlyUTurn)); UNREACHABLE(); } @@ -372,8 +355,8 @@ void FromString(std::string_view str, RestrictionWriter::ViaType & type) return; } - CHECK(false, ("Invalid line:", str, "expected:", RestrictionWriter::kNodeString, - "or", RestrictionWriter::kWayString)); + CHECK(false, + ("Invalid line:", str, "expected:", RestrictionWriter::kNodeString, "or", RestrictionWriter::kWayString)); } void FromString(std::string_view str, double & number) diff --git a/generator/restriction_collector.hpp b/generator/restriction_collector.hpp index 7e23e852c..2d3eb0cb7 100644 --- a/generator/restriction_collector.hpp +++ b/generator/restriction_collector.hpp @@ -73,8 +73,7 @@ private: /// junctions. bool FeaturesAreCross(m2::PointD const & coords, uint32_t prev, uint32_t cur) const; - bool IsRestrictionValid(Restriction::Type & restrictionType, - m2::PointD const & coords, + bool IsRestrictionValid(Restriction::Type & restrictionType, m2::PointD const & coords, std::vector & featureIds) const; bool CheckAndProcessUTurn(Restriction::Type & restrictionType, m2::PointD const & coords, @@ -89,8 +88,7 @@ private: /// \note This method should be called to add a restriction when feature ids of the restriction /// are unknown. The feature ids should be set later with a call of |SetFeatureId(...)| method. /// \returns true if restriction is add and false otherwise. - bool AddRestriction(m2::PointD const & coords, Restriction::Type type, - std::vector const & osmIds); + bool AddRestriction(m2::PointD const & coords, Restriction::Type type, std::vector const & osmIds); std::vector m_restrictions; routing::OsmIdToFeatureIds m_osmIdToFeatureIds; diff --git a/generator/restriction_generator.cpp b/generator/restriction_generator.cpp index c91442fe8..0cae221c0 100644 --- a/generator/restriction_generator.cpp +++ b/generator/restriction_generator.cpp @@ -10,8 +10,8 @@ #include "platform/country_file.hpp" #include "platform/local_country_file.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include "base/checked_cast.hpp" #include "base/logging.hpp" @@ -38,17 +38,16 @@ std::unique_ptr CreateIndexGraph(std::string const & mwmPath, std::s MwmValue mwmValue(platform::LocalCountryFile::MakeTemporary(mwmPath)); - auto graph = std::make_unique( - std::make_shared(GeometryLoader::CreateFromFile(mwmPath, vehicleModel)), - EdgeEstimator::Create(VehicleType::Car, *vehicleModel, nullptr /* trafficStash */, - nullptr /* dataSource */, nullptr /* numMvmIds */)); + auto graph = + std::make_unique(std::make_shared(GeometryLoader::CreateFromFile(mwmPath, vehicleModel)), + EdgeEstimator::Create(VehicleType::Car, *vehicleModel, nullptr /* trafficStash */, + nullptr /* dataSource */, nullptr /* numMvmIds */)); DeserializeIndexGraph(mwmValue, VehicleType::Car, *graph); return graph; } -void SerializeRestrictions(RestrictionCollector & restrictionCollector, - std::string const & mwmPath) +void SerializeRestrictions(RestrictionCollector & restrictionCollector, std::string const & mwmPath) { std::vector restrictions = restrictionCollector.StealRestrictions(); CHECK(std::is_sorted(restrictions.cbegin(), restrictions.cend()), ()); @@ -61,10 +60,9 @@ void SerializeRestrictions(RestrictionCollector & restrictionCollector, decltype(restrictions.cbegin()) firstNextType; if (i != RestrictionHeader::kRestrictionTypes.size()) { - firstNextType = - std::lower_bound(restrictions.cbegin(), restrictions.cend(), - Restriction(RestrictionHeader::kRestrictionTypes[i], {} /* links */), - base::LessBy(&Restriction::m_type)); + firstNextType = std::lower_bound(restrictions.cbegin(), restrictions.cend(), + Restriction(RestrictionHeader::kRestrictionTypes[i], {} /* links */), + base::LessBy(&Restriction::m_type)); } else { @@ -73,8 +71,7 @@ void SerializeRestrictions(RestrictionCollector & restrictionCollector, CHECK_GREATER_OR_EQUAL(i, 1, ("Unexpected overflow.")); auto const prevType = RestrictionHeader::kRestrictionTypes[i - 1]; - header.SetNumberOf(prevType, - base::checked_cast(std::distance(prevTypeEndIt, firstNextType))); + header.SetNumberOf(prevType, base::checked_cast(std::distance(prevTypeEndIt, firstNextType))); prevTypeEndIt = firstNextType; } @@ -89,9 +86,7 @@ void SerializeRestrictions(RestrictionCollector & restrictionCollector, RestrictionSerializer::Serialize(header, restrictions.begin(), restrictions.end(), *w); } -bool BuildRoadRestrictions(IndexGraph & graph, - std::string const & mwmPath, - std::string const & restrictionPath, +bool BuildRoadRestrictions(IndexGraph & graph, std::string const & mwmPath, std::string const & restrictionPath, std::string const & osmIdsToFeatureIdsPath) { LOG(LINFO, ("Generating restrictions for", restrictionPath)); @@ -102,7 +97,8 @@ bool BuildRoadRestrictions(IndexGraph & graph, if (!collector->HasRestrictions()) { - LOG(LWARNING, ("No restrictions created. Check that", restrictionPath, "and", osmIdsToFeatureIdsPath, "are available.")); + LOG(LWARNING, + ("No restrictions created. Check that", restrictionPath, "and", osmIdsToFeatureIdsPath, "are available.")); return false; } diff --git a/generator/restriction_generator.hpp b/generator/restriction_generator.hpp index fcce889da..33e520ff9 100644 --- a/generator/restriction_generator.hpp +++ b/generator/restriction_generator.hpp @@ -11,8 +11,7 @@ namespace routing_builder std::unique_ptr CreateIndexGraph(std::string const & mwmPath, std::string const & country, CountryParentNameGetterFn const & countryParentNameGetterFn); -void SerializeRestrictions(RestrictionCollector & restrictionCollector, - std::string const & mwmPath); +void SerializeRestrictions(RestrictionCollector & restrictionCollector, std::string const & mwmPath); // This function is the generator tool's interface to building the mwm // section which contains road restrictions. (See https://wiki.openstreetmap.org/wiki/Restriction) // As long as the restrictions are built later than the road features themselves @@ -38,8 +37,6 @@ void SerializeRestrictions(RestrictionCollector & restrictionCollector, /// \param osmIdsToFeatureIdsPath a binary file with mapping form osm ids to feature ids. /// One osm id is mapped to one feature id. The file should be saved with the help of /// OsmID2FeatureID class or using a similar way. -bool BuildRoadRestrictions(routing::IndexGraph & graph, - std::string const & mwmPath, - std::string const & restrictionPath, - std::string const & osmIdsToFeatureIdsPath); +bool BuildRoadRestrictions(routing::IndexGraph & graph, std::string const & mwmPath, + std::string const & restrictionPath, std::string const & osmIdsToFeatureIdsPath); } // namespace routing_builder diff --git a/generator/restriction_writer.cpp b/generator/restriction_writer.cpp index 9628a46da..1a982e666 100644 --- a/generator/restriction_writer.cpp +++ b/generator/restriction_writer.cpp @@ -26,49 +26,36 @@ namespace routing_builder { using namespace routing; -std::vector> const kRestrictionTypes ={ - {"no_entry", Restriction::Type::No}, - {"no_exit", Restriction::Type::No}, - {"no_left_turn", Restriction::Type::No}, - {"no_right_turn", Restriction::Type::No}, - {"no_straight_on", Restriction::Type::No}, - {"no_u_turn", Restriction::Type::NoUTurn}, - {"only_left_turn", Restriction::Type::Only}, - {"only_right_turn", Restriction::Type::Only}, - {"only_straight_on", Restriction::Type::Only}, - {"only_u_turn", Restriction::Type::OnlyUTurn} -}; +std::vector> const kRestrictionTypes = { + {"no_entry", Restriction::Type::No}, {"no_exit", Restriction::Type::No}, + {"no_left_turn", Restriction::Type::No}, {"no_right_turn", Restriction::Type::No}, + {"no_straight_on", Restriction::Type::No}, {"no_u_turn", Restriction::Type::NoUTurn}, + {"only_left_turn", Restriction::Type::Only}, {"only_right_turn", Restriction::Type::Only}, + {"only_straight_on", Restriction::Type::Only}, {"only_u_turn", Restriction::Type::OnlyUTurn}}; /// \brief Converts restriction type form string to RestrictionCollector::Type. /// \returns true if conversion was successful and false otherwise. bool TagToType(std::string const & tag, Restriction::Type & type) { auto const it = base::FindIf(kRestrictionTypes, - [&tag](std::pair const & v) { - return v.first == tag; - }); + [&tag](std::pair const & v) { return v.first == tag; }); if (it == kRestrictionTypes.cend()) - return false; // Unsupported restriction type. + return false; // Unsupported restriction type. type = it->second; return true; } -std::vector GetMembersByTag(RelationElement const & relationElement, - std::string const & tag) +std::vector GetMembersByTag(RelationElement const & relationElement, std::string const & tag) { std::vector result; for (auto const & member : relationElement.m_ways) - { if (member.second == tag) result.emplace_back(member); - } for (auto const & member : relationElement.m_nodes) - { if (member.second == tag) result.emplace_back(member); - } return result; } @@ -76,16 +63,12 @@ std::vector GetMembersByTag(RelationElement const & rel OsmElement::EntityType GetType(RelationElement const & relationElement, uint64_t osmId) { for (auto const & member : relationElement.m_ways) - { if (member.first == osmId) return OsmElement::EntityType::Way; - } for (auto const & member : relationElement.m_nodes) - { if (member.first == osmId) return OsmElement::EntityType::Node; - } UNREACHABLE(); } @@ -94,7 +77,8 @@ std::string const RestrictionWriter::kNodeString = "node"; std::string const RestrictionWriter::kWayString = "way"; RestrictionWriter::RestrictionWriter(std::string const & filename, IDRInterfacePtr const & cache) - : generator::CollectorInterface(filename), m_cache(cache) + : generator::CollectorInterface(filename) + , m_cache(cache) { m_stream.exceptions(std::fstream::failbit | std::fstream::badbit); m_stream.open(GetTmpFilename()); @@ -106,7 +90,7 @@ std::shared_ptr RestrictionWriter::Clone(IDRInter return std::make_shared(GetFilename(), cache ? cache : m_cache); } -//static +// static RestrictionWriter::ViaType RestrictionWriter::ConvertFromString(std::string const & str) { if (str == kNodeString) @@ -118,10 +102,8 @@ RestrictionWriter::ViaType RestrictionWriter::ConvertFromString(std::string cons UNREACHABLE(); } -bool ValidateOsmRestriction(std::vector & from, - std::vector & via, - std::vector & to, - RelationElement const & relationElement) +bool ValidateOsmRestriction(std::vector & from, std::vector & via, + std::vector & to, RelationElement const & relationElement) { if (relationElement.GetType() != "restriction") return false; @@ -138,9 +120,8 @@ bool ValidateOsmRestriction(std::vector & from, // https://wiki.openstreetmap.org/wiki/Relation:restriction#Members if (via.size() != 1) { - bool const allMembersAreWays = base::AllOf(via, [&](auto const & member) { - return GetType(relationElement, member.first) == OsmElement::EntityType::Way; - }); + bool const allMembersAreWays = base::AllOf(via, [&](auto const & member) + { return GetType(relationElement, member.first) == OsmElement::EntityType::Way; }); if (!allMembersAreWays) return false; @@ -171,12 +152,9 @@ void RestrictionWriter::CollectRelation(RelationElement const & relationElement) return; auto const viaType = - GetType(relationElement, via.back().first) == OsmElement::EntityType::Node ? ViaType::Node - : ViaType::Way; + GetType(relationElement, via.back().first) == OsmElement::EntityType::Node ? ViaType::Node : ViaType::Way; - auto const printHeader = [&]() { - m_stream << DebugPrint(type) << "," << DebugPrint(viaType) << ","; - }; + auto const printHeader = [&]() { m_stream << DebugPrint(type) << "," << DebugPrint(viaType) << ","; }; if (viaType == ViaType::Way) { @@ -214,7 +192,10 @@ void RestrictionWriter::Save() CHECK(base::CopyFileX(GetTmpFilename(), GetFilename()), ()); } -void RestrictionWriter::OrderCollectedData() { generator::OrderTextFileByLine(GetFilename()); } +void RestrictionWriter::OrderCollectedData() +{ + generator::OrderTextFileByLine(GetFilename()); +} void RestrictionWriter::MergeInto(RestrictionWriter & collector) const { diff --git a/generator/restriction_writer.hpp b/generator/restriction_writer.hpp index 6b94a4cd7..f04ea9115 100644 --- a/generator/restriction_writer.hpp +++ b/generator/restriction_writer.hpp @@ -12,7 +12,6 @@ namespace routing_builder class RestrictionWriter : public generator::CollectorInterface { public: - enum class ViaType { Node, @@ -49,4 +48,3 @@ private: std::string DebugPrint(RestrictionWriter::ViaType const & type); } // namespace routing_builder - diff --git a/generator/road_access_generator.cpp b/generator/road_access_generator.cpp index af2fa6d70..8fd948714 100644 --- a/generator/road_access_generator.cpp +++ b/generator/road_access_generator.cpp @@ -24,7 +24,6 @@ #include "3party/opening_hours/opening_hours.hpp" - namespace routing_builder { using std::string, std::vector; @@ -35,20 +34,16 @@ using ConditionalTagsList = RoadAccessTagProcessor::ConditionalTagsList; /// @name Got from: https://taginfo.openstreetmap.org/search?q=%3Aconditional /// @{ vector const kCarAccessConditionalTags = { - "motor_vehicle:conditional", "motorcar:conditional", "vehicle:conditional", + "motor_vehicle:conditional", + "motorcar:conditional", + "vehicle:conditional", }; -vector const kDefaultAccessConditionalTags = { - "access:conditional", "locked:conditional" -}; +vector const kDefaultAccessConditionalTags = {"access:conditional", "locked:conditional"}; -vector const kPedestrianAccessConditionalTags = { - "foot:conditional" -}; +vector const kPedestrianAccessConditionalTags = {"foot:conditional"}; -vector const kBycicleAccessConditionalTags = { - "bicycle:conditional" -}; +vector const kBycicleAccessConditionalTags = {"bicycle:conditional"}; /// @} // Some tags assume access:conditional in fact, but doesn't have it. @@ -56,8 +51,7 @@ vector const kBycicleAccessConditionalTags = { // for routing it is like: "access:conditional = no @ (Feb - Dec)" std::map kTagToAccessConditional = { {OsmElement::Tag("winter_road", "yes"), "no @ (Mar - Nov)"}, - {OsmElement::Tag("ice_road", "yes"), "no @ (Mar - Nov)"} -}; + {OsmElement::Tag("ice_road", "yes"), "no @ (Mar - Nov)"}}; TagMapping const kMotorCarTagMapping = { {OsmElement::Tag("motorcar", "yes"), RoadAccess::Type::Yes}, @@ -147,43 +141,26 @@ TagMapping const kDefaultTagMapping = { // Removed secondary, tertiary from car list. Example https://www.openstreetmap.org/node/8169922700 std::set const kHighwaysWhereIgnoreBarriersWithoutAccessCar = { - {"highway", "motorway"}, - {"highway", "motorway_link"}, - {"highway", "trunk"}, - {"highway", "trunk_link"}, - {"highway", "primary"}, - {"highway", "primary_link"}, + {"highway", "motorway"}, {"highway", "motorway_link"}, {"highway", "trunk"}, + {"highway", "trunk_link"}, {"highway", "primary"}, {"highway", "primary_link"}, }; /// @todo Looks controversial for secondary/tertiary, but leave as-is for bicycle. std::set const kHighwaysWhereIgnoreBarriersWithoutAccessBicycle = { - {"highway", "motorway"}, - {"highway", "motorway_link"}, - {"highway", "trunk"}, - {"highway", "trunk_link"}, - {"highway", "primary"}, - {"highway", "primary_link"}, - {"highway", "secondary"}, - {"highway", "secondary_link"}, - {"highway", "tertiary"}, - {"highway", "tertiary_link"}, - {"highway", "cycleway"}, // Bicycle barriers without access on cycleway are ignored :) + {"highway", "motorway"}, {"highway", "motorway_link"}, {"highway", "trunk"}, {"highway", "trunk_link"}, + {"highway", "primary"}, {"highway", "primary_link"}, {"highway", "secondary"}, {"highway", "secondary_link"}, + {"highway", "tertiary"}, {"highway", "tertiary_link"}, {"highway", "cycleway"}, // Bicycle barriers without access + // on cycleway are ignored :) }; // motorway_junction blocks not only highway link, but main road also. // Actually, tagging motorway_junction with access is not used, see https://overpass-turbo.eu/s/1d1t // https://github.com/organicmaps/organicmaps/issues/1389 -std::set const kIgnoreAccess = { - {"highway", "motorway_junction"} -}; +std::set const kIgnoreAccess = {{"highway", "motorway_junction"}}; std::set const kHighwaysWhereIgnoreAccessDestination = { - {"highway", "motorway"}, - {"highway", "motorway_link"}, - {"highway", "trunk"}, - {"highway", "trunk_link"}, - {"highway", "primary"}, - {"highway", "primary_link"}, + {"highway", "motorway"}, {"highway", "motorway_link"}, {"highway", "trunk"}, + {"highway", "trunk_link"}, {"highway", "primary"}, {"highway", "primary_link"}, }; auto const kEmptyAccess = RoadAccess::Type::Count; @@ -207,8 +184,8 @@ RoadAccess::Type GetAccessTypeFromMapping(OsmElement const & elem, TagMapping co return (isLocked ? RoadAccess::Type::Locked : kEmptyAccess); } -std::optional> GetTagValueConditionalAccess( - OsmElement const & elem, vector const & tagsList) +std::optional> GetTagValueConditionalAccess(OsmElement const & elem, + vector const & tagsList) { if (tagsList.empty()) return {}; @@ -216,17 +193,13 @@ std::optional> GetTagValueConditionalAccess( for (auto const & tags : tagsList) { for (auto const & tag : tags) - { if (elem.HasTag(tag)) return std::make_pair(tag, elem.GetTag(tag)); - } } for (auto const & [tag, access] : kTagToAccessConditional) - { if (elem.HasTag(tag.m_key, tag.m_value)) return std::make_pair(kDefaultAccessConditionalTags.front(), access); - } return {}; } @@ -242,8 +215,7 @@ string GetVehicleTypeForAccessConditional(string const & accessConditionalTag) } // RoadAccessTagProcessor -------------------------------------------------------------------------- -RoadAccessTagProcessor::RoadAccessTagProcessor(VehicleType vehicleType) - : m_vehicleType(vehicleType) +RoadAccessTagProcessor::RoadAccessTagProcessor(VehicleType vehicleType) : m_vehicleType(vehicleType) { switch (vehicleType) { @@ -283,9 +255,7 @@ RoadAccessTagProcessor::RoadAccessTagProcessor(VehicleType vehicleType) m_accessMappings.push_back(&kTransitTagMapping); break; - case VehicleType::Count: - CHECK(false, ("Bad vehicle type")); - break; + case VehicleType::Count: CHECK(false, ("Bad vehicle type")); break; } } @@ -301,11 +271,8 @@ void RoadAccessTagProcessor::Process(OsmElement const & elem) { switch (accessType) { - case RoadAccess::Type::Permit: - isPermit = true; - break; - case RoadAccess::Type::Locked: - return RoadAccess::Type::Private; + case RoadAccess::Type::Permit: isPermit = true; break; + case RoadAccess::Type::Locked: return RoadAccess::Type::Private; default: // Patch: (permit + access=no) -> private. if (accessType == RoadAccess::Type::No && isPermit) @@ -327,10 +294,8 @@ void RoadAccessTagProcessor::Process(OsmElement const & elem) if (op == RoadAccess::Type::Destination) { for (auto const & tag : elem.m_tags) - { if (kHighwaysWhereIgnoreAccessDestination.count(tag)) return; - } } if (elem.IsNode()) @@ -373,10 +338,8 @@ void RoadAccessTagProcessor::ProcessConditional(OsmElement const & elem) auto const & parser = AccessConditionalTagParser::Instance(); for (auto & access : parser.ParseAccessConditionalTag(op->first, op->second)) - { if (access.m_accessType != kEmptyAccess) m_wayToAccessConditional.FindOrInsert(elem.m_id)->emplace_back(std::move(access)); - } } void RoadAccessTagProcessor::SetIgnoreBarriers(OsmElement const & elem) @@ -415,13 +378,14 @@ void RoadAccessTagProcessor::MergeInto(RoadAccessTagProcessor & processor) const m_wayToAccess.MergeInto(processor.m_wayToAccess); m_wayToAccessConditional.MergeInto(processor.m_wayToAccessConditional); - processor.m_ignoreWABarriers.insert(processor.m_ignoreWABarriers.end(), - m_ignoreWABarriers.begin(), m_ignoreWABarriers.end()); + processor.m_ignoreWABarriers.insert(processor.m_ignoreWABarriers.end(), m_ignoreWABarriers.begin(), + m_ignoreWABarriers.end()); } // RoadAccessCollector ------------------------------------------------------------ RoadAccessCollector::RoadAccessCollector(string const & filename, IDRInterfacePtr cache) - : generator::CollectorInterface(filename), m_cache(std::move(cache)) + : generator::CollectorInterface(filename) + , m_cache(std::move(cache)) { for (uint8_t i = 0; i < static_cast(VehicleType::Count); ++i) m_tagProcessors.emplace_back(static_cast(i)); @@ -438,10 +402,8 @@ void RoadAccessCollector::CollectFeature(feature::FeatureBuilder const & fb, Osm /// Can't say for sure is it good or not, but as it is. for (auto const & tag : elem.m_tags) - { if (kIgnoreAccess.count(tag)) return; - } for (auto & p : m_tagProcessors) { @@ -626,8 +588,8 @@ AccessConditionalTagParser::AccessConditionalTagParser() m_vehiclesToRoadAccess.push_back(kDefaultTagMapping); } -vector AccessConditionalTagParser::ParseAccessConditionalTag( - string const & tag, string const & value) const +vector AccessConditionalTagParser::ParseAccessConditionalTag(string const & tag, + string const & value) const { size_t pos = 0; @@ -688,8 +650,8 @@ vector AccessConditionalTagParser::ParseAccessConditionalTag( } // static -std::optional> -AccessConditionalTagParser::ReadUntilSymbol(string const & input, size_t startPos, char symbol) +std::optional> AccessConditionalTagParser::ReadUntilSymbol(string const & input, + size_t startPos, char symbol) { string result; while (startPos < input.size() && input[startPos] != symbol) @@ -704,8 +666,8 @@ AccessConditionalTagParser::ReadUntilSymbol(string const & input, size_t startPo return {}; } -RoadAccess::Type AccessConditionalTagParser::GetAccessByVehicleAndStringValue( - string const & vehicleFromTag, string const & stringAccessValue) const +RoadAccess::Type AccessConditionalTagParser::GetAccessByVehicleAndStringValue(string const & vehicleFromTag, + string const & stringAccessValue) const { bool isPermit = false; for (auto const & vehicleToAccess : m_vehiclesToRoadAccess) @@ -715,11 +677,8 @@ RoadAccess::Type AccessConditionalTagParser::GetAccessByVehicleAndStringValue( { switch (it->second) { - case RoadAccess::Type::Permit: - isPermit = true; - break; - case RoadAccess::Type::Locked: - return RoadAccess::Type::Private; + case RoadAccess::Type::Permit: isPermit = true; break; + case RoadAccess::Type::Locked: return RoadAccess::Type::Private; default: // Patch: (permit + access=no) -> private. if (it->second == RoadAccess::Type::No && isPermit) diff --git a/generator/road_access_generator.hpp b/generator/road_access_generator.hpp index b543c4320..766291a06 100644 --- a/generator/road_access_generator.hpp +++ b/generator/road_access_generator.hpp @@ -21,18 +21,20 @@ namespace routing { class OsmWay2FeaturePoint; -template void Save(Sink & sink, RoadAccess::Type const & ac) +template +void Save(Sink & sink, RoadAccess::Type const & ac) { WriteToSink(sink, static_cast(ac)); } -template void Load(Source & src, RoadAccess::Type & ac) +template +void Load(Source & src, RoadAccess::Type & ac) { uint8_t const res = ReadPrimitiveFromSource(src); CHECK_LESS(res, uint8_t(RoadAccess::Type::Count), ()); ac = static_cast(res); } -} // namspace routing +} // namespace routing namespace routing_builder { @@ -45,9 +47,9 @@ struct AccessConditional { AccessConditional() = default; AccessConditional(RoadAccess::Type accessType, std::string const & openingHours) - : m_accessType(accessType), m_openingHours(openingHours) - { - } + : m_accessType(accessType) + , m_openingHours(openingHours) + {} bool operator==(AccessConditional const & rhs) const { @@ -65,7 +67,8 @@ struct AccessConditional using ConditionalRAVectorT = std::vector; -template void Save(Sink & sink, ConditionalRAVectorT const & ac) +template +void Save(Sink & sink, ConditionalRAVectorT const & ac) { WriteToSink(sink, uint32_t(ac.size())); for (auto const & e : ac) @@ -75,7 +78,8 @@ template void Save(Sink & sink, ConditionalRAVectorT const & ac) } } -template void Load(Source & src, ConditionalRAVectorT & vec) +template +void Load(Source & src, ConditionalRAVectorT & vec) { uint32_t const count = ReadPrimitiveFromSource(src); vec.resize(count); @@ -154,16 +158,15 @@ public: static AccessConditionalTagParser const & Instance(); AccessConditionalTagParser(); - std::vector ParseAccessConditionalTag( - std::string const & tag, std::string const & value) const; + std::vector ParseAccessConditionalTag(std::string const & tag, std::string const & value) const; private: RoadAccess::Type GetAccessByVehicleAndStringValue(std::string const & vehicleFromTag, std::string const & stringAccessValue) const; - static std::optional> ReadUntilSymbol(std::string const & input, - size_t startPos, char symbol) ; - static std::string TrimAndDropAroundParentheses(std::string input) ; + static std::optional> ReadUntilSymbol(std::string const & input, size_t startPos, + char symbol); + static std::string TrimAndDropAroundParentheses(std::string input); std::vector m_vehiclesToRoadAccess; }; diff --git a/generator/routing_city_boundaries_processor.cpp b/generator/routing_city_boundaries_processor.cpp index e64bb1f8c..a2f962de9 100644 --- a/generator/routing_city_boundaries_processor.cpp +++ b/generator/routing_city_boundaries_processor.cpp @@ -3,9 +3,9 @@ #include "geometry/distance_on_sphere.hpp" #include "geometry/mercator.hpp" -#include "std/boost_geometry.hpp" #include #include +#include "std/boost_geometry.hpp" namespace generator { @@ -16,7 +16,8 @@ double AreaOnEarth(std::vector const & points) using LonLatCoords = bg::cs::spherical_equatorial; bg::model::ring> sphericalPolygon; - auto const addPoint = [&sphericalPolygon](auto const & point) { + auto const addPoint = [&sphericalPolygon](auto const & point) + { auto const latlon = mercator::ToLatLon(point); sphericalPolygon.emplace_back(latlon.m_lon, latlon.m_lat); }; diff --git a/generator/routing_city_boundaries_processor.hpp b/generator/routing_city_boundaries_processor.hpp index a5a491261..f6525cb2a 100644 --- a/generator/routing_city_boundaries_processor.hpp +++ b/generator/routing_city_boundaries_processor.hpp @@ -7,4 +7,4 @@ namespace generator { double AreaOnEarth(std::vector const & points); -} // namespace routing_city_boundaries +} // namespace generator diff --git a/generator/routing_helpers.cpp b/generator/routing_helpers.cpp index d1ee367df..dabce7fe2 100644 --- a/generator/routing_helpers.cpp +++ b/generator/routing_helpers.cpp @@ -16,31 +16,27 @@ void ForEachWayFromFile(std::string const & filename, ToDo && toDo) { using namespace generator; CHECK(ForEachOsmId2FeatureId(filename, - [&](CompositeId const & compositeOsmId, uint32_t featureId) - { - auto const osmId = compositeOsmId.m_mainId; - if (osmId.GetType() == base::GeoObjectId::Type::ObsoleteOsmWay) - toDo(featureId, osmId); - }), ("Can't load osm id mapping from", filename)); + [&](CompositeId const & compositeOsmId, uint32_t featureId) + { + auto const osmId = compositeOsmId.m_mainId; + if (osmId.GetType() == base::GeoObjectId::Type::ObsoleteOsmWay) + toDo(featureId, osmId); + }), + ("Can't load osm id mapping from", filename)); } -void AddFeatureId(base::GeoObjectId osmId, uint32_t featureId, - OsmIdToFeatureIds & osmIdToFeatureIds) +void AddFeatureId(base::GeoObjectId osmId, uint32_t featureId, OsmIdToFeatureIds & osmIdToFeatureIds) { osmIdToFeatureIds[osmId].push_back(featureId); } -void ParseWaysOsmIdToFeatureIdMapping(std::string const & osmIdsToFeatureIdPath, - OsmIdToFeatureIds & osmIdToFeatureIds) +void ParseWaysOsmIdToFeatureIdMapping(std::string const & osmIdsToFeatureIdPath, OsmIdToFeatureIds & osmIdToFeatureIds) { ForEachWayFromFile(osmIdsToFeatureIdPath, [&](uint32_t featureId, base::GeoObjectId osmId) - { - AddFeatureId(osmId, featureId, osmIdToFeatureIds); - }); + { AddFeatureId(osmId, featureId, osmIdToFeatureIds); }); } -void ParseWaysFeatureIdToOsmIdMapping(std::string const & osmIdsToFeatureIdPath, - FeatureIdToOsmId & featureIdToOsmId) +void ParseWaysFeatureIdToOsmIdMapping(std::string const & osmIdsToFeatureIdPath, FeatureIdToOsmId & featureIdToOsmId) { featureIdToOsmId.clear(); @@ -63,14 +59,12 @@ public: ParseWaysOsmIdToFeatureIdMapping(osmIdsToFeatureIdsPath, m_osm2features); } - virtual void ForEachFeature(uint64_t wayID, std::function const & fn) override + virtual void ForEachFeature(uint64_t wayID, std::function const & fn) override { auto it = m_osm2features.find(base::MakeOsmWay(wayID)); if (it != m_osm2features.end()) - { for (uint32_t featureID : it->second) fn(featureID); - } } virtual void ForEachNodeIdx(uint64_t wayID, uint32_t candidateIdx, m2::PointU pt, @@ -125,8 +119,8 @@ public: } }; -std::unique_ptr CreateWay2FeatureMapper( - std::string const & dataFilePath, std::string const & osmIdsToFeatureIdsPath) +std::unique_ptr CreateWay2FeatureMapper(std::string const & dataFilePath, + std::string const & osmIdsToFeatureIdsPath) { return std::make_unique(dataFilePath, osmIdsToFeatureIdsPath); } diff --git a/generator/routing_helpers.hpp b/generator/routing_helpers.hpp index 3c50e4608..4142bd13b 100644 --- a/generator/routing_helpers.hpp +++ b/generator/routing_helpers.hpp @@ -11,7 +11,10 @@ #include #include -namespace feature { class FeatureBuilder; } +namespace feature +{ +class FeatureBuilder; +} namespace routing { @@ -25,32 +28,29 @@ using FeatureIdToOsmId = std::map; // when an area and its boundary may correspond to the same osm id. /// @note As for road features a road |osmId| may correspond to several feature ids if /// the |osmId| is split by a mini_roundabout or a turning_loop. -void AddFeatureId(base::GeoObjectId osmId, uint32_t featureId, - OsmIdToFeatureIds & osmIdToFeatureIds); +void AddFeatureId(base::GeoObjectId osmId, uint32_t featureId, OsmIdToFeatureIds & osmIdToFeatureIds); // These methods fill |osmIdToFeatureIds| and |featureIdToOsmId| with features of // type base::GeoObjectId::Type::ObsoleteOsmWay. This type contains all the roads // and besides that other linear objects like streams and fences. /// @note One osm id can be mapped on several feature ids, as described above in AddFeatureId. -void ParseWaysOsmIdToFeatureIdMapping(std::string const & osmIdsToFeatureIdPath, - OsmIdToFeatureIds & osmIdToFeatureIds); -void ParseWaysFeatureIdToOsmIdMapping(std::string const & osmIdsToFeatureIdPath, - FeatureIdToOsmId & featureIdToOsmId); +void ParseWaysOsmIdToFeatureIdMapping(std::string const & osmIdsToFeatureIdPath, OsmIdToFeatureIds & osmIdToFeatureIds); +void ParseWaysFeatureIdToOsmIdMapping(std::string const & osmIdsToFeatureIdPath, FeatureIdToOsmId & featureIdToOsmId); class OsmWay2FeaturePoint { public: virtual ~OsmWay2FeaturePoint() = default; - virtual void ForEachFeature(uint64_t wayID, std::function const & fn) = 0; + virtual void ForEachFeature(uint64_t wayID, std::function const & fn) = 0; /// Pass (featureID, nodeIdx) for the correspondent point |pt| in OSM |wayID|. /// @param[in] candidateIdx Used as a hint (like it was in original OSM way). virtual void ForEachNodeIdx(uint64_t wayID, uint32_t candidateIdx, m2::PointU pt, - std::function const & fn) = 0; + std::function const & fn) = 0; }; -std::unique_ptr CreateWay2FeatureMapper( - std::string const & dataFilePath, std::string const & osmIdsToFeatureIdsPath); +std::unique_ptr CreateWay2FeatureMapper(std::string const & dataFilePath, + std::string const & osmIdsToFeatureIdsPath); bool IsRoadWay(feature::FeatureBuilder const & fb); } // namespace routing diff --git a/generator/routing_index_generator.cpp b/generator/routing_index_generator.cpp index ebcb63a17..5b7588f8d 100644 --- a/generator/routing_index_generator.cpp +++ b/generator/routing_index_generator.cpp @@ -73,19 +73,13 @@ public: if (types.HasWithSubclass(m_constructionType)) return 0; - return CalcMask([&](VehicleModelInterface const & model) - { - return model.IsRoad(types); - }); + return CalcMask([&](VehicleModelInterface const & model) { return model.IsRoad(types); }); } VehicleMask CalcOneWayMask(FeatureType & f) const { feature::TypesHolder const types(f); - return CalcMask([&](VehicleModelInterface const & model) - { - return model.IsOneWay(types); - }); + return CalcMask([&](VehicleModelInterface const & model) { return model.IsOneWay(types); }); } private: @@ -113,11 +107,9 @@ private: class Processor final { public: - Processor(string const & country, - CountryParentNameGetterFn const & countryParentNameGetterFn) + Processor(string const & country, CountryParentNameGetterFn const & countryParentNameGetterFn) : m_maskBuilder(country, countryParentNameGetterFn) - { - } + {} void ProcessAllFeatures(string const & filename) { @@ -165,57 +157,41 @@ private: class IndexGraphWrapper final { public: - IndexGraphWrapper(IndexGraph & graph, Segment const & start) - : m_graph(graph), m_start(start) - { - } + IndexGraphWrapper(IndexGraph & graph, Segment const & start) : m_graph(graph), m_start(start) {} /// @name For compatibility with IndexGraphStarterJoints /// @{ Segment GetStartSegment() const { return m_start; } Segment GetFinishSegment() const { return {}; } bool ConvertToReal(Segment const & /* segment */) const { return false; } - RouteWeight HeuristicCostEstimate(Segment const & /* from */, - ms::LatLon const & /* to */) + RouteWeight HeuristicCostEstimate(Segment const & /* from */, ms::LatLon const & /* to */) { CHECK(false, ("This method exists only for compatibility with IndexGraphStarterJoints")); return GetAStarWeightZero(); } - bool AreWavesConnectible( - IndexGraph::Parents const & /* forwardParents */, - JointSegment const & /* commonVertex */, - IndexGraph::Parents const & /* backwardParents */, - WorldGraph::FakeConverterT const & /* fakeFeatureConverter */) + bool AreWavesConnectible(IndexGraph::Parents const & /* forwardParents */, + JointSegment const & /* commonVertex */, + IndexGraph::Parents const & /* backwardParents */, + WorldGraph::FakeConverterT const & /* fakeFeatureConverter */) { return true; } - void SetAStarParents(bool /* forward */, - IndexGraph::Parents & parents) - { - m_AStarParents = &parents; - } + void SetAStarParents(bool /* forward */, IndexGraph::Parents & parents) { m_AStarParents = &parents; } - void DropAStarParents() - { - m_AStarParents = nullptr; - } + void DropAStarParents() { m_AStarParents = nullptr; } RouteWeight GetAStarWeightEpsilon() { return RouteWeight(0.0); } RouteWeight GetCrossBorderPenalty(NumMwmId mwmId1, NumMwmId mwmId2) { return RouteWeight(0); } /// @} - ms::LatLon const & GetPoint(Segment const & s, bool forward) - { - return m_graph.GetPoint(s, forward); - } + ms::LatLon const & GetPoint(Segment const & s, bool forward) { return m_graph.GetPoint(s, forward); } using SegmentEdgeListT = IndexGraph::SegmentEdgeListT; using EdgeListT = SegmentEdgeListT; - void GetEdgesList(Segment const & child, bool isOutgoing, - SegmentEdgeListT & edges) + void GetEdgesList(Segment const & child, bool isOutgoing, SegmentEdgeListT & edges) { m_graph.GetEdgeList(child, isOutgoing, true /* useRoutingOptions */, edges); } @@ -223,25 +199,16 @@ public: using JointEdgeListT = IndexGraph::JointEdgeListT; using WeightListT = IndexGraph::WeightListT; - void GetEdgeList( - astar::VertexData const & vertexData, - Segment const & parent, bool isOutgoing, JointEdgeListT & edges, - WeightListT & parentWeights) const + void GetEdgeList(astar::VertexData const & vertexData, Segment const & parent, + bool isOutgoing, JointEdgeListT & edges, WeightListT & parentWeights) const { CHECK(m_AStarParents, ()); - return m_graph.GetEdgeList(vertexData.m_vertex, parent, isOutgoing, edges, parentWeights, - *m_AStarParents); + return m_graph.GetEdgeList(vertexData.m_vertex, parent, isOutgoing, edges, parentWeights, *m_AStarParents); } - bool IsJoint(Segment const & segment, bool fromStart) const - { - return IsJointOrEnd(segment, fromStart); - } + bool IsJoint(Segment const & segment, bool fromStart) const { return IsJointOrEnd(segment, fromStart); } - bool IsJointOrEnd(Segment const & segment, bool fromStart) const - { - return m_graph.IsJointOrEnd(segment, fromStart); - } + bool IsJointOrEnd(Segment const & segment, bool fromStart) const { return m_graph.IsJointOrEnd(segment, fromStart); } template RouteWeight HeuristicCostEstimate(Vertex const & /* from */, m2::PointD const & /* to */) @@ -263,8 +230,7 @@ class DijkstraWrapperJoints : public IndexGraphStarterJoints public: DijkstraWrapperJoints(IndexGraphWrapper & graph, Segment const & start) : IndexGraphStarterJoints(graph, start) - { - } + {} Weight HeuristicCostEstimate(Vertex const & /* from */, Vertex const & /* to */) override { @@ -275,11 +241,10 @@ public: /// \brief Fills |transitions| for osm id case. That means |Transition::m_roadMask| for items in /// |transitions| will be combination of |VehicleType::Pedestrian|, |VehicleType::Bicycle| /// and |VehicleType::Car|. -void CalcCrossMwmTransitions( - string const & mwmFile, string const & intermediateDir, string const & mappingFile, - vector const & borders, string const & country, - CountryParentNameGetterFn const & countryParentNameGetterFn, - CrossMwmConnectorBuilderEx & builder) +void CalcCrossMwmTransitions(string const & mwmFile, string const & intermediateDir, string const & mappingFile, + vector const & borders, string const & country, + CountryParentNameGetterFn const & countryParentNameGetterFn, + CrossMwmConnectorBuilderEx & builder) { VehicleMaskBuilder const maskMaker(country, countryParentNameGetterFn); std::map featureIdToOsmId; @@ -290,7 +255,8 @@ void CalcCrossMwmTransitions( using CrossMwmInfoT = generator::CrossMwmOsmWaysCollector::CrossMwmInfo; auto const crossMwmOsmIdWays = CrossMwmInfoT::LoadFromFileToSet(path); - ForEachFeature(mwmFile, [&](FeatureType & f, uint32_t featureId) { + ForEachFeature(mwmFile, [&](FeatureType & f, uint32_t featureId) + { VehicleMask const roadMask = maskMaker.CalcRoadMask(f); if (roadMask == 0) return; @@ -315,11 +281,10 @@ void CalcCrossMwmTransitions( /// \brief Fills |transitions| for transit case. That means Transition::m_roadMask for items in /// |transitions| will be equal to VehicleType::Transit after call of this method. -void CalcCrossMwmTransitions( - string const & mwmFile, string const & intermediateDir, string const & mappingFile, - vector const & borders, string const & country, - CountryParentNameGetterFn const & /* countryParentNameGetterFn */, - CrossMwmConnectorBuilderEx & builder) +void CalcCrossMwmTransitions(string const & mwmFile, string const & intermediateDir, string const & mappingFile, + vector const & borders, string const & country, + CountryParentNameGetterFn const & /* countryParentNameGetterFn */, + CrossMwmConnectorBuilderEx & builder) { CHECK(mappingFile.empty(), ()); CHECK(intermediateDir.empty(), ()); @@ -328,8 +293,7 @@ void CalcCrossMwmTransitions( FilesContainerR cont(mwmFile); if (!cont.IsExist(TRANSIT_FILE_TAG)) { - LOG(LINFO, ("Transit cross mwm section is not generated because no transit section in mwm:", - mwmFile)); + LOG(LINFO, ("Transit cross mwm section is not generated because no transit section in mwm:", mwmFile)); return; } auto reader = cont.GetReader(TRANSIT_FILE_TAG); @@ -341,11 +305,11 @@ void CalcCrossMwmTransitions( auto const & stops = graphData.GetStops(); auto const & edges = graphData.GetEdges(); - auto const getStopIdPoint = [&stops](StopId stopId) -> m2::PointD const & { + auto const getStopIdPoint = [&stops](StopId stopId) -> m2::PointD const & + { auto const it = equal_range(stops.cbegin(), stops.cend(), Stop(stopId)); - CHECK_EQUAL( - distance(it.first, it.second), 1, - ("A stop with id:", stopId, "is not unique or there's no such item in stops:", stops)); + CHECK_EQUAL(distance(it.first, it.second), 1, + ("A stop with id:", stopId, "is not unique or there's no such item in stops:", stops)); return it.first->GetPoint(); }; @@ -363,10 +327,9 @@ void CalcCrossMwmTransitions( continue; // Note. One way mask is set to kTransitMask because all transit edges are one way edges. - builder.AddTransition( - connector::TransitId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId()), - i /* feature id */, 0 /* segment index */, kTransitMask, - kTransitMask /* one way mask */, stop2In /* forward is enter */); + builder.AddTransition(connector::TransitId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId()), i /* feature id */, + 0 /* segment index */, kTransitMask, kTransitMask /* one way mask */, + stop2In /* forward is enter */); } } catch (Reader::OpenException const & e) @@ -379,11 +342,11 @@ void CalcCrossMwmTransitions( /// CalcCrossMwmTransitions() when we abandon support of "subway" transit section version. /// \brief Fills |transitions| for experimental transit case. It means that Transition::m_roadMask /// for items in |transitions| will be equal to VehicleType::Transit after the call of this method. -void CalcCrossMwmTransitionsExperimental( - string const & mwmFile, vector const & borders, string const & country, - CountryParentNameGetterFn const & /* countryParentNameGetterFn */, - ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, - CrossMwmConnectorBuilderEx & builder) +void CalcCrossMwmTransitionsExperimental(string const & mwmFile, vector const & borders, + string const & country, + CountryParentNameGetterFn const & /* countryParentNameGetterFn */, + ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, + CrossMwmConnectorBuilderEx & builder) { try { @@ -402,13 +365,12 @@ void CalcCrossMwmTransitionsExperimental( auto const & stops = transitData.GetStops(); auto const & edges = transitData.GetEdges(); - auto const getStopIdPoint = [&stops](::transit::TransitId stopId) { - auto const it = find_if( - stops.begin(), stops.end(), - [stopId](::transit::experimental::Stop const & stop) { return stop.GetId() == stopId; }); + auto const getStopIdPoint = [&stops](::transit::TransitId stopId) + { + auto const it = find_if(stops.begin(), stops.end(), + [stopId](::transit::experimental::Stop const & stop) { return stop.GetId() == stopId; }); - CHECK(it != stops.end(), - ("stopId:", stopId, "is not found in stops. Size of stops:", stops.size())); + CHECK(it != stops.end(), ("stopId:", stopId, "is not found in stops. Size of stops:", stops.size())); return it->GetPoint(); }; @@ -422,17 +384,14 @@ void CalcCrossMwmTransitionsExperimental( if (m2::RegionsContain(borders, stop1Point) == stop2In) continue; - auto const it = - edgeIdToFeatureId.find(::transit::EdgeId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId())); - CHECK(it != edgeIdToFeatureId.end(), - ("Each edge in transitData corresponds to the edgeIdToFeatureId key.")); + auto const it = edgeIdToFeatureId.find(::transit::EdgeId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId())); + CHECK(it != edgeIdToFeatureId.end(), ("Each edge in transitData corresponds to the edgeIdToFeatureId key.")); uint32_t const featureId = it->second; // Note. One way mask is set to kTransitMask because all transit edges are one way edges. - builder.AddTransition( - connector::TransitId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId()), - featureId /* feature id */, 0 /* segment index */, kTransitMask, - kTransitMask /* one way mask */, stop2In /* forward is enter */); + builder.AddTransition(connector::TransitId(e.GetStop1Id(), e.GetStop2Id(), e.GetLineId()), + featureId /* feature id */, 0 /* segment index */, kTransitMask, + kTransitMask /* one way mask */, stop2In /* forward is enter */); } } catch (Reader::OpenException const & e) @@ -442,11 +401,11 @@ void CalcCrossMwmTransitionsExperimental( } // Dummy specialization. We need it to compile this function overload for experimental transit. -void CalcCrossMwmTransitionsExperimental( - string const & mwmFile, vector const & borders, string const & country, - CountryParentNameGetterFn const & countryParentNameGetterFn, - ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, - CrossMwmConnectorBuilderEx & builder) +void CalcCrossMwmTransitionsExperimental(string const & mwmFile, vector const & borders, + string const & country, + CountryParentNameGetterFn const & countryParentNameGetterFn, + ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, + CrossMwmConnectorBuilderEx & builder) { CHECK(false, ("This is dummy specialization and it shouldn't be called.")); } @@ -457,13 +416,11 @@ void CalcCrossMwmTransitionsExperimental( /// are applicable for |connector::OsmId|. /// And |VehicleType::Transit| is applicable for |connector::TransitId|. template -void CalcCrossMwmConnectors( - string const & path, string const & mwmFile, string const & intermediateDir, - string const & country, CountryParentNameGetterFn const & countryParentNameGetterFn, - string const & mappingFile, - ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, - CrossMwmConnectorBuilderEx & builder, - bool experimentalTransit = false) +void CalcCrossMwmConnectors(string const & path, string const & mwmFile, string const & intermediateDir, + string const & country, CountryParentNameGetterFn const & countryParentNameGetterFn, + string const & mappingFile, + ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, + CrossMwmConnectorBuilderEx & builder, bool experimentalTransit = false) { base::Timer timer; string const polyFile = base::JoinPath(path, BORDERS_DIR, country + BORDERS_EXTENSION); @@ -484,15 +441,15 @@ void CalcCrossMwmConnectors( { CHECK(!edgeIdToFeatureId.empty(), ("Edge id to feature id must be filled before building cross-mwm transit section.")); - CalcCrossMwmTransitionsExperimental(mwmFile, borders, country, countryParentNameGetterFn, - edgeIdToFeatureId, builder); + CalcCrossMwmTransitionsExperimental(mwmFile, borders, country, countryParentNameGetterFn, edgeIdToFeatureId, + builder); } else { CHECK(edgeIdToFeatureId.empty(), ("Edge id to feature id must not be filled for subway vesion of transit section.")); - CalcCrossMwmTransitions(mwmFile, intermediateDir, mappingFile, borders, country, - countryParentNameGetterFn, builder); + CalcCrossMwmTransitions(mwmFile, intermediateDir, mappingFile, borders, country, countryParentNameGetterFn, + builder); } LOG(LINFO, ("Transitions count =", builder.GetTransitionsCount(), "elapsed:", timer.ElapsedSeconds(), "seconds")); @@ -514,10 +471,8 @@ void FillWeights(string const & path, string const & mwmFile, string const & cou MwmValue mwmValue(LocalCountryFile(path, platform::CountryFile(country), 0 /* version */)); uint32_t mwmNumRoads = DeserializeIndexGraphNumRoads(mwmValue, vhType); IndexGraph graph(std::make_shared(GeometryLoader::CreateFromFile(mwmFile, vehicleModel), mwmNumRoads), - EdgeEstimator::Create(vhType, *vehicleModel, - nullptr /* trafficStash */, - nullptr /* dataSource */, - nullptr /* numMvmIds */)); + EdgeEstimator::Create(vhType, *vehicleModel, nullptr /* trafficStash */, nullptr /* dataSource */, + nullptr /* numMvmIds */)); graph.SetCurrentTimeGetter([time = GetCurrentTimestamp()] { return time; }); DeserializeIndexGraph(mwmValue, vhType, graph); @@ -623,11 +578,9 @@ void FillWeights(string const & path, string const & mwmFile, string const & cou return weight; }); - LOG(LINFO, ("Leaps finished, elapsed =", timer.ElapsedSeconds(), "seconds.", - "Entries count =", connector.GetNumEnters(), - "Exits count =", connector.GetNumExits(), - "Edges count =", edgesCount, - "Bad weights count =", badWeightsCount)); + LOG(LINFO, + ("Leaps finished, elapsed =", timer.ElapsedSeconds(), "seconds.", "Entries count =", connector.GetNumEnters(), + "Exits count =", connector.GetNumExits(), "Edges count =", edgesCount, "Bad weights count =", badWeightsCount)); size_t pointsCount = 0; size_t roadsCount = 0; @@ -637,8 +590,7 @@ void FillWeights(string const & path, string const & mwmFile, string const & cou pointsCount += graph.GetRoadGeometry(featureID).GetPointsCount(); }); - LOG(LINFO, ("Points count = ", pointsCount, - "Roads count = ", roadsCount, + LOG(LINFO, ("Points count = ", pointsCount, "Roads count = ", roadsCount, "Avg points = ", pointsCount / double(roadsCount))); } @@ -661,8 +613,8 @@ bool BuildRoutingIndex(string const & filename, string const & country, IndexGraphSerializer::Serialize(graph, processor.GetMasks(), *writer); auto const sectionSize = writer->Pos() - startPos; - LOG(LINFO, ("Routing section created:", sectionSize, "bytes,", graph.GetNumRoads(), "roads,", - graph.GetNumJoints(), "joints,", graph.GetNumPoints(), "points")); + LOG(LINFO, ("Routing section created:", sectionSize, "bytes,", graph.GetNumRoads(), "roads,", graph.GetNumJoints(), + "joints,", graph.GetNumPoints(), "points")); return true; } catch (RootException const & e) @@ -689,16 +641,16 @@ void SerializeCrossMwm(string const & mwmFile, string const & sectionName, LOG(LINFO, ("Cross mwm section generated, size:", sectionSize, "bytes")); } -void BuildRoutingCrossMwmSection(string const & path, string const & mwmFile, - string const & country, string const & intermediateDir, +void BuildRoutingCrossMwmSection(string const & path, string const & mwmFile, string const & country, + string const & intermediateDir, CountryParentNameGetterFn const & countryParentNameGetterFn, string const & osmToFeatureFile) { LOG(LINFO, ("Building cross mwm section for", country)); CrossMwmConnectorBuilderEx builder; - CalcCrossMwmConnectors(path, mwmFile, intermediateDir, country, countryParentNameGetterFn, - osmToFeatureFile, {} /* edgeIdToFeatureId */, builder); + CalcCrossMwmConnectors(path, mwmFile, intermediateDir, country, countryParentNameGetterFn, osmToFeatureFile, + {} /* edgeIdToFeatureId */, builder); // We use leaps for cars only. To use leaps for other vehicle types add weights generation // here and change WorldGraph mode selection rule in IndexRouter::CalculateSubroute. @@ -707,17 +659,16 @@ void BuildRoutingCrossMwmSection(string const & path, string const & mwmFile, SerializeCrossMwm(mwmFile, CROSS_MWM_FILE_TAG, builder); } -void BuildTransitCrossMwmSection( - string const & path, string const & mwmFile, string const & country, - CountryParentNameGetterFn const & countryParentNameGetterFn, - ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, bool experimentalTransit) +void BuildTransitCrossMwmSection(string const & path, string const & mwmFile, string const & country, + CountryParentNameGetterFn const & countryParentNameGetterFn, + ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, + bool experimentalTransit) { LOG(LINFO, ("Building transit cross mwm section for", country)); CrossMwmConnectorBuilderEx builder; - CalcCrossMwmConnectors(path, mwmFile, "" /* intermediateDir */, country, - countryParentNameGetterFn, "" /* mapping file */, edgeIdToFeatureId, - builder, experimentalTransit); + CalcCrossMwmConnectors(path, mwmFile, "" /* intermediateDir */, country, countryParentNameGetterFn, + "" /* mapping file */, edgeIdToFeatureId, builder, experimentalTransit); SerializeCrossMwm(mwmFile, TRANSIT_CROSS_MWM_FILE_TAG, builder); } diff --git a/generator/routing_index_generator.hpp b/generator/routing_index_generator.hpp index 82df5010e..642dc48e7 100644 --- a/generator/routing_index_generator.hpp +++ b/generator/routing_index_generator.hpp @@ -17,16 +17,15 @@ bool BuildRoutingIndex(std::string const & filename, std::string const & country /// \note Before call of this method /// * all features and feature geometry should be generated /// * city_roads section should be generated -void BuildRoutingCrossMwmSection(std::string const & path, std::string const & mwmFile, - std::string const & country, std::string const & intermediateDir, +void BuildRoutingCrossMwmSection(std::string const & path, std::string const & mwmFile, std::string const & country, + std::string const & intermediateDir, CountryParentNameGetterFn const & countryParentNameGetterFn, std::string const & osmToFeatureFile); /// \brief Builds TRANSIT_CROSS_MWM_FILE_TAG section. /// \note Before a call of this method TRANSIT_FILE_TAG should be built. -void BuildTransitCrossMwmSection( - std::string const & path, std::string const & mwmFile, std::string const & country, - CountryParentNameGetterFn const & countryParentNameGetterFn, - ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, - bool experimentalTransit = false); -} // namespace routing +void BuildTransitCrossMwmSection(std::string const & path, std::string const & mwmFile, std::string const & country, + CountryParentNameGetterFn const & countryParentNameGetterFn, + ::transit::experimental::EdgeIdToFeatureId const & edgeIdToFeatureId, + bool experimentalTransit = false); +} // namespace routing_builder diff --git a/generator/routing_world_roads_generator.cpp b/generator/routing_world_roads_generator.cpp index e2a8434f6..ef2f85ecd 100644 --- a/generator/routing_world_roads_generator.cpp +++ b/generator/routing_world_roads_generator.cpp @@ -58,7 +58,8 @@ bool FillRoadsFromFile(CrossBorderGraph & graph, std::string const & roadsFilePa { auto reader = coding::CSVReader(roadsFilePath, false /* hasHeader */, ' ' /* delimiter */); - reader.ForEachRow([&](auto const & row) { + reader.ForEachRow([&](auto const & row) + { auto const & [segId, seg] = ReadSegment(row); graph.AddCrossBorderSegment(segId, seg); }); @@ -84,8 +85,7 @@ bool BuildWorldRoads(std::string const & mwmFilePath, std::string const & roadsF return false; } - CHECK(!graph.m_segments.empty(), - ("Road segments for CrossBorderGraph should be set.", roadsFilePath)); + CHECK(!graph.m_segments.empty(), ("Road segments for CrossBorderGraph should be set.", roadsFilePath)); FilesContainerW cont(mwmFilePath, FileWriter::OP_WRITE_EXISTING); auto writer = cont.GetWriter(ROUTING_WORLD_FILE_TAG); diff --git a/generator/search_index_builder.cpp b/generator/search_index_builder.cpp index 03d66fc05..a20cef037 100644 --- a/generator/search_index_builder.cpp +++ b/generator/search_index_builder.cpp @@ -46,16 +46,12 @@ #include #include - namespace indexer { using namespace strings; using namespace search; -SynonymsHolder::SynonymsHolder() - : SynonymsHolder(base::JoinPath(GetPlatform().ResourcesDir(), "synonyms.txt")) -{ -} +SynonymsHolder::SynonymsHolder() : SynonymsHolder(base::JoinPath(GetPlatform().ResourcesDir(), "synonyms.txt")) {} SynonymsHolder::SynonymsHolder(std::string const & fPath) { @@ -130,11 +126,7 @@ class FeatureNameInserter base::TopStatsCounter m_stats; public: - explicit FeatureNameInserter(ContT & keyValuePairs) - : m_suffixes(GetDACHStreets()) - , m_keyValuePairs(keyValuePairs) - { - } + explicit FeatureNameInserter(ContT & keyValuePairs) : m_suffixes(GetDACHStreets()), m_keyValuePairs(keyValuePairs) {} ~FeatureNameInserter() { LOG(LINFO, ("Top street's name tokens:")); @@ -202,10 +194,8 @@ public: if (m_synonyms) { /// @todo Avoid creating temporary std::string. - m_synonyms->ForEach(std::string(name), [&](std::string const & utf8str) - { - tokens.push_back(NormalizeAndSimplifyString(utf8str)); - }); + m_synonyms->ForEach(std::string(name), + [&](std::string const & utf8str) { tokens.push_back(NormalizeAndSimplifyString(utf8str)); }); } static_assert(kMaxNumTokens > 0); @@ -218,10 +208,8 @@ public: if (m_hasStreetType) { - StreetTokensFilter filter([this, lang](UniString const & token, size_t) - { - AddToken(lang, token); - }, false /* withMisprints */); + StreetTokensFilter filter([this, lang](UniString const & token, size_t) { AddToken(lang, token); }, + false /* withMisprints */); for (auto const & token : tokens) { @@ -250,7 +238,8 @@ private: }; // Returns true iff feature name was indexed as postcode and should be ignored for name indexing. -template bool InsertPostcodes(FeatureType & f, FnT && fn) +template +bool InsertPostcodes(FeatureType & f, FnT && fn) { using namespace search; @@ -286,14 +275,13 @@ template class FeatureInserter { public: - FeatureInserter(SynonymsHolder * synonyms, ContT & keyValuePairs, - CategoriesHolder const & catHolder, std::pair const & scales) + FeatureInserter(SynonymsHolder * synonyms, ContT & keyValuePairs, CategoriesHolder const & catHolder, + std::pair const & scales) : m_synonyms(synonyms) , m_categories(catHolder) , m_scales(scales) , m_inserter(keyValuePairs) - { - } + {} void operator()(FeatureType & f, uint32_t index) { @@ -317,10 +305,8 @@ public: // Init inserter with Feature's index. m_inserter.SetFeature(index, synonyms, hasStreetType); - bool const useNameAsPostcode = InsertPostcodes(f, [this](auto const & token) - { - m_inserter.AddToken(search::kPostcodesLang, token); - }); + bool const useNameAsPostcode = + InsertPostcodes(f, [this](auto const & token) { m_inserter.AddToken(search::kPostcodesLang, token); }); if (!useNameAsPostcode) { @@ -331,10 +317,8 @@ public: // Road number. if (hasStreetType) - { for (auto const & shield : ftypes::GetRoadShieldsNames(f)) m_inserter(StringUtf8Multilang::kDefaultCode, shield); - } if (ftypes::IsAirportChecker::Instance()(types)) { @@ -351,10 +335,8 @@ public: auto const brand = f.GetMetadata(feature::Metadata::FMD_BRAND); if (!brand.empty()) { - ForEachLocalizedBrands(brand, [this](BrandsHolder::Brand::Name const & name) - { - m_inserter(name.m_locale, name.m_name); - }); + ForEachLocalizedBrands( + brand, [this](BrandsHolder::Brand::Name const & name) { m_inserter(name.m_locale, name.m_name); }); } // Check for empty name just before categories indexing. After postcodes, and other meta .. @@ -365,9 +347,7 @@ public: Classificator const & c = classif(); GetCategoryTypes(m_categories, m_scales, types, [this, &c](uint32_t t) - { - m_inserter.AddToken(search::kCategoriesLang, search::FeatureTypeToString(c.GetIndexForType(t))); - }); + { m_inserter.AddToken(search::kCategoriesLang, search::FeatureTypeToString(c.GetIndexForType(t))); }); } private: @@ -381,8 +361,7 @@ private: }; template -void AddFeatureNameIndexPairs(FeaturesVectorTest const & features, - CategoriesHolder const & categoriesHolder, +void AddFeatureNameIndexPairs(FeaturesVectorTest const & features, CategoriesHolder const & categoriesHolder, ContT & keyValuePairs) { feature::DataHeader const & header = features.GetHeader(); @@ -391,7 +370,8 @@ void AddFeatureNameIndexPairs(FeaturesVectorTest const & features, if (header.GetType() == feature::DataHeader::MapType::World) synonyms = std::make_unique(); - features.GetVector().ForEach(FeatureInserter(synonyms.get(), keyValuePairs, categoriesHolder, header.GetScaleRange())); + features.GetVector().ForEach( + FeatureInserter(synonyms.get(), keyValuePairs, categoriesHolder, header.GetScaleRange())); } void ReadAddressData(std::string const & filename, std::vector & addrs) @@ -406,8 +386,7 @@ void ReadAddressData(std::string const & filename, std::vector -std::optional MatchObjectByName(std::string_view keyName, std::vector const & objs, - GetKeyFnT && getKey) +std::optional MatchObjectByName(std::string_view keyName, std::vector const & objs, GetKeyFnT && getKey) { size_t constexpr kSimilarityThresholdPercent = 10; @@ -458,8 +437,8 @@ std::optional MatchObjectByName(std::string_view keyName, std::vector< return {}; } -void BuildAddressTable(FilesContainerR & container, std::string const & addressDataFile, - Writer & streetsWriter, Writer & placesWriter, uint32_t threadsCount) +void BuildAddressTable(FilesContainerR & container, std::string const & addressDataFile, Writer & streetsWriter, + Writer & placesWriter, uint32_t threadsCount) { std::vector addrs; ReadAddressData(addressDataFile, addrs); @@ -470,8 +449,7 @@ void BuildAddressTable(FilesContainerR & container, std::string const & addressD FrozenDataSource dataSource; MwmSet::MwmId mwmId; { - auto const regResult = - dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(container.GetFileName())); + auto const regResult = dataSource.RegisterMap(platform::LocalCountryFile::MakeTemporary(container.GetFileName())); ASSERT_EQUAL(regResult.second, MwmSet::RegResult::Success, ()); mwmId = regResult.first; } @@ -514,26 +492,19 @@ void BuildAddressTable(FilesContainerR & container, std::string const & addressD { auto const streets = search::ReverseGeocoder::GetNearbyStreets(*contexts[threadIdx], center, kStreetRadiusM); streetId = MatchObjectByName(street, streets, [](std::string_view name) - { - return search::GetStreetNameAsKey(name, false /* ignoreStreetSynonyms */); - }); + { return search::GetStreetNameAsKey(name, false /* ignoreStreetSynonyms */); }); if (!streetId) { streetId = MatchObjectByName(street, streets, [](std::string_view name) - { - return search::GetStreetNameAsKey(name, true /* ignoreStreetSynonyms */); - }); + { return search::GetStreetNameAsKey(name, true /* ignoreStreetSynonyms */); }); } } if (!place.empty()) { auto const places = search::ReverseGeocoder::GetNearbyPlaces(*contexts[threadIdx], center, kPlaceRadiusM); - placeId = MatchObjectByName(place, places, [](std::string_view name) - { - return strings::MakeUniString(name); - }); + placeId = MatchObjectByName(place, places, [](std::string_view name) { return strings::MakeUniString(name); }); } if (streetId || placeId) @@ -589,11 +560,10 @@ void BuildAddressTable(FilesContainerR & container, std::string const & addressD } } // namespace - void BuildSearchIndex(FilesContainerR & container, Writer & indexWriter); -bool BuildSearchIndexFromDataFile(std::string const & country, feature::GenerateInfo const & info, - bool forceRebuild, uint32_t threadsCount) +bool BuildSearchIndexFromDataFile(std::string const & country, feature::GenerateInfo const & info, bool forceRebuild, + uint32_t threadsCount) { Platform & platform = GetPlatform(); @@ -693,8 +663,8 @@ void BuildSearchIndex(FilesContainerR & container, Writer & indexWriter) std::sort(searchIndexKeyValuePairs.begin(), searchIndexKeyValuePairs.end()); LOG(LINFO, ("End sorting strings:", timer.ElapsedSeconds())); - trie::Build, SingleValueSerializer>( - indexWriter, serializer, searchIndexKeyValuePairs); + trie::Build, SingleValueSerializer>(indexWriter, serializer, + searchIndexKeyValuePairs); LOG(LINFO, ("End building search index, elapsed seconds:", timer.ElapsedSeconds())); } diff --git a/generator/search_index_builder.hpp b/generator/search_index_builder.hpp index b575e2a97..b2baac942 100644 --- a/generator/search_index_builder.hpp +++ b/generator/search_index_builder.hpp @@ -5,8 +5,8 @@ #include "indexer/ftypes_matcher.hpp" #include -#include #include +#include namespace indexer { @@ -22,13 +22,12 @@ public: { auto it = m_map.find(key); if (it != m_map.end()) - { for (auto const & v : it->second) toDo(v); - } } - template static bool CanApply(Types const & types) + template + static bool CanApply(Types const & types) { auto const type = ftypes::IsLocalityChecker::Instance().GetType(types); return (type == ftypes::LocalityType::Country || type == ftypes::LocalityType::State); @@ -42,6 +41,6 @@ private: // An attempt to rewrite the search index of an old mwm may result in a future crash // when using search because this function does not update mwm's version. This results // in version mismatch when trying to read the index. -bool BuildSearchIndexFromDataFile(std::string const & country, feature::GenerateInfo const & info, - bool forceRebuild, uint32_t threadsCount); +bool BuildSearchIndexFromDataFile(std::string const & country, feature::GenerateInfo const & info, bool forceRebuild, + uint32_t threadsCount); } // namespace indexer diff --git a/generator/srtm_coverage_checker/srtm_coverage_checker.cpp b/generator/srtm_coverage_checker/srtm_coverage_checker.cpp index e2d54442d..f095fa1b8 100644 --- a/generator/srtm_coverage_checker/srtm_coverage_checker.cpp +++ b/generator/srtm_coverage_checker/srtm_coverage_checker.cpp @@ -61,7 +61,8 @@ public: } }; -template void ForEachMWM(SafeTileManager & manager, FnT && fn) +template +void ForEachMWM(SafeTileManager & manager, FnT && fn) { std::vector localFiles; FindAllLocalMapsAndCleanup(std::numeric_limits::max() /* latestVersion */, localFiles); @@ -127,8 +128,8 @@ void CheckCoverage(SafeTileManager & manager) auto const bad = all - good; auto const percent = (all == 0) ? 0.0 : bad * 100.0 / all; - LOG_SHORT(LINFO, (percent > 10.0 ? "Huge" : "Low", "error rate in:", file.GetCountryName(), - "good:", good, "bad:", bad, "all:", all, "%:", percent)); + LOG_SHORT(LINFO, (percent > 10.0 ? "Huge" : "Low", "error rate in:", file.GetCountryName(), "good:", good, + "bad:", bad, "all:", all, "%:", percent)); }); } @@ -149,7 +150,7 @@ void CheckDistance(SafeTileManager & manager) for (size_t i = 1; i < ft.GetPointsCount(); ++i) { - auto const ll1 = mercator::ToLatLon(ft.GetPoint(i-1)); + auto const ll1 = mercator::ToLatLon(ft.GetPoint(i - 1)); auto const alt1 = manager.GetAltitude(ll1); auto const ll2 = mercator::ToLatLon(ft.GetPoint(i)); auto const alt2 = manager.GetAltitude(ll2); @@ -180,7 +181,7 @@ void CheckDistance(SafeTileManager & manager) else { auto const approxAlt = static_cast(std::round(alt2 * a + alt1 * (1 - a))); - if (abs(alt - approxAlt) >= std::max(1, abs(alt)/10)) // 10% + if (abs(alt - approxAlt) >= std::max(1, abs(alt) / 10)) // 10% ++added; } } @@ -243,9 +244,8 @@ int main(int argc, char * argv[]) else { auto const & tile = manager.GetTile({lat, lon}); - cout << "H = " << tile.GetHeight({lat, lon}) << - "; Trg = " << tile.GetTriangleHeight({lat, lon}) << - "; Bilinear = " << tile.GetBilinearHeight({lat, lon}); + cout << "H = " << tile.GetHeight({lat, lon}) << "; Trg = " << tile.GetTriangleHeight({lat, lon}) + << "; Bilinear = " << tile.GetBilinearHeight({lat, lon}); cout << endl; } } diff --git a/generator/srtm_parser.cpp b/generator/srtm_parser.cpp index 2b70dbbcb..53ebe8050 100644 --- a/generator/srtm_parser.cpp +++ b/generator/srtm_parser.cpp @@ -28,10 +28,7 @@ struct UnzipMemDelegate : public ZipFileReader::Delegate } // ZipFileReader::Delegate overrides: - void OnBlockUnzipped(size_t size, char const * data) override - { - m_buffer.insert(m_buffer.end(), data, data + size); - } + void OnBlockUnzipped(size_t size, char const * data) override { m_buffer.insert(m_buffer.end(), data, data + size); } void OnStarted() override { @@ -116,7 +113,7 @@ ms::LatLon SrtmTile::GetCoordInSeconds(ms::LatLon const & coord) lt += 1; lt = 1 - lt; // from North to South - return { kArcSecondsInDegree * lt, kArcSecondsInDegree * ln }; + return {kArcSecondsInDegree * lt, kArcSecondsInDegree * ln}; } geometry::Altitude SrtmTile::GetHeight(ms::LatLon const & coord) const @@ -205,7 +202,8 @@ double SrtmTile::GetBilinearHeight(ms::LatLon const & coord) const return (GetHeightRC(p1.y, p1.x) * (p2.x - ll.m_lon) * (p2.y - ll.m_lat) + GetHeightRC(p1.y, p2.x) * (ll.m_lon - p1.x) * (p2.y - ll.m_lat) + GetHeightRC(p2.y, p1.x) * (p2.x - ll.m_lon) * (ll.m_lat - p1.y) + - GetHeightRC(p2.y, p2.x) * (ll.m_lon - p1.x) * (ll.m_lat - p1.y)) / denom; + GetHeightRC(p2.y, p2.x) * (ll.m_lon - p1.x) * (ll.m_lat - p1.y)) / + denom; } // static diff --git a/generator/srtm_parser.hpp b/generator/srtm_parser.hpp index 7a86ebc01..5bd23f3ed 100644 --- a/generator/srtm_parser.hpp +++ b/generator/srtm_parser.hpp @@ -14,7 +14,6 @@ #include #include - namespace generator { class SrtmTile @@ -54,10 +53,7 @@ private: static ms::LatLon GetCoordInSeconds(ms::LatLon const & coord); geometry::Altitude GetHeightRC(size_t row, size_t col) const; - inline geometry::Altitude const * Data() const - { - return reinterpret_cast(m_data.data()); - } + inline geometry::Altitude const * Data() const { return reinterpret_cast(m_data.data()); } inline size_t Size() const { return m_data.size() / sizeof(geometry::Altitude); } void Invalidate(); @@ -75,10 +71,7 @@ public: SrtmTile const & GetTile(ms::LatLon const & coord); - geometry::Altitude GetAltitude(ms::LatLon const & coord) - { - return GetTile(coord).GetAltitude(coord); - } + geometry::Altitude GetAltitude(ms::LatLon const & coord) { return GetTile(coord).GetAltitude(coord); } size_t GeTilesNumber() const { return m_tiles.size(); } diff --git a/generator/statistics.cpp b/generator/statistics.cpp index ca7c5067a..c0a58d9fc 100644 --- a/generator/statistics.cpp +++ b/generator/statistics.cpp @@ -13,331 +13,299 @@ namespace stats { - using namespace feature; +using namespace feature; - void PrintFileContainerStats(std::ostream & os, std::string const & fPath) +void PrintFileContainerStats(std::ostream & os, std::string const & fPath) +{ + os << "File section sizes\n"; + try { - os << "File section sizes\n"; - try - { - FilesContainerR cont(fPath); - cont.ForEachTag([&] (FilesContainerR::Tag const & tag) - { - os << std::setw(18) << tag << " : " - << std::setw(10) << cont.GetReader(tag).Size() << "\n"; - }); - } - catch (Reader::Exception const & ex) - { - LOG(LWARNING, ("Error reading file:", fPath, ex.Msg())); - } - os << "\n"; + FilesContainerR cont(fPath); + cont.ForEachTag([&](FilesContainerR::Tag const & tag) + { os << std::setw(18) << tag << " : " << std::setw(10) << cont.GetReader(tag).Size() << "\n"; }); } - - // 0.001 deg² ≈ 12.392 km² * cos(lat) - static constexpr double kAreas[] = { 10, 20, 50, 100, 200, 500, 1000, 5000, 360*360*12400 }; - - size_t GetAreaIndex(double s) + catch (Reader::Exception const & ex) { - double const sInKm2 = s / 1000000; - auto const i = std::lower_bound(std::begin(kAreas), std::end(kAreas), sInKm2); - ASSERT(i != std::end(kAreas), ()); - return std::distance(kAreas, i); + LOG(LWARNING, ("Error reading file:", fPath, ex.Msg())); } + os << "\n"; +} - class AccumulateStatistic +// 0.001 deg² ≈ 12.392 km² * cos(lat) +static constexpr double kAreas[] = {10, 20, 50, 100, 200, 500, 1000, 5000, 360 * 360 * 12400}; + +size_t GetAreaIndex(double s) +{ + double const sInKm2 = s / 1000000; + auto const i = std::lower_bound(std::begin(kAreas), std::end(kAreas), sInKm2); + ASSERT(i != std::end(kAreas), ()); + return std::distance(kAreas, i); +} + +class AccumulateStatistic +{ + MapInfo & m_info; + +public: + explicit AccumulateStatistic(MapInfo & info) : m_info(info) {} + + void operator()(FeatureType & f, uint32_t) { - MapInfo & m_info; + f.ParseHeader2(); - public: - explicit AccumulateStatistic(MapInfo & info) : m_info(info) {} + FeatureType::InnerGeomStat const innerStats = f.GetInnerStats(); - void operator() (FeatureType & f, uint32_t) - { - f.ParseHeader2(); + m_info.m_innerPoints.Add(innerStats.m_points); + m_info.m_innerFirstPoints.Add(innerStats.m_firstPoints); + m_info.m_innerStrips.Add(innerStats.m_strips); + m_info.m_innerSize.Add(innerStats.m_size); - FeatureType::InnerGeomStat const innerStats = f.GetInnerStats(); + // Get size stats and load the best geometry. + FeatureType::GeomStat const geom = f.GetOuterGeometryStats(); + FeatureType::GeomStat const trg = f.GetOuterTrianglesStats(); - m_info.m_innerPoints.Add(innerStats.m_points); - m_info.m_innerFirstPoints.Add(innerStats.m_firstPoints); - m_info.m_innerStrips.Add(innerStats.m_strips); - m_info.m_innerSize.Add(innerStats.m_size); - - // Get size stats and load the best geometry. - FeatureType::GeomStat const geom = f.GetOuterGeometryStats(); - FeatureType::GeomStat const trg = f.GetOuterTrianglesStats(); - - uint32_t outerGeomSize = 0, outerTrgSize = 0; - for (size_t ind = 0; ind < DataHeader::kMaxScalesCount; ++ind) - { - auto const geomSize = geom.m_sizes[ind], geomElems = geom.m_elements[ind], - trgSize = trg.m_sizes[ind], trgElems = trg.m_elements[ind]; - m_info.m_byLineGeom[ind].Add(geomSize, geomElems); - outerGeomSize += geomSize; - m_info.m_byAreaGeom[ind].Add(trgSize, trgElems); - outerTrgSize += trgSize; - - if (ind > 0) - { - // If a feature has a more simplified version of current geometry. - if (geom.m_elements[ind - 1] > 0) - m_info.m_byLineGeomComparedS[ind].Add(geomSize, geomElems); - if (trg.m_elements[ind - 1] > 0) - m_info.m_byAreaGeomComparedS[ind].Add(trgSize, trgElems); - } - - if (ind < DataHeader::kMaxScalesCount - 1) - { - // If a feature has a more detailed version of current geometry. - if (geom.m_elements[ind + 1] > 0) - { - m_info.m_byLineGeomComparedD[ind].Add(geomSize, geomElems); - // If feature's current geometry is very similar to a more detailed one - // (number of elements is geom.m_elements[ind + 1] || - geomElems * m_info.m_geomMinFactor > geom.m_elements[ind + 1]) - m_info.m_byLineGeomDup[ind].Add(geomSize, geomElems); - } - if (trg.m_elements[ind + 1] > 0) - { - m_info.m_byAreaGeomComparedD[ind].Add(trgSize, trgElems); - if (trgElems + m_info.m_geomMinDiff > trg.m_elements[ind + 1] || - trgElems * m_info.m_geomMinFactor > trg.m_elements[ind + 1]) - m_info.m_byAreaGeomDup[ind].Add(trgSize, trgElems); - } - } - } - - m_info.m_byPointsCount[CountType(geom.m_elements[DataHeader::kMaxScalesCount - 1])] - .Add(innerStats.m_points + outerGeomSize); - m_info.m_byTrgCount[CountType(trg.m_elements[DataHeader::kMaxScalesCount - 1])] - .Add(innerStats.m_strips + outerTrgSize); - - // Header size (incl. inner geometry) + outer geometry size. - uint32_t const allSize = innerStats.m_size + outerGeomSize + outerTrgSize; - - double len = 0.0; - double area = 0.0; - - if (f.GetGeomType() == feature::GeomType::Line) - { - m2::PointD lastPoint; - bool firstPoint = true; - f.ForEachPoint([&len, &firstPoint, &lastPoint](const m2::PointD & pt) - { - if (firstPoint) - firstPoint = false; - else - len += mercator::DistanceOnEarth(lastPoint, pt); - lastPoint = pt; - }, FeatureType::BEST_GEOMETRY); - } - else if (f.GetGeomType() == feature::GeomType::Area) - { - f.ForEachTriangle([&area](m2::PointD const & p1, m2::PointD const & p2, m2::PointD const & p3) - { - area += mercator::AreaOnEarth(p1, p2, p3); - }, FeatureType::BEST_GEOMETRY); - } - - auto const hasName = f.GetNames().CountLangs() != 0; - - m_info.m_byGeomType[f.GetGeomType()].Add(allSize, len, area, hasName); - - f.ForEachType([this, allSize, len, area, hasName](uint32_t type) - { - m_info.m_byClassifType[ClassifType(type)].Add(allSize, len, area, hasName); - }); - - m_info.m_byAreaSize[AreaType(GetAreaIndex(area))].Add(allSize, len, area, hasName); - } - }; - - void CalcStats(std::string const & fPath, MapInfo & info) - { - AccumulateStatistic doProcess(info); - feature::ForEachFeature(fPath, doProcess); - } - - void PrintInfo(std::ostream & os, std::string const & prefix, - GeneralInfo const & info, uint8_t prefixWidth = 1, - bool names = false, bool measurements = false) - { - os << std::setw(prefixWidth) << prefix - << ": size = " << std::setw(9) << info.m_size - << "; features = " << std::setw(7) << info.m_count - << "; bytes/feats = " << std::setw(6) << info.m_size / static_cast(info.m_count); - - if (measurements) - { - os << "; length = " << std::setw(10) << static_cast(info.m_length) - << " m; area = " << std::setw(10) << static_cast(info.m_area) << " m²"; - } - if (names) - os << "; w/names = " << std::setw(8) << info.m_names; - - os << "\n"; - } - - std::string GetKey(GeomType type) - { - switch (type) - { - case GeomType::Line: return "Line"; - case GeomType::Area: return "Area"; - default: return "Point"; - } - } - - std::string GetKey(CountType t) - { - return strings::to_string(t.m_val); - } - - std::string GetKey(ClassifType t) - { - return classif().GetReadableObjectName(t.m_val); - } - - std::string GetKey(AreaType t) - { - return strings::to_string(kAreas[t.m_val]); - } - - template - void PrintTop(std::ostream & os, char const * prefix, TSet const & theSet, - uint8_t prefixWidth = 5, bool names = false) - { - os << "\n" << prefix << "\n"; - - std::vector> vec(theSet.begin(), theSet.end()); - - sort(vec.begin(), vec.end(), TSortCr()); - - size_t const count = std::min(static_cast(20), vec.size()); - for (size_t i = 0; i < count; ++i) - { - os << std::setw(2) << i << ". "; - PrintInfo(os, GetKey(vec[i].first), vec[i].second, prefixWidth, names); - } - } - - struct greater_size - { - template - bool operator() (TInfo const & r1, TInfo const & r2) const - { - return r1.second.m_size > r2.second.m_size; - } - }; - - struct greater_count - { - template - bool operator() (TInfo const & r1, TInfo const & r2) const - { - return r1.second.m_count > r2.second.m_count; - } - }; - - void PrintStats(std::ostream & os, MapInfo & info) - { - PrintInfo(os, "Feature headers", info.m_innerSize, 30); - PrintInfo(os, "incl. inner points", info.m_innerPoints, 30); - PrintInfo(os, "incl. first/base outer points", info.m_innerFirstPoints, 30); - PrintInfo(os, "incl. inner triangles (strips)", info.m_innerStrips, 30); - - PrintTop(os, "Top SIZE by Geometry Type", info.m_byGeomType, 5, true); - PrintTop(os, "Top SIZE by Classificator Type\n" - "(a single feature's size may be included in several types)", - info.m_byClassifType, 30, true); - PrintTop(os, "Top SIZE by Points Count", info.m_byPointsCount); - PrintTop(os, "Top SIZE by Triangles Count", info.m_byTrgCount); - PrintTop(os, "Top SIZE by Area", info.m_byAreaSize, 5, true); - os << "\n"; - } - - /// @note If you gonna change this function, take into account - /// ./tools/python/maps_generator/generator/statistics.py - void PrintTypeStats(std::ostream & os, MapInfo & info) - { - os << "Feature stats by Classificator Type\n" - << "(a single feature can contain several types and thus its size can be included in several type lines)\n"; - - for (auto const & e : info.m_byClassifType) - PrintInfo(os, GetKey(e.first), e.second, 30, true, true); - - os << "\n"; - } - - void PrintGeometryInfo(std::ostream & os, char const * prefix, - size_t geomMinDiff, double geomMinFactor, - GeomStats const & geomStats, GeomStats const & comparedStatsS, - GeomStats const & comparedStatsD, GeomStats const & dupStats) - { + uint32_t outerGeomSize = 0, outerTrgSize = 0; for (size_t ind = 0; ind < DataHeader::kMaxScalesCount; ++ind) { - GeomInfo const & info = geomStats[ind]; - os << " " << prefix << ind - << ": size = " << std::setw(9) << info.m_size - << ": elements = " << std::setw(9) << info.m_elements - << "; features = " << std::setw(7) << info.m_count - << "; elems/feats = " << std::setw(5) - << info.m_elements / static_cast(info.m_count) - << "; bytes/elems = " << std::setw(4) - << info.m_size / static_cast(info.m_elements) - << "\n"; + auto const geomSize = geom.m_sizes[ind], geomElems = geom.m_elements[ind], trgSize = trg.m_sizes[ind], + trgElems = trg.m_elements[ind]; + m_info.m_byLineGeom[ind].Add(geomSize, geomElems); + outerGeomSize += geomSize; + m_info.m_byAreaGeom[ind].Add(trgSize, trgElems); + outerTrgSize += trgSize; + + if (ind > 0) + { + // If a feature has a more simplified version of current geometry. + if (geom.m_elements[ind - 1] > 0) + m_info.m_byLineGeomComparedS[ind].Add(geomSize, geomElems); + if (trg.m_elements[ind - 1] > 0) + m_info.m_byAreaGeomComparedS[ind].Add(trgSize, trgElems); + } + + if (ind < DataHeader::kMaxScalesCount - 1) + { + // If a feature has a more detailed version of current geometry. + if (geom.m_elements[ind + 1] > 0) + { + m_info.m_byLineGeomComparedD[ind].Add(geomSize, geomElems); + // If feature's current geometry is very similar to a more detailed one + // (number of elements is geom.m_elements[ind + 1] || + geomElems * m_info.m_geomMinFactor > geom.m_elements[ind + 1]) + m_info.m_byLineGeomDup[ind].Add(geomSize, geomElems); + } + if (trg.m_elements[ind + 1] > 0) + { + m_info.m_byAreaGeomComparedD[ind].Add(trgSize, trgElems); + if (trgElems + m_info.m_geomMinDiff > trg.m_elements[ind + 1] || + trgElems * m_info.m_geomMinFactor > trg.m_elements[ind + 1]) + m_info.m_byAreaGeomDup[ind].Add(trgSize, trgElems); + } + } } - os << "Geometry of features present on adjacent geom scales incl. very similar geometries\n" - << "(when number of elements is <" << geomMinDiff - << " less or <" << geomMinFactor << "x times less)\n"; - for (size_t ind = 0; ind < DataHeader::kMaxScalesCount - 1; ++ind) + m_info.m_byPointsCount[CountType(geom.m_elements[DataHeader::kMaxScalesCount - 1])].Add(innerStats.m_points + + outerGeomSize); + m_info.m_byTrgCount[CountType(trg.m_elements[DataHeader::kMaxScalesCount - 1])].Add(innerStats.m_strips + + outerTrgSize); + + // Header size (incl. inner geometry) + outer geometry size. + uint32_t const allSize = innerStats.m_size + outerGeomSize + outerTrgSize; + + double len = 0.0; + double area = 0.0; + + if (f.GetGeomType() == feature::GeomType::Line) { - GeomInfo const & compInfoD = comparedStatsD[ind], - compInfoS = comparedStatsS[ind + 1], - dupInfo = dupStats[ind]; - CHECK_EQUAL(compInfoD.m_count, compInfoS.m_count, ()); - os << prefix << ind << " vs " << prefix << ind + 1 - << ": size difference = " << std::setw(4) - << compInfoS.m_size / static_cast(compInfoD.m_size) - << "x; elems difference = " << std::setw(4) - << compInfoS.m_elements / static_cast(compInfoD.m_elements) - << "x; features = " << std::setw(7) << compInfoD.m_count - << "\n"; - os << " " << prefix << ind - << ": size = " << std::setw(9) << compInfoD.m_size - << "; elements = " << std::setw(9) << compInfoD.m_elements - << "; elems/feats = " << std::setw(5) - << compInfoD.m_elements / static_cast(compInfoD.m_count) - << "\n"; - os << " " << prefix << ind + 1 - << ": size = " << std::setw(9) << compInfoS.m_size - << "; elements = " << std::setw(9) << compInfoS.m_elements - << "; elems/feats = " << std::setw(5) - << compInfoS.m_elements / static_cast(compInfoS.m_count) - << "\n"; - os << " similar: size = " << std::setw(9) << dupInfo.m_size - << " (" << std::setw(2) << 100 * dupInfo.m_size / static_cast(compInfoD.m_size) - << "%); elements = " << std::setw(9) << dupInfo.m_elements - << "; features = " << std::setw(7) << dupInfo.m_count - << "; elems/feats = " << std::setw(5) - << dupInfo.m_elements / static_cast(dupInfo.m_count) - << "\n"; + m2::PointD lastPoint; + bool firstPoint = true; + f.ForEachPoint([&len, &firstPoint, &lastPoint](m2::PointD const & pt) + { + if (firstPoint) + firstPoint = false; + else + len += mercator::DistanceOnEarth(lastPoint, pt); + lastPoint = pt; + }, FeatureType::BEST_GEOMETRY); } + else if (f.GetGeomType() == feature::GeomType::Area) + { + f.ForEachTriangle([&area](m2::PointD const & p1, m2::PointD const & p2, m2::PointD const & p3) + { area += mercator::AreaOnEarth(p1, p2, p3); }, FeatureType::BEST_GEOMETRY); + } + + auto const hasName = f.GetNames().CountLangs() != 0; + + m_info.m_byGeomType[f.GetGeomType()].Add(allSize, len, area, hasName); + + f.ForEachType([this, allSize, len, area, hasName](uint32_t type) + { m_info.m_byClassifType[ClassifType(type)].Add(allSize, len, area, hasName); }); + + m_info.m_byAreaSize[AreaType(GetAreaIndex(area))].Add(allSize, len, area, hasName); } +}; - void PrintOuterGeometryStats(std::ostream & os, MapInfo & info) +void CalcStats(std::string const & fPath, MapInfo & info) +{ + AccumulateStatistic doProcess(info); + feature::ForEachFeature(fPath, doProcess); +} + +void PrintInfo(std::ostream & os, std::string const & prefix, GeneralInfo const & info, uint8_t prefixWidth = 1, + bool names = false, bool measurements = false) +{ + os << std::setw(prefixWidth) << prefix << ": size = " << std::setw(9) << info.m_size + << "; features = " << std::setw(7) << info.m_count << "; bytes/feats = " << std::setw(6) + << info.m_size / static_cast(info.m_count); + + if (measurements) { - os << "Outer LINE geometry\n"; - PrintGeometryInfo(os, "geom", info.m_geomMinDiff, info.m_geomMinFactor, - info.m_byLineGeom, info.m_byLineGeomComparedS, - info.m_byLineGeomComparedD, info.m_byLineGeomDup); + os << "; length = " << std::setw(10) << static_cast(info.m_length) << " m; area = " << std::setw(10) + << static_cast(info.m_area) << " m²"; + } + if (names) + os << "; w/names = " << std::setw(8) << info.m_names; - os << "\nOuter AREA geometry\n"; - PrintGeometryInfo(os, "trg", info.m_geomMinDiff, info.m_geomMinFactor, - info.m_byAreaGeom, info.m_byAreaGeomComparedS, - info.m_byAreaGeomComparedD, info.m_byAreaGeomDup); - os << "\n"; + os << "\n"; +} + +std::string GetKey(GeomType type) +{ + switch (type) + { + case GeomType::Line: return "Line"; + case GeomType::Area: return "Area"; + default: return "Point"; } } + +std::string GetKey(CountType t) +{ + return strings::to_string(t.m_val); +} + +std::string GetKey(ClassifType t) +{ + return classif().GetReadableObjectName(t.m_val); +} + +std::string GetKey(AreaType t) +{ + return strings::to_string(kAreas[t.m_val]); +} + +template +void PrintTop(std::ostream & os, char const * prefix, TSet const & theSet, uint8_t prefixWidth = 5, bool names = false) +{ + os << "\n" << prefix << "\n"; + + std::vector> vec(theSet.begin(), theSet.end()); + + sort(vec.begin(), vec.end(), TSortCr()); + + size_t const count = std::min(static_cast(20), vec.size()); + for (size_t i = 0; i < count; ++i) + { + os << std::setw(2) << i << ". "; + PrintInfo(os, GetKey(vec[i].first), vec[i].second, prefixWidth, names); + } +} + +struct greater_size +{ + template + bool operator()(TInfo const & r1, TInfo const & r2) const + { + return r1.second.m_size > r2.second.m_size; + } +}; + +struct greater_count +{ + template + bool operator()(TInfo const & r1, TInfo const & r2) const + { + return r1.second.m_count > r2.second.m_count; + } +}; + +void PrintStats(std::ostream & os, MapInfo & info) +{ + PrintInfo(os, "Feature headers", info.m_innerSize, 30); + PrintInfo(os, "incl. inner points", info.m_innerPoints, 30); + PrintInfo(os, "incl. first/base outer points", info.m_innerFirstPoints, 30); + PrintInfo(os, "incl. inner triangles (strips)", info.m_innerStrips, 30); + + PrintTop(os, "Top SIZE by Geometry Type", info.m_byGeomType, 5, true); + PrintTop(os, + "Top SIZE by Classificator Type\n" + "(a single feature's size may be included in several types)", + info.m_byClassifType, 30, true); + PrintTop(os, "Top SIZE by Points Count", info.m_byPointsCount); + PrintTop(os, "Top SIZE by Triangles Count", info.m_byTrgCount); + PrintTop(os, "Top SIZE by Area", info.m_byAreaSize, 5, true); + os << "\n"; +} + +/// @note If you gonna change this function, take into account +/// ./tools/python/maps_generator/generator/statistics.py +void PrintTypeStats(std::ostream & os, MapInfo & info) +{ + os << "Feature stats by Classificator Type\n" + << "(a single feature can contain several types and thus its size can be included in several type lines)\n"; + + for (auto const & e : info.m_byClassifType) + PrintInfo(os, GetKey(e.first), e.second, 30, true, true); + + os << "\n"; +} + +void PrintGeometryInfo(std::ostream & os, char const * prefix, size_t geomMinDiff, double geomMinFactor, + GeomStats const & geomStats, GeomStats const & comparedStatsS, GeomStats const & comparedStatsD, + GeomStats const & dupStats) +{ + for (size_t ind = 0; ind < DataHeader::kMaxScalesCount; ++ind) + { + GeomInfo const & info = geomStats[ind]; + os << " " << prefix << ind << ": size = " << std::setw(9) << info.m_size << ": elements = " << std::setw(9) + << info.m_elements << "; features = " << std::setw(7) << info.m_count << "; elems/feats = " << std::setw(5) + << info.m_elements / static_cast(info.m_count) << "; bytes/elems = " << std::setw(4) + << info.m_size / static_cast(info.m_elements) << "\n"; + } + + os << "Geometry of features present on adjacent geom scales incl. very similar geometries\n" + << "(when number of elements is <" << geomMinDiff << " less or <" << geomMinFactor << "x times less)\n"; + for (size_t ind = 0; ind < DataHeader::kMaxScalesCount - 1; ++ind) + { + GeomInfo const &compInfoD = comparedStatsD[ind], compInfoS = comparedStatsS[ind + 1], dupInfo = dupStats[ind]; + CHECK_EQUAL(compInfoD.m_count, compInfoS.m_count, ()); + os << prefix << ind << " vs " << prefix << ind + 1 << ": size difference = " << std::setw(4) + << compInfoS.m_size / static_cast(compInfoD.m_size) << "x; elems difference = " << std::setw(4) + << compInfoS.m_elements / static_cast(compInfoD.m_elements) << "x; features = " << std::setw(7) + << compInfoD.m_count << "\n"; + os << " " << prefix << ind << ": size = " << std::setw(9) << compInfoD.m_size << "; elements = " << std::setw(9) + << compInfoD.m_elements << "; elems/feats = " << std::setw(5) + << compInfoD.m_elements / static_cast(compInfoD.m_count) << "\n"; + os << " " << prefix << ind + 1 << ": size = " << std::setw(9) << compInfoS.m_size + << "; elements = " << std::setw(9) << compInfoS.m_elements << "; elems/feats = " << std::setw(5) + << compInfoS.m_elements / static_cast(compInfoS.m_count) << "\n"; + os << " similar: size = " << std::setw(9) << dupInfo.m_size << " (" << std::setw(2) + << 100 * dupInfo.m_size / static_cast(compInfoD.m_size) << "%); elements = " << std::setw(9) + << dupInfo.m_elements << "; features = " << std::setw(7) << dupInfo.m_count << "; elems/feats = " << std::setw(5) + << dupInfo.m_elements / static_cast(dupInfo.m_count) << "\n"; + } +} + +void PrintOuterGeometryStats(std::ostream & os, MapInfo & info) +{ + os << "Outer LINE geometry\n"; + PrintGeometryInfo(os, "geom", info.m_geomMinDiff, info.m_geomMinFactor, info.m_byLineGeom, info.m_byLineGeomComparedS, + info.m_byLineGeomComparedD, info.m_byLineGeomDup); + + os << "\nOuter AREA geometry\n"; + PrintGeometryInfo(os, "trg", info.m_geomMinDiff, info.m_geomMinFactor, info.m_byAreaGeom, info.m_byAreaGeomComparedS, + info.m_byAreaGeomComparedD, info.m_byAreaGeomDup); + os << "\n"; +} +} // namespace stats diff --git a/generator/statistics.hpp b/generator/statistics.hpp index 2c0f1540d..284a359d6 100644 --- a/generator/statistics.hpp +++ b/generator/statistics.hpp @@ -9,86 +9,82 @@ namespace stats { - struct GeneralInfo - { - GeneralInfo() : m_count(0), m_size(0), m_names(0), m_length(0), m_area(0) {} +struct GeneralInfo +{ + GeneralInfo() : m_count(0), m_size(0), m_names(0), m_length(0), m_area(0) {} - void Add(uint64_t szBytes, double len = 0, double area = 0, bool hasName = false) + void Add(uint64_t szBytes, double len = 0, double area = 0, bool hasName = false) + { + if (szBytes > 0) { - if (szBytes > 0) - { - ++m_count; - m_size += szBytes; - m_length += len; - m_area += area; - if (hasName) - ++m_names; - } + ++m_count; + m_size += szBytes; + m_length += len; + m_area += area; + if (hasName) + ++m_names; } + } - uint64_t m_count; - uint64_t m_size; - uint64_t m_names; - double m_length; - double m_area; - }; + uint64_t m_count; + uint64_t m_size; + uint64_t m_names; + double m_length; + double m_area; +}; - struct GeomInfo +struct GeomInfo +{ + void Add(uint64_t szBytes, uint32_t elements) { - void Add(uint64_t szBytes, uint32_t elements) + if (szBytes > 0) { - if (szBytes > 0) - { - ++m_count; - m_size += szBytes; - m_elements += elements; - } + ++m_count; + m_size += szBytes; + m_elements += elements; } + } - uint64_t m_count = 0, m_size = 0, m_elements = 0; - }; + uint64_t m_count = 0, m_size = 0, m_elements = 0; +}; - using GeomStats = GeomInfo[feature::DataHeader::kMaxScalesCount]; +using GeomStats = GeomInfo[feature::DataHeader::kMaxScalesCount]; - template - struct IntegralType - { - T m_val; - explicit IntegralType(T v) : m_val(v) {} - bool operator<(IntegralType const & rhs) const { return m_val < rhs.m_val; } - }; +template +struct IntegralType +{ + T m_val; + explicit IntegralType(T v) : m_val(v) {} + bool operator<(IntegralType const & rhs) const { return m_val < rhs.m_val; } +}; - using ClassifType = IntegralType; - using CountType = IntegralType; - using AreaType = IntegralType; +using ClassifType = IntegralType; +using CountType = IntegralType; +using AreaType = IntegralType; - struct MapInfo - { - explicit MapInfo(int geomMinDiff, double geomMinFactor) - : m_geomMinDiff(geomMinDiff) - , m_geomMinFactor(geomMinFactor) - {} +struct MapInfo +{ + explicit MapInfo(int geomMinDiff, double geomMinFactor) : m_geomMinDiff(geomMinDiff), m_geomMinFactor(geomMinFactor) + {} - size_t m_geomMinDiff; - double m_geomMinFactor; + size_t m_geomMinDiff; + double m_geomMinFactor; - std::map m_byGeomType; - std::map m_byClassifType; - std::map m_byPointsCount, m_byTrgCount; - std::map m_byAreaSize; + std::map m_byGeomType; + std::map m_byClassifType; + std::map m_byPointsCount, m_byTrgCount; + std::map m_byAreaSize; - GeomStats m_byLineGeom, m_byAreaGeom, - m_byLineGeomComparedS, m_byLineGeomComparedD, - m_byAreaGeomComparedS, m_byAreaGeomComparedD, - m_byLineGeomDup, m_byAreaGeomDup; + GeomStats m_byLineGeom, m_byAreaGeom, m_byLineGeomComparedS, m_byLineGeomComparedD, m_byAreaGeomComparedS, + m_byAreaGeomComparedD, m_byLineGeomDup, m_byAreaGeomDup; - GeneralInfo m_innerPoints, m_innerFirstPoints, m_innerStrips, m_innerSize; - }; + GeneralInfo m_innerPoints, m_innerFirstPoints, m_innerStrips, m_innerSize; +}; - void PrintFileContainerStats(std::ostream & os, std::string const & fPath); +void PrintFileContainerStats(std::ostream & os, std::string const & fPath); - void CalcStats(std::string const & fPath, MapInfo & info); - void PrintStats(std::ostream & os, MapInfo & info); - void PrintTypeStats(std::ostream & os, MapInfo & info); - void PrintOuterGeometryStats(std::ostream & os, MapInfo & info); -} +void CalcStats(std::string const & fPath, MapInfo & info); +void PrintStats(std::ostream & os, MapInfo & info); +void PrintTypeStats(std::ostream & os, MapInfo & info); +void PrintOuterGeometryStats(std::ostream & os, MapInfo & info); +} // namespace stats diff --git a/generator/tag_admixer.hpp b/generator/tag_admixer.hpp index 11059239c..91666dc2c 100644 --- a/generator/tag_admixer.hpp +++ b/generator/tag_admixer.hpp @@ -14,7 +14,6 @@ #include #include - class WaysParserHelper { public: @@ -30,7 +29,7 @@ public: if (pos != std::string::npos) { uint64_t wayId; - CHECK(strings::to_uint64(oneLine.substr(0, pos), wayId),()); + CHECK(strings::to_uint64(oneLine.substr(0, pos), wayId), ()); m_ways[wayId] = oneLine.substr(pos + 1, oneLine.length() - pos - 1); } } @@ -111,13 +110,12 @@ public: if (!base::IsExist(tags, kFerryTag)) element.AddTag("highway", it->second); } - else if (element.m_type == OsmElement::EntityType::Node && - m_capitals.find(element.m_id) != m_capitals.cend()) + else if (element.m_type == OsmElement::EntityType::Node && m_capitals.find(element.m_id) != m_capitals.cend()) { // Our goal here - to make some capitals visible in World map. // The simplest way is to upgrade population to 45000, // according to our visibility rules in mapcss files. - element.UpdateTagFn("population", [] (std::string & v) + element.UpdateTagFn("population", [](std::string & v) { uint64_t n; if (!strings::to_uint64(v, n) || n < 45000) @@ -213,12 +211,10 @@ public: for (auto const & r : replace) { for (auto const & tag : r->m_tags) - { if (r->m_update) element.UpdateTag(tag.m_key, tag.m_value); else element.AddTag(tag); - } } } @@ -283,10 +279,8 @@ public: { auto const elements = m_elements.find({element.m_type, element.m_id}); if (elements != m_elements.end()) - { for (OsmElement::Tag const & tag : elements->second) element.UpdateTag(tag.m_key, tag.m_value); - } } private: diff --git a/generator/tesselator.cpp b/generator/tesselator.cpp index ef8240468..bd1e192c2 100644 --- a/generator/tesselator.cpp +++ b/generator/tesselator.cpp @@ -21,7 +21,7 @@ int TesselateInterior(PolygonsT const & polys, TrianglesInfo & info) int constexpr kCoordinatesPerVertex = 2; int constexpr kVerticesInPolygon = 3; - auto const deleter = [](TESStesselator * tess) {tessDeleteTess(tess);}; + auto const deleter = [](TESStesselator * tess) { tessDeleteTess(tess); }; std::unique_ptr tess(tessNewTess(nullptr), deleter); for (auto const & contour : polys) @@ -30,8 +30,8 @@ int TesselateInterior(PolygonsT const & polys, TrianglesInfo & info) static_cast(contour.size())); } - if (0 == tessTesselate(tess.get(), TESS_WINDING_ODD, TESS_CONSTRAINED_DELAUNAY_TRIANGLES, - kVerticesInPolygon, kCoordinatesPerVertex, nullptr)) + if (0 == tessTesselate(tess.get(), TESS_WINDING_ODD, TESS_CONSTRAINED_DELAUNAY_TRIANGLES, kVerticesInPolygon, + kCoordinatesPerVertex, nullptr)) { LOG(LERROR, ("Tesselator error for polygon", polys)); return 0; @@ -49,211 +49,195 @@ int TesselateInterior(PolygonsT const & polys, TrianglesInfo & info) TESSindex const * elements = tessGetElements(tess.get()); info.Reserve(elementCount); for (int i = 0; i < elementCount; ++i) - { if (!info.Add(elements[i * 3], elements[i * 3 + 1], elements[i * 3 + 2])) return 0; - } } return elementCount; } - /////////////////////////////////////////////////////////////////////////////////////////////////////////// - // TrianglesInfo::ListInfo implementation - /////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +// TrianglesInfo::ListInfo implementation +/////////////////////////////////////////////////////////////////////////////////////////////////////////// - int TrianglesInfo::ListInfo::empty_key = -1; +int TrianglesInfo::ListInfo::empty_key = -1; - bool TrianglesInfo::ListInfo::AddNeighbour(int p1, int p2, int trg) +bool TrianglesInfo::ListInfo::AddNeighbour(int p1, int p2, int trg) +{ + return m_neighbors.insert({{p1, p2}, trg}).second; +} + +bool TrianglesInfo::ListInfo::Add(int p0, int p1, int p2) +{ + int const trg = static_cast(m_triangles.size()); + if (!AddNeighbour(p0, p1, trg) || !AddNeighbour(p1, p2, trg) || !AddNeighbour(p2, p0, trg)) { - return m_neighbors.insert({{p1, p2}, trg}).second; + LOG(LERROR, ("Duplicating triangle {", p0, p1, p2, "}")); + return false; } - bool TrianglesInfo::ListInfo::Add(int p0, int p1, int p2) + m_triangles.emplace_back(p0, p1, p2); + return true; +} + +template +size_t GetBufferSize(IterT b, IterT e) +{ + std::vector buffer; + MemWriter> writer(buffer); + while (b != e) + WriteVarUint(writer, *b++); + return buffer.size(); +} + +/// Find best (cheap in serialization) start edge for processing. +TrianglesInfo::ListInfo::TIterator TrianglesInfo::ListInfo::FindStartTriangle(PointsInfo const & points) const +{ + TIterator ret = m_neighbors.end(); + size_t cr = std::numeric_limits::max(); + + for (TIterator i = m_neighbors.begin(); i != m_neighbors.end(); ++i) { - int const trg = static_cast(m_triangles.size()); - if (!AddNeighbour(p0, p1, trg) || !AddNeighbour(p1, p2, trg) || !AddNeighbour(p2, p0, trg)) + if (!m_visited[i->second] && m_neighbors.find(std::make_pair(i->first.second, i->first.first)) == m_neighbors.end()) { - LOG(LERROR, ("Duplicating triangle {", p0, p1, p2, "}")); - return false; - } + uint64_t deltas[3]; + deltas[0] = coding::EncodePointDeltaAsUint(points.m_points[i->first.first], points.m_base); + deltas[1] = coding::EncodePointDeltaAsUint(points.m_points[i->first.second], points.m_points[i->first.first]); + deltas[2] = coding::EncodePointDeltaAsUint(points.m_points[m_triangles[i->second].GetPoint3(i->first)], + points.m_points[i->first.second]); - m_triangles.emplace_back(p0, p1, p2); - return true; - } - - template size_t GetBufferSize(IterT b, IterT e) - { - std::vector buffer; - MemWriter > writer(buffer); - while (b != e) WriteVarUint(writer, *b++); - return buffer.size(); - } - - /// Find best (cheap in serialization) start edge for processing. - TrianglesInfo::ListInfo::TIterator - TrianglesInfo::ListInfo::FindStartTriangle(PointsInfo const & points) const - { - TIterator ret = m_neighbors.end(); - size_t cr = std::numeric_limits::max(); - - for (TIterator i = m_neighbors.begin(); i != m_neighbors.end(); ++i) - { - if (!m_visited[i->second] && - m_neighbors.find(std::make_pair(i->first.second, i->first.first)) == m_neighbors.end()) + size_t const sz = GetBufferSize(deltas, deltas + 3); + if (sz < cr) { - uint64_t deltas[3]; - deltas[0] = coding::EncodePointDeltaAsUint(points.m_points[i->first.first], points.m_base); - deltas[1] = coding::EncodePointDeltaAsUint(points.m_points[i->first.second], - points.m_points[i->first.first]); - deltas[2] = coding::EncodePointDeltaAsUint( - points.m_points[m_triangles[i->second].GetPoint3(i->first)], - points.m_points[i->first.second]); - - size_t const sz = GetBufferSize(deltas, deltas + 3); - if (sz < cr) - { - ret = i; - cr = sz; - } + ret = i; + cr = sz; } } - - ASSERT ( ret != m_neighbors.end(), ("?WTF? There is no border triangles!") ); - return ret; } - /// Return indexes of common edges of [to, from] triangles. - std::pair CommonEdge(Triangle const & to, Triangle const & from) - { - for (int i = 0; i < 3; ++i) - { - for (int j = 0; j < 3; ++j) - { - if (to.m_p[i] == from.m_p[math::NextModN(j, 3)] && to.m_p[math::NextModN(i, 3)] == from.m_p[j]) - return std::make_pair(i, j); - } - } + ASSERT(ret != m_neighbors.end(), ("?WTF? There is no border triangles!")); + return ret; +} - ASSERT ( false, ("?WTF? Triangles not neighbors!") ); - return std::make_pair(-1, -1); +/// Return indexes of common edges of [to, from] triangles. +std::pair CommonEdge(Triangle const & to, Triangle const & from) +{ + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + if (to.m_p[i] == from.m_p[math::NextModN(j, 3)] && to.m_p[math::NextModN(i, 3)] == from.m_p[j]) + return std::make_pair(i, j); } - /// Get neighbors of 'trg' triangle, which was achieved from 'from' triangle. - /// @param[out] nb neighbors indexes of 'trg' if 0->1 is common edge with'from': - /// - nb[0] - by 1->2 edge; - /// - nb[1] - by 2->0 edge; - void TrianglesInfo::ListInfo::GetNeighbors( - Triangle const & trg, Triangle const & from, int * nb) const + ASSERT(false, ("?WTF? Triangles not neighbors!")); + return std::make_pair(-1, -1); +} + +/// Get neighbors of 'trg' triangle, which was achieved from 'from' triangle. +/// @param[out] nb neighbors indexes of 'trg' if 0->1 is common edge with'from': +/// - nb[0] - by 1->2 edge; +/// - nb[1] - by 2->0 edge; +void TrianglesInfo::ListInfo::GetNeighbors(Triangle const & trg, Triangle const & from, int * nb) const +{ + int i = math::NextModN(CommonEdge(trg, from).first, 3); + int j = math::NextModN(i, 3); + + int ind = 0; + TIterator it = m_neighbors.find(std::make_pair(trg.m_p[j], trg.m_p[i])); + nb[ind++] = (it != m_neighbors.end()) ? it->second : empty_key; + + it = m_neighbors.find(std::make_pair(trg.m_p[math::NextModN(j, 3)], trg.m_p[j])); + nb[ind++] = (it != m_neighbors.end()) ? it->second : empty_key; +} + +/// Calc delta of 'from'->'to' graph edge. +uint64_t TrianglesInfo::ListInfo::CalcDelta(PointsInfo const & points, Triangle const & from, Triangle const & to) const +{ + std::pair const p = CommonEdge(to, from); + + m2::PointU const prediction = coding::PredictPointInTriangle(points.m_max, + // common edge with 'to' + points.m_points[from.m_p[(p.second + 1) % 3]], + points.m_points[from.m_p[(p.second)]], + // diagonal point of 'from' + points.m_points[from.m_p[(p.second + 2) % 3]]); + + // delta from prediction to diagonal point of 'to' + return coding::EncodePointDeltaAsUint(points.m_points[to.m_p[(p.first + 2) % 3]], prediction); +} + +template +void TrianglesInfo::ListInfo::MakeTrianglesChainImpl(PointsInfo const & points, TIterator start, + std::vector & chain) const +{ + chain.clear(); + + Triangle const fictive(start->first.second, start->first.first, -1); + + std::priority_queue, TPopOrder> q; + q.push(Edge(-1, start->second, 0, -1)); + + while (!q.empty()) { - int i = math::NextModN(CommonEdge(trg, from).first, 3); - int j = math::NextModN(i, 3); + // pop current element + Edge e = q.top(); + q.pop(); - int ind = 0; - TIterator it = m_neighbors.find(std::make_pair(trg.m_p[j], trg.m_p[i])); - nb[ind++] = (it != m_neighbors.end()) ? it->second : empty_key; + // check if already processed + if (m_visited[e.m_p[1]]) + continue; + m_visited[e.m_p[1]] = true; - it = m_neighbors.find(std::make_pair(trg.m_p[math::NextModN(j, 3)], trg.m_p[j])); - nb[ind++] = (it != m_neighbors.end()) ? it->second : empty_key; - } + // push to chain + chain.push_back(e); - /// Calc delta of 'from'->'to' graph edge. - uint64_t TrianglesInfo::ListInfo::CalcDelta( - PointsInfo const & points, Triangle const & from, Triangle const & to) const - { - std::pair const p = CommonEdge(to, from); + Triangle const & trg = m_triangles[e.m_p[1]]; - m2::PointU const prediction = coding::PredictPointInTriangle( - points.m_max, - // common edge with 'to' - points.m_points[from.m_p[(p.second + 1) % 3]], points.m_points[from.m_p[(p.second)]], - // diagonal point of 'from' - points.m_points[from.m_p[(p.second + 2) % 3]]); + // get neighbors + int nb[2]; + GetNeighbors(trg, (e.m_p[0] == -1) ? fictive : m_triangles[e.m_p[0]], nb); - // delta from prediction to diagonal point of 'to' - return coding::EncodePointDeltaAsUint(points.m_points[to.m_p[(p.first + 2) % 3]], prediction); - } - - template - void TrianglesInfo::ListInfo::MakeTrianglesChainImpl( - PointsInfo const & points, TIterator start, std::vector & chain) const - { - chain.clear(); - - Triangle const fictive(start->first.second, start->first.first, -1); - - std::priority_queue, TPopOrder> q; - q.push(Edge(-1, start->second, 0, -1)); - - while (!q.empty()) - { - // pop current element - Edge e = q.top(); - q.pop(); - - // check if already processed - if (m_visited[e.m_p[1]]) - continue; - m_visited[e.m_p[1]] = true; - - // push to chain - chain.push_back(e); - - Triangle const & trg = m_triangles[e.m_p[1]]; - - // get neighbors - int nb[2]; - GetNeighbors(trg, (e.m_p[0] == -1) ? fictive : m_triangles[e.m_p[0]], nb); - - // push neighbors to queue - for (int i = 0; i < 2; ++i) - if (nb[i] != empty_key && !m_visited[nb[i]]) - q.push(Edge(e.m_p[1], nb[i], CalcDelta(points, trg, m_triangles[nb[i]]), i)); - } - } - - // Element with less m_delta is better than another one. - struct edge_greater_delta - { - bool operator() (Edge const & e1, Edge const & e2) const - { - return (e1.m_delta > e2.m_delta); - } - }; - - // Experimental ... - struct edge_less_delta - { - bool operator() (Edge const & e1, Edge const & e2) const - { - return (e1.m_delta < e2.m_delta); - } - }; - - void TrianglesInfo::ListInfo::MakeTrianglesChain( - PointsInfo const & points, TIterator start, std::vector & chain, bool /*goodOrder*/) const - { - //if (goodOrder) - MakeTrianglesChainImpl(points, start, chain); - //else - // MakeTrianglesChainImpl(points, start, chain); - } - - bool TrianglesInfo::Add(int p0, int p1, int p2) - { - return m_triangles.back().Add(p0, p1, p2); - } - - void TrianglesInfo::GetPointsInfo(m2::PointU const & baseP, - m2::PointU const & maxP, - std::function const & convert, - PointsInfo & info) const - { - info.m_base = baseP; - info.m_max = m2::PointD(maxP); - - size_t const count = m_points.size(); - info.m_points.reserve(count); - for (size_t i = 0; i < count; ++i) - info.m_points.push_back(convert(m_points[i])); + // push neighbors to queue + for (int i = 0; i < 2; ++i) + if (nb[i] != empty_key && !m_visited[nb[i]]) + q.push(Edge(e.m_p[1], nb[i], CalcDelta(points, trg, m_triangles[nb[i]]), i)); } } + +// Element with less m_delta is better than another one. +struct edge_greater_delta +{ + bool operator()(Edge const & e1, Edge const & e2) const { return (e1.m_delta > e2.m_delta); } +}; + +// Experimental ... +struct edge_less_delta +{ + bool operator()(Edge const & e1, Edge const & e2) const { return (e1.m_delta < e2.m_delta); } +}; + +void TrianglesInfo::ListInfo::MakeTrianglesChain(PointsInfo const & points, TIterator start, std::vector & chain, + bool /*goodOrder*/) const +{ + // if (goodOrder) + MakeTrianglesChainImpl(points, start, chain); + // else + // MakeTrianglesChainImpl(points, start, chain); +} + +bool TrianglesInfo::Add(int p0, int p1, int p2) +{ + return m_triangles.back().Add(p0, p1, p2); +} + +void TrianglesInfo::GetPointsInfo(m2::PointU const & baseP, m2::PointU const & maxP, + std::function const & convert, PointsInfo & info) const +{ + info.m_base = baseP; + info.m_max = m2::PointD(maxP); + + size_t const count = m_points.size(); + info.m_points.reserve(count); + for (size_t i = 0; i < count; ++i) + info.m_points.push_back(convert(m_points[i])); +} +} // namespace tesselator diff --git a/generator/tesselator.hpp b/generator/tesselator.hpp index 29d92c851..192a8506c 100644 --- a/generator/tesselator.hpp +++ b/generator/tesselator.hpp @@ -13,176 +13,170 @@ namespace tesselator { - typedef std::vector PointsT; - typedef std::list PolygonsT; +typedef std::vector PointsT; +typedef std::list PolygonsT; - struct Triangle +struct Triangle +{ + int m_p[3]; + + Triangle(int p0, int p1, int p2) { - int m_p[3]; + m_p[0] = p0; + m_p[1] = p1; + m_p[2] = p2; + } - Triangle(int p0, int p1, int p2) - { - m_p[0] = p0; - m_p[1] = p1; - m_p[2] = p2; - } - - Triangle(int const * p) - { - for (int i = 0; i < 3; ++i) - m_p[i] = p[i]; - } - - int GetPoint3(std::pair const & p) const - { - for (int i = 0; i < 3; ++i) - if (m_p[i] != p.first && m_p[i] != p.second) - return m_p[i]; - - ASSERT ( false, ("Triangle with equal points") ); - return -1; - } - }; - - // Converted points, prepared for serialization. - struct PointsInfo + Triangle(int const * p) { - std::vector m_points; - m2::PointU m_base; - m2::PointD m_max; - }; + for (int i = 0; i < 3; ++i) + m_p[i] = p[i]; + } - class TrianglesInfo + int GetPoint3(std::pair const & p) const { - PointsT m_points; + for (int i = 0; i < 3; ++i) + if (m_p[i] != p.first && m_p[i] != p.second) + return m_p[i]; - class ListInfo + ASSERT(false, ("Triangle with equal points")); + return -1; + } +}; + +// Converted points, prepared for serialization. +struct PointsInfo +{ + std::vector m_points; + m2::PointU m_base; + m2::PointD m_max; +}; + +class TrianglesInfo +{ + PointsT m_points; + + class ListInfo + { + static int empty_key; + + std::vector m_triangles; + + mutable std::vector m_visited; + + // directed edge -> triangle + template + struct HashPair { - static int empty_key; - - std::vector m_triangles; - - mutable std::vector m_visited; - - // directed edge -> triangle - template struct HashPair - { - size_t operator()(std::pair const & p) const - { - return math::Hash(p.first, p.second); - } - }; - - using TNeighbours = std::unordered_map, int, HashPair>; - TNeighbours m_neighbors; - - bool AddNeighbour(int p1, int p2, int trg); - - void GetNeighbors( - Triangle const & trg, Triangle const & from, int * nb) const; - - uint64_t CalcDelta( - PointsInfo const & points, Triangle const & from, Triangle const & to) const; - - public: - using TIterator = TNeighbours::const_iterator; - - explicit ListInfo(size_t count) - { - m_triangles.reserve(count); - } - - bool Add(int p0, int p1, int p2); - - void Start() const - { - m_visited.resize(m_triangles.size()); - } - - bool HasUnvisited() const - { - std::vector test; - test.assign(m_triangles.size(), true); - return (m_visited != test); - } - - TIterator FindStartTriangle(PointsInfo const & points) const; - - private: - template - void MakeTrianglesChainImpl(PointsInfo const & points, TIterator start, std::vector & chain) const; - public: - void MakeTrianglesChain(PointsInfo const & points, TIterator start, std::vector & chain, bool goodOrder) const; - - size_t GetCount() const { return m_triangles.size(); } - Triangle GetTriangle(size_t i) const { return m_triangles[i]; } + size_t operator()(std::pair const & p) const { return math::Hash(p.first, p.second); } }; - std::list m_triangles; + using TNeighbours = std::unordered_map, int, HashPair>; + TNeighbours m_neighbors; -// int m_isCCW; // 0 - uninitialized; -1 - false; 1 - true + bool AddNeighbour(int p1, int p2, int trg); + + void GetNeighbors(Triangle const & trg, Triangle const & from, int * nb) const; + + uint64_t CalcDelta(PointsInfo const & points, Triangle const & from, Triangle const & to) const; public: - TrianglesInfo()// : m_isCCW(0) - {} + using TIterator = TNeighbours::const_iterator; - /// @name Making functions. - template void AssignPoints(IterT b, IterT e) - { - m_points.assign(b, e); - } - - void Reserve(size_t count) { m_triangles.push_back(ListInfo(count)); } + explicit ListInfo(size_t count) { m_triangles.reserve(count); } bool Add(int p0, int p1, int p2); - //@} - inline bool IsEmpty() const { return m_triangles.empty(); } + void Start() const { m_visited.resize(m_triangles.size()); } - template void ForEachTriangle(ToDo && toDo) const + bool HasUnvisited() const { - for (auto i = m_triangles.begin(); i != m_triangles.end(); ++i) - { - size_t const count = i->GetCount(); - for (size_t j = 0; j < count; ++j) - { - Triangle const t = i->GetTriangle(j); - toDo(m_points[t.m_p[0]], m_points[t.m_p[1]], m_points[t.m_p[2]]); - } - } + std::vector test; + test.assign(m_triangles.size(), true); + return (m_visited != test); } - // Convert points from double to uint. - void GetPointsInfo(m2::PointU const & baseP, m2::PointU const & maxP, - std::function const & convert, PointsInfo & info) const; + TIterator FindStartTriangle(PointsInfo const & points) const; - /// Triangles chains processing function. - template - void ProcessPortions(PointsInfo const & points, EmitterT & emitter, bool goodOrder = true) const - { - // process portions and push out result chains - for (auto const & trg : m_triangles) - { - trg.Start(); + private: + template + void MakeTrianglesChainImpl(PointsInfo const & points, TIterator start, std::vector & chain) const; - do - { - auto start = trg.FindStartTriangle(points); + public: + void MakeTrianglesChain(PointsInfo const & points, TIterator start, std::vector & chain, + bool goodOrder) const; - std::vector chain; - trg.MakeTrianglesChain(points, start, chain, goodOrder); - - m2::PointU arr[] = { points.m_points[start->first.first], - points.m_points[start->first.second], - points.m_points[trg.GetTriangle(start->second).GetPoint3(start->first)] }; - - emitter(arr, std::move(chain)); - } while (trg.HasUnvisited()); - } - } + size_t GetCount() const { return m_triangles.size(); } + Triangle GetTriangle(size_t i) const { return m_triangles[i]; } }; - /// Main tesselate function. - /// @returns number of resulting triangles after triangulation. - int TesselateInterior(PolygonsT const & polys, TrianglesInfo & info); -} + std::list m_triangles; + + // int m_isCCW; // 0 - uninitialized; -1 - false; 1 - true + +public: + TrianglesInfo() // : m_isCCW(0) + {} + + /// @name Making functions. + template + void AssignPoints(IterT b, IterT e) + { + m_points.assign(b, e); + } + + void Reserve(size_t count) { m_triangles.push_back(ListInfo(count)); } + + bool Add(int p0, int p1, int p2); + //@} + + inline bool IsEmpty() const { return m_triangles.empty(); } + + template + void ForEachTriangle(ToDo && toDo) const + { + for (auto i = m_triangles.begin(); i != m_triangles.end(); ++i) + { + size_t const count = i->GetCount(); + for (size_t j = 0; j < count; ++j) + { + Triangle const t = i->GetTriangle(j); + toDo(m_points[t.m_p[0]], m_points[t.m_p[1]], m_points[t.m_p[2]]); + } + } + } + + // Convert points from double to uint. + void GetPointsInfo(m2::PointU const & baseP, m2::PointU const & maxP, + std::function const & convert, PointsInfo & info) const; + + /// Triangles chains processing function. + template + void ProcessPortions(PointsInfo const & points, EmitterT & emitter, bool goodOrder = true) const + { + // process portions and push out result chains + for (auto const & trg : m_triangles) + { + trg.Start(); + + do + { + auto start = trg.FindStartTriangle(points); + + std::vector chain; + trg.MakeTrianglesChain(points, start, chain, goodOrder); + + m2::PointU arr[] = {points.m_points[start->first.first], points.m_points[start->first.second], + points.m_points[trg.GetTriangle(start->second).GetPoint3(start->first)]}; + + emitter(arr, std::move(chain)); + } + while (trg.HasUnvisited()); + } + } +}; + +/// Main tesselate function. +/// @returns number of resulting triangles after triangulation. +int TesselateInterior(PolygonsT const & polys, TrianglesInfo & info); +} // namespace tesselator diff --git a/generator/towns_dumper.cpp b/generator/towns_dumper.cpp index 6f448674b..e2b2184fc 100644 --- a/generator/towns_dumper.cpp +++ b/generator/towns_dumper.cpp @@ -10,7 +10,6 @@ #include - double TownsDumper::GetDistanceThreshold() { return 500000; @@ -23,12 +22,10 @@ void TownsDumper::FilterTowns() std::vector towns; towns.reserve(m_records.size()); for (auto const & town : m_records) - { if (town.capital) resultTree.Add(town); else towns.push_back(town); - } sort(towns.begin(), towns.end()); LOG(LINFO, ("Capital's tree size =", resultTree.GetSize(), "; Town's vector size =", towns.size())); @@ -44,22 +41,19 @@ void TownsDumper::FilterTowns() resultTree.ForEachInRect( mercator::RectByCenterXYAndSizeInMeters(mercator::FromLatLon(top.point), distanceThreshold), [&top, &isUniq, &distanceThreshold](Town const & candidate) - { - // The idea behind that is to collect all capitals and unique major cities in 500 km radius - // for upgrading in World map visibility. See TOWNS_FILE usage. - if (ms::DistanceOnEarth(top.point, candidate.point) < distanceThreshold) - isUniq = false; - }); + { + // The idea behind that is to collect all capitals and unique major cities in 500 km radius + // for upgrading in World map visibility. See TOWNS_FILE usage. + if (ms::DistanceOnEarth(top.point, candidate.point) < distanceThreshold) + isUniq = false; + }); if (isUniq) resultTree.Add(top); towns.pop_back(); } - resultTree.ForEach([this](Town const & town) - { - m_records.push_back(town); - }); + resultTree.ForEach([this](Town const & town) { m_records.push_back(town); }); LOG(LINFO, ("Preprocessing finished. Have", m_records.size(), "towns.")); } @@ -81,21 +75,13 @@ void TownsDumper::CheckElement(OsmElement const & em) auto const & key = tag.m_key; auto const & value = tag.m_value; if (key == "population") - { UNUSED_VALUE(strings::to_uint64(value, population)); - } else if (key == "admin_level") - { UNUSED_VALUE(strings::to_int(value, admin_level)); - } else if (key == "capital" && value == "yes") - { capital = true; - } else if (key == "place" && (value == "city" || value == "town")) - { town = true; - } } // Ignore regional capitals. @@ -116,6 +102,6 @@ void TownsDumper::Dump(std::string const & filePath) for (auto const & record : m_records) { std::string const isCapital = record.capital ? "t" : "f"; - stream << record.point.m_lat << ";" << record.point.m_lon << ";" << record.id << ";" << isCapital << std::endl; + stream << record.point.m_lat << ";" << record.point.m_lon << ";" << record.id << ";" << isCapital << std::endl; } } diff --git a/generator/towns_dumper.hpp b/generator/towns_dumper.hpp index 393908429..6e958b9b6 100644 --- a/generator/towns_dumper.hpp +++ b/generator/towns_dumper.hpp @@ -27,9 +27,11 @@ private: uint64_t population; Town(double lat, double lon, uint64_t id, bool isCapital, uint64_t population) - : point(lat, lon), id(id), capital(isCapital), population(population) - { - } + : point(lat, lon) + , id(id) + , capital(isCapital) + , population(population) + {} bool operator<(Town const & rhs) const { return population < rhs.population; } m2::RectD GetLimitRect() const diff --git a/generator/traffic_generator.cpp b/generator/traffic_generator.cpp index 11c3a9ad4..c2dd80217 100644 --- a/generator/traffic_generator.cpp +++ b/generator/traffic_generator.cpp @@ -12,8 +12,8 @@ #include "indexer/feature_processor.hpp" #include "indexer/features_offsets_table.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include diff --git a/generator/transit_generator.cpp b/generator/transit_generator.cpp index 2dcccaf55..6754d64aa 100644 --- a/generator/transit_generator.cpp +++ b/generator/transit_generator.cpp @@ -53,10 +53,8 @@ void LoadBorders(std::string const & dir, CountryId const & countryId, std::vect void FillOsmIdToFeatureIdsMap(std::string const & osmIdToFeatureIdsPath, OsmIdToFeatureIdsMap & mapping) { - CHECK(ForEachOsmId2FeatureId(osmIdToFeatureIdsPath, - [&mapping](auto const & compositeId, auto featureId) { - mapping[compositeId.m_mainId].push_back(featureId); - }), + CHECK(ForEachOsmId2FeatureId(osmIdToFeatureIdsPath, [&mapping](auto const & compositeId, auto featureId) + { mapping[compositeId.m_mainId].push_back(featureId); }), (osmIdToFeatureIdsPath)); } @@ -69,8 +67,7 @@ std::string GetMwmPath(std::string const & mwmDir, CountryId const & countryId) /// The result of the calculation is set to |Gate::m_bestPedestrianSegment| of every gate /// from |graphData.m_gates|. /// \note All gates in |graphData.m_gates| must have a valid |m_point| field before the call. -void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId const & countryId, - GraphData & graphData) +void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId const & countryId, GraphData & graphData) { // Creating IndexRouter. SingleMwmDataSource dataSource(mwmPath); @@ -78,11 +75,10 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons auto infoGetter = storage::CountryInfoReader::CreateCountryInfoGetter(GetPlatform()); CHECK(infoGetter, ()); - auto const countryFileGetter = [&infoGetter](m2::PointD const & pt) { - return infoGetter->GetRegionCountryId(pt); - }; + auto const countryFileGetter = [&infoGetter](m2::PointD const & pt) { return infoGetter->GetRegionCountryId(pt); }; - auto const getMwmRectByName = [&](std::string const & c) -> m2::RectD { + auto const getMwmRectByName = [&](std::string const & c) -> m2::RectD + { CHECK_EQUAL(countryId, c, ()); return infoGetter->GetLimitRectForLeaf(c); }; @@ -92,9 +88,8 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons numMwmIds->RegisterFile(CountryFile(countryId)); // Note. |indexRouter| is valid while |dataSource| is valid. - IndexRouter indexRouter(VehicleType::Pedestrian, false /* load altitudes */, - CountryParentNameGetterFn(), countryFileGetter, getMwmRectByName, - numMwmIds, MakeNumMwmTree(*numMwmIds, *infoGetter), + IndexRouter indexRouter(VehicleType::Pedestrian, false /* load altitudes */, CountryParentNameGetterFn(), + countryFileGetter, getMwmRectByName, numMwmIds, MakeNumMwmTree(*numMwmIds, *infoGetter), traffic::TrafficCache(), dataSource.GetDataSource()); auto worldGraph = indexRouter.MakeSingleMwmWorldGraph(); @@ -118,32 +113,31 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons if (indexRouter.GetBestOutgoingEdges(gate.GetPoint(), *worldGraph, bestEdges)) { CHECK(!bestEdges.empty(), ()); - IndexRouter::BestEdgeComparator bestEdgeComparator(gate.GetPoint(), - m2::PointD::Zero() /* direction */); + IndexRouter::BestEdgeComparator bestEdgeComparator(gate.GetPoint(), m2::PointD::Zero() /* direction */); // Looking for the edge which is the closest to |gate.GetPoint()|. // @TODO It should be considered to change the format of transit section to keep all // candidates for every gate. - auto const & bestEdge = *min_element( - bestEdges.cbegin(), bestEdges.cend(), - [&bestEdgeComparator](routing::Edge const & lhs, routing::Edge const & rhs) { - return bestEdgeComparator.Compare(lhs, rhs) < 0; - }); + auto const & bestEdge = *min_element(bestEdges.cbegin(), bestEdges.cend(), + [&bestEdgeComparator](routing::Edge const & lhs, routing::Edge const & rhs) + { return bestEdgeComparator.Compare(lhs, rhs) < 0; }); CHECK(bestEdge.GetFeatureId().IsValid(), ()); - graphData.SetGateBestPedestrianSegment(i, SingleMwmSegment( - bestEdge.GetFeatureId().m_index, bestEdge.GetSegId(), bestEdge.IsForward())); + graphData.SetGateBestPedestrianSegment( + i, SingleMwmSegment(bestEdge.GetFeatureId().m_index, bestEdge.GetSegId(), bestEdge.IsForward())); } } catch (MwmIsNotAliveException const & e) { - LOG(LCRITICAL, ("Point of a gate belongs to the processed mwm:", countryId, "," - "but the mwm is not alive. Gate:", gate, e.what())); + LOG(LCRITICAL, ("Point of a gate belongs to the processed mwm:", countryId, + "," + "but the mwm is not alive. Gate:", + gate, e.what())); } catch (RootException const & e) { - LOG(LCRITICAL, ("Exception while looking for the best segment of a gate. CountryId:", - countryId, ". Gate:", gate, e.what())); + LOG(LCRITICAL, + ("Exception while looking for the best segment of a gate. CountryId:", countryId, ". Gate:", gate, e.what())); } } } @@ -151,14 +145,12 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons namespace routing::transit { -void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, - std::string const & transitJsonPath, GraphData & data) +void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const & transitJsonPath, GraphData & data) { Platform::EFileType fileType; Platform::EError const errCode = Platform::GetFileType(transitJsonPath, fileType); CHECK_EQUAL(errCode, Platform::EError::ERR_OK, ("Transit graph was not found:", transitJsonPath)); - CHECK_EQUAL(fileType, Platform::EFileType::Regular, - ("Transit graph was not found:", transitJsonPath)); + CHECK_EQUAL(fileType, Platform::EFileType::Regular, ("Transit graph was not found:", transitJsonPath)); std::string jsonBuffer; try @@ -192,8 +184,8 @@ void ProcessGraph(std::string const & mwmPath, CountryId const & countryId, data.CheckValidSortedUnique(); } -void BuildTransit(std::string const & mwmDir, CountryId const & countryId, - std::string const & osmIdToFeatureIdsPath, std::string const & transitDir) +void BuildTransit(std::string const & mwmDir, CountryId const & countryId, std::string const & osmIdToFeatureIdsPath, + std::string const & transitDir) { std::string const mwmPath = GetMwmPath(mwmDir, countryId); LOG(LINFO, ("Building transit section for", mwmPath)); @@ -218,7 +210,7 @@ void BuildTransit(std::string const & mwmDir, CountryId const & countryId, } if (jointData.IsEmpty()) - return; // Empty transit section. + return; // Empty transit section. ProcessGraph(mwmPath, countryId, mapping, jointData); jointData.CheckValidSortedUnique(); diff --git a/generator/transit_generator.hpp b/generator/transit_generator.hpp index b67fe05b5..fb8f2eb0c 100644 --- a/generator/transit_generator.hpp +++ b/generator/transit_generator.hpp @@ -13,8 +13,7 @@ namespace transit /// \brief Fills |data| according to a transit graph (|transitJsonPath|). /// \note Some fields of |data| contain feature ids of a certain mwm. These fields are filled /// iff the mapping (|osmIdToFeatureIdsPath|) contains them. Otherwise the fields have default value. -void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const & transitJsonPath, - GraphData & data); +void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const & transitJsonPath, GraphData & data); /// \brief Calculates and adds some information to transit graph (|data|) after deserializing /// from json. diff --git a/generator/transit_generator_experimental.cpp b/generator/transit_generator_experimental.cpp index d034410ee..3b5ad2a8e 100644 --- a/generator/transit_generator_experimental.cpp +++ b/generator/transit_generator_experimental.cpp @@ -21,8 +21,8 @@ #include "coding/file_writer.hpp" -#include "geometry/point2d.hpp" #include "geometry/mercator.hpp" +#include "geometry/point2d.hpp" #include "base/assert.hpp" #include "base/exception.hpp" @@ -45,13 +45,11 @@ namespace transit { namespace experimental { -void FillOsmIdToFeatureIdsMap(std::string const & osmIdToFeatureIdsPath, - OsmIdToFeatureIdsMap & mapping) +void FillOsmIdToFeatureIdsMap(std::string const & osmIdToFeatureIdsPath, OsmIdToFeatureIdsMap & mapping) { - bool const mappedIds = ForEachOsmId2FeatureId( - osmIdToFeatureIdsPath, [&mapping](auto const & compositeId, auto featureId) { - mapping[compositeId.m_mainId].push_back(featureId); - }); + bool const mappedIds = + ForEachOsmId2FeatureId(osmIdToFeatureIdsPath, [&mapping](auto const & compositeId, auto featureId) + { mapping[compositeId.m_mainId].push_back(featureId); }); CHECK(mappedIds, (osmIdToFeatureIdsPath)); } @@ -73,8 +71,7 @@ std::vector GetSegmentsFromEdges(std::vector && template std::vector GetBestPedestrianEdges(D const & destination, C && countryFileGetter, - IndexRouter & indexRouter, - std::unique_ptr & worldGraph, + IndexRouter & indexRouter, std::unique_ptr & worldGraph, CountryId const & countryId) { std::vector edges; @@ -100,8 +97,8 @@ std::vector GetBestPedestrianEdges(D const & destination, C && co } catch (RootException const & e) { - LOG(LCRITICAL, ("Exception while looking for the best segment in mwm", countryId, - "Destination", mercator::ToLatLon(destination.GetPoint()), e.what())); + LOG(LCRITICAL, ("Exception while looking for the best segment in mwm", countryId, "Destination", + mercator::ToLatLon(destination.GetPoint()), e.what())); } return edges; @@ -117,11 +114,10 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons auto infoGetter = storage::CountryInfoReader::CreateCountryInfoGetter(GetPlatform()); CHECK(infoGetter, ()); - auto const countryFileGetter = [&infoGetter](m2::PointD const & pt) { - return infoGetter->GetRegionCountryId(pt); - }; + auto const countryFileGetter = [&infoGetter](m2::PointD const & pt) { return infoGetter->GetRegionCountryId(pt); }; - auto const getMwmRectByName = [&](std::string const & c) { + auto const getMwmRectByName = [&](std::string const & c) + { CHECK_EQUAL(countryId, c, ()); return infoGetter->GetLimitRectForLeaf(c); }; @@ -131,38 +127,33 @@ void CalculateBestPedestrianSegments(std::string const & mwmPath, CountryId cons numMwmIds->RegisterFile(CountryFile(countryId)); // |indexRouter| is valid while |dataSource| is valid. - IndexRouter indexRouter(VehicleType::Pedestrian, false /* load altitudes */, - CountryParentNameGetterFn(), countryFileGetter, getMwmRectByName, - numMwmIds, MakeNumMwmTree(*numMwmIds, *infoGetter), + IndexRouter indexRouter(VehicleType::Pedestrian, false /* load altitudes */, CountryParentNameGetterFn(), + countryFileGetter, getMwmRectByName, numMwmIds, MakeNumMwmTree(*numMwmIds, *infoGetter), traffic::TrafficCache(), dataSource.GetDataSource()); auto worldGraph = indexRouter.MakeSingleMwmWorldGraph(); auto const & gates = transitData.GetGates(); for (size_t i = 0; i < gates.size(); ++i) { - auto edges = - GetBestPedestrianEdges(gates[i], countryFileGetter, indexRouter, worldGraph, countryId); + auto edges = GetBestPedestrianEdges(gates[i], countryFileGetter, indexRouter, worldGraph, countryId); transitData.SetGatePedestrianSegments(i, GetSegmentsFromEdges(std::move(edges))); } auto const & stops = transitData.GetStops(); for (size_t i = 0; i < stops.size(); ++i) { - auto edges = - GetBestPedestrianEdges(stops[i], countryFileGetter, indexRouter, worldGraph, countryId); + auto edges = GetBestPedestrianEdges(stops[i], countryFileGetter, indexRouter, worldGraph, countryId); transitData.SetStopPedestrianSegments(i, GetSegmentsFromEdges(std::move(edges))); } } -void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const & transitJsonsPath, - TransitData & data) +void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const & transitJsonsPath, TransitData & data) { data.DeserializeFromJson(transitJsonsPath, mapping); } EdgeIdToFeatureId BuildTransit(std::string const & mwmDir, CountryId const & countryId, - std::string const & osmIdToFeatureIdsPath, - std::string const & transitDir) + std::string const & osmIdToFeatureIdsPath, std::string const & transitDir) { LOG(LINFO, ("Building experimental transit section for", countryId, "mwmDir:", mwmDir)); std::string const mwmPath = GetMwmPath(mwmDir, countryId); diff --git a/generator/transit_generator_experimental.hpp b/generator/transit_generator_experimental.hpp index 603fecf5c..a97222c82 100644 --- a/generator/transit_generator_experimental.hpp +++ b/generator/transit_generator_experimental.hpp @@ -28,7 +28,6 @@ void DeserializeFromJson(OsmIdToFeatureIdsMap const & mapping, std::string const /// * feature geometry /// * index graph (ROUTING_FILE_TAG) EdgeIdToFeatureId BuildTransit(std::string const & mwmDir, storage::CountryId const & countryId, - std::string const & osmIdToFeatureIdsPath, - std::string const & transitDir); + std::string const & osmIdToFeatureIdsPath, std::string const & transitDir); } // namespace experimental } // namespace transit diff --git a/generator/translator.cpp b/generator/translator.cpp index 662b27f9b..2af743f39 100644 --- a/generator/translator.cpp +++ b/generator/translator.cpp @@ -4,13 +4,11 @@ #include "generator/filter_collection.hpp" #include "generator/osm_element.hpp" - namespace generator { Translator::Translator(std::shared_ptr const & processor, std::shared_ptr const & cache, - std::shared_ptr const & maker, - std::shared_ptr const & filter, + std::shared_ptr const & maker, std::shared_ptr const & filter, std::shared_ptr const & collector) : m_filter(filter) , m_collector(collector) @@ -25,30 +23,31 @@ Translator::Translator(std::shared_ptr const & proces Translator::Translator(std::shared_ptr const & processor, std::shared_ptr const & cache, std::shared_ptr const & maker) - : Translator(processor, cache, maker, std::make_shared(), - std::make_shared()) -{ -} + : Translator(processor, cache, maker, std::make_shared(), std::make_shared()) +{} void Translator::SetCollector(std::shared_ptr const & collector) { m_collector = collector; } -void Translator::SetFilter(std::shared_ptr const & filter) { m_filter = filter; } +void Translator::SetFilter(std::shared_ptr const & filter) +{ + m_filter = filter; +} void Translator::Emit(OsmElement const & src) { // Make a copy because it will be modified below. OsmElement element(src); - Preprocess(element); // Might use replaced_tags.txt via a TagReplacer. + Preprocess(element); // Might use replaced_tags.txt via a TagReplacer. if (!m_filter->IsAccepted(element)) return; m_tagsEnricher(element); m_collector->Collect(element); - m_featureMaker->Add(element); // A feature is created from OSM tags. + m_featureMaker->Add(element); // A feature is created from OSM tags. feature::FeatureBuilder feature; while (m_featureMaker->GetNextFeature(feature)) { diff --git a/generator/translator.hpp b/generator/translator.hpp index 665d74ebd..5238cee78 100644 --- a/generator/translator.hpp +++ b/generator/translator.hpp @@ -28,8 +28,7 @@ class Translator : public TranslatorInterface public: explicit Translator(std::shared_ptr const & processor, std::shared_ptr const & cache, - std::shared_ptr const & maker, - std::shared_ptr const & filter, + std::shared_ptr const & maker, std::shared_ptr const & filter, std::shared_ptr const & collector); explicit Translator(std::shared_ptr const & processor, std::shared_ptr const & cache, @@ -55,10 +54,7 @@ protected: return std::make_shared(processor, cache, featureMaker, filter, collector); } - void MergeIntoBase(Translator & other) const - { - other.m_collector->Merge(*m_collector); - } + void MergeIntoBase(Translator & other) const { other.m_collector->Merge(*m_collector); } std::shared_ptr m_filter; std::shared_ptr m_collector; diff --git a/generator/translator_coastline.cpp b/generator/translator_coastline.cpp index c6abfedee..f971f0e96 100644 --- a/generator/translator_coastline.cpp +++ b/generator/translator_coastline.cpp @@ -22,10 +22,7 @@ class CoastlineFilter : public FilterInterface { public: // FilterInterface overrides: - std::shared_ptr Clone() const override - { - return std::make_shared(); - } + std::shared_ptr Clone() const override { return std::make_shared(); } bool IsAccepted(feature::FeatureBuilder const & feature) const override { @@ -35,16 +32,15 @@ public: }; } // namespace -TranslatorCoastline::TranslatorCoastline( - std::shared_ptr const & processor, - std::shared_ptr const & cache) +TranslatorCoastline::TranslatorCoastline(std::shared_ptr const & processor, + std::shared_ptr const & cache) : Translator(processor, cache, std::make_shared(cache->GetCache())) { auto filters = std::make_shared(); filters->Append(std::make_shared()); filters->Append(std::make_shared()); - filters->Append(std::make_shared( - base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); + filters->Append( + std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); SetFilter(filters); } @@ -53,5 +49,8 @@ std::shared_ptr TranslatorCoastline::Clone() const return Translator::CloneBase(); } -void TranslatorCoastline::MergeInto(TranslatorCoastline & other) const { MergeIntoBase(other); } +void TranslatorCoastline::MergeInto(TranslatorCoastline & other) const +{ + MergeIntoBase(other); +} } // namespace generator diff --git a/generator/translator_collection.hpp b/generator/translator_collection.hpp index 7b2a0d390..3847e0c67 100644 --- a/generator/translator_collection.hpp +++ b/generator/translator_collection.hpp @@ -8,8 +8,9 @@ namespace generator { // This class allows you to work with a group of translators as with one. -class TranslatorCollection : public CollectionBase>, - public TranslatorInterface +class TranslatorCollection + : public CollectionBase> + , public TranslatorInterface { public: // TranslatorInterface overrides: diff --git a/generator/translator_complex.cpp b/generator/translator_complex.cpp index e217fb19c..fc4df73d3 100644 --- a/generator/translator_complex.cpp +++ b/generator/translator_complex.cpp @@ -21,18 +21,17 @@ TranslatorComplex::TranslatorComplex(std::shared_ptr std::shared_ptr const & cache, feature::GenerateInfo const & info) : Translator(processor, cache, std::make_shared(cache->GetCache())) - , m_tagReplacer(std::make_shared( - base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) + , m_tagReplacer(std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) { auto filters = std::make_shared(); filters->Append(std::make_shared()); filters->Append(std::make_shared()); - filters->Append(std::make_shared( - base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); + filters->Append( + std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); SetFilter(filters); - SetCollector(std::make_shared( - info.GetIntermediateFileName(BUILDING_PARTS_MAPPING_FILE), cache->GetCache())); + SetCollector(std::make_shared(info.GetIntermediateFileName(BUILDING_PARTS_MAPPING_FILE), + cache->GetCache())); } void TranslatorComplex::Preprocess(OsmElement & element) @@ -47,7 +46,13 @@ std::shared_ptr TranslatorComplex::Clone() const return copy; } -void TranslatorComplex::Merge(TranslatorInterface const & other) { other.MergeInto(*this); } +void TranslatorComplex::Merge(TranslatorInterface const & other) +{ + other.MergeInto(*this); +} -void TranslatorComplex::MergeInto(TranslatorComplex & other) const { MergeIntoBase(other); } +void TranslatorComplex::MergeInto(TranslatorComplex & other) const +{ + MergeIntoBase(other); +} } // namespace generator diff --git a/generator/translator_country.cpp b/generator/translator_country.cpp index 8931b17f3..442d28459 100644 --- a/generator/translator_country.cpp +++ b/generator/translator_country.cpp @@ -18,7 +18,7 @@ #include "generator/intermediate_data.hpp" #include "generator/maxspeeds_collector.hpp" #include "generator/metalines_builder.hpp" -//#include "generator/node_mixer.hpp" +// #include "generator/node_mixer.hpp" #include "generator/restriction_writer.hpp" #include "generator/road_access_generator.hpp" @@ -36,10 +36,7 @@ namespace class RelationCollector { public: - explicit RelationCollector(std::shared_ptr const & collectors) - : m_collectors(collectors) - { - } + explicit RelationCollector(std::shared_ptr const & collectors) : m_collectors(collectors) {} template base::ControlFlow operator()(uint64_t id, Reader & reader) @@ -66,10 +63,8 @@ bool WikiDataValidator(std::string const & tagValue) return false; while (pos != tagValue.size()) - { if (!std::isdigit(tagValue[pos++])) return false; - } return true; } @@ -77,32 +72,30 @@ bool WikiDataValidator(std::string const & tagValue) TranslatorCountry::TranslatorCountry(std::shared_ptr const & processor, std::shared_ptr const & cache, - feature::GenerateInfo const & info, - AffiliationInterfacePtr affiliation) + feature::GenerateInfo const & info, AffiliationInterfacePtr affiliation) : Translator(processor, cache, std::make_shared(cache->GetCache())) /// @todo Looks like ways.csv was in some MM proprietary generator routine?! , m_tagAdmixer(std::make_shared(info.GetIntermediateFileName("ways", ".csv"), info.GetIntermediateFileName(TOWNS_FILE))) - , m_tagReplacer(std::make_shared( - base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) + , m_tagReplacer(std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) { /// @todo This option is not used, but may be useful in future? -// if (needMixTags) -// { -// m_osmTagMixer = std::make_shared( -// base::JoinPath(GetPlatform().ResourcesDir(), MIXED_TAGS_FILE)); -// } + // if (needMixTags) + // { + // m_osmTagMixer = std::make_shared( + // base::JoinPath(GetPlatform().ResourcesDir(), MIXED_TAGS_FILE)); + // } auto filters = std::make_shared(); filters->Append(std::make_shared()); filters->Append(std::make_shared()); - filters->Append(std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); + filters->Append( + std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); SetFilter(filters); auto collectors = std::make_shared(); - collectors->Append(std::make_shared( - info.GetIntermediateFileName(METALINES_FILENAME))); + collectors->Append(std::make_shared(info.GetIntermediateFileName(METALINES_FILENAME))); collectors->Append(std::make_shared( info.GetIntermediateFileName(BOUNDARY_POSTCODES_FILENAME), cache->GetCache())); @@ -116,8 +109,8 @@ TranslatorCountry::TranslatorCountry(std::shared_ptr info.GetIntermediateFileName(ROAD_ACCESS_FILENAME), cache->GetCache())); collectors->Append(std::make_shared( info.GetIntermediateFileName(CAMERAS_TO_WAYS_FILENAME), cache->GetCache())); - collectors->Append(std::make_shared( - info.GetIntermediateFileName(MINI_ROUNDABOUTS_FILENAME), cache->GetCache())); + collectors->Append(std::make_shared(info.GetIntermediateFileName(MINI_ROUNDABOUTS_FILENAME), + cache->GetCache())); collectors->Append(std::make_shared(info.GetIntermediateFileName(ADDR_INTERPOL_FILENAME))); if (affiliation) @@ -125,8 +118,8 @@ TranslatorCountry::TranslatorCountry(std::shared_ptr if (!info.m_idToWikidataFilename.empty()) { - collectors->Append(std::make_shared(info.m_idToWikidataFilename, - "wikidata" /* tagKey */, WikiDataValidator)); + collectors->Append( + std::make_shared(info.m_idToWikidataFilename, "wikidata" /* tagKey */, WikiDataValidator)); } SetCollector(collectors); @@ -151,7 +144,10 @@ void TranslatorCountry::Preprocess(OsmElement & element) CollectFromRelations(element); } -void TranslatorCountry::MergeInto(TranslatorCountry & other) const { MergeIntoBase(other); } +void TranslatorCountry::MergeInto(TranslatorCountry & other) const +{ + MergeIntoBase(other); +} void TranslatorCountry::CollectFromRelations(OsmElement const & element) { diff --git a/generator/translator_country.hpp b/generator/translator_country.hpp index 9b0d11c50..798ab2f59 100644 --- a/generator/translator_country.hpp +++ b/generator/translator_country.hpp @@ -24,8 +24,8 @@ class TranslatorCountry : public Translator { public: TranslatorCountry(std::shared_ptr const & processor, - std::shared_ptr const & cache, - feature::GenerateInfo const & info, AffiliationInterfacePtr affiliation); + std::shared_ptr const & cache, feature::GenerateInfo const & info, + AffiliationInterfacePtr affiliation); // TranslatorInterface overrides: void Preprocess(OsmElement & element) override; diff --git a/generator/translator_factory.hpp b/generator/translator_factory.hpp index da543a20b..f53ca053d 100644 --- a/generator/translator_factory.hpp +++ b/generator/translator_factory.hpp @@ -2,7 +2,7 @@ #include "generator/factory_utils.hpp" #include "generator/translator_coastline.hpp" -//#include "generator/translator_complex.hpp" +// #include "generator/translator_complex.hpp" #include "generator/translator_country.hpp" #include "generator/translator_interface.hpp" #include "generator/translator_world.hpp" @@ -19,7 +19,7 @@ enum class TranslatorType Country, Coastline, World, - //Complex + // Complex }; template @@ -29,8 +29,9 @@ std::shared_ptr CreateTranslator(TranslatorType type, Args { case TranslatorType::Coastline: return create(std::forward(args)...); case TranslatorType::Country: return create(std::forward(args)...); - case TranslatorType::World: return create(std::forward(args)...); - //case TranslatorType::Complex: return create(std::forward(args)...); + case TranslatorType::World: + return create(std::forward(args)...); + // case TranslatorType::Complex: return create(std::forward(args)...); } UNREACHABLE(); } diff --git a/generator/translator_interface.hpp b/generator/translator_interface.hpp index d958b4a93..1899239f5 100644 --- a/generator/translator_interface.hpp +++ b/generator/translator_interface.hpp @@ -38,8 +38,8 @@ public: }; } // namespace generator -#define IMPLEMENT_TRANSLATOR_IFACE(className) \ - void Merge(TranslatorInterface const & ti) override \ - { \ - dynamic_cast(ti).MergeInto(*this); \ +#define IMPLEMENT_TRANSLATOR_IFACE(className) \ + void Merge(TranslatorInterface const & ti) override \ + { \ + dynamic_cast(ti).MergeInto(*this); \ } diff --git a/generator/translator_world.cpp b/generator/translator_world.cpp index 5c6196c60..2c466f8f6 100644 --- a/generator/translator_world.cpp +++ b/generator/translator_world.cpp @@ -7,7 +7,7 @@ #include "generator/filter_roads.hpp" #include "generator/generate_info.hpp" #include "generator/intermediate_data.hpp" -//#include "generator/node_mixer.hpp" +// #include "generator/node_mixer.hpp" #include "platform/platform.hpp" @@ -26,21 +26,20 @@ TranslatorWorld::TranslatorWorld(std::shared_ptr cons : Translator(processor, cache, std::make_shared(cache->GetCache())) , m_tagAdmixer(std::make_shared(info.GetIntermediateFileName("ways", ".csv"), info.GetIntermediateFileName(TOWNS_FILE))) - , m_tagReplacer(std::make_shared( - base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) + , m_tagReplacer(std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), REPLACED_TAGS_FILE))) { /// @todo This option is not used, but may be useful in future? -// if (needMixTags) -// { -// m_osmTagMixer = std::make_shared( -// base::JoinPath(GetPlatform().ResourcesDir(), MIXED_TAGS_FILE)); -// } + // if (needMixTags) + // { + // m_osmTagMixer = std::make_shared( + // base::JoinPath(GetPlatform().ResourcesDir(), MIXED_TAGS_FILE)); + // } auto filters = std::make_shared(); filters->Append(std::make_shared()); filters->Append(std::make_shared()); - filters->Append(std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), - SKIPPED_ELEMENTS_FILE))); + filters->Append( + std::make_shared(base::JoinPath(GetPlatform().ResourcesDir(), SKIPPED_ELEMENTS_FILE))); SetFilter(filters); } @@ -62,5 +61,8 @@ void TranslatorWorld::Preprocess(OsmElement & element) m_osmTagMixer->Process(element); } -void TranslatorWorld::MergeInto(TranslatorWorld & other) const { MergeIntoBase(other); } +void TranslatorWorld::MergeInto(TranslatorWorld & other) const +{ + MergeIntoBase(other); +} } // namespace generator diff --git a/generator/translator_world.hpp b/generator/translator_world.hpp index 337bbd042..7036d006e 100644 --- a/generator/translator_world.hpp +++ b/generator/translator_world.hpp @@ -23,8 +23,7 @@ class TranslatorWorld : public Translator { public: explicit TranslatorWorld(std::shared_ptr const & processor, - std::shared_ptr const & cache, - feature::GenerateInfo const & info); + std::shared_ptr const & cache, feature::GenerateInfo const & info); // TranslatorInterface overrides: void Preprocess(OsmElement & element) override; diff --git a/generator/translators_pool.cpp b/generator/translators_pool.cpp index 92015dcd5..b5388dfb6 100644 --- a/generator/translators_pool.cpp +++ b/generator/translators_pool.cpp @@ -4,8 +4,7 @@ namespace generator { -TranslatorsPool::TranslatorsPool(std::shared_ptr const & original, - size_t threadCount) +TranslatorsPool::TranslatorsPool(std::shared_ptr const & original, size_t threadCount) : m_threadPool(threadCount) { CHECK_GREATER_OR_EQUAL(threadCount, 1, ()); @@ -62,7 +61,8 @@ bool TranslatorsPool::Finish() state->left = std::move(left); state->right = std::move(right); - queue.Push(pool.Submit([state = std::move(state)]() mutable { + queue.Push(pool.Submit([state = std::move(state)]() mutable + { auto leftTranslator = state->left.get(); auto rigthTranslator = state->right.get(); rigthTranslator->Finish(); diff --git a/generator/translators_pool.hpp b/generator/translators_pool.hpp index 2353cc072..363cd980e 100644 --- a/generator/translators_pool.hpp +++ b/generator/translators_pool.hpp @@ -15,8 +15,7 @@ namespace generator class TranslatorsPool { public: - explicit TranslatorsPool(std::shared_ptr const & original, - size_t threadCount); + explicit TranslatorsPool(std::shared_ptr const & original, size_t threadCount); void Emit(std::vector && elements); bool Finish(); diff --git a/generator/unpack_mwm.cpp b/generator/unpack_mwm.cpp index a04444720..ba5930ce5 100644 --- a/generator/unpack_mwm.cpp +++ b/generator/unpack_mwm.cpp @@ -1,7 +1,7 @@ #include "generator/unpack_mwm.hpp" -#include "coding/files_container.hpp" #include "coding/file_writer.hpp" +#include "coding/files_container.hpp" #include "coding/read_write_utils.hpp" #include "base/logging.hpp" diff --git a/generator/unpack_mwm.hpp b/generator/unpack_mwm.hpp index 278943521..8a0069361 100644 --- a/generator/unpack_mwm.hpp +++ b/generator/unpack_mwm.hpp @@ -4,7 +4,6 @@ #include - namespace generator { // Unpack each section of mwm into a separate file with name filePath.sectionName diff --git a/generator/utils.cpp b/generator/utils.cpp index 26d7f5ccf..b4e0da376 100644 --- a/generator/utils.cpp +++ b/generator/utils.cpp @@ -91,26 +91,23 @@ SingleMwmDataSource::SingleMwmDataSource(std::string const & mwmPath) FeatureGetter::FeatureGetter(std::string const & countryFullPath) : m_mwm(countryFullPath) , m_guard(std::make_unique(m_mwm.GetDataSource(), m_mwm.GetMwmId())) -{ -} +{} std::unique_ptr FeatureGetter::GetFeatureByIndex(uint32_t index) const { return m_guard->GetFeatureByIndex(index); } -bool ParseFeatureIdToOsmIdMapping(std::string const & path, - std::unordered_map & mapping) +bool ParseFeatureIdToOsmIdMapping(std::string const & path, std::unordered_map & mapping) { - return ForEachOsmId2FeatureId( - path, [&](auto const & compositeId, auto featureId) { - CHECK(mapping.emplace(featureId, compositeId.m_mainId).second, - ("Several osm ids for feature", featureId, "in file", path)); - }); + return ForEachOsmId2FeatureId(path, [&](auto const & compositeId, auto featureId) + { + CHECK(mapping.emplace(featureId, compositeId.m_mainId).second, + ("Several osm ids for feature", featureId, "in file", path)); + }); } -bool ParseFeatureIdToTestIdMapping(std::string const & path, - std::unordered_map & mapping) +bool ParseFeatureIdToTestIdMapping(std::string const & path, std::unordered_map & mapping) { bool success = true; feature::ForEachFeature(path, [&](FeatureType & feature, uint32_t fid) @@ -142,24 +139,18 @@ search::CBV GetLocalities(std::string const & dataPath) bool MapcssRule::Matches(std::vector const & tags) const { for (auto const & tag : m_tags) - { if (!base::AnyOf(tags, [&](auto const & t) { return t == tag; })) return false; - } /// @todo Should we also take into account "none", "false" here? for (auto const & key : m_mandatoryKeys) - { if (!base::AnyOf(tags, [&](auto const & t) { return t.m_key == key && t.m_value != "no"; })) return false; - } for (auto const & key : m_forbiddenKeys) - { if (!base::AllOf(tags, [&](auto const & t) { return t.m_key != key || t.m_value == "no"; })) return false; - } return true; } @@ -182,8 +173,7 @@ MapcssRules ParseMapCSS(std::unique_ptr reader) rules.emplace_back(std::move(typeTokens), std::move(rule)); }; - auto const processFull = [&rules](std::string const & typeString, - std::string const & selectorsString) + auto const processFull = [&rules](std::string const & typeString, std::string const & selectorsString) { ASSERT(!typeString.empty(), ()); ASSERT(!selectorsString.empty(), ()); diff --git a/generator/utils.hpp b/generator/utils.hpp index 5923bca81..e558f1b49 100644 --- a/generator/utils.hpp +++ b/generator/utils.hpp @@ -83,16 +83,12 @@ bool ForEachOsmId2FeatureId(std::string const & path, ToDo && toDo) return false; } - mapping.ForEach([&](auto const & p) { - toDo(p.first /* osm id */, p.second /* feature id */); - }); + mapping.ForEach([&](auto const & p) { toDo(p.first /* osm id */, p.second /* feature id */); }); return true; } -bool ParseFeatureIdToOsmIdMapping(std::string const & path, - std::unordered_map & mapping); -bool ParseFeatureIdToTestIdMapping(std::string const & path, - std::unordered_map & mapping); +bool ParseFeatureIdToOsmIdMapping(std::string const & path, std::unordered_map & mapping); +bool ParseFeatureIdToTestIdMapping(std::string const & path, std::unordered_map & mapping); search::CBV GetLocalities(std::string const & dataPath); diff --git a/generator/water_boundary_checker.hpp b/generator/water_boundary_checker.hpp index 5653f1edc..f16a852e2 100644 --- a/generator/water_boundary_checker.hpp +++ b/generator/water_boundary_checker.hpp @@ -6,7 +6,6 @@ #include "geometry/region2d.hpp" #include "geometry/tree4d.hpp" - class WaterBoundaryChecker { struct RegionTraits diff --git a/generator/way_nodes_mapper.hpp b/generator/way_nodes_mapper.hpp index 16f479048..4a3b35563 100644 --- a/generator/way_nodes_mapper.hpp +++ b/generator/way_nodes_mapper.hpp @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include namespace generator { @@ -32,7 +32,8 @@ public: } using IDRInterfacePtr = std::shared_ptr; - template void ForEachWayWithIndex(FnT && fn, IDRInterfacePtr const & cache) const + template + void ForEachWayWithIndex(FnT && fn, IDRInterfacePtr const & cache) const { for (size_t i = 0; i < m_ways.size(); ++i) { @@ -47,12 +48,10 @@ public: } } - template void ForEachWay(FnT && fn, IDRInterfacePtr const & cache) const + template + void ForEachWay(FnT && fn, IDRInterfacePtr const & cache) const { - ForEachWayWithIndex([&fn](uint64_t id, std::vector const & nodes, size_t) - { - fn(id, nodes); - }, cache); + ForEachWayWithIndex([&fn](uint64_t id, std::vector const & nodes, size_t) { fn(id, nodes); }, cache); } void MergeInto(WaysIDHolder & holder) const @@ -61,7 +60,8 @@ public: } }; -template class WayNodesMapper +template +class WayNodesMapper { public: struct Entry @@ -69,7 +69,8 @@ public: m2::PointU m_coord; T m_t; - template void Write(Sink & sink, uint64_t wayID, uint32_t nodeIdx) const + template + void Write(Sink & sink, uint64_t wayID, uint32_t nodeIdx) const { WriteToSink(sink, wayID); WriteToSink(sink, nodeIdx); @@ -78,7 +79,8 @@ public: Save(sink, m_t); } - template void Read(Source & src, uint64_t & wayID, uint32_t & nodeIdx) + template + void Read(Source & src, uint64_t & wayID, uint32_t & nodeIdx) { wayID = ReadPrimitiveFromSource(src); nodeIdx = ReadPrimitiveFromSource(src); @@ -103,10 +105,7 @@ public: CHECK(m_nodes.emplace(id, Entry{EncodePoint(ll), std::move(t)}).second, ()); } - void MergeInto(WayNodesMapper & mapper) const - { - mapper.m_nodes.insert(m_nodes.begin(), m_nodes.end()); - } + void MergeInto(WayNodesMapper & mapper) const { mapper.m_nodes.insert(m_nodes.begin(), m_nodes.end()); } Entry const * Find(uint64_t id) const { @@ -116,7 +115,8 @@ public: return nullptr; } - template static void Deserialize(Source & src, FnT && fn) + template + static void Deserialize(Source & src, FnT && fn) { size_t count = ReadPrimitiveFromSource(src); while (count-- > 0) @@ -130,15 +130,13 @@ public: } }; -template class WaysMapper +template +class WaysMapper { std::unordered_map m_ways; public: - void Add(uint64_t id, T t) - { - CHECK(m_ways.emplace(id, std::move(t)).second, ()); - } + void Add(uint64_t id, T t) { CHECK(m_ways.emplace(id, std::move(t)).second, ()); } T * FindOrInsert(uint64_t id) { @@ -146,12 +144,10 @@ public: return &(it->second); } - void MergeInto(WaysMapper & mapper) const - { - mapper.m_ways.insert(m_ways.begin(), m_ways.end()); - } + void MergeInto(WaysMapper & mapper) const { mapper.m_ways.insert(m_ways.begin(), m_ways.end()); } - template void Serialize(Sink & sink) const + template + void Serialize(Sink & sink) const { WriteToSink(sink, uint64_t(m_ways.size())); for (auto const & e : m_ways) @@ -161,7 +157,8 @@ public: } } - template static void Deserialize(Source & src, FnT && fn) + template + static void Deserialize(Source & src, FnT && fn) { size_t count = ReadPrimitiveFromSource(src); while (count-- > 0) @@ -174,18 +171,21 @@ public: } }; -template class SizeWriter +template +class SizeWriter { SizeT m_sizePos; public: - template void Reserve(Sink & sink) + template + void Reserve(Sink & sink) { m_sizePos = sink.Pos(); WriteToSink(sink, SizeT(0)); } - template void Write(Sink & sink, SizeT sz) + template + void Write(Sink & sink, SizeT sz) { auto const savedPos = sink.Pos(); sink.Seek(m_sizePos); @@ -194,4 +194,4 @@ public: } }; -} // namespace generator +} // namespace generator diff --git a/generator/ways_merger.cpp b/generator/ways_merger.cpp index 9e10c5050..f0b8f477e 100644 --- a/generator/ways_merger.cpp +++ b/generator/ways_merger.cpp @@ -2,10 +2,7 @@ namespace generator { -AreaWayMerger::AreaWayMerger(std::shared_ptr const & cache) - : m_cache(cache) -{ -} +AreaWayMerger::AreaWayMerger(std::shared_ptr const & cache) : m_cache(cache) {} void AreaWayMerger::AddWay(uint64_t id) { diff --git a/generator/ways_merger.hpp b/generator/ways_merger.hpp index 0c34caf5e..c8d01a800 100644 --- a/generator/ways_merger.hpp +++ b/generator/ways_merger.hpp @@ -57,16 +57,15 @@ public: // finally erase element 'e' and find next way in chain i = r.second; while (r.first != r.second) - { if (r.first->second == e) m_map.erase(r.first++); else i = r.first++; - } if (i == r.second) break; - } while (true); + } + while (true); if (points.size() > 2 && points.front() == points.back()) toDo(std::move(points), std::move(ids)); diff --git a/generator/wiki_url_dumper.cpp b/generator/wiki_url_dumper.cpp index b55bd4ba2..58b320115 100644 --- a/generator/wiki_url_dumper.cpp +++ b/generator/wiki_url_dumper.cpp @@ -19,7 +19,9 @@ using namespace feature; namespace generator { WikiUrlDumper::WikiUrlDumper(std::string const & path, std::vector const & dataFiles) - : m_path(path), m_dataFiles(dataFiles) {} + : m_path(path) + , m_dataFiles(dataFiles) +{} void WikiUrlDumper::Dump(size_t cpuCount) const { @@ -29,7 +31,8 @@ void WikiUrlDumper::Dump(size_t cpuCount) const std::vector> futures; futures.reserve(m_dataFiles.size()); - auto const fn = [](std::string const & filename) { + auto const fn = [](std::string const & filename) + { std::stringstream stringStream; DumpOne(filename, stringStream); return stringStream.str(); @@ -55,21 +58,23 @@ void WikiUrlDumper::Dump(size_t cpuCount) const // static void WikiUrlDumper::DumpOne(std::string const & path, std::ostream & stream) { - //auto const & needWikiUrl = ftypes::AttractionsChecker::Instance(); - feature::ForEachFeatureRawFormat(path, [&](FeatureBuilder const & feature, uint64_t /* pos */) { -// if (!needWikiUrl(feature.GetTypesHolder())) -// return; + // auto const & needWikiUrl = ftypes::AttractionsChecker::Instance(); + feature::ForEachFeatureRawFormat(path, [&](FeatureBuilder const & feature, uint64_t /* pos */) + { + // if (!needWikiUrl(feature.GetTypesHolder())) + // return; auto const wikiUrl = feature.GetMetadata().GetWikiURL(); if (wikiUrl.empty()) return; - stream << path << "\t" << feature.GetMostGenericOsmId() << "\t" << wikiUrl << "\n"; + stream << path << "\t" << feature.GetMostGenericOsmId() << "\t" << wikiUrl << "\n"; }); } WikiDataFilter::WikiDataFilter(std::string const & path, std::vector const & dataFiles) - : m_path(path), m_dataFiles(dataFiles) + : m_path(path) + , m_dataFiles(dataFiles) { std::ifstream stream(m_path); if (!stream) @@ -89,10 +94,11 @@ WikiDataFilter::WikiDataFilter(std::string const & path, std::vector const & idToWikiData, std::ostream & stream) { - //auto const & needWikiUrl = ftypes::AttractionsChecker::Instance(); - feature::ForEachFeatureRawFormat(path, [&](FeatureBuilder const & feature, uint64_t /* pos */) { -// if (!needWikiUrl(feature.GetTypesHolder())) -// return; + // auto const & needWikiUrl = ftypes::AttractionsChecker::Instance(); + feature::ForEachFeatureRawFormat(path, [&](FeatureBuilder const & feature, uint64_t /* pos */) + { + // if (!needWikiUrl(feature.GetTypesHolder())) + // return; auto const it = idToWikiData.find(feature.GetMostGenericOsmId()); if (it == std::end(idToWikiData)) @@ -110,7 +116,8 @@ void WikiDataFilter::Filter(size_t cpuCount) std::vector> futures; futures.reserve(m_dataFiles.size()); - auto const fn = [&](std::string const & filename) { + auto const fn = [&](std::string const & filename) + { std::stringstream stringStream; FilterOne(filename, m_idToWikiData, stringStream); return stringStream.str(); diff --git a/generator/world_map_generator.hpp b/generator/world_map_generator.hpp index 91e6897ba..37d85285a 100644 --- a/generator/world_map_generator.hpp +++ b/generator/world_map_generator.hpp @@ -33,8 +33,7 @@ class WorldMapGenerator std::map m_mapTypes; public: - explicit EmitterImpl(std::string const & worldFilename) - : m_output(worldFilename) + explicit EmitterImpl(std::string const & worldFilename) : m_output(worldFilename) { LOG_SHORT(LINFO, ("Output World file:", worldFilename)); } @@ -46,16 +45,16 @@ class WorldMapGenerator std::stringstream ss; ss << std::endl; for (auto const & p : m_mapTypes) - ss << c.GetReadableObjectName(p.first) << " : " << p.second << std::endl; + ss << c.GetReadableObjectName(p.first) << " : " << p.second << std::endl; LOG_SHORT(LINFO, ("World types:", ss.str())); } // This functor is called by m_merger after merging linear features. void operator()(feature::FeatureBuilder const & fb) override { - static const uint32_t ferryType = classif().GetTypeByPath({"route", "ferry"}); - static const uint32_t boundaryType = classif().GetTypeByPath({"boundary", "administrative"}); - static const uint32_t highwayType = classif().GetTypeByPath({"highway"}); + static uint32_t const ferryType = classif().GetTypeByPath({"route", "ferry"}); + static uint32_t const boundaryType = classif().GetTypeByPath({"boundary", "administrative"}); + static uint32_t const highwayType = classif().GetTypeByPath({"highway"}); int thresholdLevel = scales::GetUpperWorldScale(); if (fb.HasType(ferryType) || fb.HasType(boundaryType, 2)) @@ -83,10 +82,7 @@ class WorldMapGenerator ++m_mapTypes[type]; } - bool NeedPushToWorld(feature::FeatureBuilder const & fb) const - { - return generator::FilterWorld::IsGoodScale(fb); - } + bool NeedPushToWorld(feature::FeatureBuilder const & fb) const { return generator::FilterWorld::IsGoodScale(fb); } void PushSure(feature::FeatureBuilder const & fb) { @@ -112,17 +108,15 @@ public: { // Do not strip last types for given tags, // for example, do not cut 'admin_level' in 'boundary-administrative-XXX'. - char const * arr1[][3] = {{"boundary", "administrative", "2"}, - {"boundary", "administrative", "3"}, - {"boundary", "administrative", "4"}}; + char const * arr1[][3] = { + {"boundary", "administrative", "2"}, {"boundary", "administrative", "3"}, {"boundary", "administrative", "4"}}; for (size_t i = 0; i < ARRAY_SIZE(arr1); ++i) m_typesCorrector.SetDontNormalizeType(arr1[i]); // Merge motorways into trunks. // TODO : merge e.g. highway-trunk_link into highway-trunk? - char const * marr1[2] = {"highway", "motorway"}, - * marr2[2] = {"highway", "trunk"}; + char const *marr1[2] = {"highway", "motorway"}, *marr2[2] = {"highway", "trunk"}; m_typesCorrector.SetMappingTypes(marr1, marr2); if (popularPlacesFilename.empty()) @@ -186,8 +180,7 @@ public: if (GetPolygonArea(geometry.begin(), geometry.end()) < 0.0025) return false; } - default: - break; + default: break; } if (feature::PreprocessForWorldMap(fb)) diff --git a/generator/world_roads_builder/world_roads_builder.cpp b/generator/world_roads_builder/world_roads_builder.cpp index 2b567b38e..7b24327a8 100644 --- a/generator/world_roads_builder/world_roads_builder.cpp +++ b/generator/world_roads_builder/world_roads_builder.cpp @@ -16,8 +16,7 @@ double constexpr kMinSegmentLengthM = 200.0; double constexpr kHalfSegmentLengthM = kMinSegmentLengthM / 2.0; // Returns true if roads count between |mwmId1| and |mwmId2| in |graph| exceeds max value. -bool MwmRoadsAreFilled(routing::NumMwmId const & mwmId1, routing::NumMwmId const & mwmId2, - CrossBorderGraph & graph) +bool MwmRoadsAreFilled(routing::NumMwmId const & mwmId1, routing::NumMwmId const & mwmId2, CrossBorderGraph & graph) { auto const it = graph.m_mwms.find(mwmId1); if (it == graph.m_mwms.end()) @@ -44,8 +43,7 @@ void WriteEndingToSteam(CrossBorderSegmentEnding const & segEnding, std::ofstrea output << kDelim << point.m_lat << kDelim << point.m_lon << kDelim << segEnding.m_numMwmId; } -void WriteSegmentToStream(RegionSegmentId const & segId, CrossBorderSegment const & seg, - std::ofstream & output) +void WriteSegmentToStream(RegionSegmentId const & segId, CrossBorderSegment const & seg, std::ofstream & output) { CHECK(output.is_open(), ()); @@ -58,8 +56,7 @@ void WriteSegmentToStream(RegionSegmentId const & segId, CrossBorderSegment cons namespace routing { -RoadsFromOsm GetRoadsFromOsm(generator::SourceReader & reader, - feature::CountriesFilesAffiliation const & mwmMatcher, +RoadsFromOsm GetRoadsFromOsm(generator::SourceReader & reader, feature::CountriesFilesAffiliation const & mwmMatcher, std::vector const & highways) { RoadsFromOsm roadsFromOsm; @@ -173,8 +170,7 @@ std::pair GetCrossBorderPoints( return std::make_pair(nodePoints, crossBorderIndexes); } -std::optional> GetPointInMwm(NodePoints const & points, size_t index, - bool forward) +std::optional> GetPointInMwm(NodePoints const & points, size_t index, bool forward) { auto const & pointOnBorder = points[index]; @@ -206,13 +202,11 @@ std::optional> GetPointInMwm(NodePoints const & po } bool FillCrossBorderGraph(CrossBorderGraph & graph, RegionSegmentId & curSegmentId, - std::vector const & nodeIds, - std::unordered_map const & nodes, + std::vector const & nodeIds, std::unordered_map const & nodes, feature::CountriesFilesAffiliation const & mwmMatcher, std::unordered_map const & regionToIdMap) { - auto const & [nodePoints, crossBorderIndexes] = - GetCrossBorderPoints(nodeIds, nodes, mwmMatcher, regionToIdMap); + auto const & [nodePoints, crossBorderIndexes] = GetCrossBorderPoints(nodeIds, nodes, mwmMatcher, regionToIdMap); bool insertedRoad = false; diff --git a/generator/world_roads_builder/world_roads_builder.hpp b/generator/world_roads_builder/world_roads_builder.hpp index 434f4da53..49a734d82 100644 --- a/generator/world_roads_builder/world_roads_builder.hpp +++ b/generator/world_roads_builder/world_roads_builder.hpp @@ -27,10 +27,7 @@ struct RoadData { RoadData() = default; - RoadData(std::set regions, OsmElement && way) - : m_regions(std::move(regions)), m_way(std::move(way)) - { - } + RoadData(std::set regions, OsmElement && way) : m_regions(std::move(regions)), m_way(std::move(way)) {} std::set m_regions; OsmElement m_way; @@ -47,15 +44,13 @@ struct RoadsFromOsm }; // Reads roads from |reader| and finds its mwms with |mwmMatcher|. -RoadsFromOsm GetRoadsFromOsm(generator::SourceReader & reader, - feature::CountriesFilesAffiliation const & mwmMatcher, +RoadsFromOsm GetRoadsFromOsm(generator::SourceReader & reader, feature::CountriesFilesAffiliation const & mwmMatcher, std::vector const & highways); // Fills |graph| with new segments starting from |curSegmentId|. Segments are calculated from the // road consisting of |nodeIds| from OSM. bool FillCrossBorderGraph(CrossBorderGraph & graph, RegionSegmentId & curSegmentId, - std::vector const & nodeIds, - std::unordered_map const & nodes, + std::vector const & nodeIds, std::unordered_map const & nodes, feature::CountriesFilesAffiliation const & mwmMatcher, std::unordered_map const & regionToIdMap); @@ -63,6 +58,5 @@ bool FillCrossBorderGraph(CrossBorderGraph & graph, RegionSegmentId & curSegment bool WriteGraphToFile(CrossBorderGraph const & graph, std::string const & path, bool overwrite); // Logs statistics about segments in |graph|. -void ShowRegionsStats(CrossBorderGraph const & graph, - std::shared_ptr numMwmIds); +void ShowRegionsStats(CrossBorderGraph const & graph, std::shared_ptr numMwmIds); } // namespace routing diff --git a/generator/world_roads_builder/world_roads_builder_tool/world_roads_builder_tool.cpp b/generator/world_roads_builder/world_roads_builder_tool/world_roads_builder_tool.cpp index 726c41c03..0040fb387 100644 --- a/generator/world_roads_builder/world_roads_builder_tool/world_roads_builder_tool.cpp +++ b/generator/world_roads_builder/world_roads_builder_tool/world_roads_builder_tool.cpp @@ -22,7 +22,6 @@ #include - DEFINE_string(path_resources, "", "CoMaps resources directory"); DEFINE_string(path_roads_file, "", "OSM file in o5m format."); DEFINE_string(path_res_file, "", "Path to the resulting file with roads for generator_tool."); @@ -31,13 +30,12 @@ int main(int argc, char ** argv) { using namespace routing; - gflags::SetUsageMessage( - "Reads OSM file, generates text file with main cross-mwm roads for generator_tool."); + gflags::SetUsageMessage("Reads OSM file, generates text file with main cross-mwm roads for generator_tool."); gflags::ParseCommandLineFlags(&argc, &argv, true); auto const toolName = base::FileNameFromFullPath(argv[0]); - if (FLAGS_path_resources.empty() || !Platform::IsDirectory(FLAGS_path_resources) || - FLAGS_path_roads_file.empty() || FLAGS_path_res_file.empty()) + if (FLAGS_path_resources.empty() || !Platform::IsDirectory(FLAGS_path_resources) || FLAGS_path_roads_file.empty() || + FLAGS_path_res_file.empty()) { gflags::ShowUsageWithFlagsRestrict(argv[0], toolName.c_str()); return EXIT_FAILURE; @@ -45,12 +43,10 @@ int main(int argc, char ** argv) GetPlatform().SetResourceDir(FLAGS_path_resources); - feature::CountriesFilesAffiliation mwmMatcher(GetPlatform().ResourcesDir(), - false /* haveBordersForWholeWorld */); + feature::CountriesFilesAffiliation mwmMatcher(GetPlatform().ResourcesDir(), false /* haveBordersForWholeWorld */); // These types are used in maps_generator (maps_generator/genrator/steps.py in filter_roads function). - std::vector const highwayTypes{"motorway", "trunk", "primary", "secondary", - "tertiary"}; + std::vector const highwayTypes{"motorway", "trunk", "primary", "secondary", "tertiary"}; generator::SourceReader reader(FLAGS_path_roads_file); RoadsFromOsm const & roadsFromOsm = GetRoadsFromOsm(reader, mwmMatcher, highwayTypes); @@ -60,7 +56,8 @@ int main(int argc, char ** argv) std::unordered_map regionsToIds; - numMwmIds->ForEachId([®ionsToIds, &numMwmIds](NumMwmId id) { + numMwmIds->ForEachId([®ionsToIds, &numMwmIds](NumMwmId id) + { std::string const & region = numMwmIds->GetFile(id).GetName(); CHECK(regionsToIds.emplace(region, id).second, (id, region)); }); @@ -81,9 +78,8 @@ int main(int argc, char ** argv) if (wayData.m_regions.size() == 1) continue; - bool const foundSegments = - FillCrossBorderGraph(graph, curSegmentId, wayData.m_way.Nodes(), roadsFromOsm.m_nodes, - mwmMatcher, regionsToIds); + bool const foundSegments = FillCrossBorderGraph(graph, curSegmentId, wayData.m_way.Nodes(), roadsFromOsm.m_nodes, + mwmMatcher, regionsToIds); LOG(LINFO, ("Found segments for", wayId, ":", foundSegments)); } diff --git a/libs/base/array_adapters.hpp b/libs/base/array_adapters.hpp index 576b03df3..cb210eccd 100644 --- a/libs/base/array_adapters.hpp +++ b/libs/base/array_adapters.hpp @@ -4,44 +4,43 @@ namespace detail { - template class array_impl +template +class array_impl +{ +protected: + TPtr m_p; + size_t m_size; + +public: + typedef T value_type; + typedef T const & const_reference; + typedef T & reference; + + array_impl(TPtr p, size_t sz) : m_p(p), m_size(sz) {} + + T const & operator[](size_t i) const { - protected: - TPtr m_p; - size_t m_size; + ASSERT_LESS(i, m_size, ()); + return m_p[i]; + } - public: - typedef T value_type; - typedef T const & const_reference; - typedef T & reference; + T const & back() const + { + ASSERT_GREATER(m_size, 0, ()); + return m_p[m_size - 1]; + } - array_impl(TPtr p, size_t sz) : m_p(p), m_size(sz) {} + size_t size() const { return m_size; } - T const & operator[](size_t i) const - { - ASSERT_LESS ( i, m_size, () ); - return m_p[i]; - } + bool empty() const { return (m_size == 0); } +}; +} // namespace detail - T const & back() const - { - ASSERT_GREATER ( m_size, 0, () ); - return m_p[m_size-1]; - } - - size_t size() const { return m_size; } - - bool empty() const { return (m_size == 0); } - }; -} - -template class array_read : public detail::array_impl +template +class array_read : public detail::array_impl { public: - array_read(T const * p, size_t sz) - : detail::array_impl(p, sz) - { - } + array_read(T const * p, size_t sz) : detail::array_impl(p, sz) {} }; template @@ -50,21 +49,23 @@ array_read make_read_adapter(TCont const & cont) return array_read(cont.empty() ? 0 : &cont[0], cont.size()); } -template class array_write : public detail::array_impl +template +class array_write : public detail::array_impl { size_t m_capacity; typedef detail::array_impl base_t; public: - template explicit array_write(TCont & cont) - : detail::array_impl(cont.empty() ? 0 : &cont[0], 0), m_capacity(cont.size()) - { - } + template + explicit array_write(TCont & cont) + : detail::array_impl(cont.empty() ? 0 : &cont[0], 0) + , m_capacity(cont.size()) + {} void push_back(T const & t) { - ASSERT_LESS ( base_t::m_size, m_capacity, () ); + ASSERT_LESS(base_t::m_size, m_capacity, ()); base_t::m_p[base_t::m_size++] = t; } }; diff --git a/libs/base/assert.hpp b/libs/base/assert.hpp index a072892bf..1e0743574 100644 --- a/libs/base/assert.hpp +++ b/libs/base/assert.hpp @@ -32,55 +32,117 @@ AssertFailedFn SetAssertFunction(AssertFailedFn fn); ASSERT_CRASH(); // TODO: Evaluate X only once in CHECK(). -#define CHECK(X, msg) do { if (X) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X")", ::base::Message msg));} } while(false) +#define CHECK(X, msg) \ + do \ + { \ + if (X) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X ")", ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_EQUAL(X, Y, msg) do { if ((X) == (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" == "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_EQUAL(X, Y, msg) \ + do \ + { \ + if ((X) == (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " == " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_NOT_EQUAL(X, Y, msg) do { if ((X) != (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" != "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_NOT_EQUAL(X, Y, msg) \ + do \ + { \ + if ((X) != (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " != " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_LESS(X, Y, msg) do { if ((X) < (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" < "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_LESS(X, Y, msg) \ + do \ + { \ + if ((X) < (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " < " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_LESS_OR_EQUAL(X, Y, msg) do { if ((X) <= (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" <= "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_LESS_OR_EQUAL(X, Y, msg) \ + do \ + { \ + if ((X) <= (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " <= " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_GREATER(X, Y, msg) do { if ((X) > (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" > "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_GREATER(X, Y, msg) \ + do \ + { \ + if ((X) > (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " > " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_GREATER_OR_EQUAL(X, Y, msg) do { if ((X) >= (Y)) {} else { \ - ASSERT_FAIL(::base::Message("CHECK("#X" >= "#Y")", \ - ::base::Message(X, Y), \ - ::base::Message msg));} } while (false) +#define CHECK_GREATER_OR_EQUAL(X, Y, msg) \ + do \ + { \ + if ((X) >= (Y)) \ + {} \ + else \ + { \ + ASSERT_FAIL(::base::Message("CHECK(" #X " >= " #Y ")", ::base::Message(X, Y), ::base::Message msg)); \ + } \ + } \ + while (false) -#define CHECK_OR_CALL(fail, call, X, msg) do { if (X) {} else { \ - if (fail) {\ - ASSERT_FAIL(::base::Message(::base::Message("CHECK("#X")"), \ - ::base::Message msg)); \ - } else { \ - call(); \ - } } } while (false) +#define CHECK_OR_CALL(fail, call, X, msg) \ + do \ + { \ + if (X) \ + {} \ + else \ + { \ + if (fail) \ + { \ + ASSERT_FAIL(::base::Message(::base::Message("CHECK(" #X ")"), ::base::Message msg)); \ + } \ + else \ + { \ + call(); \ + } \ + } \ + } \ + while (false) #ifdef DEBUG -#define ASSERT(X, msg) CHECK(X, msg) -#define VERIFY(X, msg) CHECK(X, msg) -#define ASSERT_EQUAL(X, Y, msg) CHECK_EQUAL(X, Y, msg) -#define ASSERT_NOT_EQUAL(X, Y, msg) CHECK_NOT_EQUAL(X, Y, msg) -#define ASSERT_LESS(X, Y, msg) CHECK_LESS(X, Y, msg) -#define ASSERT_LESS_OR_EQUAL(X, Y, msg) CHECK_LESS_OR_EQUAL(X, Y, msg) -#define ASSERT_GREATER(X, Y, msg) CHECK_GREATER(X, Y, msg) +#define ASSERT(X, msg) CHECK(X, msg) +#define VERIFY(X, msg) CHECK(X, msg) +#define ASSERT_EQUAL(X, Y, msg) CHECK_EQUAL(X, Y, msg) +#define ASSERT_NOT_EQUAL(X, Y, msg) CHECK_NOT_EQUAL(X, Y, msg) +#define ASSERT_LESS(X, Y, msg) CHECK_LESS(X, Y, msg) +#define ASSERT_LESS_OR_EQUAL(X, Y, msg) CHECK_LESS_OR_EQUAL(X, Y, msg) +#define ASSERT_GREATER(X, Y, msg) CHECK_GREATER(X, Y, msg) #define ASSERT_GREATER_OR_EQUAL(X, Y, msg) CHECK_GREATER_OR_EQUAL(X, Y, msg) #else #define ASSERT(X, msg) @@ -100,6 +162,7 @@ AssertFailedFn SetAssertFunction(AssertFailedFn fn); { \ CHECK(false, ("Unreachable statement.")); \ std::abort(); \ - } while (false) + } \ + while (false) // NOLINTEND(misc-static-assert) diff --git a/libs/base/base.cpp b/libs/base/base.cpp index c73cfbe13..d9c37fc24 100644 --- a/libs/base/base.cpp +++ b/libs/base/base.cpp @@ -13,8 +13,9 @@ bool OnAssertFailedDefault(SrcPoint const & srcPoint, std::string const & msg) auto & logger = LogHelper::Instance(); std::cerr << '(' << logger.GetThreadID() << ") ASSERT FAILED" << '\n' - << srcPoint.FileName() << ':' << srcPoint.Line() << '\n' << msg - << std::endl << std::flush; + << srcPoint.FileName() << ':' << srcPoint.Line() << '\n' + << msg << std::endl + << std::flush; return true; } diff --git a/libs/base/base.hpp b/libs/base/base.hpp index e8543cb02..43632fcd9 100644 --- a/libs/base/base.hpp +++ b/libs/base/base.hpp @@ -18,17 +18,17 @@ static_assert(MY_DEBUG_DEFINED ^ MY_RELEASE_DEFINED, "Either Debug or Release sh // #define DEBUG macro, which should be used with #ifdef. #if !MY_RELEASE_DEFINED - #ifndef DEBUG - #define DEBUG 1 - #endif +#ifndef DEBUG +#define DEBUG 1 +#endif #endif #ifdef DEBUG // #include "internal/debug_new.hpp" // TODO: STL debug mode. - #define IF_DEBUG_ELSE(a, b) (a) +#define IF_DEBUG_ELSE(a, b) (a) #else - #define IF_DEBUG_ELSE(a, b) (b) +#define IF_DEBUG_ELSE(a, b) (b) #endif // platform macroses diff --git a/libs/base/base_tests/assert_test.cpp b/libs/base/base_tests/assert_test.cpp index 0df32cc5d..afd4b4c57 100644 --- a/libs/base/base_tests/assert_test.cpp +++ b/libs/base/base_tests/assert_test.cpp @@ -4,7 +4,6 @@ #include "base/exception.hpp" #include "base/logging.hpp" - UNIT_TEST(Assert_Smoke) { int x = 5; @@ -12,17 +11,17 @@ UNIT_TEST(Assert_Smoke) #ifdef RELEASE UNUSED_VALUE(x); #endif - ASSERT_EQUAL ( x, 5, () ); - ASSERT_NOT_EQUAL ( x, 6, () ); - //ASSERT_EQUAL ( x, 666, ("Skip this to continue test") ); + ASSERT_EQUAL(x, 5, ()); + ASSERT_NOT_EQUAL(x, 6, ()); + // ASSERT_EQUAL ( x, 666, ("Skip this to continue test") ); } UNIT_TEST(Check_Smoke) { int x = 5; - CHECK_EQUAL ( x, 5, () ); - CHECK_NOT_EQUAL ( x, 6, () ); - //CHECK_EQUAL ( x, 666, ("Skip this to continue test") ); + CHECK_EQUAL(x, 5, ()); + CHECK_NOT_EQUAL(x, 6, ()); + // CHECK_EQUAL ( x, 666, ("Skip this to continue test") ); } UNIT_TEST(Exception_Formatting) diff --git a/libs/base/base_tests/beam_tests.cpp b/libs/base/base_tests/beam_tests.cpp index 0cb4705c3..cd67823f3 100644 --- a/libs/base/base_tests/beam_tests.cpp +++ b/libs/base/base_tests/beam_tests.cpp @@ -44,12 +44,10 @@ void Smoke() } template