#pragma once #include #include #include namespace mapbox { namespace geometry { namespace wagyu { template using scanbeam_list = std::vector; template bool pop_from_scanbeam(T& Y, scanbeam_list& scanbeam) { if (scanbeam.empty()) { return false; } std::sort(scanbeam.begin(), scanbeam.end()); scanbeam.erase(std::unique(scanbeam.begin(), scanbeam.end()), scanbeam.end()); Y = scanbeam.back(); scanbeam.pop_back(); 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_back(lm->y); } } } } }