Abstract Class for all Elements inserted inside a \fBTrack\fP\&.
.SH"TrackElement Abstract"
.PP
The \fBTrackElement\fP class is abstract and is used as base class for any element that can be inserted in a \fBTrack\fP\&. It represent the footprint of that element inside the \fBTrack\fP (an interval)\&. Additionnaly it keep a pointer to the \fBTrack\fP and it's index inside it (\fBTrack\fP is implemented with a \fCvector<>\fP)\&.
.PP
To avoid some explicit dynamic cast later, it provides a default implementation for almost all the methods that will be present in all the derived classes\&. All default methods return \fCfalse\fP, \fCNULL\fP or \fC0\fP (\fIzero\fP) or whatever is appropriated to tell it is not meaningful\&.
.PP
\fBDesign Note\fP
.PP
\fBTrackElement\fP has been designed to serve as a base class for \fBTrackSegment\fP and \fBTrackMarker\fP\&. But, in the end, those two classes have been put in separated vectors inside the \fBTrack\fP, thus rendering this design choice less pertinent\&. We keep it for now because we may introduce other object than \fBTrackSegment\fP inside a \fBTrack\fP\&. If the need do not arise, we may merge back \fBTrackElement\fP and \fBTrackSegment\fP\&.
Referenced by SegmentFsm::conflictSolveByPlaceds(), Manipulator::insertInTrack(), Manipulator::relax(), Manipulator::repackPerpandiculars(), and SegmentFsm::SegmentFsm()\&.
Referenced by Manipulator::insertInTrack(), Manipulator::pivotDown(), Manipulator::pivotUp(), SegmentFsm::SegmentFsm(), and SegmentFsm::slackenTopology()\&.
\fBReturns:\fP\fBtrue\fP if the segment is invalidated (may be different from the supporting AutoSegment status)\&.
.PP
Referenced by SegmentObserver::notify()\&.
.SS"bool isBlockage () const\fC [inline]\fP"
\fBtrue\fP if the element is a blockage (obstacle)\&.
.PP
Referenced by SegmentFsm::conflictSolveByPlaceds(), NegociateWindow::createTrackSegment(), Manipulator::insertInTrack(), and Manipulator::isCaged()\&.
.SS"bool isLocked () const\fC [inline]\fP"
\fBtrue\fP if the element is part of a net, but must not be moved by the router, whatever the reason\&.
.SS"bool isRouted () const\fC [inline]\fP"
\fBtrue\fP if the router has placed it\&.
.PP
Referenced by TrackSegment::canDogleg()\&.
.SS"bool hasSourceDogleg () const\fC [inline]\fP"
This method purpose has not been reviewed yet\&.
.PP
Referenced by TrackSegment::canDogleg(), TrackSegment::getSourceDogleg(), and TrackSegment::getTargetDogleg()\&.
.SS"bool hasTargetDogleg () const\fC [inline]\fP"
This method purpose has not been reviewed yet\&.
.PP
Referenced by TrackSegment::canDogleg()\&.
.SS"bool canRipple () const\fC [inline]\fP"
This method purpose has not been reviewed yet\&.
.PP
Referenced by Manipulator::ripple()\&.
.SS"bool canDogleg ()\fC [virtual]\fP"
\fBSee also:\fP\fBAutoSegment::canDogleg()\fP\&. At \fBKite\fP level, this variant of the method will apply only on local segments and the segment must not already have a source or target dogleg\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.PP
Referenced by SegmentFsm::conflictSolveByHistory(), Manipulator::makeDogleg(), and Manipulator::relax()\&.
\fBSee also:\fP\fBAutoSegment::canDogleg()\fP\&. At \fBKite\fP level, this variant of the method will apply only on local segments and the segment must not already have a source or target dogleg\&.
\fBSee also:\fP\fBAutoSegment::canDogleg()\fP\&. At kite level, this variant of the method is mainly targeted to global segment\&. For local segment it behave like \fBTrackElement::canDogleg(Interval)\fP\&. For global segment, make the break in the requested GCell \fCdoglegGCell\fP\&. If it's in the first or last GCell and there is already a dogleg, allow to reuse it if \fCflags\fP contains \fBKite::KtAllowDoglegReuse\fP\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.SS"unsigned long getId () const\fC [virtual]\fP"
.PP
\fBReturns:\fP
.RS4
The \fCId\fP of the supporting AutoSegment, if there is any\&. \fIZero\fP otherwise\&.
.RE
.PP
.PP
Reimplemented in \fBTrackSegment\fP, and \fBTrackFixedSegment\fP\&.
.PP
Referenced by RoutingEvent::process()\&.
.SS"unsigned int getDirection () const\fC [pure virtual]\fP"
.PP
\fBReturns:\fP
.RS4
The direction of the supporting element (should match the preferred direction of the \fBTrack\fP)\&.
.RE
.PP
.PP
Implemented in \fBTrackSegment\fP, and \fBTrackFixedSegment\fP\&.
.PP
Referenced by TrackElement::getBoundingBox(), TrackSegment::getSourceDogleg(), TrackSegment::getTargetDogleg(), Manipulator::makeDogleg(), Manipulator::minimize(), Manipulator::relax(), and Manipulator::ripple()\&.
\fBReturns:\fP The maximum of the interval used by the element (cached in an attribute)\&.
.PP
Referenced by TrackSegment::_check(), TrackElement::getBoundingBox(), TrackElement::getCanonicalInterval(), TrackElement::getLength(), Manipulator::insertInTrack(), and Manipulator::isCaged()\&.
Remove the link from the \fBTrackElement\fP to it's owning \fBTrack\fP, marking it for removal\&. The removal from the \fBTrack\fP's vector is managed by the \fBTrack\fP itself during the \fBSession\fP revalidation stage\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.SS"void invalidate ()\fC [virtual]\fP"
\fBSee also:\fP\fBAutoSegment::invalidate()\fP\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.PP
Referenced by NegociateWindow::createTrackSegment(), and SegmentObserver::notify()\&.
.SS"void revalidate ()\fC [virtual]\fP"
Actualize the \fBTrackElement\fP characteristics from the supporting elements (set of AutoSegment)\&.
\fBSee also:\fP Compute the cost of overlap between this segment and the interval specified in \fCcost\fP\&. Mainly calls the relevant callback\&.
.SS"void setAxis (\fBDbU::Unit\fP, unsigned int flags = \fCKatabatic::SegAxisSet\fP)\fC [virtual]\fP"
Sets the axis of the \fBTrackElement\fP\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.PP
Referenced by NegociateWindow::createTrackSegment(), SegmentAction::doAction(), Track::insert(), TrackSegment::makeDogleg(), and Manipulator::relax()\&.
Post-processing done by \fBTrackSegment::_postDoglegs()\fP\&.
.SS"\fBTrackElement\fP * makeDogleg (\fBInterval\fP interval, unsigned int & flags)\fC [virtual]\fP"
\fBSee also:\fP\fBAutoSegment::makeDogleg()\fP, \fBDogleg management\fP, the return flags from this method are returned through the \fCflags\fP variable\&.
.PP
Post-processing done by \fBTrackSegment::_postDoglegs()\fP\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.SS"bool _check () const\fC [virtual]\fP"
Check the coherency of the element\&. For a \fBTrackSegment\fP:
.IP"\(bu"2
The supporting AutoSegment the canonical one of the set\&.
.IP"\(bu"2
The cached \fCmin\fP & \fCmax\fP values are identical to the computed ones\&.
.PP
.PP
\fBReturns:\fP\fBtrue\fP on success\&.
.PP
Reimplemented in \fBTrackSegment\fP\&.
.SH"Author"
.PP
Generated automatically by Doxygen for Kite - Detailed Router from the source code\&.