\doxysection{gko::\+batch::\+Enable\+Batch\+Lin\+Op\texorpdfstring{$<$}{<} Concrete\+Batch\+Lin\+Op, Polymorphic\+Base \texorpdfstring{$>$}{>} Class Template Reference}
\hypertarget{classgko_1_1batch_1_1EnableBatchLinOp}{}\label{classgko_1_1batch_1_1EnableBatchLinOp}\index{gko::batch::EnableBatchLinOp$<$ ConcreteBatchLinOp, PolymorphicBase $>$@{gko::batch::EnableBatchLinOp$<$ ConcreteBatchLinOp, PolymorphicBase $>$}}


The \doxylink{classgko_1_1batch_1_1EnableBatchLinOp}{Enable\+Batch\+Lin\+Op} mixin can be used to provide sensible default implementations of the majority of the \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op} and \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} interface.  




{\ttfamily \+\#include $<$ginkgo/\+core/\+base/\+batch\+\_\+lin\+\_\+op.\+hpp$>$}



Inheritance diagram for gko::\+batch::\+Enable\+Batch\+Lin\+Op\texorpdfstring{$<$}{<} Concrete\+Batch\+Lin\+Op, Polymorphic\+Base \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1batch_1_1EnableBatchLinOp__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gko::\+batch::\+Enable\+Batch\+Lin\+Op\texorpdfstring{$<$}{<} Concrete\+Batch\+Lin\+Op, Polymorphic\+Base \texorpdfstring{$>$}{>}:\+
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classgko_1_1batch_1_1EnableBatchLinOp__coll__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Public Types inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Concrete\+Batch\+Lin\+Op $>$}}}
\begin{DoxyCompactItemize}
\item 
using {\bfseries result\+\_\+type}
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \doxymbox{\hyperlink{classgko_1_1EnablePolymorphicAssignment}{gko::\+\+Enable\+Polymorphic\+Assignment$<$ Concrete\+Batch\+Lin\+Op $>$}}}
\begin{DoxyCompactItemize}
\item 
void {\bfseries convert\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) const override
\item 
void {\bfseries move\+\_\+to} (result\+\_\+type \texorpdfstring{$\ast$}{*}result) override
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Concrete\+Batch\+Lin\+Op, typename Polymorphic\+Base = Batch\+Lin\+Op$>$\newline
class gko::\+batch::\+\+Enable\+Batch\+Lin\+Op$<$ Concrete\+Batch\+Lin\+Op, Polymorphic\+Base $>$}
The \doxylink{classgko_1_1batch_1_1EnableBatchLinOp}{Enable\+Batch\+Lin\+Op} mixin can be used to provide sensible default implementations of the majority of the \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op} and \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} interface. 

The goal of the mixin is to facilitate the development of new \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op}, by enabling the implementers to focus on the important parts of their operator, while the library takes care of generating the trivial utility functions. The mixin will provide default implementations for the entire \doxylink{classgko_1_1PolymorphicObject}{Polymorphic\+Object} interface, including a default implementation of {\ttfamily copy\+\_\+from} between objects of the new \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op} type.

Implementers of new Batch\+Lin\+Ops are required to specify only the following aspects:\+


\begin{DoxyEnumerate}
\item Creation of the \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op}:\+ This can be facilitated via either \doxylink{classgko_1_1EnableCreateMethod}{Enable\+Create\+Method} mixin (used mostly for matrix formats), or GKO\+\_\+\+ENABLE\+\_\+\+BATCH\+\_\+\+LIN\+\_\+\+OP\+\_\+\+FACTORY macro (used for operators created from other operators, like preconditioners and solvers).
\end{DoxyEnumerate}


\begin{DoxyTemplParams}{Template Parameters}
{\em Concrete\+Batch\+Lin\+Op} & the concrete \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op} which is being implemented \+[CRTP parameter]\+ \\
\hline
{\em Polymorphic\+Base} & parent of Concrete\+Batch\+Lin\+Op in the polymorphic hierarchy, has to be a subclass of \doxylink{classgko_1_1batch_1_1BatchLinOp}{Batch\+Lin\+Op} \\
\hline
\end{DoxyTemplParams}


The documentation for this class was generated from the following file:\+\begin{DoxyCompactItemize}
\item 
ginkgo/\+core/\+base/\+batch\+\_\+lin\+\_\+op.\+hpp\end{DoxyCompactItemize}
