The \hyperlink{classKite_1_1DataNegociate}{Data\-Negociate} object contains all the informations the negociation algorithm needs to know about a \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}. Those informations mostly describe the slackening and ripup state of that segment.
\item The slackening state (see \hyperlink{classKite_1_1DataNegociate_ab7ccb6fc1f298728995250a3bbcf18c7}{Data\-Negociate\-::\-Slack\-State}). The state indicate the {\bfseries next} topological modification to be applied on the segment should the ripup count reach it's maximal value.
\item The associated \hyperlink{classKite_1_1RoutingEvent}{Routing\-Event}. If no \hyperlink{classKite_1_1RoutingEvent}{Routing\-Event} is present, it means the segment has been either successufully placed or the algorithm has given up trying to. If present, it is a {\itshape pending} request for placement.
\item{\ttfamily left\-Min\-Extend}, the potential minimal position of the segment left extension. May not be reachable due to other topological constraints.
\item{\ttfamily right\-Min\-Extend}, the potential minimal position of the segment right extension.
\item{\ttfamily terminals}, the number of terminals attached to this segment.
\item{\ttfamily attractors}, a table of coordinates of the end points of the perpandiculars to this segment. Used to compute the wiring delta if we move the axis of the segment.
\item{\ttfamily perpandiculars}, a {\ttfamily vector} of the perpandicular \hyperlink{classKite_1_1TrackElement}{Track\-Element}. This is a fast-\/access cache. It must be updated each time the topology of the net is modificated.
\item{\ttfamily perpandicular\-Free}, the free interval defined by the perpandiculars, that is for the sgement axis.
All those informations are computed and updated by the \hyperlink{classKite_1_1DataNegociate_ac5c54df7ed3b930268c8d7752c101725}{Data\-Negociate\-::update()} method, which relies on\-:
For every perpandicular set of Auto\-Segment to the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} we want to place, get the coordinates of the extremity not connected to the segment and put that coordinate into a table associated with it's {\itshape spin}. The {\itshape spin} tells if the extremity is attracting the segment {\itshape up} or {\itshape down} (for an horizontal segment). The {\itshape spin} is incremented for up and decremented for down. After all the extremities have been processeds, we took into account only the coordinates with a non-\/zero spin, which means they truly attract the segment (whatever the direction).
\item Suppress the {\ttfamily Slack\-State\-::\-Desalignate}, due to the simplificated structure of the Auto\-Segment/\-Auto\-Contacts (no more collapseds, or forced alignements).
\paragraph[{Slack\-State}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf Slack\-State}}}\label{classKite_1_1DataNegociate_ab7ccb6fc1f298728995250a3bbcf18c7}
Describe the various stages of a \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} slackening. The numerical values are choosen so we can increment them as a counter. \begin{Desc}
}]Force perpandiculars to be riped up as well as the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}, then schedule the placement of the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}{\itshape before} it's perpandiculars. \index{Minimize@{Minimize}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Minimize@{Minimize}}\item[{\em
}]If the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} is made of multiple Track\-Segments with a forced alignement, suppress the alignement constraint.
This should be deprecated now. Try to displace the perpandiculars so the \hyperlink{classKite_1_1TrackSegment}{Track\-Segment} is reduced to it's minimal length. \index{Dogleg@{Dogleg}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Dogleg@{Dogleg}}\item[{\em
}]Break the segment into two smaller ones. \index{Slacken@{Slacken}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Slacken@{Slacken}}\item[{\em
}]Create additional wiring so threre is no more contraints transmitted by the perpandiculars or the terminal contacts. \index{Conflict\-Solve\-By\-History@{Conflict\-Solve\-By\-History}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Conflict\-Solve\-By\-History@{Conflict\-Solve\-By\-History}}\item[{\em
}]Try to solve a conflict between a set of global segments by analysing the event/ripup history. See \hyperlink{classKite_1_1SegmentFsm_a0d9a9926ae67cc7998799347f135e28a}{Segment\-Fsm\-::conflict\-Solve\-By\-History()}. \index{Conflict\-Solve\-By\-Placeds@{Conflict\-Solve\-By\-Placeds}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Conflict\-Solve\-By\-Placeds@{Conflict\-Solve\-By\-Placeds}}\item[{\em
}]Try to solve a conflict between a set of global segments by analysing the current track context. See \hyperlink{classKite_1_1SegmentFsm_a9c0fa6a9067b6e027e24f38330f627dc}{Segment\-Fsm\-::conflict\-Solve\-By\-Placeds()}. \index{Local\-Vs\-Global@{Local\-Vs\-Global}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Local\-Vs\-Global@{Local\-Vs\-Global}}\item[{\em
}]To be reviewed. \index{Move\-Up@{Move\-Up}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Move\-Up@{Move\-Up}}\item[{\em
}]The segment is to be moved up (if possible). \index{Maximum\-Slack@{Maximum\-Slack}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Maximum\-Slack@{Maximum\-Slack}}\item[{\em
}]The final state, topological modifications are exhausteds, if it cannot place at this point, it never will. \index{Unimplemented@{Unimplemented}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Unimplemented@{Unimplemented}}\item[{\em
}]Used only during the development stage, telling that the state is not available yet. \index{Repair@{Repair}!Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}}\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!Repair@{Repair}}\item[{\em
{\bfseries Returns\-:}{\bfseries true} if there is a pending \hyperlink{classKite_1_1RoutingEvent}{Routing\-Event} for this \hyperlink{classKite_1_1TrackSegment}{Track\-Segment}.
Referenced by Negociate\-Window\-::add\-Routing\-Event(), and Track\-Segment\-::reschedule().
{\bfseries Returns\-:} The pending \hyperlink{classKite_1_1RoutingEvent}{Routing\-Event}. {\ttfamily N\-U\-L\-L} will be returned if there is no pending event, meaning that the segment has been placed.
Referenced by Segment\-Action\-::do\-Action(), Manipulator\-::make\-Dogleg(), Manipulator\-::relax(), Track\-Segment\-::reschedule(), Routing\-Event\-::reschedule(), and Track\-Segment\-::swap\-Track().
{\bfseries Returns\-:} A proxy accessor for the segment's track. \hypertarget{classKite_1_1DataNegociate_ad8c1073ad0806f86b183c2e5f7badd3e}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!get\-Left\-Min\-Extend@{get\-Left\-Min\-Extend}}
{\bfseries Returns\-:} The minimum extend possible of the segment's source (left) ending. Computed by \hyperlink{classKite_1_1DataNegociate_ac5c54df7ed3b930268c8d7752c101725}{Data\-Negociate\-::update()}.
{\bfseries Returns\-:} The minimum extend possible of the segment's target (right) ending. Computed by \hyperlink{classKite_1_1DataNegociate_ac5c54df7ed3b930268c8d7752c101725}{Data\-Negociate\-::update()}.
{\bfseries Returns\-:} The number of terminal to which this segment is connected Computed by \hyperlink{classKite_1_1DataNegociate_ac5c54df7ed3b930268c8d7752c101725}{Data\-Negociate\-::update()}.
Must be refined\-: direct or indirect?. \hypertarget{classKite_1_1DataNegociate_adf3e1a980233163de0ca34a5c3575998}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!get\-Net@{get\-Net}}
{\bfseries Returns\-:} A cached accessor to the segment's net (for faster access). \hypertarget{classKite_1_1DataNegociate_aeff84fdf6cc443a2c7a7bd33b03e871f}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!get\-State@{get\-State}}
{\bfseries Returns\-:} The current state (see \hyperlink{classKite_1_1DataNegociate_ab7ccb6fc1f298728995250a3bbcf18c7}{Data\-Negociate\-::\-Slack\-State}).
Referenced by Routing\-Event\-::get\-State(), Manipulator\-::insert\-In\-Track(), and Manipulator\-::ripup\-Perpandiculars().
{\bfseries Returns\-:} The wiring length needed to connect to the attractors if the segment is put on {\ttfamily axis}. The lower, the better... \hypertarget{classKite_1_1DataNegociate_adcfee3417e714417cef2fc3e3835352f}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!get\-Perpandicular\-Free@{get\-Perpandicular\-Free}}
{\bfseries Returns\-:} The range of legal positions generated only by the perpandiculars. \hypertarget{classKite_1_1DataNegociate_aafc8cd0dcd351625a12904bed7d5a7d1}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!set\-State@{set\-State}}
Set or reset the slacking state (see Slack\-State). If the {\ttfamily state} is the same as the current one, the state count is incremented. If the new state changes or {\ttfamily flags} contain Kt\-Reset, the state count is reset to one.
Referenced by Segment\-Action\-::do\-Action(), Manipulator\-::relax(), Manipulator\-::repack\-Perpandiculars(), Routing\-Event\-::reschedule(), Manipulator\-::ripup\-Perpandiculars(), and Routing\-Event\-::set\-State().
Increment the ripup count. No check is performed for bound limit. \hypertarget{classKite_1_1DataNegociate_a4f94572b3541ea2d150c75bedc8364ed}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!dec\-Ripup\-Count@{dec\-Ripup\-Count}}
Decrement the ripup count (will never go below zero). \hypertarget{classKite_1_1DataNegociate_a00a11ad9089d2df7b290615921e0c96a}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!reset\-Ripup\-Count@{reset\-Ripup\-Count}}
Reset the state count to zero. \hypertarget{classKite_1_1DataNegociate_ac5c54df7ed3b930268c8d7752c101725}{\index{Kite\-::\-Data\-Negociate@{Kite\-::\-Data\-Negociate}!update@{update}}