\hypertarget{classKatabatic_1_1Session}{\section{Session Class Reference}
\label{classKatabatic_1_1Session}\index{Session@{Session}}
}


Modification \hyperlink{classKatabatic_1_1Session}{Session} for \hyperlink{namespaceKatabatic}{Katabatic}.  


\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static bool \hyperlink{classKatabatic_1_1Session_a037c7ec3b18ec43973f2e6fe3a172000}{is\-In\-Demo\-Mode} ()
\item 
static bool \hyperlink{classKatabatic_1_1Session_ad41e6fb02bd7bb01c27fb6aae36f0ddc}{do\-Warn\-G\-Cell\-Overload} ()
\item 
static \hyperlink{classKatabatic_1_1Session}{Session} $\ast$ \hyperlink{classKatabatic_1_1Session_a76f17c3642eaeba85fa0af5ae9d208b4}{get} (const char $\ast$message=N\-U\-L\-L)
\item 
static {\bf Technology} $\ast$ \hyperlink{classKatabatic_1_1Session_a109acfd064f3c1854abb8bb2c9b4ad30}{get\-Technology} ()
\item 
static \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} $\ast$ \hyperlink{classKatabatic_1_1Session_a1ec4ff2ad2a5b964c0ff98170a366197}{get\-Katabatic} ()
\item 
static const Configuration $\ast$ \hyperlink{classKatabatic_1_1Session_a4d9fd503149d2fff66eb8ba3955b7a13}{get\-Configuration} ()
\item 
static float \hyperlink{classKatabatic_1_1Session_a266a4079ca235e8fdb622ef4996d324d}{get\-Saturate\-Ratio} ()
\item 
static size\-\_\-t \hyperlink{classKatabatic_1_1Session_adfdaa8b3e81de14fce1f99444b35fcda}{get\-Saturate\-Rp} ()
\item 
static {\bf Db\-U\-::\-Unit} \hyperlink{classKatabatic_1_1Session_a909ce95ac840ee708f9a49366f0c2690}{get\-Extension\-Cap} ()
\item 
static {\bf Routing\-Gauge} $\ast$ \hyperlink{classKatabatic_1_1Session_a9a05289b33122f312aa2c88c4b023292}{get\-Routing\-Gauge} ()
\item 
static const {\bf Layer} $\ast$ \hyperlink{classKatabatic_1_1Session_a3efd0f0d87be640dc566c1afd821e5e6}{get\-Routing\-Layer} (size\-\_\-t)
\item 
static const {\bf Layer} $\ast$ \hyperlink{classKatabatic_1_1Session_ad3ee60a34f480bd3aecd8c7d957ff52e}{get\-Contact\-Layer} (size\-\_\-t)
\item 
static size\-\_\-t \hyperlink{classKatabatic_1_1Session_ac9c144a8faf97714069824933970923c}{get\-Segment\-Stack\-Size} ()
\item 
static size\-\_\-t \hyperlink{classKatabatic_1_1Session_a0d0c0159030a32b78ab4ad2b58871bce}{get\-Contact\-Stack\-Size} ()
\item 
static const vector\\*
$<$ \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ $>$ \& \hyperlink{classKatabatic_1_1Session_a6060b7e972f3c0d10cfa158b5ed174e6}{get\-Invalidateds} ()
\item 
static const vector\\*
$<$ \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ $>$ \& \hyperlink{classKatabatic_1_1Session_af5675d50557db83d11b7d2151de5f34c}{get\-Revalidateds} ()
\item 
static const vector\\*
$<$ \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ $>$ \& \hyperlink{classKatabatic_1_1Session_a84211b77fe7fb8b49a93d7f298a5de90}{get\-Doglegs} ()
\item 
static const set$<$ {\bf Net} $\ast$ $>$ \& \hyperlink{classKatabatic_1_1Session_a6c3be93d98029b06138f633342d04157}{get\-Nets\-Modificateds} ()
\item 
static \hyperlink{classKatabatic_1_1Session}{Session} $\ast$ \hyperlink{classKatabatic_1_1Session_a000e098850f6cccff6b289a294149a41}{open} (\hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_a5ae591df94fc66ccb85cbb6565368bca}{close} ()
\item 
static void \hyperlink{classKatabatic_1_1Session_af9919aefa1db2478b3d1813c1872d175}{set\-Katabatic\-Flags} (unsigned int)
\item 
static void \hyperlink{classKatabatic_1_1Session_aed01e83f7d8dc7acd85156256a9e776c}{dogleg} (\hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_a69fc41ca90fae86766ae9d528394868f}{revalidate\-Topology} ()
\item 
static void \hyperlink{classKatabatic_1_1Session_a16f4761496e07b9e836642d1effa1993}{set\-Invalidate\-Mask} (unsigned int)
\item 
static void \hyperlink{classKatabatic_1_1Session_ae310a7c2c301b7e5f90fba5d34cc5be9}{invalidate} ({\bf Net} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_a1f8da0ae3a9d714c1dfae69904acec5f}{invalidate} (\hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_a7968875ccb5abb2c6f6d5dec92027550}{invalidate} (\hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$)
\item 
static size\-\_\-t \hyperlink{classKatabatic_1_1Session_a4da9e28432c1fdb0c754717487d9cc83}{revalidate} ()
\item 
static void \hyperlink{classKatabatic_1_1Session_a8fad7191a9fc248f84e71cf1c9d0c6be}{link} (\hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_ab12ddab837097ec298ede4f66302b677}{link} (\hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_a10c42636ea5786d898d530905ccb30d6}{unlink} (\hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} $\ast$)
\item 
static void \hyperlink{classKatabatic_1_1Session_ab815a7824e0253142af6b8a204c361ec}{unlink} (\hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$)
\item 
static \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} $\ast$ \hyperlink{classKatabatic_1_1Session_acc20c1f675cc59f9a0068aba727eca47}{lookup} ({\bf Contact} $\ast$)
\item 
static \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ \hyperlink{classKatabatic_1_1Session_a6e465f0a592fee7e1e45b6c825b8a5da}{lookup} ({\bf Segment} $\ast$)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Modification \hyperlink{classKatabatic_1_1Session}{Session} for \hyperlink{namespaceKatabatic}{Katabatic}. 

