156 lines
9.4 KiB
TeX
156 lines
9.4 KiB
TeX
\hypertarget{classeo_forge_vector}{}\doxysection{eo\+Forge\+Vector$<$ Itf $>$ Class Template Reference}
|
|
\label{classeo_forge_vector}\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
|
|
|
|
{\ttfamily \#include $<$eo\+Forge.\+h$>$}
|
|
|
|
|
|
|
|
Inheritance diagram for eo\+Forge\+Vector$<$ Itf $>$\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=242pt]{classeo_forge_vector__inherit__graph}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
|
|
Collaboration diagram for eo\+Forge\+Vector$<$ Itf $>$\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=242pt]{classeo_forge_vector__coll__graph}
|
|
\end{center}
|
|
\end{figure}
|
|
\doxysubsection*{Public Member Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\hyperlink{classeo_forge_vector_afe76350786be9a5a0a0b56cb3aeadf44}{eo\+Forge\+Vector}} (bool always\+\_\+reinstantiate=true)
|
|
\item
|
|
{\footnotesize template$<$class Op , typename... Args$>$ }\\void \mbox{\hyperlink{classeo_forge_vector_adce9bcac1f3810c191a32e4dc1319ae0}{add}} (Args... args)
|
|
\item
|
|
{\footnotesize template$<$class Op $>$ }\\void \mbox{\hyperlink{classeo_forge_vector_a660cf37f1320f7f7deb61897385123ae}{add}} ()
|
|
\item
|
|
{\footnotesize template$<$class Op , typename... Args$>$ }\\void \mbox{\hyperlink{classeo_forge_vector_ae3643d35d9866b20fda964e5a0163dd6}{setup}} (size\+\_\+t index, Args... args)
|
|
\item
|
|
{\footnotesize template$<$class Op $>$ }\\void \mbox{\hyperlink{classeo_forge_vector_ad8f8a93c031b2f035f03b02c4afb1490}{setup}} (size\+\_\+t index)
|
|
\item
|
|
Itf \& \mbox{\hyperlink{classeo_forge_vector_a61f4a08f4f65a56bee2182238156b451}{instantiate}} (size\+\_\+t index)
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsection*{Protected Attributes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\Hypertarget{classeo_forge_vector_a1a51079b1a6b939c761f0101f7d3ed51}\label{classeo_forge_vector_a1a51079b1a6b939c761f0101f7d3ed51}}
|
|
bool {\bfseries \+\_\+no\+\_\+cache}
|
|
\end{DoxyCompactItemize}
|
|
|
|
|
|
\doxysubsection{Detailed Description}
|
|
\subsubsection*{template$<$class Itf$>$\newline
|
|
class eo\+Forge\+Vector$<$ Itf $>$}
|
|
|
|
A vector holding an operator with deferred instantiation at a given index.
|
|
|
|
\begin{DoxyNote}{Note}
|
|
You can actually store several instances of the same class, with different parametrization (or not).
|
|
\end{DoxyNote}
|
|
\begin{DoxyWarning}{Warning}
|
|
When passing a reference (as it is often the case within Paradis\+EO), it is M\+A\+N\+D\+A\+T\+O\+RY to wrap it in {\ttfamily std\+::ref}, or else it will default to use copy. This is is a source of bug which your compiler will to detect and that would disable any link between operators.
|
|
|
|
You may want to enable instantiation cache to grab some performances. The default is set to disable the cache, because its use with operators which hold a state will lead to unwanted behaviour.
|
|
\end{DoxyWarning}
|
|
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{\mbox{\hyperlink{classeo_forge_vector}{eoForgeVector<eoSelect<EOT>}}> factories(\textcolor{keyword}{false});}
|
|
\DoxyCodeLine{}
|
|
\DoxyCodeLine{\textcolor{comment}{// Capture constructor's parameters and defer instantiation.}}
|
|
\DoxyCodeLine{factories.add<\mbox{\hyperlink{classeo_rank_mu_select}{eoRankMuSelect<EOT>}}>(1);}
|
|
\DoxyCodeLine{factories.setup<\mbox{\hyperlink{classeo_rank_mu_select}{eoRankMuSelect<EOT>}}>(0, 5); \textcolor{comment}{// Edit}}
|
|
\DoxyCodeLine{}
|
|
\DoxyCodeLine{\textcolor{comment}{// Actually instantiate.}}
|
|
\DoxyCodeLine{\mbox{\hyperlink{classeo_select}{eoSelect<EOT>}}\& op = factories.instantiate(0);}
|
|
\DoxyCodeLine{}
|
|
\DoxyCodeLine{\textcolor{comment}{// Call.}}
|
|
\DoxyCodeLine{op();}
|
|
\end{DoxyCode}
|
|
|
|
|
|
\doxysubsection{Constructor \& Destructor Documentation}
|
|
\mbox{\Hypertarget{classeo_forge_vector_afe76350786be9a5a0a0b56cb3aeadf44}\label{classeo_forge_vector_afe76350786be9a5a0a0b56cb3aeadf44}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!eoForgeVector@{eoForgeVector}}
|
|
\index{eoForgeVector@{eoForgeVector}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{eoForgeVector()}{eoForgeVector()}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
\mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::\mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}} (\begin{DoxyParamCaption}\item[{bool}]{always\+\_\+reinstantiate = {\ttfamily true} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Default constructor do not cache instantiations.
|
|
|
|
\begin{DoxyWarning}{Warning}
|
|
You most probably want to disable caching for operators that hold a state. If you enable the cache, the last used instantiation will be used, at its last state. For example, continuators should most probably not be cached, as they very often hold a state in the form of a counter. At the end of a search, the continuator will be in the end state, and thus always ask for a stop. Reusing an instance in this state will de facto disable further searches.
|
|
\end{DoxyWarning}
|
|
|
|
\begin{DoxyParams}{Parameters}
|
|
{\em always\+\_\+reinstantiate} & If false, will enable cache for the forges in this container. \\
|
|
\hline
|
|
\end{DoxyParams}
|
|
|
|
|
|
\doxysubsection{Member Function Documentation}
|
|
\mbox{\Hypertarget{classeo_forge_vector_a660cf37f1320f7f7deb61897385123ae}\label{classeo_forge_vector_a660cf37f1320f7f7deb61897385123ae}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!add@{add}}
|
|
\index{add@{add}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
template$<$class Op $>$ \\
|
|
void \mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::add (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Specialization for operators with empty constructors. \mbox{\Hypertarget{classeo_forge_vector_adce9bcac1f3810c191a32e4dc1319ae0}\label{classeo_forge_vector_adce9bcac1f3810c191a32e4dc1319ae0}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!add@{add}}
|
|
\index{add@{add}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{add()}{add()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
template$<$class Op , typename... Args$>$ \\
|
|
void \mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::add (\begin{DoxyParamCaption}\item[{Args...}]{args }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Add an operator to the list.
|
|
|
|
\begin{DoxyWarning}{Warning}
|
|
When passing a reference (as it is often the case within Paradis\+EO), it is M\+A\+N\+D\+A\+T\+O\+RY to wrap it in {\ttfamily std\+::ref}, or else it will default to use copy. This is is a source of bug which your compiler will to detect and that would disable any link between operators.
|
|
\end{DoxyWarning}
|
|
\mbox{\Hypertarget{classeo_forge_vector_a61f4a08f4f65a56bee2182238156b451}\label{classeo_forge_vector_a61f4a08f4f65a56bee2182238156b451}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!instantiate@{instantiate}}
|
|
\index{instantiate@{instantiate}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{instantiate()}{instantiate()}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
Itf\& \mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::instantiate (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
instantiate the operator managed at the given index. \mbox{\Hypertarget{classeo_forge_vector_ad8f8a93c031b2f035f03b02c4afb1490}\label{classeo_forge_vector_ad8f8a93c031b2f035f03b02c4afb1490}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!setup@{setup}}
|
|
\index{setup@{setup}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{setup()}{setup()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
template$<$class Op $>$ \\
|
|
void \mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::setup (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Specialization for empty constructors. \mbox{\Hypertarget{classeo_forge_vector_ae3643d35d9866b20fda964e5a0163dd6}\label{classeo_forge_vector_ae3643d35d9866b20fda964e5a0163dd6}}
|
|
\index{eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}!setup@{setup}}
|
|
\index{setup@{setup}!eoForgeVector$<$ Itf $>$@{eoForgeVector$<$ Itf $>$}}
|
|
\doxysubsubsection{\texorpdfstring{setup()}{setup()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
|
|
{\footnotesize\ttfamily template$<$class Itf $>$ \\
|
|
template$<$class Op , typename... Args$>$ \\
|
|
void \mbox{\hyperlink{classeo_forge_vector}{eo\+Forge\+Vector}}$<$ Itf $>$\+::setup (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{index, }\item[{Args...}]{args }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Change the set up arguments to the constructor.
|
|
|
|
\begin{DoxyWarning}{Warning}
|
|
When passing a reference (as it is often the case within Paradis\+EO), it is M\+A\+N\+D\+A\+T\+O\+RY to wrap it in {\ttfamily std\+::ref}, or else it will default to use copy. This is is a source of bug which your compiler will to detect and that would disable any link between operators.
|
|
|
|
The operator at {\ttfamily index} should have been added with \mbox{\hyperlink{classeo_forge_vector_adce9bcac1f3810c191a32e4dc1319ae0}{eo\+Forge\+Vector\+::add}} already..
|
|
\end{DoxyWarning}
|
|
|
|
|
|
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
|
|
\item
|
|
eo/src/eo\+Forge.\+h\end{DoxyCompactItemize}
|