20 #ifndef GEOS_MESH_SIMPLEGEOMETRICOBJECTS_GEOMETRICOBJECTMANAGER_HPP_
21 #define GEOS_MESH_SIMPLEGEOMETRICOBJECTS_GEOMETRICOBJECTMANAGER_HPP_
24 #include "mesh/simpleGeometricObjects/SimpleGeometricObjectBase.hpp"
49 Group *
const parent );
63 virtual Group *
createChild(
string const & childKey,
string const & childName )
override;
73 template<
typename OBJECTTYPE =
SimpleGeometricObjectBase,
typename ... OBJECTTYPES,
typename LOOKUP_CONTAINER,
typename LAMBDA >
76 this->
forSubGroups< OBJECTTYPE, OBJECTTYPES... >( targetObjects, std::forward< LAMBDA >( lambda ) );
Manager of the simple geometric objects.
virtual ~GeometricObjectManager() override
Default destructor.
virtual void expandObjectCatalogs() override
Expand any catalogs in the data structure.
virtual Group * createChild(string const &childKey, string const &childName) override
Creates a new sub-Group using the ObjectCatalog functionality.
static GeometricObjectManager & getInstance()
GeometricObjectManager(string const &name, Group *const parent)
Constructor.
void forGeometricObject(LOOKUP_CONTAINER const &targetObjects, LAMBDA &&lambda)
This function is used to launch a unction over the target geometric objects with region type = Simple...
Base class for the geometric objects (box, plane, cylinder).
void forSubGroups(LAMBDA &&lambda)
Apply the given functor to subgroups that can be casted to one of specified types.