Skip to content

Commit

Permalink
refs #132 Универсальный интерфейс функций-генераторов
Browse files Browse the repository at this point in the history
  • Loading branch information
izvolov committed May 1, 2021
1 parent aa64348 commit 95f3e69
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 11 deletions.
13 changes: 3 additions & 10 deletions benchmark/include/utility/io/generate.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,28 +149,21 @@ namespace utility
return generate_one_sorted(generator, stream, tail, min, max, descending);
}

inline std::ostream &
template <typename URNG>
std::ostream &
generate
(
URNG && generator,
std::ostream & stream,
std::size_t block_size,
std::size_t range_count,
std::size_t range_length,
std::int64_t min,
std::int64_t max,
bool seed,
bool sort,
bool descending
)
{
auto seed_value = seed
? static_cast<std::default_random_engine::result_type>
(
std::chrono::system_clock::now().time_since_epoch().count()
)
: 0;
std::default_random_engine generator(seed_value);

for (std::size_t i = 0; i < range_count; ++i)
{
if (sort)
Expand Down
27 changes: 26 additions & 1 deletion benchmark/tools/range_generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,31 @@
#include <iostream>
#include <limits>

void
do_generate
(
std::ostream & stream,
std::size_t block_size,
std::size_t range_count,
std::size_t range_length,
std::int64_t min,
std::int64_t max,
bool seed,
bool sort,
bool descending
)
{
const auto seed_value =
seed
? static_cast<std::default_random_engine::result_type>
(
std::chrono::system_clock::now().time_since_epoch().count()
)
: 0;
std::default_random_engine generator(seed_value);
utility::generate(generator, stream, block_size, range_count, range_length, min, max, sort, descending);
}

int main (int argc, const char * argv[])
{
namespace bpo = boost::program_options;
Expand Down Expand Up @@ -54,7 +79,7 @@ int main (int argc, const char * argv[])
bool sort = vm["sort"].as<bool>();
bool descending = vm["descending"].as<bool>();

utility::generate(std::cout, block_size, range_count, range_length, min, max, seed, sort, descending);
do_generate(std::cout, block_size, range_count, range_length, min, max, seed, sort, descending);
}
}
catch (std::exception &)
Expand Down

0 comments on commit 95f3e69

Please sign in to comment.