ruka_mir/
browser_graph.rs1use ruka_frontend::{BrowserGraph, BrowserGraphEdge, BrowserGraphNode};
2
3use crate::naming::ProgramNames;
4use crate::MirProgram;
5
6mod emit_program;
7mod formatting;
8mod instr_format;
9mod store;
10
11pub type BrowserMirGraph = BrowserGraph;
13
14pub type BrowserMirNode = BrowserGraphNode;
16
17pub type BrowserMirEdge = BrowserGraphEdge;
19
20pub fn program_to_browser_graph(program: &MirProgram) -> BrowserMirGraph {
22 let mut builder = BrowserMirGraphBuilder::new(program);
23 let root_id = builder.emit_program();
24 BrowserMirGraph {
25 root_id,
26 nodes: builder.nodes,
27 edges: builder.edges,
28 }
29}
30
31#[derive(Debug)]
32struct BrowserMirGraphBuilder<'a> {
33 program: &'a MirProgram,
34 program_names: ProgramNames,
35 next_synthetic_id: usize,
36 next_edge_id: usize,
37 nodes: Vec<BrowserMirNode>,
38 edges: Vec<BrowserMirEdge>,
39}