refactor: prefer range-v3 until ranges will become more usable

This commit is contained in:
Marcus Holland-Moritz 2024-07-28 12:58:09 +02:00
parent 9d04a07210
commit 9ac60736bf
4 changed files with 25 additions and 23 deletions

View File

@ -774,8 +774,9 @@ target_link_libraries(dwarfs_pcm_sample_transformer PUBLIC dwarfs_folly_lite)
target_link_libraries(dwarfs_categorizer PUBLIC dwarfs_compression_metadata)
target_link_libraries(dwarfs_categorizer PRIVATE range-v3::range-v3)
target_link_libraries(dwarfs_common PUBLIC dwarfs_folly_lite)
target_link_libraries(dwarfs_common PRIVATE PkgConfig::LIBCRYPTO xxHash::xxhash phmap)
target_link_libraries(dwarfs_common PRIVATE PkgConfig::LIBCRYPTO xxHash::xxhash phmap range-v3::range-v3)
target_link_libraries(dwarfs_reader PUBLIC dwarfs_common)
target_link_libraries(dwarfs_reader PRIVATE range-v3::range-v3)
target_link_libraries(dwarfs_writer PUBLIC dwarfs_common dwarfs_compression_metadata)
target_link_libraries(dwarfs_writer PRIVATE phmap range-v3::range-v3)
target_link_libraries(dwarfs_extractor PUBLIC dwarfs_reader)
@ -975,9 +976,9 @@ if(WITH_TESTS)
target_link_libraries(tool_main_test PRIVATE
mkdwarfs_main dwarfsck_main dwarfsbench_main dwarfsextract_main)
target_link_libraries(block_cache_test PRIVATE mkdwarfs_main)
target_link_libraries(block_cache_test PRIVATE mkdwarfs_main range-v3::range-v3)
target_link_libraries(block_merger_test PRIVATE range-v3::range-v3)
target_link_libraries(chmod_transformer_test PRIVATE range-v3::range-v3)
target_link_libraries(ricepp_compressor_test PRIVATE range-v3::range-v3)
foreach(tgt fits_categorizer_test

View File

@ -23,7 +23,10 @@
#include <cassert>
#include <cstdint>
#include <iostream>
#include <ranges>
#include <range/v3/algorithm/sort.hpp>
#include <range/v3/range/conversion.hpp>
#include <range/v3/view/map.hpp>
#include <dwarfs/block_compressor.h>
#include <dwarfs/error.h>
@ -103,10 +106,9 @@ compression_registry::make_decompressor(compression_type type,
void compression_registry::for_each_algorithm(
std::function<void(compression_type, compression_info const&)> const& fn)
const {
auto view = std::views::keys(factories_);
std::vector<compression_type> types{view.begin(), view.end()};
auto types = factories_ | ranges::views::keys | ranges::to<std::vector>;
std::ranges::sort(types);
ranges::sort(types);
for (auto type : types) {
fn(type, *factories_.at(type));

View File

@ -19,7 +19,9 @@
* along with dwarfs. If not, see <https://www.gnu.org/licenses/>.
*/
#include <ranges>
#include <range/v3/algorithm/sort.hpp>
#include <range/v3/range/conversion.hpp>
#include <range/v3/view/map.hpp>
#include <dwarfs/error.h>
#include <dwarfs/options.h>
@ -31,11 +33,8 @@ namespace dwarfs::internal {
template <typename T, typename U>
std::vector<T> global_entry_data::get_vector(map_type<T, U> const& map) const {
std::vector<std::pair<T, U>> pairs{map.begin(), map.end()};
std::ranges::sort(pairs, [](auto const& p1, auto const& p2) {
return p1.second < p2.second;
});
auto view = std::views::keys(pairs);
return std::vector<T>{view.begin(), view.end()};
ranges::sort(pairs, ranges::less{}, &std::pair<T, U>::second);
return pairs | ranges::views::keys | ranges::to<std::vector>;
}
auto global_entry_data::get_uids() const -> std::vector<uid_type> {
@ -61,12 +60,11 @@ auto global_entry_data::get_symlinks() const -> std::vector<std::string> {
}
void global_entry_data::index(map_type<std::string, uint32_t>& map) {
auto keys = std::views::all(map) | std::views::keys;
std::vector<std::string_view> tmp{keys.begin(), keys.end()};
std::ranges::sort(tmp);
auto keys = map | ranges::views::keys | ranges::to<std::vector>;
ranges::sort(keys);
std::decay_t<decltype(map)>::mapped_type ix{0};
for (auto& s : tmp) {
map[s] = ix++;
for (auto& k : keys) {
map[k] = ix++;
}
}

View File

@ -30,7 +30,6 @@
#include <map>
#include <memory>
#include <optional>
#include <ranges>
#include <sstream>
#include <stdexcept>
#include <string>
@ -57,6 +56,7 @@
#endif
#include <range/v3/view/enumerate.hpp>
#include <range/v3/view/map.hpp>
#include <dwarfs/block_compressor.h>
#include <dwarfs/block_compressor_parser.h>
@ -409,16 +409,17 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) {
auto order_desc = "inode fragments order (" + order_parser.choices() + ")";
auto progress_desc = fmt::format(
"progress mode ({})", fmt::join(std::views::keys(progress_modes), ", "));
auto progress_desc =
fmt::format("progress mode ({})",
fmt::join(ranges::views::keys(progress_modes), ", "));
auto debug_filter_desc =
fmt::format("show effect of filter rules without producing an image ({})",
fmt::join(std::views::keys(debug_filter_modes), ", "));
fmt::join(ranges::views::keys(debug_filter_modes), ", "));
auto resolution_desc =
fmt::format("time resolution in seconds or ({})",
fmt::join(std::views::keys(time_resolutions), ", "));
fmt::join(ranges::views::keys(time_resolutions), ", "));
auto hash_list = checksum::available_algorithms();