133 lines
7.2 KiB
TeX
133 lines
7.2 KiB
TeX
\hypertarget{classeo_algo_foundry}{}\doxysection{eo\+Algo\+Foundry$<$ E\+OT $>$ Class Template Reference}
|
|
\label{classeo_algo_foundry}\index{eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}}
|
|
|
|
|
|
{\ttfamily \#include $<$eo\+Algo\+Foundry.\+h$>$}
|
|
|
|
|
|
|
|
Inheritance diagram for eo\+Algo\+Foundry$<$ E\+OT $>$\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=350pt]{classeo_algo_foundry__inherit__graph}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
|
|
Collaboration diagram for eo\+Algo\+Foundry$<$ E\+OT $>$\+:
|
|
\nopagebreak
|
|
\begin{figure}[H]
|
|
\begin{center}
|
|
\leavevmode
|
|
\includegraphics[width=336pt]{classeo_algo_foundry__coll__graph}
|
|
\end{center}
|
|
\end{figure}
|
|
\doxysubsection*{Public Member Functions}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\Hypertarget{classeo_algo_foundry_a5eefbd94b16a4394e1af72a75d3d8fd7}\label{classeo_algo_foundry_a5eefbd94b16a4394e1af72a75d3d8fd7}}
|
|
{\bfseries eo\+Algo\+Foundry} (size\+\_\+t nb\+\_\+operators)
|
|
\item
|
|
void \mbox{\hyperlink{classeo_algo_foundry_a58066b28eefc4e15efb7f55a18f90d2e}{select}} (std\+::vector$<$ size\+\_\+t $>$ \mbox{\hyperlink{classeo_algo_foundry_a4d09893b926c1d81fe22d60dbee57c79}{encoding}})
|
|
\item
|
|
size\+\_\+t \& \mbox{\hyperlink{classeo_algo_foundry_a4330a983b77169d032a1d81702f70414}{at}} (size\+\_\+t i)
|
|
\item
|
|
\mbox{\Hypertarget{classeo_algo_foundry_a1a1300901dfb0de546878e696468e571}\label{classeo_algo_foundry_a1a1300901dfb0de546878e696468e571}}
|
|
size\+\_\+t {\bfseries size} () const
|
|
\item
|
|
std\+::vector$<$ size\+\_\+t $>$ \mbox{\hyperlink{classeo_algo_foundry_a4d09893b926c1d81fe22d60dbee57c79}{encoding}} () const
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsection*{Protected Attributes}
|
|
\begin{DoxyCompactItemize}
|
|
\item
|
|
\mbox{\Hypertarget{classeo_algo_foundry_a4df8bfe46e39efd81dadcba6e069246c}\label{classeo_algo_foundry_a4df8bfe46e39efd81dadcba6e069246c}}
|
|
const size\+\_\+t {\bfseries \+\_\+size}
|
|
\item
|
|
\mbox{\Hypertarget{classeo_algo_foundry_a059d99e2fc1013fb56ac4835681d5959}\label{classeo_algo_foundry_a059d99e2fc1013fb56ac4835681d5959}}
|
|
std\+::vector$<$ size\+\_\+t $>$ {\bfseries \+\_\+encoding}
|
|
\end{DoxyCompactItemize}
|
|
\doxysubsection*{Additional Inherited Members}
|
|
|
|
|
|
\doxysubsection{Detailed Description}
|
|
\subsubsection*{template$<$class E\+OT$>$\newline
|
|
class eo\+Algo\+Foundry$<$ E\+O\+T $>$}
|
|
|
|
Interface of a Foundry\+: a class that instantiate an \mbox{\hyperlink{classeo_algo}{eo\+Algo}} on-\/the-\/fly, given a choice of its operators.
|
|
|
|
The chosen operators are encoded in a vector of indices.
|
|
|
|
The foundry subclass should first be set up with sets of operators of the same interface, held within an \mbox{\hyperlink{classeo_operator_foundry}{eo\+Operator\+Foundry}} member.
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{\mbox{\hyperlink{classeo_operator_foundry}{eoOperatorFoundry< eoSelectOne<EOT>}} > selectors;}
|
|
\end{DoxyCode}
|
|
|
|
|
|
In a second step, the operators to be used should be selected by indicating their index, just like if the foundry was an array\+:
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{foundry.select(\{0, 1, 2\});}
|
|
\DoxyCodeLine{\textcolor{comment}{// \string^ \string^ \string^}}
|
|
\DoxyCodeLine{\textcolor{comment}{// | | |}}
|
|
\DoxyCodeLine{\textcolor{comment}{// | | + 3d operator}}
|
|
\DoxyCodeLine{\textcolor{comment}{// | + 2d operator}}
|
|
\DoxyCodeLine{\textcolor{comment}{// + 1st operator}}
|
|
\end{DoxyCode}
|
|
|
|
|
|
If you don\textquotesingle{}t (want to) recall the order of the operators in the encoding, you can use the {\ttfamily index()} member of \mbox{\hyperlink{classeo_operator_foundry}{eo\+Operator\+Foundry}}, for example\+:
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{foundry.at(foundry.continuators.index()) = 2; \textcolor{comment}{// select the third continuator}}
|
|
\end{DoxyCode}
|
|
|
|
|
|
Now, you must implement the foundry just like any \mbox{\hyperlink{classeo_algo}{eo\+Algo}}, by using the \mbox{\hyperlink{classeo_pop}{eo\+Pop}} interface\+:
|
|
\begin{DoxyCode}{0}
|
|
\DoxyCodeLine{foundry(pop);}
|
|
\DoxyCodeLine{@encode}
|
|
\DoxyCodeLine{It will instantiate the needed operators (only) and the algorithm itself on-\/the-\/fly,}
|
|
\DoxyCodeLine{and then run it.}
|
|
\DoxyCodeLine{}
|
|
\DoxyCodeLine{@note: Thanks to the underlying \mbox{\hyperlink{classeo_operator_foundry}{eoOperatorFoundry}}, not all the added operators are instantiated.}
|
|
\DoxyCodeLine{Every instantiation is deferred upon actual use. That way, you can still reconfigure them}
|
|
\DoxyCodeLine{\mbox{\hyperlink{classeo_algo_foundry_a4330a983b77169d032a1d81702f70414}{at}} any time with `eoForgeOperator::setup`, \textcolor{keywordflow}{for} example:}
|
|
\DoxyCodeLine{@code}
|
|
\DoxyCodeLine{foundry.selector.at(0).setup(0.5); \textcolor{comment}{// using constructor's arguments}}
|
|
\end{DoxyCode}
|
|
|
|
|
|
\begin{DoxyWarning}{Warning}
|
|
If the managed constructor takes a reference Y\+OU S\+H\+O\+U\+LD A\+B\+S\+O\+L\+U\+T\+E\+LY wrap it in a {\ttfamily std\+::ref} when using {\ttfamily add} or {\ttfamily setup}, or it will silently be passed as a copy, which would effectively disable any link between operators.
|
|
\end{DoxyWarning}
|
|
|
|
|
|
\doxysubsection{Member Function Documentation}
|
|
\mbox{\Hypertarget{classeo_algo_foundry_a4330a983b77169d032a1d81702f70414}\label{classeo_algo_foundry_a4330a983b77169d032a1d81702f70414}}
|
|
\index{eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}!at@{at}}
|
|
\index{at@{at}!eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}}
|
|
\doxysubsubsection{\texorpdfstring{at()}{at()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT $>$ \\
|
|
size\+\_\+t\& \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$\+::at (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Access to the index of the currently selected operator. \mbox{\Hypertarget{classeo_algo_foundry_a4d09893b926c1d81fe22d60dbee57c79}\label{classeo_algo_foundry_a4d09893b926c1d81fe22d60dbee57c79}}
|
|
\index{eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}!encoding@{encoding}}
|
|
\index{encoding@{encoding}!eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}}
|
|
\doxysubsubsection{\texorpdfstring{encoding()}{encoding()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT $>$ \\
|
|
std\+::vector$<$size\+\_\+t$>$ \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$\+::encoding (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Return the underlying encoding vector. \mbox{\Hypertarget{classeo_algo_foundry_a58066b28eefc4e15efb7f55a18f90d2e}\label{classeo_algo_foundry_a58066b28eefc4e15efb7f55a18f90d2e}}
|
|
\index{eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}!select@{select}}
|
|
\index{select@{select}!eoAlgoFoundry$<$ EOT $>$@{eoAlgoFoundry$<$ EOT $>$}}
|
|
\doxysubsubsection{\texorpdfstring{select()}{select()}}
|
|
{\footnotesize\ttfamily template$<$class E\+OT $>$ \\
|
|
void \mbox{\hyperlink{classeo_algo_foundry}{eo\+Algo\+Foundry}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$\+::select (\begin{DoxyParamCaption}\item[{std\+::vector$<$ size\+\_\+t $>$}]{encoding }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
|
|
|
|
Select indices of all the operators.
|
|
|
|
i.\+e. Select an algorithm to instantiate.
|
|
|
|
The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
|
|
\item
|
|
eo/src/eo\+Algo\+Foundry.\+h\end{DoxyCompactItemize}
|