#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "components/keyed_service/core/dependency_graph.h"
#include <stddef.h>
#include <algorithm>
#include <iterator>
#include <map>
#include <string_view>
#include <vector>
#include "base/containers/circular_deque.h"
#include "base/memory/raw_ptr.h"
#include "base/ranges/algorithm.h"
namespace {
std::string Escape(std::string_view id) { … }
}
DependencyGraph::DependencyGraph() = default;
DependencyGraph::~DependencyGraph() = default;
void DependencyGraph::AddNode(DependencyNode* node) { … }
void DependencyGraph::RemoveNode(DependencyNode* node) { … }
void DependencyGraph::AddEdge(DependencyNode* depended,
DependencyNode* dependee) { … }
bool DependencyGraph::GetConstructionOrder(
std::vector<raw_ptr<DependencyNode, VectorExperimental>>* order) { … }
bool DependencyGraph::GetDestructionOrder(
std::vector<raw_ptr<DependencyNode, VectorExperimental>>* order) { … }
bool DependencyGraph::BuildConstructionOrder() { … }
std::string DependencyGraph::DumpAsGraphviz(
const std::string& toplevel_name,
const base::RepeatingCallback<std::string(DependencyNode*)>&
node_name_callback) const { … }