Newer
Older
//! This module contains the concrete node types (lenses, filters, etc...)
mod beam_splitter;
mod detector;
mod dummy;
use std::cell::RefCell;
use std::rc::Rc;
pub use beam_splitter::BeamSplitter;
pub use detector::Detector;
pub use dummy::Dummy;
pub use group::NodeGroup;
pub use ideal_filter::{FilterType, IdealFilter};
pub use lens::{IdealLens, RealLens};
pub use reference::NodeReference;
pub use source::Source;
pub use energy_meter::EnergyMeter;
pub use energy_meter::Metertype;
use crate::optic_ref::OpticRef;
pub fn create_node_ref(node_type: &str, uuid: Option<Uuid>) -> OpmResult<OpticRef> {
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"dummy" => Ok(OpticRef::new(Rc::new(RefCell::new(Dummy::default())), uuid)),
"detector" => Ok(OpticRef::new(
Rc::new(RefCell::new(Detector::default())),
uuid,
)),
"beam splitter" => Ok(OpticRef::new(
Rc::new(RefCell::new(BeamSplitter::default())),
uuid,
)),
"energy meter" => Ok(OpticRef::new(
Rc::new(RefCell::new(EnergyMeter::default())),
uuid,
)),
"group" => Ok(OpticRef::new(
Rc::new(RefCell::new(NodeGroup::default())),
uuid,
)),
"ideal filter" => Ok(OpticRef::new(
Rc::new(RefCell::new(IdealFilter::default())),
uuid,
)),
"reference" => Ok(OpticRef::new(
Rc::new(RefCell::new(NodeReference::default())),
uuid,
)),
"real lens" => Ok(OpticRef::new(
Rc::new(RefCell::new(RealLens::default())),
uuid,
)),
"light source" => Ok(OpticRef::new(
Rc::new(RefCell::new(Source::default())),
uuid,
)),
"spectrometer" => Ok(OpticRef::new(
Rc::new(RefCell::new(Spectrometer::default())),
uuid,
)),
_ => Err(OpossumError::Other(format!(