Function getGraph [src]

Intended to be used during the make phase only. Given that root is the root Module of a compilation, return all Modules in the module graph, including root itself. root is guaranteed to be the first module in the returned slice.

Prototype

pub fn getGraph(root: *Module) Graph

Parameters

root: *Module

Source

pub fn getGraph(root: *Module) Graph { if (root.cached_graph.modules.len != 0) { return root.cached_graph; } const arena = root.owner.graph.arena; var modules: std.AutoArrayHashMapUnmanaged(*std.Build.Module, []const u8) = .empty; var next_idx: usize = 0; modules.putNoClobber(arena, root, "root") catch @panic("OOM"); while (next_idx < modules.count()) { const mod = modules.keys()[next_idx]; next_idx += 1; modules.ensureUnusedCapacity(arena, mod.import_table.count()) catch @panic("OOM"); for (mod.import_table.keys(), mod.import_table.values()) |import_name, other_mod| { modules.putAssumeCapacity(other_mod, import_name); } } const result: Graph = .{ .modules = modules.keys(), .names = modules.values(), }; root.cached_graph = result; return result; }