summaryrefslogtreecommitdiff
path: root/src/support/topological_orders.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/support/topological_orders.cpp')
-rw-r--r--src/support/topological_orders.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/support/topological_orders.cpp b/src/support/topological_orders.cpp
index 0536d4ed9..aeec95d18 100644
--- a/src/support/topological_orders.cpp
+++ b/src/support/topological_orders.cpp
@@ -78,8 +78,7 @@ TopologicalOrders::Selector::advance(TopologicalOrders& ctx) {
return select(ctx);
}
-TopologicalOrders::TopologicalOrders(
- const std::vector<std::vector<size_t>>& graph, SelectionMethod method)
+TopologicalOrders::TopologicalOrders(const Graph& graph, SelectionMethod method)
: graph(graph), indegrees(graph.size()), buf(graph.size()) {
if (graph.size() == 0) {
return;
@@ -145,4 +144,16 @@ size_t TopologicalOrders::popChoice() {
return choice;
}
+namespace TopologicalSort {
+
+std::vector<size_t> sort(const Graph& graph) {
+ return *TopologicalOrders(graph, TopologicalOrders::InPlace);
+}
+
+std::vector<size_t> minSort(const Graph& graph) {
+ return *TopologicalOrders(graph, TopologicalOrders::MinHeap);
+}
+
+} // namespace TopologicalSort
+
} // namespace wasm