#include "rive/dependency_sorter.hpp"
#include "rive/component.hpp"

using namespace rive;

void DependencySorter::sort(Component* root, std::vector<Component*>& order)
{
	order.clear();
	visit(root, order);
}

bool DependencySorter::visit(Component* component, std::vector<Component*>& order)
{
	if (m_Perm.find(component) != m_Perm.end())
	{
		return true;
	}
	if (m_Temp.find(component) != m_Temp.end())
	{
		fprintf(stderr, "Dependency cycle!\n");
		return false;
	}

	m_Temp.emplace(component);

	auto dependents = component->dependents();
	for (auto dependent : dependents)
	{
		if (!visit(dependent, order))
		{
			return false;
		}
	}
	m_Perm.emplace(component);
	order.insert(order.begin(), component);

	return true;
}