20 const auto & name = unit.
getName();
22 mooseError(
"An engineering unit with name '", name,
"' already exists in geometry.");
31 if (ptr->getName() == name)
33 mooseError(
"Engineering unit with name '", name,
"' does not exist in this CSGBase.");
44std::vector<std::reference_wrapper<const CSGEngUnit>>
47 std::vector<std::reference_wrapper<const CSGEngUnit>> result;
49 result.push_back(*ptr);
53std::vector<std::reference_wrapper<const CSGSurfaceEngUnit>>
56 std::vector<std::reference_wrapper<const CSGSurfaceEngUnit>> result;
59 result.push_back(*surf);
63std::vector<std::reference_wrapper<const CSGCellEngUnit>>
66 std::vector<std::reference_wrapper<const CSGCellEngUnit>> result;
69 result.push_back(*cell);
73std::vector<std::reference_wrapper<const CSGUniverseEngUnit>>
76 std::vector<std::reference_wrapper<const CSGUniverseEngUnit>> result;
79 result.push_back(*univ);
89 if (all_units.size() != other_units.size())
92 for (
const auto & unit : all_units)
94 const std::string & unit_name = unit.get().getName();
95 const auto & other_unit = other.
getEngUnit(unit_name);
96 if (unit.get() != other_unit)
105 return !(*
this == other);
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
CSGCellEngUnit is an abstract base class for "engineering units" that are cell-like.
CSGEngUnitList is a non-owning index of CSGEngUnit objects stored in the type lists (CSGSurfaceList,...
std::vector< CSGEngUnit * > _eng_units
Non-owning index: raw pointers into the type lists.
CSGEngUnit & addEngUnit(CSGEngUnit &unit)
Register an engineering unit in this index.
std::vector< std::reference_wrapper< const CSGSurfaceEngUnit > > getAllSurfaceEngUnits() const
Get all surface-like engineering units.
CSGEngUnitList()
Default constructor.
void removeEngUnit(const CSGEngUnit &unit)
Remove an engineering unit from this index by address.
CSGEngUnit & getEngUnit(const std::string &name) const
Get an engineering unit by name.
std::vector< std::reference_wrapper< const CSGUniverseEngUnit > > getAllUniverseEngUnits() const
Get all universe-like engineering units.
bool operator==(const CSGEngUnitList &other) const
Operator overload for checking if two CSGEngUnitList objects are equal.
std::vector< std::reference_wrapper< const CSGEngUnit > > getAllEngUnits() const
Get all engineering units of all types in the list.
std::vector< std::reference_wrapper< const CSGCellEngUnit > > getAllCellEngUnits() const
Get all cell-like engineering units.
bool hasEngUnit(const std::string &name) const
Return whether an engineering unit with the given name exists in this list.
bool operator!=(const CSGEngUnitList &other) const
Operator overload for checking if two CSGEngUnitList objects are not equal.
CSGEngUnit is the abstract base class for all "engineering unit" types in the CSG system.
virtual const std::string & getName() const =0
Get the unique instance name of this engineering unit.
CSGSurfaceEngUnit is an abstract base class for "engineering units" that can be used as surfaces in c...
CSGUniverseEngUnit is an abstract base class for "engineering units" that are universe-like.