To perform modifications, the \hyperlink{namespaceKatabatic}{Katabatic} data structure uses a session mechanism built on top of the {\bf Hurricane\-::\-Update\-Session} one. Sessions obeys very simples rules\-:
\begin{DoxyItemize}
\item Only one \hyperlink{classKatabatic_1_1Session}{Session} can be opened at a time with \hyperlink{classKatabatic_1_1Session_a000e098850f6cccff6b289a294149a41}{Session\-::open()}.
\item Subsequent calls to \hyperlink{classKatabatic_1_1Session_a000e098850f6cccff6b289a294149a41}{Session\-::open()} returns the currently opened session until \hyperlink{classKatabatic_1_1Session_a5ae591df94fc66ccb85cbb6565368bca}{Session\-::close()} is called.
\item Revalidation can take place whithout closing the \hyperlink{classKatabatic_1_1Session}{Session} by calling \hyperlink{classKatabatic_1_1Session_a4da9e28432c1fdb0c754717487d9cc83}{Session\-::revalidate()}.
\end{DoxyItemize}

The task of a \hyperlink{classKatabatic_1_1Session}{Session} is to keep track of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} and \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} that have been modificateds (i.\-e. invalidated) and, to restore connexity and/or topology when closed.

Two kinds of revalidation could be performed\-: 
\begin{DoxyItemize}
\item {\bfseries Geometrical} \-: only positions of Auto\-Contacts and Auto\-Segments extensions are recomputed. 
\item {\bfseries Topological} \-: a whole net have been invalidated because of a dogleg creation or a move up/move down of a segment. 
\begin{DoxyItemize}
\item {\bfseries Dogleg} \-: needs to insert the newly created Auto\-Segments and Auto\-Contacts. 
\item {\bfseries Move up/\-Move down} \-: may needs to create additional dogleg to restore connexity (gaps), and then insert them like above. 
\end{DoxyItemize}After a topological mofication has been done, the net needs to be re-\/canonized then the geometrical step takes place. 
\end{DoxyItemize}

