\hypertarget{out__dev_8h}{}\section{include/utl/dev/out\+\_\+dev.h File Reference}
\label{out__dev_8h}\index{include/utl/dev/out\+\_\+dev.\+h@{include/utl/dev/out\+\_\+dev.\+h}}


Abstract base class interface for output devices of utl.  


{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline
{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline
{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline
{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}}
\begin{DoxyCompactList}\small\item\em Abstract base classes for output devices. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}}
\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}}
\begin{DoxyCompactList}\small\item\em Primary template to catch any non output device types. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}}
\begin{DoxyCompactList}\small\item\em template to catch a proper output device type \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \mbox{\hyperlink{namespaceutl}{utl}}
\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item 
 \mbox{\hyperlink{namespaceutl_1_1out__dev__details}{utl\+::out\+\_\+dev\+\_\+details}}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type \& $>$()))
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ size\+\_\+t $>$()))
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin())
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin())
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin())
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin())
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin())
\item 
{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend())
\end{DoxyCompactItemize}
\subsection*{Variables}
\textbf{ }\par
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a77f27f594c8696fcfbc85a9ec66c11f1}{utl\+::\+Out\+\_\+dev}} = out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$\+\_\+\+Tp$>$\+::value
\end{DoxyCompactItemize}



\subsection{Detailed Description}
Abstract base class interface for output devices of utl. 

Copyright (C) 2018 Christos Choutouridis

This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details.

You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. 