1 #include "rive/dependency_sorter.hpp"
2 #include "rive/component.hpp"
6 void DependencySorter::sort(Component* root, std::vector<Component*>& order) {
11 bool DependencySorter::visit(Component* component, std::vector<Component*>& order) {
12 if (m_Perm.find(component) != m_Perm.end()) {
15 if (m_Temp.find(component) != m_Temp.end()) {
16 fprintf(stderr, "Dependency cycle!\n");
20 m_Temp.emplace(component);
22 auto dependents = component->dependents();
23 for (auto dependent : dependents) {
24 if (!visit(dependent, order)) {
28 m_Perm.emplace(component);
29 order.insert(order.begin(), component);