The kind of revalidation needed is automatically detected by the \hyperlink{classKatabatic_1_1Session}{Session}.

In addition to it's main purpose, \hyperlink{classKatabatic_1_1Session}{Session} also provides cached access to frequently needed variables either from {\bf Hurricane} or \hyperlink{namespaceKatabatic}{Katabatic} Configuration and access to the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} \& \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} L\-U\-Ts of \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine}.

From a software point of view, \hyperlink{classKatabatic_1_1Session}{Session} is a singleton object.\hypertarget{classKatabatic_1_1Session_secSessionAlgo}{}\subsection{Session Algorithm}\label{classKatabatic_1_1Session_secSessionAlgo}
Main attributes of a \hyperlink{classKatabatic_1_1Session}{Session}\-:
\begin{DoxyItemize}
\item {\ttfamily \-\_\-net\-Invalidateds}, nets on which topology has changed.
\item {\ttfamily \-\_\-auto\-Segments}, that have been moved or createds.
\item {\ttfamily \-\_\-auto\-Contacts}, that have been created or one of their slave segment has moved.
\item {\ttfamily \-\_\-revalidateds}, the list of Auto\-Segments that have just been revalidated (after calling {\ttfamily \hyperlink{classKatabatic_1_1Session_a4da9e28432c1fdb0c754717487d9cc83}{revalidate()}}).
\end{DoxyItemize}

Schematic description of how a \hyperlink{classKatabatic_1_1Session}{Session} works\-:


\begin{DoxyItemize}
\item If at least one net has been invalidated, meaning that it's topology has changed, perform {\ttfamily \-\_\-revalidate\-Topology()}. 
\begin{DoxyItemize}
\item Update net topology\-: correct the topology of each contacts, making dogleg when needed. The \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} segment caching is updated at this point. 
\item Compute net constraints (on Auto\-Contacts \& Auto\-Segments). 
\item Compute net optimal positions (on Auto\-Segments). 
\item Compute the state of the segments regarding to terminals. 
\item Canonize sets of aligneds segments. The canonical segment is the one with the lowest {\ttfamily id}. 
\item If the segments has just been created, put it on its optimal axis. 
\end{DoxyItemize}This stage can add itself more invalidated Auto\-Segments and Auto\-Contacts as it create doglegs.


\item Revalidate geometry of Auto\-Contacts. That is, expand or shrink the extremities of the invalidated Auto\-Segments. Note that Auto\-Segments are already at on their final axis position.


\item Revalidate Auto\-Segments. Just before this stage, they are on the correct axis and their extensions are also correct, so we may update the caching of their characteristics (mostly the extension). 
\end{DoxyItemize}

