#pragma once #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template using scanbeam_list = std::priority_queue; template bool pop_from_scanbeam(T& Y, scanbeam_list& scanbeam) { if (scanbeam.empty()) { return false; } Y = scanbeam.top(); scanbeam.pop(); while (!scanbeam.empty() && Y == scanbeam.top()) { scanbeam.pop(); } // Pop duplicates. return true; } template void setup_scanbeam(local_minimum_list& minima_list, scanbeam_list& scanbeam) { for (auto lm = minima_list.begin(); lm != minima_list.end(); ++lm) { scanbeam.push(lm->y); } } } } }