ploidy_codegen_rust/
graph.rs1use std::ops::Deref;
2
3use ploidy_core::{
4 codegen::UniqueNames,
5 ir::{IrGraph, View},
6};
7
8use super::naming::CodegenIdentScope;
9
10#[derive(Debug)]
12pub struct CodegenGraph<'a>(IrGraph<'a>);
13
14impl<'a> CodegenGraph<'a> {
15 pub fn new(graph: IrGraph<'a>) -> Self {
16 let unique = UniqueNames::new();
17 let mut scope = CodegenIdentScope::new(&unique);
18 for mut view in graph.schemas() {
19 let ident = scope.uniquify(view.name());
20 view.extensions_mut().insert(ident);
21 }
22 Self(graph)
23 }
24}
25
26impl<'a> Deref for CodegenGraph<'a> {
27 type Target = IrGraph<'a>;
28
29 fn deref(&self) -> &Self::Target {
30 &self.0
31 }
32}