\subsection{Member Function Documentation}
\hypertarget{classKatabatic_1_1Session_a037c7ec3b18ec43973f2e6fe3a172000}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!is\-In\-Demo\-Mode@{is\-In\-Demo\-Mode}}
\index{is\-In\-Demo\-Mode@{is\-In\-Demo\-Mode}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{is\-In\-Demo\-Mode}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-In\-Demo\-Mode (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a037c7ec3b18ec43973f2e6fe3a172000}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Katabatic\-Engine\-::is\-In\-Demo\-Mode().



Referenced by G\-Cell\-::check\-Density().

\hypertarget{classKatabatic_1_1Session_ad41e6fb02bd7bb01c27fb6aae36f0ddc}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!do\-Warn\-G\-Cell\-Overload@{do\-Warn\-G\-Cell\-Overload}}
\index{do\-Warn\-G\-Cell\-Overload@{do\-Warn\-G\-Cell\-Overload}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{do\-Warn\-G\-Cell\-Overload}]{\setlength{\rightskip}{0pt plus 5cm}bool do\-Warn\-G\-Cell\-Overload (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_ad41e6fb02bd7bb01c27fb6aae36f0ddc}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Katabatic\-Engine\-::do\-Warn\-On\-G\-Cell\-Overload().



Referenced by G\-Cell\-::check\-Density().

\hypertarget{classKatabatic_1_1Session_a76f17c3642eaeba85fa0af5ae9d208b4}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get@{get}}
\index{get@{get}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Session} $\ast$ get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{message = {\ttfamily NULL}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a76f17c3642eaeba85fa0af5ae9d208b4}
Return the \hyperlink{classKatabatic_1_1Session}{Session} singleton, if no session is currently open throw an exception carrying {\ttfamily message}. \hypertarget{classKatabatic_1_1Session_a109acfd064f3c1854abb8bb2c9b4ad30}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Technology@{get\-Technology}}
\index{get\-Technology@{get\-Technology}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Technology}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Technology} $\ast$ get\-Technology (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a109acfd064f3c1854abb8bb2c9b4ad30}
{\bf Hurricane} shortcut. \hypertarget{classKatabatic_1_1Session_a1ec4ff2ad2a5b964c0ff98170a366197}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Katabatic@{get\-Katabatic}}
\index{get\-Katabatic@{get\-Katabatic}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Katabatic}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Katabatic\-Engine} $\ast$ get\-Katabatic (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a1ec4ff2ad2a5b964c0ff98170a366197}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

Referenced by Auto\-Segment\-::create(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access\-Pad(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Auto\-Contacts(), Auto\-Segment\-::make\-Dogleg(), and Session\-::open().

\hypertarget{classKatabatic_1_1Session_a4d9fd503149d2fff66eb8ba3955b7a13}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Configuration@{get\-Configuration}}
\index{get\-Configuration@{get\-Configuration}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Configuration}]{\setlength{\rightskip}{0pt plus 5cm}const Configuration $\ast$ get\-Configuration (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a4d9fd503149d2fff66eb8ba3955b7a13}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

Referenced by Auto\-Horizontal\-::\-\_\-make\-Dogleg(), Auto\-Vertical\-::\-\_\-make\-Dogleg(), and Auto\-Segment\-::can\-Move\-Up().

\hypertarget{classKatabatic_1_1Session_a266a4079ca235e8fdb622ef4996d324d}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Saturate\-Ratio@{get\-Saturate\-Ratio}}
\index{get\-Saturate\-Ratio@{get\-Saturate\-Ratio}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Saturate\-Ratio}]{\setlength{\rightskip}{0pt plus 5cm}float get\-Saturate\-Ratio (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a266a4079ca235e8fdb622ef4996d324d}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Katabatic\-Engine\-::get\-Saturate\-Ratio().



Referenced by G\-Cell\-::is\-Saturated().

\hypertarget{classKatabatic_1_1Session_adfdaa8b3e81de14fce1f99444b35fcda}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Saturate\-Rp@{get\-Saturate\-Rp}}
\index{get\-Saturate\-Rp@{get\-Saturate\-Rp}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Saturate\-Rp}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-Saturate\-Rp (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_adfdaa8b3e81de14fce1f99444b35fcda}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Katabatic\-Engine\-::get\-Saturate\-Rp().



Referenced by G\-Cell\-::rp\-Desaturate().

\hypertarget{classKatabatic_1_1Session_a909ce95ac840ee708f9a49366f0c2690}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Extension\-Cap@{get\-Extension\-Cap}}
\index{get\-Extension\-Cap@{get\-Extension\-Cap}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Extension\-Cap}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Extension\-Cap (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a909ce95ac840ee708f9a49366f0c2690}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

Referenced by Auto\-Horizontal\-::check\-Positions(), Auto\-Vertical\-::check\-Positions(), Auto\-Horizontal\-::update\-Positions(), and Auto\-Vertical\-::update\-Positions().

\hypertarget{classKatabatic_1_1Session_a9a05289b33122f312aa2c88c4b023292}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Routing\-Gauge@{get\-Routing\-Gauge}}
\index{get\-Routing\-Gauge@{get\-Routing\-Gauge}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Routing\-Gauge}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Routing\-Gauge} $\ast$ get\-Routing\-Gauge (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a9a05289b33122f312aa2c88c4b023292}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

