mirror of https://codeberg.org/topola/topola.git
feat(specctra/mesadata): deduplicate net names
This commit is contained in:
parent
0b9d3c0a00
commit
5b7f4588a0
|
|
@ -81,15 +81,20 @@ impl SpecctraMesadata {
|
||||||
);
|
);
|
||||||
|
|
||||||
// assign IDs to all nets named in pcb.network
|
// assign IDs to all nets named in pcb.network
|
||||||
let net_netname = BiHashMap::from_iter(
|
let net_netname = {
|
||||||
pcb.network
|
let mut tmp: Vec<_> = pcb
|
||||||
|
.network
|
||||||
.classes
|
.classes
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|class| &class.nets)
|
.flat_map(|class| &class.nets)
|
||||||
.chain(pcb.network.nets.iter().map(|net| &net.name))
|
.chain(pcb.network.nets.iter().map(|net| &net.name))
|
||||||
.enumerate()
|
.collect();
|
||||||
.map(|(net, netname)| (net, netname.clone())),
|
// deduplicate net names
|
||||||
);
|
tmp.sort_unstable();
|
||||||
|
tmp.dedup();
|
||||||
|
|
||||||
|
BiHashMap::from_iter(tmp.into_iter().cloned().enumerate())
|
||||||
|
};
|
||||||
|
|
||||||
let mut net_netclass = HashMap::new();
|
let mut net_netclass = HashMap::new();
|
||||||
let class_rules = HashMap::from_iter(
|
let class_rules = HashMap::from_iter(
|
||||||
|
|
@ -98,6 +103,8 @@ impl SpecctraMesadata {
|
||||||
.iter()
|
.iter()
|
||||||
.inspect(|class| {
|
.inspect(|class| {
|
||||||
for netname in &class.nets {
|
for netname in &class.nets {
|
||||||
|
// this can't panic because we did iterate over
|
||||||
|
// `pcb.network.classes[].nets` above
|
||||||
let net = net_netname.get_by_right(netname).unwrap();
|
let net = net_netname.get_by_right(netname).unwrap();
|
||||||
net_netclass.insert(*net, class.name.clone());
|
net_netclass.insert(*net, class.name.clone());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue