Skip to content
Snippets Groups Projects
Commit b841f876 authored by Udo Eisenbarth's avatar Udo Eisenbarth :speech_balloon:
Browse files

Add node() function to OpticScenery.

Further work on NodeReference (not working yet :-( )
parent 56772623
No related branches found
No related tags found
No related merge requests found
use opossum::nodes::{NodeDummy, NodeReference};
use opossum::nodes::NodeDummy;
use opossum::optic_node::OpticNode;
use opossum::optic_scenery::OpticScenery;
......@@ -13,11 +13,12 @@ fn main() {
let n3 = scenery.add_node(OpticNode::new("Faraday", Box::new(NodeDummy)));
let n4 = scenery.add_node(OpticNode::new("0° mirror", Box::new(NodeDummy)));
let mut node= OpticNode::new("Faraday", Box::new(NodeDummy));
// let ref_node= NodeReference::new(scenery.node(n1));
// let n1r=scenery.add_node(OpticNode::new("ref", Box::new(ref_node)));
let mut node= OpticNode::new("Faraday", Box::new(NodeDummy));
node.set_inverted(true);
let _ref_node= NodeReference::new(&node);
scenery.add_node(node);
//let n3i=scenery.add_node(OpticNode::new("ref", Box::new(ref_node)));
let n3i=scenery.add_node(node);
let mut node= OpticNode::new("19mm amp", Box::new(NodeDummy));
node.set_inverted(true);
......@@ -30,8 +31,8 @@ fn main() {
scenery.connect_nodes(n1, n2).unwrap();
scenery.connect_nodes(n2, n3).unwrap();
scenery.connect_nodes(n3, n4).unwrap();
// scenery.connect_nodes(n4, n3i).unwrap();
// scenery.connect_nodes(n3i, n2i).unwrap();
scenery.connect_nodes(n4, n3i).unwrap();
scenery.connect_nodes(n3i, n2i).unwrap();
scenery.connect_nodes(n2i, n1i).unwrap();
let path = "graph.dot";
......
......@@ -12,7 +12,6 @@ impl<'a> NodeReference<'a> {
}
impl<'a> Optical for NodeReference<'a> {
/// Returns "dummy" as node type.
fn node_type(&self) -> &str {
"reference"
}
......
use crate::optic_node::OpticNode;
use petgraph::algo::*;
use petgraph::data::DataMap;
use petgraph::prelude::{DiGraph, EdgeIndex, NodeIndex};
#[derive(Debug, Clone)]
......@@ -27,7 +26,17 @@ impl OpticScenery {
pub fn add_node(&mut self, node: OpticNode) -> NodeIndex {
self.g.add_node(node)
}
/// Connect to (already existing) nodes denoted by the respective `NodeIndex`.
/// Get reference of [`OpticNode`].
///
/// Get the reference of an previously added [`OpticNode`] denoted by a given `NodeIndex`. This function can be used as input while
/// constructing a `NodeReference`.
/// # Panics
///
/// Panics if the given `NodeIndex` is not found in the graph.
pub fn node(&self, idx: NodeIndex) -> &OpticNode {
self.g.node_weight(idx).unwrap()
}
/// Connect (already existing) nodes denoted by the respective `NodeIndex`.
///
/// Both node indices must exist. Otherwise an [`OpticSceneryError`] is returned. In addition, connections are
/// rejected and an [`OpticSceneryError`] is returned, if the graph would form a cycle (loop in the graph).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment