PLaSK library
Loading...
Searching...
No Matches
plask::GeometryObjectTransform< dim, Child_Type > Struct Template Referenceabstract

Template of base class for all transform nodes. More...

#include <plask/geometry/transform.hpp>

Inheritance diagram for plask::GeometryObjectTransform< dim, Child_Type >:
[legend]
Collaboration diagram for plask::GeometryObjectTransform< dim, Child_Type >:
[legend]

Public Types

typedef GeometryObjectD< dim >::DVec DVec
 
typedef GeometryObjectD< dim >::Box Box
 
typedef Child_Type ChildType
 
- Public Types inherited from plask::GeometryObjectD< dim >
typedef Primitive< dim >::Box Box
 
typedef Primitive< dim >::DVec DVec
 
- Public Types inherited from plask::GeometryObject
enum  Type {
  TYPE_LEAF = 0 , TYPE_TRANSFORM = 1 , TYPE_SPACE_CHANGER = 2 , TYPE_CONTAINER = 3 ,
  TYPE_GEOMETRY = 4 , TYPE_SEPARATOR = 5
}
 Type of geometry object. More...
 
typedef std::function< bool(const GeometryObject &)> Predicate
 Predicate on GeometryObject.
 

Public Member Functions

 GeometryObjectTransform (shared_ptr< ChildType > child=nullptr)
 
 GeometryObjectTransform (ChildType &child)
 
virtual ~GeometryObjectTransform ()
 
GeometryObject::Type getType () const override
 Check if geometry is: leaf, transform or container type object.
 
void getObjectsToVec (const GeometryObject::Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const override
 Append all objects from subtree with this in root, which fulfill predicate to vector dest.
 
virtual void onChildChanged (const GeometryObject::Event &evt)
 Called by child.change signal, call this change.
 
void connectOnChildChanged ()
 Connect onChildChanged to current child change signal.
 
void disconnectOnChildChanged ()
 Disconnect onChildChanged from current child change signal.
 
shared_ptr< ChildTypegetChild () const
 Get child.
 
void setChildUnsafe (const shared_ptr< ChildType > &child)
 Set new child.
 
void setChild (const shared_ptr< ChildType > &child)
 Set new child.
 
bool hasChild () const
 
void validate () const override
 Throws NoChildException if child is not set.
 
bool hasInSubtree (const GeometryObject &el) const override
 Check if el is in subtree with this in root.
 
GeometryObject::Subtree getPathsTo (const GeometryObject &el, const PathHints *path=0) const override
 Find paths to el.
 
std::size_t getChildrenCount () const override
 Get number of all children of this in geometry graph.
 
shared_ptr< GeometryObjectgetChildNo (std::size_t child_no) const override
 Get child with given index.
 
shared_ptr< GeometryObjectTransform< dim, Child_Type > > shallowCopyWithChild (const shared_ptr< ChildType > &child) const
 Get copy of this, and change child in the copy,.
 
shared_ptr< GeometryObjectdeepCopy (std::map< const GeometryObject *, shared_ptr< GeometryObject > > &copied) const override
 Get deep copy of this.
 
shared_ptr< const GeometryObjectchangedVersion (const GeometryObject::Changer &changer, Vec< 3, double > *translation=0) const override
 Get this or copy of this with some changes in subtree.
 
void removeAtUnsafe (std::size_t) override
 Remove child at given index.
 
virtual Box fromChildCoords (const typename ChildType::Box &child_bbox) const =0
 Convert bounding box from child's to this's coordinates.
 
Box getBoundingBox () const override
 Calculate minimal rectangle which contains all points of geometry object.
 
void getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path) const override
 Calculate and append to vector bounding boxes of all nodes which fulfill given predicate, optionally marked by path.
 
bool childHasType (GeometryObject::Type type) const
 Check if child of this has given type.
 
- Public Member Functions inherited from plask::GeometryObjectD< dim >
int getDimensionsCount () const override
 Get number of dimensions.
 
virtual Subtree getPathsAt (const DVec &point, bool all=false) const =0
 Find all paths to objects which lies at given point.
 
virtual bool contains (const DVec &point) const =0
 Check if this geometry object contains point.
 
virtual DVec getBoundingBoxSize () const
 
virtual Box getRealBoundingBox () const
 Calculate minimal rectangle which contains all points of real geometry object.
 
virtual shared_ptr< MaterialgetMaterial (const DVec &p) const =0
 Return material in a given point inside the geometry object.
 
shared_ptr< MaterialgetMaterialOrAir (const DVec &p) const
 Return material in a given point inside the geometry object.
 
void getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints &path) const
 Calculate and append to vector bounding boxes of all nodes which fulfill given predicate, marked by path.
 
std::vector< BoxgetBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints *path=0) const
 Calculate the vector of bounding boxes of all nodes which fulfill given predicate, optionally marked by path.
 
std::vector< BoxgetBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints &path)
 Calculate the vector of bounding boxes of all nodes which fulfill given predicate, marked by path.
 
void getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints *path=0) const
 Calculate and append to vector bounding boxes of all leafs, optionally marked by path.
 
void getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints &path) const
 Calculate and append to vector bounding boxes of all leafs, marked by path.
 
std::vector< BoxgetLeafsBoundingBoxes (const PathHints *path=0) const
 Calculate bounding boxes of all leafs, optionally marked by path.
 
std::vector< BoxgetLeafsBoundingBoxes (const PathHints &path) const
 Calculate bounding boxes of all leafs, marked by path.
 
void getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints *path=0) const
 Calculate and append to vector bounding boxes of all instances of given object, optionally marked by path.
 
void getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints &path) const
 Calculate and append to vector bounding boxes of all instances of given object, marked by path.
 
std::vector< BoxgetObjectBoundingBoxes (const GeometryObject &object, const PathHints *path=0) const
 Calculate bounding boxes of all instances of given object, optionally marked by path.
 
std::vector< BoxgetObjectBoundingBoxes (const GeometryObject &object, const PathHints &path) const
 Calculate bounding boxes of all instances of given objects, marked by path.
 
virtual void getPositionsToVec (const Predicate &predicate, std::vector< DVec > &dest, const PathHints *path=0) const =0
 Calculate and append to vector positions of all nodes which fulfill given predicate, optionally marked by path.
 
void getPositionsToVec (const Predicate &predicate, std::vector< DVec > &dest, const PathHints &path) const
 Calculate and append to vector positions of all nodes which fulfill given predicate, marked by path.
 
std::vector< DVecgetPositions (const Predicate &predicate, const PathHints *path=0) const
 Calculate and append to vector positions of all nodes which fulfill given predicate, optionally marked by path.
 
std::vector< DVecgetPositions (const Predicate &predicate, const PathHints &path) const
 Calculate and append to vector positions of all nodes which fulfill given predicate, marked by path.
 
void getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints *path=0) const
 Calculate and append to vector positions of all leafs, optionally marked by path.
 
void getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints &path) const
 Calculate and append to vector positions of all leafs, marked by path.
 
std::vector< DVecgetLeafsPositions (const PathHints *path=0) const
 Calculate and return a vector of positions of all leafs, optionally marked by path.
 
std::vector< DVecgetLeafsPositions (const PathHints &path) const
 Calculate and return a vector of positions of all leafs, marked by path.
 
void getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints *path=0) const
 Calculate and append to vector positions of all instances of given object, optionally marked by path.
 
void getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints &path) const
 Calculate and append to vector positions of all instances of given object, marked by path.
 
std::vector< DVecgetObjectPositions (const GeometryObject &object, const PathHints *path=0) const
 Calculate and return a vector of positions of all instances of given object, optionally marked by path.
 
std::vector< DVecgetObjectPositions (const GeometryObject &object, const PathHints &path) const
 Calculate and return a vector of positions of all instances of given object, marked by path.
 
shared_ptr< const GeometryObjectgetMatchingAt (const DVec &point, const Predicate &predicate, const PathHints *path=0) const
 Get object closest to the root, which contains specific point and fulfills the predicate.
 
shared_ptr< const GeometryObjectgetMatchingAt (const DVec &point, const Predicate &predicate, const PathHints &path) const
 Get object closest to the root, which contains specific point and fulfills the predicate.
 
bool objectIncludes (const GeometryObject &object, const PathHints *path, const DVec &point) const
 Check if specified geometry object contains a point point.
 
bool objectIncludes (const GeometryObject &object, const PathHints &path, const DVec &point) const
 Check if specified geometry object contains a point point.
 
bool objectIncludes (const GeometryObject &object, const DVec &point) const
 Check if specified geometry object contains a point point.
 
std::set< std::string > getRolesAt (const DVec &point, const plask::PathHints *path=0) const
 Get a sum of roles sets of all objects which lies on path from this to leaf at given point.
 
std::set< std::string > getRolesAt (const DVec &point, const plask::PathHints &path) const
 Get a sum of roles sets of all objects which lies on path from this to leaf at given point.
 
shared_ptr< const GeometryObjecthasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints *path=0) const
 Check if any object at given point, not hidden by another object, plays role with given name role_name (if so, returns non-nullptr).
 
shared_ptr< const GeometryObjecthasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints &path) const
 Check if any object at given point, not hidden by another object, plays role with given name role_name (if so, returns non-nullptr).
 
virtual void addLineSegmentsToSet (std::set< LineSegment > &PLASK_UNUSED(segments), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
 Add characteristic points to the set and edges connecting them.
 
std::set< LineSegmentgetLineSegments (unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
 Add characteristic points to the set and edges connecting them.
 
- Public Member Functions inherited from plask::GeometryObject
void setMaxSteps (unsigned value)
 Set max_steps.
 
void setMinStepSize (double value)
 Set min_step_size.
 
template<typename ClassT , typename methodT >
boost::signals2::connection changedConnectMethod (ClassT *obj, methodT method, boost::signals2::connect_position at=boost::signals2::at_back)
 Connect a method to changed signal.
 
template<typename ClassT , typename methodT >
void changedDisconnectMethod (ClassT *obj, methodT method)
 Disconnect a method from changed signal.
 
template<typename EventT = Event, typename... Args>
void fireChanged (Args &&... event_constructor_params_without_source)
 Call changed with this as event source.
 
 GeometryObject (const GeometryObject &to_copy)
 Initialize this to be the same as to_copy but doesn't have any changes observer.
 
GeometryObjectoperator= (const GeometryObject &to_copy)
 Set this to be the same as to_copy but doesn't change changes observer.
 
 GeometryObject ()
 
 GeometryObject (unsigned max_steps, double min_step_size)
 
virtual ~GeometryObject ()
 Virtual destructor.
 
virtual std::string getTypeName () const =0
 Get name of object type (like: "block2d", "shelf", "stack3d", etc.).
 
virtual void writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb, AxisNames parent_axes) const
 Write geometry tree branch rooted by this to XML.
 
void writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb) const
 Write geometry tree branch rooted by this to XML.
 
void writeXML (XMLWriter::Element &parent_xml_object) const
 Write geometry tree branch rooted by this to XML.
 
template<int DIMS>
shared_ptr< GeometryObjectD< DIMS > > asD ()
 Cast this to GeometryObjectD<DIMS>.
 
template<int DIMS>
shared_ptr< const GeometryObjectD< DIMS > > asD () const
 Cast this to GeometryObjectD<DIMS> (const version).
 
shared_ptr< GeometryasGeometry ()
 Cast this to Geometry.
 
shared_ptr< const GeometryasGeometry () const
 Cast this to Geometry.
 
bool isLeaf () const
 
bool isTransform () const
 
bool isSpaceChanger () const
 
bool isContainer () const
 
bool isGeometry () const
 
