1
0
Fork 0
mirror of https://github.com/luau-lang/luau.git synced 2025-04-12 14:50:54 +01:00
luau/EqSat/include/Luau/UnionFind.h
2024-07-17 17:09:02 -04:00

27 lines
525 B
C++

// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
#pragma once
#include "Luau/Id.h"
#include <vector>
namespace Luau::EqSat
{
/// See <https://dl.acm.org/doi/pdf/10.1145/321879.321884>.
struct UnionFind final
{
Id makeSet();
Id find(Id id) const;
Id find(Id id);
void merge(Id a, Id b);
private:
std::vector<Id> parents;
std::vector<unsigned int> ranks;
private:
Id canonicalize(Id id) const;
};
} // namespace Luau::EqSat