Referenced by Auto\-Horizontal\-::\-\_\-make\-Dogleg(), Auto\-Vertical\-::\-\_\-make\-Dogleg(), Auto\-Horizontal\-::can\-Move\-U\-Left(), Auto\-Vertical\-::can\-Move\-U\-Left(), Auto\-Segment\-::can\-Move\-Up(), Auto\-Horizontal\-::can\-Move\-U\-Right(), Auto\-Vertical\-::can\-Move\-U\-Right(), Auto\-Segment\-::can\-Pivot\-Down(), Auto\-Segment\-::can\-Pivot\-Up(), G\-Cell\-::check\-Density(), Session\-::get\-Contact\-Layer(), Session\-::get\-Routing\-Layer(), G\-Cell\-::has\-Free\-Track(), Auto\-Segment\-::make\-Dogleg(), anonymous\-\_\-namespace\{\-Load\-Gr\-By\-Net.\-cpp\}\-::single\-G\-Cell(), G\-Cell\-::step\-Desaturate(), G\-Cell\-::step\-Net\-Desaturate(), G\-Cell\-::update\-Density(), Auto\-Contact\-V\-Tee\-::update\-Topology(), Auto\-Contact\-Turn\-::update\-Topology(), Auto\-Contact\-H\-Tee\-::update\-Topology(), and Auto\-Contact\-Terminal\-::update\-Topology().

\hypertarget{classKatabatic_1_1Session_a3efd0f0d87be640dc566c1afd821e5e6}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Routing\-Layer@{get\-Routing\-Layer}}
\index{get\-Routing\-Layer@{get\-Routing\-Layer}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Routing\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Layer} $\ast$ get\-Routing\-Layer (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{depth}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a3efd0f0d87be640dc566c1afd821e5e6}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Session\-::get\-Routing\-Gauge(), and Routing\-Gauge\-::get\-Routing\-Layer().



