3#include "clipper/clipper.hpp"
9std::string get_net_name(
const class Net *net);
11ClipperLib::IntRect get_patch_bb(
const ClipperLib::Paths &patch);
12bool bbox_test_overlap(
const ClipperLib::IntRect &bb1,
const ClipperLib::IntRect &bb2, uint64_t clearance);
13void format_progress(std::ostringstream &oss,
size_t i,
size_t n);
16template <
typename... ArgsGetRule,
typename Tfn,
typename... ArgsGetClearance>
17auto find_clearance(
const class BoardRules &rules, Tfn fn,
const std::set<int> &layers,
18 std::tuple<ArgsGetRule...> args_get_rule, std::tuple<ArgsGetClearance...> args_get_clearance)
21 return ranges::min(layers | ranges::views::transform([&rules, fn, &args_get_clearance, &args_get_rule](
int layer) {
22 auto &rule = std::apply(
23 [&rules, fn, layer ](
auto &&...args) ->
const auto & {
24 return std::invoke(fn, rules, args..., layer);
28 return std::apply([&rule](
auto &&...args) {
return rule.get_clearance(args...); },
Definition board_rules.hpp:28