mirror of https://codeberg.org/topola/topola.git
general refactor: omit unnecessary clones
This commit is contained in:
parent
efca1178f8
commit
224dd0c3bd
|
|
@ -110,7 +110,7 @@ impl<M: AccessMesadata> Autorouter<M> {
|
|||
&self,
|
||||
selection: &BandSelection,
|
||||
) -> Result<RemoveBandsExecutionStepper, AutorouterError> {
|
||||
RemoveBandsExecutionStepper::new(selection)
|
||||
RemoveBandsExecutionStepper::new(selection.clone())
|
||||
}
|
||||
|
||||
pub fn undo_remove_bands(&mut self, _selection: &BandSelection) {
|
||||
|
|
|
|||
|
|
@ -22,11 +22,7 @@ impl<M: AccessMesadata> EvalImmut<Autorouter<M>, f64> for MeasureLength {
|
|||
let mut length = 0.0;
|
||||
|
||||
for selector in self.0.selectors() {
|
||||
let band = autorouter
|
||||
.board
|
||||
.bandname_band(selector.band.clone())
|
||||
.unwrap()
|
||||
.0;
|
||||
let band = autorouter.board.bandname_band(&selector.band).unwrap().0;
|
||||
length += band.ref_(autorouter.board.layout().drawing()).length();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,7 @@
|
|||
//! to remove selected bands, and implements necessary traits for working
|
||||
//! with navigation meshes, traces, and obstacles.
|
||||
|
||||
use crate::{
|
||||
board::mesadata::AccessMesadata,
|
||||
drawing::graph::PrimitiveIndex,
|
||||
geometry::primitive::PrimitiveShape,
|
||||
router::{navmesh::Navmesh, trace::TraceStepper},
|
||||
};
|
||||
use crate::board::mesadata::AccessMesadata;
|
||||
|
||||
use super::{
|
||||
invoker::{GetGhosts, GetMaybeNavmesh, GetMaybeTrace, GetObstacles},
|
||||
|
|
@ -23,7 +18,7 @@ pub struct RemoveBandsExecutionStepper {
|
|||
}
|
||||
|
||||
impl RemoveBandsExecutionStepper {
|
||||
pub fn new(selection: &BandSelection) -> Result<Self, AutorouterError> {
|
||||
pub fn new(selection: BandSelection) -> Result<Self, AutorouterError> {
|
||||
Ok(Self {
|
||||
selection: selection.clone(),
|
||||
done: false,
|
||||
|
|
@ -38,40 +33,18 @@ impl RemoveBandsExecutionStepper {
|
|||
self.done = true;
|
||||
|
||||
for selector in self.selection.selectors() {
|
||||
let band = autorouter
|
||||
.board
|
||||
.bandname_band(selector.band.clone())
|
||||
.unwrap()
|
||||
.0;
|
||||
let band = autorouter.board.bandname_band(&selector.band).unwrap().0;
|
||||
autorouter.board.layout_mut().remove_band(band);
|
||||
}
|
||||
Ok(())
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl GetMaybeNavmesh for RemoveBandsExecutionStepper {
|
||||
fn maybe_navmesh(&self) -> Option<&Navmesh> {
|
||||
None
|
||||
}
|
||||
}
|
||||
impl GetMaybeNavmesh for RemoveBandsExecutionStepper {}
|
||||
|
||||
impl GetMaybeTrace for RemoveBandsExecutionStepper {
|
||||
fn maybe_trace(&self) -> Option<&TraceStepper> {
|
||||
None
|
||||
}
|
||||
}
|
||||
impl GetMaybeTrace for RemoveBandsExecutionStepper {}
|
||||
|
||||
impl GetGhosts for RemoveBandsExecutionStepper {
|
||||
fn ghosts(&self) -> &[PrimitiveShape] {
|
||||
&[]
|
||||
}
|
||||
}
|
||||
impl GetGhosts for RemoveBandsExecutionStepper {}
|
||||
|
||||
impl GetObstacles for RemoveBandsExecutionStepper {
|
||||
fn obstacles(&self) -> &[PrimitiveIndex] {
|
||||
&[]
|
||||
}
|
||||
}
|
||||
impl GetObstacles for RemoveBandsExecutionStepper {}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ impl PinSelection {
|
|||
};
|
||||
|
||||
if let (Some(pinname), Some(layername)) = (
|
||||
board.node_pinname(node),
|
||||
board.node_pinname(&node),
|
||||
board.layout().rules().layer_layername(layer),
|
||||
) {
|
||||
Some(PinSelector {
|
||||
|
|
@ -125,11 +125,9 @@ impl BandSelection {
|
|||
_ => return None,
|
||||
};
|
||||
|
||||
Some(BandSelector {
|
||||
band: board
|
||||
.band_bandname(board.layout().drawing().collect().loose_band_uid(loose))?
|
||||
.clone(),
|
||||
})
|
||||
board
|
||||
.band_bandname(&board.layout().drawing().collect().loose_band_uid(loose))
|
||||
.map(|band| BandSelector { band: band.clone() })
|
||||
}
|
||||
|
||||
fn select(&mut self, selector: BandSelector) {
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ impl<M: AccessMesadata> Board<M> {
|
|||
) -> FixedDotIndex {
|
||||
let dot = self.layout.add_poly_fixed_dot_infringably(weight, poly);
|
||||
|
||||
if let Some(pin) = self.node_pinname(GenericNode::Compound(poly.into())) {
|
||||
if let Some(pin) = self.node_pinname(&GenericNode::Compound(poly.into())) {
|
||||
self.node_to_pinname
|
||||
.insert(GenericNode::Primitive(dot.into()), pin.to_string());
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ impl<M: AccessMesadata> Board<M> {
|
|||
.layout
|
||||
.add_poly_fixed_seg_infringably(from, to, weight, poly);
|
||||
|
||||
if let Some(pin) = self.node_pinname(GenericNode::Compound(poly.into())) {
|
||||
if let Some(pin) = self.node_pinname(&GenericNode::Compound(poly.into())) {
|
||||
self.node_to_pinname
|
||||
.insert(GenericNode::Primitive(seg.into()), pin.to_string());
|
||||
}
|
||||
|
|
@ -176,18 +176,18 @@ impl<M: AccessMesadata> Board<M> {
|
|||
}
|
||||
|
||||
/// Returns the pin name associated with a given node.
|
||||
pub fn node_pinname(&self, node: NodeIndex) -> Option<&String> {
|
||||
self.node_to_pinname.get(&node)
|
||||
pub fn node_pinname(&self, node: &NodeIndex) -> Option<&String> {
|
||||
self.node_to_pinname.get(node)
|
||||
}
|
||||
|
||||
/// Returns the band name associated with a given band.
|
||||
pub fn band_bandname(&self, band: BandUid) -> Option<&BandName> {
|
||||
self.band_bandname.get_by_left(&band)
|
||||
pub fn band_bandname(&self, band: &BandUid) -> Option<&BandName> {
|
||||
self.band_bandname.get_by_left(band)
|
||||
}
|
||||
|
||||
/// Returns the unique id associated with a given band name.
|
||||
pub fn bandname_band(&self, bandname: BandName) -> Option<&BandUid> {
|
||||
self.band_bandname.get_by_right(&bandname)
|
||||
pub fn bandname_band(&self, bandname: &BandName) -> Option<&BandUid> {
|
||||
self.band_bandname.get_by_right(bandname)
|
||||
}
|
||||
|
||||
/// Creates band between the two nodes
|
||||
|
|
@ -198,11 +198,11 @@ impl<M: AccessMesadata> Board<M> {
|
|||
band: BandUid,
|
||||
) {
|
||||
let source_pinname = self
|
||||
.node_pinname(GenericNode::Primitive(source.into()))
|
||||
.node_pinname(&GenericNode::Primitive(source.into()))
|
||||
.unwrap()
|
||||
.to_string();
|
||||
let target_pinname = self
|
||||
.node_pinname(GenericNode::Primitive(target.into()))
|
||||
.node_pinname(&GenericNode::Primitive(target.into()))
|
||||
.unwrap()
|
||||
.to_string();
|
||||
self.band_bandname
|
||||
|
|
|
|||
Loading…
Reference in New Issue