\doxysection{index\+\_\+set.\+hpp}
\hypertarget{index__set_8hpp_source}{}\label{index__set_8hpp_source}\index{ginkgo/core/base/index\_set.hpp@{ginkgo/core/base/index\_set.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\_BASE\_INDEX\_SET\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_BASE\_INDEX\_SET\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <algorithm>}}
\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <initializer\_list>}}
\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <mutex>}}
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/array.hpp>}}
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/exception\_helpers.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/executor.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/types.hpp>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/utils.hpp>}}
\DoxyCodeLine{00019\ }
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00021\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00022\ }
\DoxyCodeLine{00023\ }
\DoxyCodeLine{00055\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ IndexType\ =\ \textcolor{keywordtype}{int}32>}
\DoxyCodeLine{00056\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\ \{}
\DoxyCodeLine{00057\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00061\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ =\ IndexType;}
\DoxyCodeLine{00062\ }
\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}(std::shared\_ptr<const\ Executor>\ exec)\ noexcept}
\DoxyCodeLine{00069\ \ \ \ \ \ \ \ \ :\ exec\_(std::move(exec)),}
\DoxyCodeLine{00070\ \ \ \ \ \ \ \ \ \ \ index\_space\_size\_\{0\},}
\DoxyCodeLine{00071\ \ \ \ \ \ \ \ \ \ \ num\_stored\_indices\_\{0\},}
\DoxyCodeLine{00072\ \ \ \ \ \ \ \ \ \ \ subsets\_begin\_\{array<index\_type>(exec\_)\},}
\DoxyCodeLine{00073\ \ \ \ \ \ \ \ \ \ \ subsets\_end\_\{array<index\_type>(exec\_)\},}
\DoxyCodeLine{00074\ \ \ \ \ \ \ \ \ \ \ superset\_cumulative\_indices\_\{array<index\_type>(exec\_)\}}
\DoxyCodeLine{00075\ \ \ \ \ \{\}}
\DoxyCodeLine{00076\ }
\DoxyCodeLine{00086\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1index__set_aa07de100efebfe572fe54e8a062a804f}{index\_set}}(std::shared\_ptr<const\ gko::Executor>\ exec,}
\DoxyCodeLine{00087\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::initializer\_list<IndexType>\ init\_list,}
\DoxyCodeLine{00088\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted\ =\ \textcolor{keyword}{false})}
\DoxyCodeLine{00089\ \ \ \ \ \ \ \ \ :\ exec\_(\doxymbox{\hyperlink{namespacestd}{std}}::move(exec)),}
\DoxyCodeLine{00090\ \ \ \ \ \ \ \ \ \ \ index\_space\_size\_(init\_list.size()\ >\ 0}
\DoxyCodeLine{00091\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ?\ *(\doxymbox{\hyperlink{namespacestd}{std}}::max\_element(\doxymbox{\hyperlink{namespacestd}{std}}::begin(init\_list),}
\DoxyCodeLine{00092\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacestd}{std}}::end(init\_list)))\ +}
\DoxyCodeLine{00093\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ 0),}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \ \ num\_stored\_indices\_\{static\_cast<IndexType>(init\_list.size())\}}
\DoxyCodeLine{00096\ \ \ \ \ \{}
\DoxyCodeLine{00097\ \ \ \ \ \ \ \ \ GKO\_ASSERT(index\_space\_size\_\ >\ 0);}
\DoxyCodeLine{00098\ \ \ \ \ \ \ \ \ this-\/>populate\_subsets(}
\DoxyCodeLine{00099\ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<IndexType>}}(this-\/>\doxymbox{\hyperlink{classgko_1_1index__set_a4e9d134d6d40aa2fbf0c5958f8894987}{get\_executor}}(),\ init\_list),\ is\_sorted);}
\DoxyCodeLine{00100\ \ \ \ \ \}}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00112\ \ \ \ \ \textcolor{keyword}{explicit}\ \doxymbox{\hyperlink{classgko_1_1index__set_acea38519c712e560b25b765649c42ea1}{index\_set}}(std::shared\_ptr<const\ gko::Executor>\ exec,}
\DoxyCodeLine{00113\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ size,}
\DoxyCodeLine{00114\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{gko::array<index\_type>}}\&\ indices,}
\DoxyCodeLine{00115\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted\ =\ \textcolor{keyword}{false})}
\DoxyCodeLine{00116\ \ \ \ \ \ \ \ \ :\ exec\_(\doxymbox{\hyperlink{namespacestd}{std}}::move(exec)),\ index\_space\_size\_(size)}
\DoxyCodeLine{00117\ \ \ \ \ \{}
\DoxyCodeLine{00118\ \ \ \ \ \ \ \ \ GKO\_ASSERT(index\_space\_size\_\ >=\ indices.\doxymbox{\hyperlink{classgko_1_1array_ad38e4c252d698a4581ffa0833ab98c3f}{get\_size}}());}
\DoxyCodeLine{00119\ \ \ \ \ \ \ \ \ this-\/>populate\_subsets(indices,\ is\_sorted);}
\DoxyCodeLine{00120\ \ \ \ \ \}}
\DoxyCodeLine{00121\ }
\DoxyCodeLine{00128\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_aed2f14574eed7c641b7bfffbba4f99aa}{index\_set}}(std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\ other)}
\DoxyCodeLine{00129\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}(exec)}
\DoxyCodeLine{00130\ \ \ \ \ \{}
\DoxyCodeLine{00131\ \ \ \ \ \ \ \ \ *\textcolor{keyword}{this}\ =\ other;}
\DoxyCodeLine{00132\ \ \ \ \ \}}
\DoxyCodeLine{00133\ }
\DoxyCodeLine{00139\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a091b7afcf15de1d01446251717e198e8}{index\_set}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\ other)\ :\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}(other.\doxymbox{\hyperlink{classgko_1_1index__set_a4e9d134d6d40aa2fbf0c5958f8894987}{get\_executor}}(),\ other)}
\DoxyCodeLine{00140\ \ \ \ \ \{\}}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00148\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_abd4ef83780066ef0dfa12d5f60ac5977}{index\_set}}(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\&\ other)}
\DoxyCodeLine{00149\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}(exec)}
\DoxyCodeLine{00150\ \ \ \ \ \{}
\DoxyCodeLine{00151\ \ \ \ \ \ \ \ \ *\textcolor{keyword}{this}\ =\ std::move(other);}
\DoxyCodeLine{00152\ \ \ \ \ \}}
\DoxyCodeLine{00153\ }
\DoxyCodeLine{00159\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a882cb2e0e9ba975255bda9e117643520}{index\_set}}(\doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\&\ other)}
\DoxyCodeLine{00160\ \ \ \ \ \ \ \ \ :\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}(other.\doxymbox{\hyperlink{classgko_1_1index__set_a4e9d134d6d40aa2fbf0c5958f8894987}{get\_executor}}(),\ \doxymbox{\hyperlink{namespacestd}{std}}::move(other))}
\DoxyCodeLine{00161\ \ \ \ \ \{\}}
\DoxyCodeLine{00162\ }
\DoxyCodeLine{00173\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\ \doxymbox{\hyperlink{classgko_1_1index__set_ac6e64938ef36436b232b608eaab56fa3}{operator=}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\ other)}
\DoxyCodeLine{00174\ \ \ \ \ \{}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\&other\ ==\ \textcolor{keyword}{this})\ \{}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};}
\DoxyCodeLine{00177\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00178\ \ \ \ \ \ \ \ \ this-\/>index\_space\_size\_\ =\ other.index\_space\_size\_;}
\DoxyCodeLine{00179\ \ \ \ \ \ \ \ \ this-\/>num\_stored\_indices\_\ =\ other.num\_stored\_indices\_;}
\DoxyCodeLine{00180\ \ \ \ \ \ \ \ \ this-\/>subsets\_begin\_\ =\ other.subsets\_begin\_;}
\DoxyCodeLine{00181\ \ \ \ \ \ \ \ \ this-\/>subsets\_end\_\ =\ other.subsets\_end\_;}
\DoxyCodeLine{00182\ \ \ \ \ \ \ \ \ this-\/>superset\_cumulative\_indices\_\ =\ other.superset\_cumulative\_indices\_;}
\DoxyCodeLine{00183\ }
\DoxyCodeLine{00184\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};}
\DoxyCodeLine{00185\ \ \ \ \ \}}
\DoxyCodeLine{00186\ }
\DoxyCodeLine{00197\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\ \doxymbox{\hyperlink{classgko_1_1index__set_a13051e756a89e63eb26ddd4a15685218}{operator=}}(\doxymbox{\hyperlink{classgko_1_1index__set_a6383409f771d79550aacaafc81a5f805}{index\_set}}\&\&\ other)}
\DoxyCodeLine{00198\ \ \ \ \ \{}
\DoxyCodeLine{00199\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\&other\ ==\ \textcolor{keyword}{this})\ \{}
\DoxyCodeLine{00200\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};}
\DoxyCodeLine{00201\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00202\ \ \ \ \ \ \ \ \ this-\/>index\_space\_size\_\ =\ std::exchange(other.index\_space\_size\_,\ 0);}
\DoxyCodeLine{00203\ \ \ \ \ \ \ \ \ this-\/>num\_stored\_indices\_\ =\ std::exchange(other.num\_stored\_indices\_,\ 0);}
\DoxyCodeLine{00204\ \ \ \ \ \ \ \ \ this-\/>subsets\_begin\_\ =\ std::move(other.subsets\_begin\_);}
\DoxyCodeLine{00205\ \ \ \ \ \ \ \ \ this-\/>subsets\_end\_\ =\ std::move(other.subsets\_end\_);}
\DoxyCodeLine{00206\ \ \ \ \ \ \ \ \ this-\/>superset\_cumulative\_indices\_\ =}
\DoxyCodeLine{00207\ \ \ \ \ \ \ \ \ \ \ \ \ std::move(other.superset\_cumulative\_indices\_);}
\DoxyCodeLine{00208\ }
\DoxyCodeLine{00209\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};}
\DoxyCodeLine{00210\ \ \ \ \ \}}
\DoxyCodeLine{00211\ }
\DoxyCodeLine{00219\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1index__set_a53df61fd93487ab81379091e3d985337}{clear}}()\ noexcept}
\DoxyCodeLine{00220\ \ \ \ \ \{}
\DoxyCodeLine{00221\ \ \ \ \ \ \ \ \ this-\/>index\_space\_size\_\ =\ 0;}
\DoxyCodeLine{00222\ \ \ \ \ \ \ \ \ this-\/>num\_stored\_indices\_\ =\ 0;}
\DoxyCodeLine{00223\ \ \ \ \ \ \ \ \ this-\/>subsets\_begin\_.clear();}
\DoxyCodeLine{00224\ \ \ \ \ \ \ \ \ this-\/>subsets\_end\_.clear();}
\DoxyCodeLine{00225\ \ \ \ \ \ \ \ \ this-\/>superset\_cumulative\_indices\_.clear();}
\DoxyCodeLine{00226\ \ \ \ \ \}}
\DoxyCodeLine{00227\ }
\DoxyCodeLine{00233\ \ \ \ \ std::shared\_ptr<const\ Executor>\ \doxymbox{\hyperlink{classgko_1_1index__set_a4e9d134d6d40aa2fbf0c5958f8894987}{get\_executor}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>exec\_;\ \}}
\DoxyCodeLine{00234\ }
\DoxyCodeLine{00240\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ \doxymbox{\hyperlink{classgko_1_1index__set_aee50346d39861298d22e886f849a05d5}{get\_size}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>index\_space\_size\_;\ \}}
\DoxyCodeLine{00241\ }
\DoxyCodeLine{00247\ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{classgko_1_1index__set_acc4a1e96758b704d89ca101815110f7f}{is\_contiguous}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ (this-\/>\doxymbox{\hyperlink{classgko_1_1index__set_ab9dbcb5d70fa42c47a5c02abf46637af}{get\_num\_subsets}}()\ <=\ 1);\ \}}
\DoxyCodeLine{00248\ }
\DoxyCodeLine{00254\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a2e4c41ed2f1e634143a117fac6fcebb6}{get\_num\_elems}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ this-\/>num\_stored\_indices\_;\ \};}
\DoxyCodeLine{00255\ }
\DoxyCodeLine{00275\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a363bf8e031a2fe0be1b5bee3ede1f5a0}{get\_global\_index}}(\doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ local\_index)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00276\ }
\DoxyCodeLine{00297\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a6b60c4666b52d0c17897f10462e99790}{get\_local\_index}}(\doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ global\_index)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00298\ }
\DoxyCodeLine{00313\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ \doxymbox{\hyperlink{classgko_1_1index__set_ad9f135e24c34dfea392947753b526954}{map\_local\_to\_global}}(}
\DoxyCodeLine{00314\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\&\ local\_indices,}
\DoxyCodeLine{00315\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted\ =\ \textcolor{keyword}{false})\ \textcolor{keyword}{const};}
\DoxyCodeLine{00316\ }
\DoxyCodeLine{00329\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a937ba1ccb516edd695f0e959d9db9d4c}{map\_global\_to\_local}}(}
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\&\ global\_indices,}
\DoxyCodeLine{00331\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted\ =\ \textcolor{keyword}{false})\ \textcolor{keyword}{const};}
\DoxyCodeLine{00332\ }
\DoxyCodeLine{00339\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a1bb5e4dc6c65c8aeca7babb2593d351e}{to\_global\_indices}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00340\ }
\DoxyCodeLine{00351\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<bool>}}\ \doxymbox{\hyperlink{classgko_1_1index__set_a36a1e9d8710a44345e509ba5d0f6d18e}{contains}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{array<index\_type>}}\&\ global\_indices,}
\DoxyCodeLine{00352\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted\ =\ \textcolor{keyword}{false})\ \textcolor{keyword}{const};}
\DoxyCodeLine{00353\ }
\DoxyCodeLine{00364\ \ \ \ \ \textcolor{keywordtype}{bool}\ \doxymbox{\hyperlink{classgko_1_1index__set_ac0e92beeb23525dec8474c3342aca1c1}{contains}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ global\_index)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00365\ }
\DoxyCodeLine{00371\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ \doxymbox{\hyperlink{classgko_1_1index__set_ab9dbcb5d70fa42c47a5c02abf46637af}{get\_num\_subsets}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00372\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00373\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>subsets\_begin\_.get\_size();}
\DoxyCodeLine{00374\ \ \ \ \ \}}
\DoxyCodeLine{00375\ }
\DoxyCodeLine{00381\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}*\ \doxymbox{\hyperlink{classgko_1_1index__set_a27fd675f983b1f4a08b092d9597164e0}{get\_subsets\_begin}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00382\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00383\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>subsets\_begin\_.get\_const\_data();}
\DoxyCodeLine{00384\ \ \ \ \ \}}
\DoxyCodeLine{00385\ }
\DoxyCodeLine{00391\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}*\ \doxymbox{\hyperlink{classgko_1_1index__set_a48e034c2e240ef436334e11ef60c88cc}{get\_subsets\_end}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00392\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00393\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>subsets\_end\_.get\_const\_data();}
\DoxyCodeLine{00394\ \ \ \ \ \}}
\DoxyCodeLine{00395\ }
\DoxyCodeLine{00403\ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}*\ \doxymbox{\hyperlink{classgko_1_1index__set_ae604850ee9f80d9bef7bcc87ea55ff98}{get\_superset\_indices}}()\textcolor{keyword}{\ const}}
\DoxyCodeLine{00404\ \textcolor{keyword}{\ \ \ \ }\{}
\DoxyCodeLine{00405\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ this-\/>superset\_cumulative\_indices\_.get\_const\_data();}
\DoxyCodeLine{00406\ \ \ \ \ \}}
\DoxyCodeLine{00407\ }
\DoxyCodeLine{00408\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00409\ \ \ \ \ \textcolor{keywordtype}{void}\ populate\_subsets(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1array}{gko::array<index\_type>}}\&\ indices,}
\DoxyCodeLine{00410\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \textcolor{keywordtype}{bool}\ is\_sorted);}
\DoxyCodeLine{00411\ }
\DoxyCodeLine{00412\ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec\_;}
\DoxyCodeLine{00413\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ index\_space\_size\_;}
\DoxyCodeLine{00414\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1index__set_a41f5311ce2e9fb07ddb618123413bab7}{index\_type}}\ num\_stored\_indices\_;}
\DoxyCodeLine{00415\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{gko::array<index\_type>}}\ subsets\_begin\_;}
\DoxyCodeLine{00416\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{gko::array<index\_type>}}\ subsets\_end\_;}
\DoxyCodeLine{00417\ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{gko::array<index\_type>}}\ superset\_cumulative\_indices\_;}
\DoxyCodeLine{00418\ \};}
\DoxyCodeLine{00419\ }
\DoxyCodeLine{00420\ }
\DoxyCodeLine{00421\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00422\ }
\DoxyCodeLine{00423\ }
\DoxyCodeLine{00424\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_BASE\_INDEX\_SET\_HPP\_}}

\end{DoxyCode}