virtual void addPointsAlongToSet (std::set< double > &points, Primitive< 3 >::Direction PLASK_UNUSED(direction), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
 Add characteristic points information along specified axis to set.
 
std::set< doublegetPointsAlong (Primitive< 3 >::Direction direction, unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
 Get characteristic points information along specified axis.
 
bool hasRole (std::string role_name) const
 Check if this object belongs to class (has tag) with name role_name.
 
void addRole (std::string role_name)
 Add this to given class.
 
void removeRole (std::string role_name)
 Remove this from given class, do nothing if this is not in given class.
 
void clearRoles ()
 Clear set of roles of this.
 
bool hasInSubtree (const GeometryObject &el, const PathHints *pathHints) const
 
bool hasInSubtree (shared_ptr< const GeometryObject > el, const PathHints *pathHints) const
 
void getObjectsToVec (const Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
 Append all objects from subtree with this in root, which fulfill predicate to vector dest.
 
std::vector< shared_ptr< const GeometryObject > > getObjects (const Predicate &predicate, const PathHints *path=0) const
 Get vector of all objects from subtree with this in root, which fulfill predicate.
 
std::vector< shared_ptr< const GeometryObject > > getObjects (const Predicate &predicate, const PathHints &path) const
 Get vector of all objects from subtree with this in root, which fulfill predicate.
 
void getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const
 Append all leafs in subtree with this in root to vector dest.
 
void getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
 Append all leafs in subtree with this in root to vector dest.
 
std::vector< shared_ptr< const GeometryObject > > getLeafs (const PathHints *path=0) const
 Get all leafs in subtree with this object as root.
 
std::vector< shared_ptr< const GeometryObject > > getLeafs (const PathHints &path) const
 Get all leafs in subtree with this object as root.
 
void getObjectsWithRoleToVec (const std::string &role, std::vector< shared_ptr< const GeometryObject > > &dest) const
 Append all objects with a specified role in subtree with this in root to vector dest.
 
std::vector< shared_ptr< const GeometryObject > > getObjectsWithRole (const std::string &role) const
 Get all objects with a specified role in subtree with this object as root.
 
virtual std::size_t getRealChildrenCount () const
 Get number of real (physically stored) children in geometry graph.
 
virtual shared_ptr< GeometryObjectgetRealChildNo (std::size_t child_no) const
 Get real (physically stored) child with given index.
 
void removeAt (std::size_t index)
 Remove child at given index.
 
void removeRangeUnsafe (std::size_t index_begin, std::size_t index_end)
 
bool removeRange (std::size_t index_begin, std::size_t index_end)
 Remove all children in given range [index_begin, index_end).
 
virtual void forEachRealObjectInSubtree (std::function< bool(const GeometryObject &)> callback) const
 Call a callback for each object in subtree with this in root.
 
FunctorIndexedIterator< ChildGetter > begin () const
 
FunctorIndexedIterator< ChildGetter > end () const
 
virtual shared_ptr< GeometryObjectshallowCopy () const =0
 Get shallow copy of this.
 
shared_ptr< GeometryObjectdeepCopy ()
 Get deep copy of this.
 
bool canHasAsChild (const GeometryObject &potential_child) const
 
bool canHasAsParent (const GeometryObject &potential_parent) const
 
void ensureCanHasAsParent (const GeometryObject &potential_parent) const
 Throw CyclicReferenceException if potential_parent is in subtree with this in root.
 
void ensureCanHaveAsChild (const GeometryObject &potential_child) const
 Throw CyclicReferenceException if potential_child has this in subtree.
 

Static Protected Member Functions

template<typename ThisType >
static void _getNotChangedPositionsToVec (ThisType _this, const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *path)
 Possible implementation for getPositionsToVec, which does not change children position and is used by many subclasses.
 

Protected Attributes

shared_ptr< ChildType_child
 

Additional Inherited Members

- Static Public Member Functions inherited from plask::GeometryObject
static bool PredicateIsLeaf (const GeometryObject &el)
 Predicate which check if given object is leaf.
 
- Public Attributes inherited from plask::GeometryObject
unsigned max_steps
 Maximum number of points to split a single leaf.
 
double min_step_size
 Minimum distance between divisions for a single leaf.
 
std::set< std::string > roles
 Roles/tags.
 
boost::signals2::signal< void(Event &)> changed
 Changed signal, fired when object was changed.
 
- Static Public Attributes inherited from plask::GeometryObjectD< dim >
static const int DIM = dim
 
- Protected Member Functions inherited from plask::GeometryObject
virtual void writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
 Append XML attributes of this to dest_xml_object.
 
virtual void writeXMLChildren (XMLWriter::Element &dest_xml_object, WriteXMLCallback &write_cb, const AxisNames &axes) const
 Append all children of this to XML dest_xml_object.
 
void ensureIsValidChildNr (std::size_t child_no, const char *method_name="getChildNo", const char *arg_name="child_no") const
 Check if given index is valid child index and throw exception of it is not.
 
void ensureIsValidInsertPosition (std::size_t child_no, const char *method_name="insert", const char *arg_name="pos") const
 Check if given index is valid insert index and throw exception of it is not.
 
void fireChildrenChanged ()
 Inform observers that children list was changed (also that this is resized)
 
void fireChildrenRemoved (std::size_t beginIndex, std::size_t endIndex)
 
void fireChildrenInserted (std::size_t beginIndex, std::size_t endIndex)
 

Detailed Description

template<int dim, typename Child_Type = GeometryObjectD<dim>>
struct plask::GeometryObjectTransform< dim, Child_Type >

Template of base class for all transform nodes.

Transform node has exactly one child node and represent object which is equal to child after transform.

Template Parameters
dimnumber of dimensions of this object
Child_Typetype of child, can be in space with different number of dimensions than this is (in such case see GeometryObjectTransformSpace).

Definition at line 33 of file transform.hpp.

Member Typedef Documentation

◆ Box

template<int dim, typename Child_Type = GeometryObjectD<dim>>
typedef GeometryObjectD<dim>::Box plask::GeometryObjectTransform< dim, Child_Type >::Box

Definition at line 35 of file transform.hpp.

◆ ChildType

template<int dim, typename Child_Type = GeometryObjectD<dim>>
typedef Child_Type plask::GeometryObjectTransform< dim, Child_Type >::ChildType

Definition at line 36 of file transform.hpp.

◆ DVec

template<int dim, typename Child_Type = GeometryObjectD<dim>>
typedef GeometryObjectD<dim>::DVec plask::GeometryObjectTransform< dim, Child_Type >::DVec

Definition at line 34 of file transform.hpp.

Constructor & Destructor Documentation

◆ GeometryObjectTransform() [1/2]

template<int dim, typename Child_Type = GeometryObjectD<dim>>
plask::GeometryObjectTransform< dim, Child_Type >::GeometryObjectTransform ( shared_ptr< ChildType child = nullptr)
inlineexplicit

Definition at line 38 of file transform.hpp.

◆ GeometryObjectTransform() [2/2]

template<int dim, typename Child_Type = GeometryObjectD<dim>>
plask::GeometryObjectTransform< dim, Child_Type >::GeometryObjectTransform ( ChildType child)
inlineexplicit

Definition at line 40 of file transform.hpp.

◆ ~GeometryObjectTransform()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
virtual plask::GeometryObjectTransform< dim, Child_Type >::~GeometryObjectTransform ( )
inlinevirtual

Definition at line 45 of file transform.hpp.

Member Function Documentation

◆ _getNotChangedPositionsToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
template<typename ThisType >
static void plask::GeometryObjectTransform< dim, Child_Type >::_getNotChangedPositionsToVec ( ThisType  _this,
const GeometryObject::Predicate predicate,
std::vector< DVec > &  dest,
const PathHints path 
)
inlinestaticprotected

Possible implementation for getPositionsToVec, which does not change children position and is used by many subclasses.

This is a template since this code is not proper for space changer.

Definition at line 225 of file transform.hpp.

◆ changedVersion()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr< const GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::changedVersion ( const GeometryObject::Changer changer,
Vec< 3, double > *  translation = 0 
) const
inlineoverridevirtual

Get this or copy of this with some changes in subtree.

Parameters
[in]changerchanger which will be applied to subtree with this in root
[out]translationoptional, if non-null, recommended translation of this after change will be stored
Returns
pointer to this (if nothing was changed) or copy of this with some changes in subtree

Implements plask::GeometryObject.

Reimplemented in plask::Translation< dim >, and plask::Translation< DIMS >.

Definition at line 172 of file transform.hpp.

◆ childHasType()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
bool plask::GeometryObjectTransform< dim, Child_Type >::childHasType ( GeometryObject::Type  type) const
inline

Check if child of this has given type.

Parameters
typerequired type
Returns
true only if this has a child of required type

Definition at line 215 of file transform.hpp.

◆ connectOnChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::connectOnChildChanged ( )
inline

Connect onChildChanged to current child change signal.

Definition at line 69 of file transform.hpp.

◆ deepCopy()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr< GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::deepCopy ( std::map< const GeometryObject *, shared_ptr< GeometryObject > > &  copied) const
inlineoverridevirtual

Get deep copy of this.

In the deep copy all children are copied.

Parameters
copiedmap containing copied objects to avoid double copying
Returns
deep copy of this

Implements plask::GeometryObject.

Definition at line 161 of file transform.hpp.

◆ disconnectOnChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::disconnectOnChildChanged ( )
inline

Disconnect onChildChanged from current child change signal.

Definition at line 75 of file transform.hpp.

◆ fromChildCoords()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
virtual Box plask::GeometryObjectTransform< dim, Child_Type >::fromChildCoords ( const typename ChildType::Box child_bbox) const
pure virtual

Convert bounding box from child's to this's coordinates.

Parameters
child_bboxbounding box of child
Returns
child_bbox converted to this's coordinates

Implemented in plask::Clip< dim >, plask::Intersection< dim >, plask::ArrangeContainer< dim >, plask::Flip< dim >, plask::Mirror< dim >, plask::Translation< dim >, plask::Translation< DIMS >, plask::Extrusion, and plask::Revolution.

◆ getBoundingBox()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
Box plask::GeometryObjectTransform< dim, Child_Type >::getBoundingBox ( ) const
inlineoverridevirtual

Calculate minimal rectangle which contains all points of geometry object.

Returns
calculated rectangle

Implements plask::GeometryObjectD< dim >.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 192 of file transform.hpp.

◆ getBoundingBoxesToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::getBoundingBoxesToVec ( const GeometryObject::Predicate predicate,
std::vector< Box > &  dest,
const PathHints path 
) const
inlineoverridevirtual

Calculate and append to vector bounding boxes of all nodes which fulfill given predicate, optionally marked by path.

Parameters
predicate
destplace to add result, bounding boxes will be added in the same order which is generated by GeometryObject::getObjects
pathpath (optional) path hints which limits search space

Implements plask::GeometryObjectD< dim >.

Reimplemented in plask::Intersection< dim >, and plask::Mirror< dim >.

Definition at line 197 of file transform.hpp.

◆ getChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr< ChildType > plask::GeometryObjectTransform< dim, Child_Type >::getChild ( ) const
inline

Get child.

Returns
child

Definition at line 85 of file transform.hpp.

◆ getChildNo()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr< GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::getChildNo ( std::size_t  child_no) const
inlineoverridevirtual

Get child with given index.

Parameters
child_noindex of child to get
Returns
child with index child_no

Implements plask::GeometryObject.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 142 of file transform.hpp.

◆ getChildrenCount()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
std::size_t plask::GeometryObjectTransform< dim, Child_Type >::getChildrenCount ( ) const
inlineoverridevirtual

Get number of all children of this in geometry graph.

Returns
number of children

Implements plask::GeometryObject.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 140 of file transform.hpp.

◆ getObjectsToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::getObjectsToVec ( const GeometryObject::Predicate predicate,
std::vector< shared_ptr< const GeometryObject > > &  dest,
const PathHints path = 0 
) const
inlineoverridevirtual

Append all objects from subtree with this in root, which fulfill predicate to vector dest.

Parameters
predicatepredicate required to match
destdestination vector
path(optional) path hints which limits search space

Implements plask::GeometryObject.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 53 of file transform.hpp.

◆ getPathsTo()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
GeometryObject::Subtree plask::GeometryObjectTransform< dim, Child_Type >::getPathsTo ( const GeometryObject el,
const PathHints pathHints = 0 
) const
inlineoverridevirtual

Find paths to el.

Parameters
elobject to search for
pathHints(optional) path hints which limits search space
Returns
sub-tree with paths to given object (el is in all leafs), empty sub-tree if el is not in subtree with this in root

Reimplemented from plask::GeometryObjectD< dim >.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 130 of file transform.hpp.

◆ getType()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
GeometryObject::Type plask::GeometryObjectTransform< dim, Child_Type >::getType ( ) const
inlineoverridevirtual

Check if geometry is: leaf, transform or container type object.

Returns
type of this object

Implements plask::GeometryObject.

Reimplemented in plask::GeometryObjectTransformSpace< this_dim, child_dim, ChildType >, and plask::GeometryObjectTransformSpace< 3, 2 >.

Definition at line 47 of file transform.hpp.

◆ hasChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
bool plask::GeometryObjectTransform< dim, Child_Type >::hasChild ( ) const
inline
Returns
true only if child is set (is not nullptr)

Definition at line 117 of file transform.hpp.

◆ hasInSubtree()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
bool plask::GeometryObjectTransform< dim, Child_Type >::hasInSubtree ( const GeometryObject el) const
inlineoverridevirtual

Check if el is in subtree with this in root.

Parameters
elobject to search for
Returns
true only if el is in subtree with this in root

Reimplemented from plask::GeometryObject.

Definition at line 126 of file transform.hpp.

◆ onChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
virtual void plask::GeometryObjectTransform< dim, Child_Type >::onChildChanged ( const GeometryObject::Event evt)
inlinevirtual

Called by child.change signal, call this change.

Reimplemented in plask::Lattice.

Definition at line 64 of file transform.hpp.

◆ removeAtUnsafe()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::removeAtUnsafe ( std::size_t  index)
inlineoverridevirtual

Remove child at given index.

This is unsafe but fast version, it doesn't check index and doesn't call fireChildrenChanged() to inform listeners about this object changes. Caller should do this manually or call removeAt(std::size_t) instead.

Default implementation throw exception but this method is overwritten in subroles.

Parameters
indexindex of real child to remove

Reimplemented from plask::GeometryObject.

Definition at line 183 of file transform.hpp.

◆ setChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::setChild ( const shared_ptr< ChildType > &  child)
inline

Set new child.

Call change signal to inform observer about it.

Parameters
childnew child
Exceptions
CyclicReferenceExceptionif set new child cause inception of cycle in geometry graph TODO
NoChildExceptionif child is an empty pointer

Definition at line 106 of file transform.hpp.

◆ setChildUnsafe()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::setChildUnsafe ( const shared_ptr< ChildType > &  child)
inline

Set new child.

This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after setting the new child. It also doesn't call change signal.

Parameters
childnew child

Definition at line 93 of file transform.hpp.

◆ shallowCopyWithChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr< GeometryObjectTransform< dim, Child_Type > > plask::GeometryObjectTransform< dim, Child_Type >::shallowCopyWithChild ( const shared_ptr< ChildType > &  child) const
inline

Get copy of this, and change child in the copy,.

Parameters
childchild for the copy
Returns
the copy of this

Definition at line 152 of file transform.hpp.

◆ validate()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
void plask::GeometryObjectTransform< dim, Child_Type >::validate ( ) const
inlineoverridevirtual

Throws NoChildException if child is not set.

Reimplemented from plask::GeometryObject.

Definition at line 122 of file transform.hpp.

Member Data Documentation

◆ _child

template<int dim, typename Child_Type = GeometryObjectD<dim>>
shared_ptr<ChildType> plask::GeometryObjectTransform< dim, Child_Type >::_child
protected

Definition at line 218 of file transform.hpp.


The documentation for this struct was generated from the following file: