\hypertarget{classHurricane_1_1PhysicalRule}{}\section{Hurricane\+:\+:Physical\+Rule Class Reference}
\label{classHurricane_1_1PhysicalRule}\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}


Define a rule for the technology ({\bfseries A\+PI}).  




Inherits Rule.

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
bool \mbox{\hyperlink{classHurricane_1_1PhysicalRule_ad419b79177064cab06f7c8dbeccc4dce}{is\+Double}} () const
\item 
bool \mbox{\hyperlink{classHurricane_1_1PhysicalRule_af1e9eeb3499bfd66cedf5756e2d7e2a3}{is\+DbU}} () const
\item 
bool \mbox{\hyperlink{classHurricane_1_1PhysicalRule_a56f3eed5835ad1c268638f0f813fc029}{is\+Symmetric}} () const
\item 
bool \mbox{\hyperlink{classHurricane_1_1PhysicalRule_a8cc9f7f2dfc580e4f91b7f93ce8a26cc}{has\+Steps}} () const
\item 
void \mbox{\hyperlink{classHurricane_1_1PhysicalRule_afc1e61c5b2baa1126a2e253e02f40f40}{set\+Symmetric}} (bool)
\item 
double \mbox{\hyperlink{classHurricane_1_1PhysicalRule_a89a0cd27aec78836500a5066c276bbf0}{get\+Double\+Value}} () const
\item 
\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Db\+U\+::\+Unit}} \mbox{\hyperlink{classHurricane_1_1PhysicalRule_aa3548c58b42cd29cbe07d1a0289416a0}{get\+Value}} (\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} length=0, bool h\+Dir=true) const
\item 
void \mbox{\hyperlink{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}{add\+Value}} (double)
\item 
void \mbox{\hyperlink{classHurricane_1_1PhysicalRule_ac25990fc4aff5e5739ae9632f43d9bf8}{add\+Value}} (\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} value, \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} max\+Length)
\item 
void \mbox{\hyperlink{classHurricane_1_1PhysicalRule_a51356a2e3e6cae11c8063b6a092f304d}{add\+Value}} (\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} h\+Value, \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} v\+Value, \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}} max\+Length)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Define a rule for the technology ({\bfseries A\+PI}). 

\hypertarget{classHurricane_1_1PhysicalRule_sPhysicalRuleIntro}{}\subsection{Introduction}\label{classHurricane_1_1PhysicalRule_sPhysicalRuleIntro}
The constructor of Physical rule is not directly accessible, as thoses objects must be created only through the \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} class {\ttfamily A\+PI} (to be stored in the relevant tables).

\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} is a {\itshape \char`\"{}one size fit class\char`\"{}}. As there will be only a small number of objects created (compare to other kinds) we choose to implement all variant in one class instead of creating a flock of derived classes and all the assorted paraphernalia. As a consequence, not all fields will be used at the same time, they are mutually exclusive. 

\subsection{Member Function Documentation}
\mbox{\Hypertarget{classHurricane_1_1PhysicalRule_ad419b79177064cab06f7c8dbeccc4dce}\label{classHurricane_1_1PhysicalRule_ad419b79177064cab06f7c8dbeccc4dce}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!is\+Double@{is\+Double}}
\index{is\+Double@{is\+Double}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{is\+Double()}{isDouble()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Physical\+Rule\+::is\+Double (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Tells if the rule describe non-\/length values (Volts, Ohms, Henry, Celsius, ...). \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_af1e9eeb3499bfd66cedf5756e2d7e2a3}\label{classHurricane_1_1PhysicalRule_af1e9eeb3499bfd66cedf5756e2d7e2a3}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!is\+DbU@{is\+DbU}}
\index{is\+DbU@{is\+DbU}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{is\+Db\+U()}{isDbU()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Physical\+Rule\+::is\+DbU (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Tells if the rule uses physical lengths, with multiple steps or not. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_a56f3eed5835ad1c268638f0f813fc029}\label{classHurricane_1_1PhysicalRule_a56f3eed5835ad1c268638f0f813fc029}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!is\+Symmetric@{is\+Symmetric}}
\index{is\+Symmetric@{is\+Symmetric}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{is\+Symmetric()}{isSymmetric()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Physical\+Rule\+::is\+Symmetric (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Tells if the rule is symmetric. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_a8cc9f7f2dfc580e4f91b7f93ce8a26cc}\label{classHurricane_1_1PhysicalRule_a8cc9f7f2dfc580e4f91b7f93ce8a26cc}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!has\+Steps@{has\+Steps}}
\index{has\+Steps@{has\+Steps}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{has\+Steps()}{hasSteps()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Physical\+Rule\+::has\+Steps (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

Tells if the rule has more than one step, that is, is not uniform for all length. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_afc1e61c5b2baa1126a2e253e02f40f40}\label{classHurricane_1_1PhysicalRule_afc1e61c5b2baa1126a2e253e02f40f40}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!set\+Symmetric@{set\+Symmetric}}
\index{set\+Symmetric@{set\+Symmetric}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{set\+Symmetric()}{setSymmetric()}}
{\footnotesize\ttfamily void Hurricane\+::\+Physical\+Rule\+::set\+Symmetric (\begin{DoxyParamCaption}\item[{bool}]{state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Set the symmetric state of the rule. This used only for rules bound to two layers. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_a89a0cd27aec78836500a5066c276bbf0}\label{classHurricane_1_1PhysicalRule_a89a0cd27aec78836500a5066c276bbf0}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!get\+Double\+Value@{get\+Double\+Value}}
\index{get\+Double\+Value@{get\+Double\+Value}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{get\+Double\+Value()}{getDoubleValue()}}
{\footnotesize\ttfamily double Hurricane\+::\+Physical\+Rule\+::get\+Double\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The {\ttfamily double} value of the rule. 
\end{DoxyReturn}
\mbox{\Hypertarget{classHurricane_1_1PhysicalRule_aa3548c58b42cd29cbe07d1a0289416a0}\label{classHurricane_1_1PhysicalRule_aa3548c58b42cd29cbe07d1a0289416a0}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!get\+Value@{get\+Value}}
\index{get\+Value@{get\+Value}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{get\+Value()}{getValue()}}
{\footnotesize\ttfamily double Hurricane\+::\+Physical\+Rule\+::get\+Value (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{length = {\ttfamily 0},  }\item[{bool}]{h\+Dir = {\ttfamily true} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}


\begin{DoxyParams}{Parameters}
{\em length} & The length for which we want the rule\textquotesingle{}s value. \\
\hline
{\em h\+Dir} & In case of non-\/isotropic rule, which dimension do we want. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The rule\textquotesingle{}s value for the given length. If no parameter is supplied, then, the X value of the first step is returned. 
\end{DoxyReturn}
\mbox{\Hypertarget{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}\label{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!add\+Value@{add\+Value}}
\index{add\+Value@{add\+Value}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{add\+Value()}{addValue()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily void Hurricane\+::\+Physical\+Rule\+::add\+Value (\begin{DoxyParamCaption}\item[{double}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Set the {\ttfamily double} value of a rule. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_ac25990fc4aff5e5739ae9632f43d9bf8}\label{classHurricane_1_1PhysicalRule_ac25990fc4aff5e5739ae9632f43d9bf8}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!add\+Value@{add\+Value}}
\index{add\+Value@{add\+Value}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{add\+Value()}{addValue()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily void Hurricane\+::\+Physical\+Rule\+::add\+Value (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{value,  }\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{max\+Length }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}


\begin{DoxyParams}{Parameters}
{\em value} & The {\itshape value} of the step to add. \\
\hline
{\em max\+Length} & The length up to which the rule is valid. passing zero as this argument means always valid.\\
\hline
\end{DoxyParams}
Adds a new stepping value to the rule. If the rules never change, give a {\ttfamily max\+Length} of zero and only call this function once on the rule. The rule is isotropic in X and Y.

This function can be called multiple time on a rule, each call will add a new step. Steps are defined and ordered according to {\ttfamily max\+Length}. \mbox{\Hypertarget{classHurricane_1_1PhysicalRule_a51356a2e3e6cae11c8063b6a092f304d}\label{classHurricane_1_1PhysicalRule_a51356a2e3e6cae11c8063b6a092f304d}} 
\index{Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}!add\+Value@{add\+Value}}
\index{add\+Value@{add\+Value}!Hurricane\+::\+Physical\+Rule@{Hurricane\+::\+Physical\+Rule}}
\subsubsection{\texorpdfstring{add\+Value()}{addValue()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily void Hurricane\+::\+Physical\+Rule\+::add\+Value (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{h\+Value,  }\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{v\+Value,  }\item[{\mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Hurricane\+::\+Db\+U\+::\+Unit}}}]{max\+Length }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}


\begin{DoxyParams}{Parameters}
{\em hvalue} & The horizontal {\itshape value} of the step to add. \\
\hline
{\em vvalue} & The vertical {\itshape value} of the step to add. \\
\hline
{\em max\+Length} & The length up to which the rule is valid. passing zero as this argument means always valid.\\
\hline
\end{DoxyParams}
Adds a new stepping value to the rule. If the rules never change, give a {\ttfamily max\+Length} of zero and only call this function once on the rule. The rule is {\bfseries not} isotropic, it defines a different value for X and Y.

This function can be called multiple time on a rule, each call will add a new step. Steps are defined and ordered according to {\ttfamily max\+Length}. 

The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Physical\+Rule.\+h\item 
Physical\+Rule.\+dox\end{DoxyCompactItemize}