Referenced by G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-1\-M1\-\_\-1\-M2(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-x\-M1\-\_\-x\-M3(), Auto\-Segment\-::create(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access\-Pad(), Auto\-Segment\-::reduce\-Dogleg\-Layer(), and G\-Cell\-::rp\-Desaturate().

\hypertarget{classKatabatic_1_1Session_ad3ee60a34f480bd3aecd8c7d957ff52e}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Contact\-Layer@{get\-Contact\-Layer}}
\index{get\-Contact\-Layer@{get\-Contact\-Layer}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Contact\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Layer} $\ast$ get\-Contact\-Layer (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{depth}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_ad3ee60a34f480bd3aecd8c7d957ff52e}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Routing\-Gauge\-::get\-Contact\-Layer(), and Session\-::get\-Routing\-Gauge().



Referenced by G\-Cell\-Topology\-::\-\_\-do\-\_\-1\-G\-\_\-1\-M3(), G\-Cell\-Topology\-::\-\_\-do\-\_\-1\-G\-\_\-x\-M1(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-1\-M1\-\_\-1\-M2(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-1\-Pad(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-x\-M1\-\_\-x\-M3(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-x\-M2(), G\-Cell\-Topology\-::\-\_\-do\-\_\-x\-G\-\_\-x\-M3(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access\-Pad(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Auto\-Contacts(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Stair\-Case\-H(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Stair\-Case\-V(), and anonymous\-\_\-namespace\{\-Load\-Gr\-By\-Net.\-cpp\}\-::single\-G\-Cell().

\hypertarget{classKatabatic_1_1Session_ac9c144a8faf97714069824933970923c}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Segment\-Stack\-Size@{get\-Segment\-Stack\-Size}}
\index{get\-Segment\-Stack\-Size@{get\-Segment\-Stack\-Size}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Segment\-Stack\-Size}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-Segment\-Stack\-Size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_ac9c144a8faf97714069824933970923c}
{\bfseries Returns\-:} The number of \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} in the invalidated stack. \hypertarget{classKatabatic_1_1Session_a0d0c0159030a32b78ab4ad2b58871bce}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Contact\-Stack\-Size@{get\-Contact\-Stack\-Size}}
\index{get\-Contact\-Stack\-Size@{get\-Contact\-Stack\-Size}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Contact\-Stack\-Size}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-Contact\-Stack\-Size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a0d0c0159030a32b78ab4ad2b58871bce}
{\bfseries Returns\-:} The number of \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} in the invalidated stack. \hypertarget{classKatabatic_1_1Session_a6060b7e972f3c0d10cfa158b5ed174e6}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Invalidateds@{get\-Invalidateds}}
\index{get\-Invalidateds@{get\-Invalidateds}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Invalidateds}]{\setlength{\rightskip}{0pt plus 5cm}const vector$<$ {\bf Auto\-Segment} $\ast$ $>$ \& get\-Invalidateds (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a6060b7e972f3c0d10cfa158b5ed174e6}
{\bfseries Returns\-:} The stack (vector) of invalidateds Auto\-Segments. \hypertarget{classKatabatic_1_1Session_af5675d50557db83d11b7d2151de5f34c}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Revalidateds@{get\-Revalidateds}}
\index{get\-Revalidateds@{get\-Revalidateds}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Revalidateds}]{\setlength{\rightskip}{0pt plus 5cm}const vector$<$ {\bf Auto\-Segment} $\ast$ $>$ \& get\-Revalidateds (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_af5675d50557db83d11b7d2151de5f34c}
{\bfseries Returns\-:} The stack (vector) of Auto\-Segments that have been revalidateds. \hypertarget{classKatabatic_1_1Session_a84211b77fe7fb8b49a93d7f298a5de90}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Doglegs@{get\-Doglegs}}
\index{get\-Doglegs@{get\-Doglegs}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Doglegs}]{\setlength{\rightskip}{0pt plus 5cm}const vector$<$ {\bf Auto\-Segment} $\ast$ $>$ \& get\-Doglegs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a84211b77fe7fb8b49a93d7f298a5de90}
{\bfseries Returns\-:} The vector of Auto\-Segments part of a newly created dogleg. The dogleg creation functions in \hyperlink{classKatabatic_1_1AutoHorizontal}{Auto\-Horizontal} and \hyperlink{classKatabatic_1_1AutoVertical}{Auto\-Vertical} put a triplet (for example in horizontal direction {\ttfamily }(h1,v1,h2) ) for each dogleg composed of\-:
\begin{DoxyItemize}
\item {\bfseries h1} the segment {\itshape before} the dogleg (which is also the original one).
\item {\bfseries v1} the segment {\bfseries perpandicular} (new).
\item {\bfseries h2} the segment {\bfseries after} (new). 
\end{DoxyItemize}

Referenced by Auto\-Segment\-::make\-Dogleg().

\hypertarget{classKatabatic_1_1Session_a6c3be93d98029b06138f633342d04157}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!get\-Nets\-Modificateds@{get\-Nets\-Modificateds}}
\index{get\-Nets\-Modificateds@{get\-Nets\-Modificateds}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{get\-Nets\-Modificateds}]{\setlength{\rightskip}{0pt plus 5cm}const set$<$ {\bf Net} $\ast$ $>$ \& get\-Nets\-Modificateds (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a6c3be93d98029b06138f633342d04157}
{\bfseries Returns\-:} The set of Nets that needs either a topological update or a new canonization. \hypertarget{classKatabatic_1_1Session_a000e098850f6cccff6b289a294149a41}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!open@{open}}
\index{open@{open}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{open}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Session} $\ast$ open (
\begin{DoxyParamCaption}
\item[{{\bf Katabatic\-Engine} $\ast$}]{ktbt}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a000e098850f6cccff6b289a294149a41}
Opens a new session or returns the already opened one, if any. 

References Session\-::get\-Katabatic().



Referenced by G\-Cell\-Grid\-::update\-Contacts().

\hypertarget{classKatabatic_1_1Session_a5ae591df94fc66ccb85cbb6565368bca}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!close@{close}}
\index{close@{close}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}void close (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a5ae591df94fc66ccb85cbb6565368bca}
Close the \hyperlink{classKatabatic_1_1Session}{Session}, triggering the revalidation of the Auto\-Segemnts and Auto\-Contacts. If no \hyperlink{classKatabatic_1_1Session}{Session} is opened, throws an execption. 

Referenced by G\-Cell\-Grid\-::update\-Contacts().

\hypertarget{classKatabatic_1_1Session_af9919aefa1db2478b3d1813c1872d175}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!set\-Katabatic\-Flags@{set\-Katabatic\-Flags}}
\index{set\-Katabatic\-Flags@{set\-Katabatic\-Flags}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{set\-Katabatic\-Flags}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Katabatic\-Flags (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_af9919aefa1db2478b3d1813c1872d175}
\hyperlink{namespaceKatabatic}{Katabatic} shortcut. 

References Katabatic\-Engine\-::set\-Flags().

\hypertarget{classKatabatic_1_1Session_aed01e83f7d8dc7acd85156256a9e776c}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!dogleg@{dogleg}}
\index{dogleg@{dogleg}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{dogleg}]{\setlength{\rightskip}{0pt plus 5cm}void dogleg (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{auto\-Segment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_aed01e83f7d8dc7acd85156256a9e776c}
Adds an \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} to the dogleg vector. 

Referenced by Auto\-Horizontal\-::\-\_\-make\-Dogleg(), and Auto\-Vertical\-::\-\_\-make\-Dogleg().

\hypertarget{classKatabatic_1_1Session_a69fc41ca90fae86766ae9d528394868f}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!revalidate\-Topology@{revalidate\-Topology}}
\index{revalidate\-Topology@{revalidate\-Topology}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{revalidate\-Topology}]{\setlength{\rightskip}{0pt plus 5cm}void revalidate\-Topology (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a69fc41ca90fae86766ae9d528394868f}
Revalidate Net that have been invalidateds and re-\/canonize them. \hypertarget{classKatabatic_1_1Session_a16f4761496e07b9e836642d1effa1993}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!set\-Invalidate\-Mask@{set\-Invalidate\-Mask}}
\index{set\-Invalidate\-Mask@{set\-Invalidate\-Mask}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{set\-Invalidate\-Mask}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Invalidate\-Mask (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a16f4761496e07b9e836642d1effa1993}
Tells what kind of revalidation must be performed. \hypertarget{classKatabatic_1_1Session_ae310a7c2c301b7e5f90fba5d34cc5be9}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!invalidate@{invalidate}}
\index{invalidate@{invalidate}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{invalidate}]{\setlength{\rightskip}{0pt plus 5cm}void invalidate (
\begin{DoxyParamCaption}
\item[{{\bf Net} $\ast$}]{net}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_ae310a7c2c301b7e5f90fba5d34cc5be9}
Schedule {\ttfamily net} for a full revalidation, topological correction and canonization. 

Referenced by Auto\-Segment\-::\-\_\-invalidate(), and Auto\-Segment\-::\-\_\-post\-Create().

\hypertarget{classKatabatic_1_1Session_a1f8da0ae3a9d714c1dfae69904acec5f}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!invalidate@{invalidate}}
\index{invalidate@{invalidate}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{invalidate}]{\setlength{\rightskip}{0pt plus 5cm}void invalidate (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Contact} $\ast$}]{contact}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a1f8da0ae3a9d714c1dfae69904acec5f}
Schedule {\ttfamily contact} for revalidation. \hypertarget{classKatabatic_1_1Session_a7968875ccb5abb2c6f6d5dec92027550}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!invalidate@{invalidate}}
\index{invalidate@{invalidate}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{invalidate}]{\setlength{\rightskip}{0pt plus 5cm}void invalidate (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{segment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a7968875ccb5abb2c6f6d5dec92027550}
Schedule {\ttfamily segment} for revalidation. \hypertarget{classKatabatic_1_1Session_a4da9e28432c1fdb0c754717487d9cc83}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!revalidate@{revalidate}}
\index{revalidate@{revalidate}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{revalidate}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t revalidate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}}\label{classKatabatic_1_1Session_a4da9e28432c1fdb0c754717487d9cc83}
Perform the revalidation. Returns the sum of Auto\-Contacts and Auto\-Segemnts that have been revalidated. 

Referenced by Katabatic\-Engine\-::create\-Detailed\-Grid().

\hypertarget{classKatabatic_1_1Session_a8fad7191a9fc248f84e71cf1c9d0c6be}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!link@{link}}
\index{link@{link}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{link}]{\setlength{\rightskip}{0pt plus 5cm}void link (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Contact} $\ast$}]{ac}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a8fad7191a9fc248f84e71cf1c9d0c6be}
Adds {\ttfamily ac} in the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} lookup table (allow to retrieve an \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} by it's base Contact). 

Referenced by Auto\-Segment\-::\-\_\-post\-Create().

\hypertarget{classKatabatic_1_1Session_ab12ddab837097ec298ede4f66302b677}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!link@{link}}
\index{link@{link}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{link}]{\setlength{\rightskip}{0pt plus 5cm}void link (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{as}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_ab12ddab837097ec298ede4f66302b677}
Adds {\ttfamily as} in the \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} lookup table (allow to retrieve an \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} by it's base Segment). \hypertarget{classKatabatic_1_1Session_a10c42636ea5786d898d530905ccb30d6}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!unlink@{unlink}}
\index{unlink@{unlink}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{unlink}]{\setlength{\rightskip}{0pt plus 5cm}void unlink (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Contact} $\ast$}]{ac}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a10c42636ea5786d898d530905ccb30d6}
Removes {\ttfamily ac} from the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} lookup table. 

Referenced by Auto\-Segment\-::\-\_\-pre\-Destroy().

\hypertarget{classKatabatic_1_1Session_ab815a7824e0253142af6b8a204c361ec}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!unlink@{unlink}}
\index{unlink@{unlink}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{unlink}]{\setlength{\rightskip}{0pt plus 5cm}void unlink (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{as}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_ab815a7824e0253142af6b8a204c361ec}
Removes {\ttfamily as} from the \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} lookup table. \hypertarget{classKatabatic_1_1Session_acc20c1f675cc59f9a0068aba727eca47}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!lookup@{lookup}}
\index{lookup@{lookup}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{lookup}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Contact} $\ast$ lookup (
\begin{DoxyParamCaption}
\item[{{\bf Contact} $\ast$}]{contact}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_acc20c1f675cc59f9a0068aba727eca47}
Lookup the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} associated with {\ttfamily contact}. {\ttfamily N\-U\-L\-L} if not found. 

Referenced by Auto\-Segment\-::\-Auto\-Segment(), G\-Cell\-::check\-Edge\-Saturation(), Auto\-Segment\-::create(), Auto\-Segment\-::get\-Auto\-Source(), Auto\-Segment\-::get\-Auto\-Target(), Auto\-Segment\-::get\-Opposite\-Anchor(), and Auto\-Segment\-::get\-Perpandiculars\-Bound().

\hypertarget{classKatabatic_1_1Session_a6e465f0a592fee7e1e45b6c825b8a5da}{\index{Katabatic\-::\-Session@{Katabatic\-::\-Session}!lookup@{lookup}}
\index{lookup@{lookup}!Katabatic::Session@{Katabatic\-::\-Session}}
\subsubsection[{lookup}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Segment} $\ast$ lookup (
\begin{DoxyParamCaption}
\item[{{\bf Segment} $\ast$}]{segment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1Session_a6e465f0a592fee7e1e45b6c825b8a5da}
Lookup the \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} associated with {\ttfamily segment}. {\ttfamily N\-U\-L\-L} if not found. 

The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
Session.\-h\item 
Session.\-cpp\item 
Session.\-dox\end{DoxyCompactItemize}
