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::error::OpossumError;
use crate::optical::OpticRef;
pub fn create_node_ref(node_type: &str) -> Result<OpticRef,OpossumError> {
match node_type {
"dummy" => Ok(OpticRef(Rc::new(RefCell::new(Dummy::default())))),
"detector" => Ok(OpticRef(Rc::new(RefCell::new(Detector::default())))),
_ => Err(OpossumError::Other(format!("cannot create node type {}", node_type)))
}
}