\doxysection{stream.\+hpp}
\hypertarget{log_2stream_8hpp_source}{}\label{log_2stream_8hpp_source}\index{ginkgo/core/log/stream.hpp@{ginkgo/core/log/stream.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_LOG\_STREAM\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_LOG\_STREAM\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <fstream>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <iostream>}}
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/log/logger.hpp>}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ }
\DoxyCodeLine{00015\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00016\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1log}{log}}\ \{}
\DoxyCodeLine{00017\ }
\DoxyCodeLine{00018\ }
\DoxyCodeLine{00029\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ default\_precision>}
\DoxyCodeLine{00030\ \textcolor{keyword}{class\ }Stream\ :\ \textcolor{keyword}{public}\ Logger\ \{}
\DoxyCodeLine{00031\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_TYPE;}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00034\ \ \ \ \ \textcolor{comment}{/*\ Executor\ events\ */}}
\DoxyCodeLine{00035\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a0a30d9b674cfd77282d27574e32ea109}{on\_allocation\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00036\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00037\ }
\DoxyCodeLine{00038\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_ae34836c174c73068ef26a61c6597ef86}{on\_allocation\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00039\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes,}
\DoxyCodeLine{00040\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00041\ }
\DoxyCodeLine{00042\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a04e460838f9c3ba72dee32b545d2caa2}{on\_free\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00043\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00044\ }
\DoxyCodeLine{00045\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a0b0db1ea986997ac064767656cc22c23}{on\_free\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00046\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00047\ }
\DoxyCodeLine{00048\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a7573fde6a79f715fd8b5ac7615a33b37}{on\_copy\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ from,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ to,}
\DoxyCodeLine{00049\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_from,}
\DoxyCodeLine{00050\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_to,}
\DoxyCodeLine{00051\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00052\ }
\DoxyCodeLine{00053\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a66372936ad843609a057f9135c92bf3d}{on\_copy\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ from,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ to,}
\DoxyCodeLine{00054\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_from,}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a70648f1299a0c1297e2bf86f47264626}{uintptr}}\&\ location\_to,}
\DoxyCodeLine{00056\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_bytes)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00057\ }
\DoxyCodeLine{00058\ \ \ \ \ \textcolor{comment}{/*\ Operation\ events\ */}}
\DoxyCodeLine{00059\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a0c9edcd1ec0e4483ace5effdefa7e1f5}{on\_operation\_launched}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00060\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27af7235a61fdc3adc78d866fd8085d44db}{operation}})\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00061\ }
\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a63029c1558fa8c8c5d3a5489e31afa66}{on\_operation\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,}
\DoxyCodeLine{00063\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Operation}{Operation}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27af7235a61fdc3adc78d866fd8085d44db}{operation}})\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00064\ }
\DoxyCodeLine{00065\ \ \ \ \ \textcolor{comment}{/*\ PolymorphicObject\ events\ */}}
\DoxyCodeLine{00066\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a9109fbe3d2f3f186a15e2f8cbeaab3ca}{on\_polymorphic\_object\_create\_started}}(}
\DoxyCodeLine{00067\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ po)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00068\ }
\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a6ddaa3cdb5561b9abc01b97a88891b57}{on\_polymorphic\_object\_create\_completed}}(}
\DoxyCodeLine{00070\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ input,}
\DoxyCodeLine{00071\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ output)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00072\ }
\DoxyCodeLine{00073\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_ab2fdb58c80bd388df48ce1ac80e9f35e}{on\_polymorphic\_object\_copy\_started}}(}
\DoxyCodeLine{00074\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00075\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00077\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a71fdba2595d093b41bbd1b8b96b5c84a}{on\_polymorphic\_object\_copy\_completed}}(}
\DoxyCodeLine{00078\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00079\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00080\ }
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a9183d365061f3858c8cf407a61855f56}{on\_polymorphic\_object\_move\_started}}(}
\DoxyCodeLine{00082\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00083\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_aaf408bb4af49bc69aaacdba95dfb9961}{on\_polymorphic\_object\_move\_completed}}(}
\DoxyCodeLine{00086\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ from,}
\DoxyCodeLine{00087\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ to)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00088\ }
\DoxyCodeLine{00089\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a2e2c904c50789d4a233202a2481ed6de}{on\_polymorphic\_object\_deleted}}(}
\DoxyCodeLine{00090\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}*\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1PolymorphicObject}{PolymorphicObject}}*\ po)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00091\ }
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{comment}{/*\ LinOp\ events\ */}}
\DoxyCodeLine{00093\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a53ec3188b8113d894b09310867047605}{on\_linop\_apply\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00095\ }
\DoxyCodeLine{00096\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a9b1bb3ea948704d2397fe03f4ab83cab}{on\_linop\_apply\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00097\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00098\ }
\DoxyCodeLine{00099\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_ae5baeb37b33440aceab376116b8ee57f}{on\_linop\_advanced\_apply\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,}
\DoxyCodeLine{00100\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00101\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00102\ }
\DoxyCodeLine{00103\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a2eac89ee661a046813374f1103ebd32e}{on\_linop\_advanced\_apply\_completed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ A,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ alpha,}
\DoxyCodeLine{00104\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ beta,}
\DoxyCodeLine{00105\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00106\ }
\DoxyCodeLine{00107\ \ \ \ \ \textcolor{comment}{/*\ LinOpFactory\ events\ */}}
\DoxyCodeLine{00108\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_afa60da90a69a07a79ac8c8837aeb02cd}{on\_linop\_factory\_generate\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a9549dd6065d019211460c59a86dd6536}{factory}},}
\DoxyCodeLine{00109\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ input)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00110\ }
\DoxyCodeLine{00111\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_aedc38a16e05ae312d133803a50c6a938}{on\_linop\_factory\_generate\_completed}}(}
\DoxyCodeLine{00112\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOpFactory}{LinOpFactory}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a9549dd6065d019211460c59a86dd6536}{factory}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ input,}
\DoxyCodeLine{00113\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ output)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00114\ }
\DoxyCodeLine{00115\ \ \ \ \ \textcolor{comment}{/*\ Criterion\ events\ */}}
\DoxyCodeLine{00116\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a7ae44ba6930d61388259a09c730ba2f3}{on\_criterion\_check\_started}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::Criterion}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a4d4b370ab9b3dbca1ccdb1a5cca6a728}{criterion}},}
\DoxyCodeLine{00117\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00118\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,}
\DoxyCodeLine{00119\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00120\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,}
\DoxyCodeLine{00121\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}}\&\ stopping\_id,}
\DoxyCodeLine{00122\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ set\_finalized)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00123\ }
\DoxyCodeLine{00124\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a5f339dabde6971443b27173318aa42e1}{on\_criterion\_check\_completed}}(}
\DoxyCodeLine{00125\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1stop_1_1Criterion}{stop::Criterion}}*\ \doxymbox{\hyperlink{namespacegko_1_1log_a15f71654c6c4f4defc95f9359343fa27a4d4b370ab9b3dbca1ccdb1a5cca6a728}{criterion}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00127\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a06d96f1ecdca6b86399173969771c3fb}{uint8}}\&\ stopping\_id,}
\DoxyCodeLine{00128\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ set\_finalized,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<stopping\_status>}}*\ status,}
\DoxyCodeLine{00129\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ one\_changed,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\&\ all\_converged)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00130\ }
\DoxyCodeLine{00131\ \ \ \ \ \textcolor{comment}{/*\ Internal\ solver\ events\ */}}
\DoxyCodeLine{00132\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a2d9a9e4c04e6b69fe9fad85b33c1efa3}{on\_iteration\_complete}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ b,}
\DoxyCodeLine{00133\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ x,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00134\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,}
\DoxyCodeLine{00135\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00136\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ implicit\_resnorm\_sq,}
\DoxyCodeLine{00137\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<stopping\_status>}}*\ status,}
\DoxyCodeLine{00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ stopped)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00139\ }
\DoxyCodeLine{00140\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00141\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Please\ use\ the\ version\ with\ the\ additional\ stopping\ "{}}}
\DoxyCodeLine{00142\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}information."{}})}
\DoxyCodeLine{00143\ \ \ \ \ void\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a2d9a9e4c04e6b69fe9fad85b33c1efa3}{on\_iteration\_complete}}(const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},}
\DoxyCodeLine{00144\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00145\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,}
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm)\ const\ override;}
\DoxyCodeLine{00147\ }
\DoxyCodeLine{00148\ \ \ \ \ GKO\_DEPRECATED(}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Please\ use\ the\ version\ with\ the\ additional\ stopping\ "{}}}
\DoxyCodeLine{00150\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}information."{}})}
\DoxyCodeLine{00151\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a2d9a9e4c04e6b69fe9fad85b33c1efa3}{on\_iteration\_complete}}(}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ \doxymbox{\hyperlink{namespacegko_1_1solver}{solver}},\ const\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\&\ num\_iterations,}
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual,\ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ solution,}
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ residual\_norm,}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*\ implicit\_sq\_residual\_norm)\ const\ override;}
\DoxyCodeLine{00156\ }
\DoxyCodeLine{00171\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ three-\/parameter\ create"{}})}
\DoxyCodeLine{00172\ \ \ \ \ static\ \doxymbox{\hyperlink{namespacestd}{std}}::unique\_ptr<Stream>\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a70d1f2a01372287ae1467fbed6965ea3}{create}}(}
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ const\ Logger::mask\_type\&\ enabled\_events\ =\ Logger::\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{all\_events\_mask}},}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::ostream\&\ os\ =\ \doxymbox{\hyperlink{namespacestd}{std}}::cout,\ \textcolor{keywordtype}{bool}\ verbose\ =\ false)}
\DoxyCodeLine{00176\ \ \ \ \ \{}
\DoxyCodeLine{00177\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::unique\_ptr<Stream>(\textcolor{keyword}{new}\ Stream(enabled\_events,\ os,\ verbose));}
\DoxyCodeLine{00178\ \ \ \ \ \}}
\DoxyCodeLine{00179\ }
\DoxyCodeLine{00194\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Stream>\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream_a4f6e6344fa14b9cc7654aa7e78eb714c}{create}}(}
\DoxyCodeLine{00195\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ Logger::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{Logger::all\_events\_mask}},}
\DoxyCodeLine{00196\ \ \ \ \ \ \ \ \ std::ostream\&\ os\ =\ std::cerr,\ \textcolor{keywordtype}{bool}\ verbose\ =\ \textcolor{keyword}{false})}
\DoxyCodeLine{00197\ \ \ \ \ \{}
\DoxyCodeLine{00198\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ std::unique\_ptr<Stream>(\textcolor{keyword}{new}\ Stream(enabled\_events,\ os,\ verbose));}
\DoxyCodeLine{00199\ \ \ \ \ \}}
\DoxyCodeLine{00200\ }
\DoxyCodeLine{00201\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00213\ \ \ \ \ GKO\_DEPRECATED(\textcolor{stringliteral}{"{}use\ three-\/parameter\ constructor"{}})}
\DoxyCodeLine{00214\ \ \ \ \ explicit\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream}{Stream}}(}
\DoxyCodeLine{00215\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::shared\_ptr<const\ \doxymbox{\hyperlink{namespacegko}{gko}}::\doxymbox{\hyperlink{classgko_1_1Executor}{Executor}}>\ exec,}
\DoxyCodeLine{00216\ \ \ \ \ \ \ \ \ const\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{Logger}}::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger}{Logger}}::\doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{all\_events\_mask}},}
\DoxyCodeLine{00217\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::ostream\&\ os\ =\ \doxymbox{\hyperlink{namespacestd}{std}}::cerr,\ \textcolor{keywordtype}{bool}\ verbose\ =\ false)}
\DoxyCodeLine{00218\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1log_1_1Stream}{Stream}}(enabled\_events,\ os,\ verbose)}
\DoxyCodeLine{00219\ \ \ \ \ \{\}}
\DoxyCodeLine{00220\ }
\DoxyCodeLine{00232\ \ \ \ \ \textcolor{keyword}{explicit}\ Stream(}
\DoxyCodeLine{00233\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ Logger::mask\_type\&\ enabled\_events\ =\ \doxymbox{\hyperlink{classgko_1_1log_1_1Logger_a02534863a2d2f92dfeb2c39038365532}{Logger::all\_events\_mask}},}
\DoxyCodeLine{00234\ \ \ \ \ \ \ \ \ std::ostream\&\ os\ =\ std::cerr,\ \textcolor{keywordtype}{bool}\ verbose\ =\ \textcolor{keyword}{false})}
\DoxyCodeLine{00235\ \ \ \ \ \ \ \ \ :\ Logger(enabled\_events),\ os\_(\&os),\ verbose\_(verbose)}
\DoxyCodeLine{00236\ \ \ \ \ \{\}}
\DoxyCodeLine{00237\ }
\DoxyCodeLine{00238\ }
\DoxyCodeLine{00239\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00240\ \ \ \ \ std::ostream*\ os\_;}
\DoxyCodeLine{00241\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{constexpr}\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}*\ prefix\_\ =\ \textcolor{stringliteral}{"{}[LOG]\ >>>\ "{}};}
\DoxyCodeLine{00242\ \ \ \ \ \textcolor{keywordtype}{bool}\ verbose\_;}
\DoxyCodeLine{00243\ \};}
\DoxyCodeLine{00244\ }
\DoxyCodeLine{00245\ }
\DoxyCodeLine{00246\ \}\ \ \textcolor{comment}{//\ namespace\ log}}
\DoxyCodeLine{00247\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00248\ }
\DoxyCodeLine{00249\ }
\DoxyCodeLine{00250\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_LOG\_STREAM\_HPP\_}}

\end{DoxyCode}
