\doxysection{types.\+hpp}
\hypertarget{extensions_2kokkos_2types_8hpp_source}{}\label{extensions_2kokkos_2types_8hpp_source}\index{ginkgo/extensions/kokkos/types.hpp@{ginkgo/extensions/kokkos/types.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2024\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GINKGO\_EXTENSIONS\_KOKKOS\_TYPES\_HPP}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GINKGO\_EXTENSIONS\_KOKKOS\_TYPES\_HPP}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <Kokkos\_Complex.hpp>}}
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <Kokkos\_Core.hpp>}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <ginkgo/config.hpp>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/dense.hpp>}}
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/extensions/kokkos/config.hpp>}}
\DoxyCodeLine{00015\ }
\DoxyCodeLine{00016\ }
\DoxyCodeLine{00017\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00018\ \textcolor{keyword}{namespace\ }ext\ \{}
\DoxyCodeLine{00019\ \textcolor{keyword}{namespace\ }kokkos\ \{}
\DoxyCodeLine{00020\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00028\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00029\ \textcolor{keyword}{struct\ }value\_type\_impl\ \{}
\DoxyCodeLine{00030\ \ \ \ \ \textcolor{keyword}{using\ }type\ =\ T;}
\DoxyCodeLine{00031\ \};}
\DoxyCodeLine{00032\ }
\DoxyCodeLine{00033\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00034\ \textcolor{keyword}{struct\ }value\_type\_impl<const\ T>\ \{}
\DoxyCodeLine{00035\ \ \ \ \ \textcolor{keyword}{using\ }type\ =\ \textcolor{keyword}{const}\ \textcolor{keyword}{typename}\ value\_type\_impl<T>::type;}
\DoxyCodeLine{00036\ \};}
\DoxyCodeLine{00037\ }
\DoxyCodeLine{00038\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00039\ \textcolor{keyword}{struct\ }value\_type\_impl<std::complex<T>>\ \{}
\DoxyCodeLine{00040\ \ \ \ \ \textcolor{keyword}{using\ }type\ =\ Kokkos::complex<T>;}
\DoxyCodeLine{00041\ \};}
\DoxyCodeLine{00042\ }
\DoxyCodeLine{00043\ }
\DoxyCodeLine{00044\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00045\ \textcolor{keyword}{struct\ }value\_type\ \{}
\DoxyCodeLine{00046\ \ \ \ \ \textcolor{keyword}{using\ }type\ =\ \textcolor{keyword}{typename}\ value\_type\_impl<T>::type;}
\DoxyCodeLine{00047\ }
\DoxyCodeLine{00048\ \ \ \ \ \textcolor{keyword}{static\_assert}(\textcolor{keyword}{sizeof}(std::decay\_t<T>)\ ==\ \textcolor{keyword}{sizeof}(std::decay\_t<type>),}
\DoxyCodeLine{00049\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Can't\ handle\ C++\ data\ type\ and\ corresponding\ Kokkos\ "{}}}
\DoxyCodeLine{00050\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}type\ with\ mismatching\ type\ sizes."{}});}
\DoxyCodeLine{00051\ \textcolor{preprocessor}{\#if\ GINKGO\_EXTENSION\_KOKKOS\_CHECK\_TYPE\_ALIGNMENT}}
\DoxyCodeLine{00052\ \ \ \ \ \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{00053\ \ \ \ \ \ \ \ \ \textcolor{keyword}{alignof}(std::decay\_t<T>)\ ==\ \textcolor{keyword}{alignof}(std::decay\_t<type>),}
\DoxyCodeLine{00054\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Can't\ handle\ C++\ data\ type\ and\ corresponding\ Kokkos\ type\ with\ "{}}}
\DoxyCodeLine{00055\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}mismatching\ alignments.\ If\ std::complex\ is\ used,\ please\ make\ sure\ "{}}}
\DoxyCodeLine{00056\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}to\ configure\ Kokkos\ with\ \`{}KOKKOS\_ENABLE\_COMPLEX\_ALIGN=ON`.\(\backslash\)n"{}}}
\DoxyCodeLine{00057\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}Alternatively,\ disable\ this\ check\ by\ setting\ the\ CMake\ option\ "{}}}
\DoxyCodeLine{00058\ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}-\/DGINKGO\_EXTENSION\_KOKKOS\_CHECK\_TYPE\_ALIGNMENT=OFF."{}});}
\DoxyCodeLine{00059\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00060\ \};}
\DoxyCodeLine{00061\ }
\DoxyCodeLine{00062\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00063\ \textcolor{keyword}{using\ }value\_type\_t\ =\ \textcolor{keyword}{typename}\ value\_type<T>::type;}
\DoxyCodeLine{00064\ }
\DoxyCodeLine{00065\ }
\DoxyCodeLine{00077\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00078\ \textcolor{keyword}{struct\ }mapper\ \{}
\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{auto}\ map(T\&);}
\DoxyCodeLine{00080\ }
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keyword}{auto}\ map(\textcolor{keyword}{const}\ T\&);}
\DoxyCodeLine{00082\ \};}
\DoxyCodeLine{00083\ }
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00093\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00094\ \textcolor{keyword}{struct\ }mapper<\doxymbox{\hyperlink{namespacegko_ae749a5ea11a93c1bcc9158d9a6e9fb68af1f713c9e000f5d3f280adbd124df4f5}{array}}<ValueType>,\ MemorySpace>\ \{}
\DoxyCodeLine{00095\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\_c>}
\DoxyCodeLine{00096\ \ \ \ \ \textcolor{keyword}{using\ }type\ =}
\DoxyCodeLine{00097\ \ \ \ \ \ \ \ \ Kokkos::View<typename\ value\_type<ValueType\_c>::type*,\ MemorySpace,}
\DoxyCodeLine{00098\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Kokkos::MemoryTraits<Kokkos::Unmanaged>>;}
\DoxyCodeLine{00099\ }
\DoxyCodeLine{00109\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\_c>}
\DoxyCodeLine{00110\ \ \ \ \ \textcolor{keyword}{static}\ type<ValueType\_c>\ map(ValueType\_c*\ data,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size);}
\DoxyCodeLine{00111\ }
\DoxyCodeLine{00115\ \ \ \ \ \textcolor{keyword}{static}\ type<ValueType>\ map(\doxymbox{\hyperlink{namespacegko_ae749a5ea11a93c1bcc9158d9a6e9fb68af1f713c9e000f5d3f280adbd124df4f5}{array<ValueType>}}\&\ arr);}
\DoxyCodeLine{00116\ }
\DoxyCodeLine{00120\ \ \ \ \ \textcolor{keyword}{static}\ type<const\ ValueType>\ map(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_ae749a5ea11a93c1bcc9158d9a6e9fb68af1f713c9e000f5d3f280adbd124df4f5}{array<ValueType>}}\&\ arr);}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00125\ \ \ \ \ \textcolor{keyword}{static}\ type<const\ ValueType>\ map(}
\DoxyCodeLine{00126\ \ \ \ \ \ \ \ \ const\ ::gko::detail::const\_array\_view<ValueType>\&\ arr);}
\DoxyCodeLine{00127\ \};}
\DoxyCodeLine{00128\ }
\DoxyCodeLine{00129\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00130\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\_c>}
\DoxyCodeLine{00131\ \textcolor{keyword}{typename}\ mapper<array<ValueType>,\ MemorySpace>::template\ type<ValueType\_c>}
\DoxyCodeLine{00132\ mapper<array<ValueType>,\ MemorySpace>::map(ValueType\_c*\ data,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ size)}
\DoxyCodeLine{00133\ \{}
\DoxyCodeLine{00134\ \ \ \ \ \textcolor{keywordflow}{return}\ type<ValueType\_c>\{\textcolor{keyword}{reinterpret\_cast<}value\_type\_t<ValueType\_c>*\textcolor{keyword}{>}(data),}
\DoxyCodeLine{00135\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ size\};}
\DoxyCodeLine{00136\ \}}
\DoxyCodeLine{00137\ }
\DoxyCodeLine{00138\ }
\DoxyCodeLine{00139\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00140\ \textcolor{keyword}{typename}\ mapper<array<ValueType>,\ MemorySpace>::template\ type<ValueType>}
\DoxyCodeLine{00141\ mapper<array<ValueType>,\ MemorySpace>::map(\doxymbox{\hyperlink{namespacegko_ae749a5ea11a93c1bcc9158d9a6e9fb68af1f713c9e000f5d3f280adbd124df4f5}{array<ValueType>}}\&\ arr)}
\DoxyCodeLine{00142\ \{}
\DoxyCodeLine{00143\ \ \ \ \ assert\_compatibility<MemorySpace>(arr);}
\DoxyCodeLine{00144\ }
\DoxyCodeLine{00145\ \ \ \ \ \textcolor{keywordflow}{return}\ map(arr.get\_data(),\ arr.get\_size());}
\DoxyCodeLine{00146\ \}}
\DoxyCodeLine{00147\ }
\DoxyCodeLine{00148\ }
\DoxyCodeLine{00149\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00150\ \textcolor{keyword}{typename}\ mapper<array<ValueType>,\ MemorySpace>::template\ type<const\ ValueType>}
\DoxyCodeLine{00151\ mapper<array<ValueType>,\ MemorySpace>::map(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{namespacegko_ae749a5ea11a93c1bcc9158d9a6e9fb68af1f713c9e000f5d3f280adbd124df4f5}{array<ValueType>}}\&\ arr)}
\DoxyCodeLine{00152\ \{}
\DoxyCodeLine{00153\ \ \ \ \ assert\_compatibility<MemorySpace>(arr);}
\DoxyCodeLine{00154\ }
\DoxyCodeLine{00155\ \ \ \ \ \textcolor{keywordflow}{return}\ map(arr.get\_const\_data(),\ arr.get\_size());}
\DoxyCodeLine{00156\ \}}
\DoxyCodeLine{00157\ }
\DoxyCodeLine{00158\ }
\DoxyCodeLine{00159\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00160\ \textcolor{keyword}{typename}\ mapper<array<ValueType>,\ MemorySpace>::template\ type<const\ ValueType>}
\DoxyCodeLine{00161\ mapper<array<ValueType>,\ MemorySpace>::map(}
\DoxyCodeLine{00162\ \ \ \ \ const\ ::gko::detail::const\_array\_view<ValueType>\&\ arr)}
\DoxyCodeLine{00163\ \{}
\DoxyCodeLine{00164\ \ \ \ \ assert\_compatibility<MemorySpace>(arr);}
\DoxyCodeLine{00165\ }
\DoxyCodeLine{00166\ \ \ \ \ \textcolor{keywordflow}{return}\ map(arr.get\_const\_data(),\ arr.get\_size());}
\DoxyCodeLine{00167\ \}}
\DoxyCodeLine{00168\ }
\DoxyCodeLine{00169\ }
\DoxyCodeLine{00178\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00179\ \textcolor{keyword}{struct\ }mapper<matrix::Dense<ValueType>,\ MemorySpace>\ \{}
\DoxyCodeLine{00180\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\_c>}
\DoxyCodeLine{00181\ \ \ \ \ \textcolor{keyword}{using\ }type\ =\ Kokkos::View<typename\ value\_type<ValueType\_c>::type**,}
\DoxyCodeLine{00182\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Kokkos::LayoutStride,\ MemorySpace,}
\DoxyCodeLine{00183\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Kokkos::MemoryTraits<Kokkos::Unmanaged>>;}
\DoxyCodeLine{00184\ }
\DoxyCodeLine{00188\ \ \ \ \ \textcolor{keyword}{static}\ type<ValueType>\ map(matrix::Dense<ValueType>\&\ m);}
\DoxyCodeLine{00189\ }
\DoxyCodeLine{00193\ \ \ \ \ \textcolor{keyword}{static}\ type<const\ ValueType>\ map(\textcolor{keyword}{const}\ matrix::Dense<ValueType>\&\ m);}
\DoxyCodeLine{00194\ \};}
\DoxyCodeLine{00195\ }
\DoxyCodeLine{00196\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00197\ \textcolor{keyword}{typename}\ mapper<matrix::Dense<ValueType>,\ MemorySpace>::template\ type<ValueType>}
\DoxyCodeLine{00198\ mapper<matrix::Dense<ValueType>,\ MemorySpace>::map(matrix::Dense<ValueType>\&\ m)}
\DoxyCodeLine{00199\ \{}
\DoxyCodeLine{00200\ \ \ \ \ assert\_compatibility<MemorySpace>(m);}
\DoxyCodeLine{00201\ }
\DoxyCodeLine{00202\ \ \ \ \ \textcolor{keyword}{auto}\ size\ =\ m.get\_size();}
\DoxyCodeLine{00203\ }
\DoxyCodeLine{00204\ \ \ \ \ \textcolor{keywordflow}{return}\ type<ValueType>\{}
\DoxyCodeLine{00205\ \ \ \ \ \ \ \ \ \textcolor{keyword}{reinterpret\_cast<}value\_type\_t<ValueType>*\textcolor{keyword}{>}(m.get\_values()),}
\DoxyCodeLine{00206\ \ \ \ \ \ \ \ \ Kokkos::LayoutStride\{size[0],\ m.get\_stride(),\ size[1],\ 1\}\};}
\DoxyCodeLine{00207\ \}}
\DoxyCodeLine{00208\ }
\DoxyCodeLine{00209\ }
\DoxyCodeLine{00210\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType,\ \textcolor{keyword}{typename}\ MemorySpace>}
\DoxyCodeLine{00211\ \textcolor{keyword}{typename}\ mapper<matrix::Dense<ValueType>,}
\DoxyCodeLine{00212\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ MemorySpace>::template\ type<const\ ValueType>}
\DoxyCodeLine{00213\ mapper<matrix::Dense<ValueType>,\ MemorySpace>::map(}
\DoxyCodeLine{00214\ \ \ \ \ \textcolor{keyword}{const}\ matrix::Dense<ValueType>\&\ m)}
\DoxyCodeLine{00215\ \{}
\DoxyCodeLine{00216\ \ \ \ \ assert\_compatibility<MemorySpace>(m);}
\DoxyCodeLine{00217\ }
\DoxyCodeLine{00218\ \ \ \ \ \textcolor{keyword}{auto}\ size\ =\ m.get\_size();}
\DoxyCodeLine{00219\ }
\DoxyCodeLine{00220\ \ \ \ \ \textcolor{keywordflow}{return}\ type<const\ ValueType>\{}
\DoxyCodeLine{00221\ \ \ \ \ \ \ \ \ \textcolor{keyword}{reinterpret\_cast<}\textcolor{keyword}{const\ }value\_type\_t<ValueType>*\textcolor{keyword}{>}(m.get\_const\_values()),}
\DoxyCodeLine{00222\ \ \ \ \ \ \ \ \ Kokkos::LayoutStride\{size[0],\ m.get\_stride(),\ size[1],\ 1\}\};}
\DoxyCodeLine{00223\ \}}
\DoxyCodeLine{00224\ }
\DoxyCodeLine{00225\ }
\DoxyCodeLine{00226\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00227\ }
\DoxyCodeLine{00228\ }
\DoxyCodeLine{00239\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ MemorySpace\ =\ Kokkos::DefaultExecutionSpace::memory\_space,}
\DoxyCodeLine{00240\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00241\ \textcolor{keyword}{inline}\ \textcolor{keyword}{auto}\ map\_data(T\&\&\ data)}
\DoxyCodeLine{00242\ \{}
\DoxyCodeLine{00243\ \ \ \ \ \textcolor{keywordflow}{return}\ detail::mapper<std::decay\_t<T>,\ MemorySpace>::map(}
\DoxyCodeLine{00244\ \ \ \ \ \ \ \ \ std::forward<T>(data));}
\DoxyCodeLine{00245\ \}}
\DoxyCodeLine{00246\ }
\DoxyCodeLine{00250\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ MemorySpace\ =\ Kokkos::DefaultExecutionSpace::memory\_space,}
\DoxyCodeLine{00251\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00252\ \textcolor{keyword}{inline}\ \textcolor{keyword}{auto}\ map\_data(T*\ data)}
\DoxyCodeLine{00253\ \{}
\DoxyCodeLine{00254\ \ \ \ \ \textcolor{keywordflow}{return}\ map\_data<MemorySpace>(*data);}
\DoxyCodeLine{00255\ \}}
\DoxyCodeLine{00256\ }
\DoxyCodeLine{00260\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ MemorySpace\ =\ Kokkos::DefaultExecutionSpace::memory\_space,}
\DoxyCodeLine{00261\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00262\ \textcolor{keyword}{inline}\ \textcolor{keyword}{auto}\ map\_data(std::unique\_ptr<T>\&\ data)}
\DoxyCodeLine{00263\ \{}
\DoxyCodeLine{00264\ \ \ \ \ \textcolor{keywordflow}{return}\ map\_data<MemorySpace>(*data);}
\DoxyCodeLine{00265\ \}}
\DoxyCodeLine{00266\ }
\DoxyCodeLine{00270\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ MemorySpace\ =\ Kokkos::DefaultExecutionSpace::memory\_space,}
\DoxyCodeLine{00271\ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00272\ \textcolor{keyword}{inline}\ \textcolor{keyword}{auto}\ map\_data(std::shared\_ptr<T>\&\ data)}
\DoxyCodeLine{00273\ \{}
\DoxyCodeLine{00274\ \ \ \ \ \textcolor{keywordflow}{return}\ map\_data<MemorySpace>(*data);}
\DoxyCodeLine{00275\ \}}
\DoxyCodeLine{00276\ }
\DoxyCodeLine{00277\ }
\DoxyCodeLine{00278\ \}\ \ \textcolor{comment}{//\ namespace\ kokkos}}
\DoxyCodeLine{00279\ \}\ \ \textcolor{comment}{//\ namespace\ ext}}
\DoxyCodeLine{00280\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00281\ }
\DoxyCodeLine{00282\ }
\DoxyCodeLine{00283\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GINKGO\_EXTENSIONS\_KOKKOS\_TYPES\_HPP}}

\end{DoxyCode}
