\doxysection{composition\+\_\+abstract\+\_\+iterator.\+h}
\hypertarget{composition__abstract__iterator_8h_source}{}\label{composition__abstract__iterator_8h_source}\index{src/composition/include/fourdst/composition/iterators/composition\_abstract\_iterator.h@{src/composition/include/fourdst/composition/iterators/composition\_abstract\_iterator.h}}
\mbox{\hyperlink{composition__abstract__iterator_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00001}00001\ \textcolor{preprocessor}{\#pragma\ once}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00002}00002\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00003}00003\ \textcolor{preprocessor}{\#include\ <vector>}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00004}00004\ \textcolor{preprocessor}{\#include\ <iterator>}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00005}00005\ \textcolor{preprocessor}{\#include\ <utility>}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00006}00006\ \textcolor{preprocessor}{\#include\ <compare>}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00007}00007\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00008}00008\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{atomic_species_8h}{fourdst/atomic/atomicSpecies.h}}"{}}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00009}00009\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00010}\mbox{\hyperlink{namespacefourdst_1_1composition_1_1detail}{00010}}\ \textcolor{keyword}{namespace\ }\mbox{\hyperlink{namespacefourdst_1_1composition_1_1detail}{fourdst::composition::detail}}\ \{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00011}00011\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00012}00012\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ IsConst>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00013}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator}{00013}}\ \ \ \ \ \textcolor{keyword}{class\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00014}00014\ \ \ \ \ \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00015}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae232e6536bd96aa9964a8052c9339c1a}{00015}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae232e6536bd96aa9964a8052c9339c1a}{iterator\_category}}\ =\ std::random\_access\_iterator\_tag;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00016}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{00016}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ \ \ =\ std::ptrdiff\_t;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00017}00017\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Returns\ a\ pair\ of\ references.\ Natively\ supports\ structured\ binding\ [sp,\ y]}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00018}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a63f5c58c0dd0a2488f9a28f1d9c7dbd9}{00018}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a63f5c58c0dd0a2488f9a28f1d9c7dbd9}{value\_type}}\ \ \ \ \ \ \ \ =\ std::pair<const\ atomic::Species,\ double>;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00019}00019\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00020}00020\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00021}00021\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Define\ reference\ types\ based\ on\ const-\/ness}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00022}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa4974fbcd3f4b3d387bdcb698b1760e6}{00022}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa4974fbcd3f4b3d387bdcb698b1760e6}{SpeciesRef}}\ =\ \textcolor{keyword}{const}\ \mbox{\hyperlink{structfourdst_1_1atomic_1_1_species}{atomic::Species}}\&;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00023}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_af4da2e6b206ac0f7b1d921fd98450f25}{00023}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_af4da2e6b206ac0f7b1d921fd98450f25}{AbundRef}}\ \ \ =\ std::conditional\_t<IsConst,\ const\ double\&,\ double\&>;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00024}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{00024}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{reference}}\ \ =\ std::pair<SpeciesRef,\ AbundRef>;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00025}00025\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00026}\mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy}{00026}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy}{ArrowProxy}}\ \{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00027}\mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy_ad0776143577dbbcb8d853ebee7781765}{00027}}\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{reference}}\ \mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy_ad0776143577dbbcb8d853ebee7781765}{m\_payload}};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00028}\mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy_aee898d309c5886e348220d673c35df81}{00028}}\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{reference}}*\ \mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy_aee898d309c5886e348220d673c35df81}{operator-\/>}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \&\mbox{\hyperlink{structfourdst_1_1composition_1_1detail_1_1_composition_iterator_1_1_arrow_proxy_ad0776143577dbbcb8d853ebee7781765}{m\_payload}};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00029}00029\ \ \ \ \ \ \ \ \ \};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00030}00030\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00031}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a8d9af7fd266819ed7bb4da38d4f952a5}{00031}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a8d9af7fd266819ed7bb4da38d4f952a5}{pointer}}\ =\ ArrowProxy;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00032}00032\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00033}00033\ \ \ \ \ \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00034}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aed9bfe4d2ddae0b750c962550b93bcbf}{00034}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aed9bfe4d2ddae0b750c962550b93bcbf}{SpecIt}}\ =\ std::vector<atomic::Species>::const\_iterator;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00035}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a396f26d92a6d87a85499a6f5135b7352}{00035}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{using\ }\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a396f26d92a6d87a85499a6f5135b7352}{AbunIt}}\ =\ std::conditional\_t<IsConst,}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00036}00036\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::vector<double>::const\_iterator,}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00037}00037\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::vector<double>::iterator>;}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00038}00038\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00039}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{00039}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aed9bfe4d2ddae0b750c962550b93bcbf}{SpecIt}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00040}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{00040}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a396f26d92a6d87a85499a6f5135b7352}{AbunIt}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00041}00041\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00042}00042\ \ \ \ \ \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00043}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{00043}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}()\ =\ \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00044}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ad6877ffbc5dcfd2b498f112e2a185099}{00044}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ad6877ffbc5dcfd2b498f112e2a185099}{CompositionIterator}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aed9bfe4d2ddae0b750c962550b93bcbf}{SpecIt}}\ sIt,\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a396f26d92a6d87a85499a6f5135b7352}{AbunIt}}\ aIt)\ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}(sIt),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}(aIt)\ \{\}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00045}00045\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00046}00046\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ WasConst,\ \textcolor{keyword}{typename}\ =\ std::enable\_if\_t<IsConst\ \&\&\ !WasConst>>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00047}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_adc43e2e4b4aa222c1eb88e1adcc32cb8}{00047}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_adc43e2e4b4aa222c1eb88e1adcc32cb8}{CompositionIterator}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<WasConst>}}\&\ other)}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00048}00048\ \ \ \ \ \ \ \ \ \ \ \ \ :\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}(other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}()),\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}(other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a19e25dd39d7c6676da47666faef58116}{getAbundanceIt}}())\ \{\}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00049}00049\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00050}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{00050}}\ \ \ \ \ \ \ \ \ [[nodiscard]]\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aed9bfe4d2ddae0b750c962550b93bcbf}{SpecIt}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00051}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a19e25dd39d7c6676da47666faef58116}{00051}}\ \ \ \ \ \ \ \ \ [[nodiscard]]\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a396f26d92a6d87a85499a6f5135b7352}{AbunIt}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a19e25dd39d7c6676da47666faef58116}{getAbundanceIt}}()\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00052}00052\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00053}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a6b9c3c600231743338de576dd412cb8c}{00053}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{reference}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a6b9c3c600231743338de576dd412cb8c}{operator*}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00054}00054\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \{\ *\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}},\ *\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}\ \};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00055}00055\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00056}00056\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00057}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae67c4393a15603e621e7bd30d7268fe3}{00057}}\ \ \ \ \ \ \ \ \ ArrowProxy\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae67c4393a15603e621e7bd30d7268fe3}{operator-\/>}}()\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00058}00058\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ ArrowProxy\{\ **\textcolor{keyword}{this}\ \};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00059}00059\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00060}00060\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00061}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a69e657461059b8d319b83db18a1a3a41}{00061}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa7a1fa49ae5d7b8de165078bce02ebb2}{reference}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a69e657461059b8d319b83db18a1a3a41}{operator[]}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n)\textcolor{keyword}{\ const\ }\{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00062}00062\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \{\ *(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ +\ n),\ *(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}\ +\ n)\ \};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00063}00063\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00064}00064\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00065}00065\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Movement\ -\/-\/-\/}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00066}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a0ecda1668ba394e3a54b4d1b5b3a374e}{00066}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a0ecda1668ba394e3a54b4d1b5b3a374e}{operator++}}()\ \{\ ++\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}};\ ++\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}};\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00067}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a69a1da5e4e9b1ae8f7d6e3a213fe22d3}{00067}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a69a1da5e4e9b1ae8f7d6e3a213fe22d3}{operator++}}(\textcolor{keywordtype}{int})\ \{\ \textcolor{keyword}{auto}\ tmp\ =\ *\textcolor{keyword}{this};\ ++(*this);\ \textcolor{keywordflow}{return}\ tmp;\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00068}00068\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00069}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ad59ec70158a89a7a8e3465849e4b980d}{00069}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ad59ec70158a89a7a8e3465849e4b980d}{operator-\/-\/}}()\ \{\ -\/-\/\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}};\ -\/-\/\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}};\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}\ \textcolor{comment}{//\ FIXED}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00070}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa2ddd5987de5124bc511e5a604eb6356}{00070}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_aa2ddd5987de5124bc511e5a604eb6356}{operator-\/-\/}}(\textcolor{keywordtype}{int})\ \{\ \textcolor{keyword}{auto}\ tmp\ =\ *\textcolor{keyword}{this};\ -\/-\/(*this);\ \textcolor{keywordflow}{return}\ tmp;\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00071}00071\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00072}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a209e18773d997fef6606ec324b605506}{00072}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a209e18773d997fef6606ec324b605506}{operator+=}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n)\ \{\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ +=\ n;\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}\ +=\ n;\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00073}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a1feb5c9ac42680fba1f59515be077062}{00073}}\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a1feb5c9ac42680fba1f59515be077062}{operator-\/=}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n)\ \{\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ -\/=\ n;\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3d29053504e91c7328ebdb044d596550}{m\_aIt}}\ -\/=\ n;\ \textcolor{keywordflow}{return}\ *\textcolor{keyword}{this};\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00074}00074\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00075}00075\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ -\/-\/-\/\ Arithmetic\ -\/-\/-\/}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00076}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3ba3d677d692c81ee4e5a3bb1a3b6d13}{00076}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{friend}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3ba3d677d692c81ee4e5a3bb1a3b6d13}{operator+}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ it,\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n)\ \{\ \textcolor{keywordflow}{return}\ it\ +=\ n;\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00077}00077\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00078}00078\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Commutative\ addition\ (n\ +\ it)}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00079}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae528bf1d5a35963d39556bf9efc3d0a4}{00079}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{friend}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae528bf1d5a35963d39556bf9efc3d0a4}{operator+}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n,\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ it)\ \{\ \textcolor{keywordflow}{return}\ it\ +=\ n;\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00080}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae70d43e1178265d80c051119f259b6e0}{00080}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{friend}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_ae70d43e1178265d80c051119f259b6e0}{operator-\/}}(\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\ it,\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ n)\ \{\ \textcolor{keywordflow}{return}\ it\ -\/=\ n;\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00081}00081\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00082}00082\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ Difference\ between\ iterators}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00083}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a917c6ae8912ee7b45cf416f6c29af215}{00083}}\ \ \ \ \ \ \ \ \ \textcolor{keyword}{friend}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fb602e579f8770e027c986aaecc5100}{difference\_type}}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a917c6ae8912ee7b45cf416f6c29af215}{operator-\/}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ lhs,\ \textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator}}\&\ rhs)\ \{}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00084}00084\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ lhs.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ -\/\ rhs.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00085}00085\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00086}00086\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00087}00087\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00088}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_abbc456f46b7df3c4c76d8cb3ca58b3ce}{00088}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_abbc456f46b7df3c4c76d8cb3ca58b3ce}{operator==}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ ==\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00089}00089\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00090}00090\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00091}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a31007a52d4cdc1b51c8c8e4bc6ff64c6}{00091}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a31007a52d4cdc1b51c8c8e4bc6ff64c6}{operator!=}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ !=\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00092}00092\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00093}00093\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00094}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4e2368ae5f9824356a6773e62de82c3a}{00094}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4e2368ae5f9824356a6773e62de82c3a}{operator<}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ <\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00095}00095\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00096}00096\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00097}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a86579157940d117296d3e2982b98e4d7}{00097}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a86579157940d117296d3e2982b98e4d7}{operator>}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ >\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00098}00098\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00099}00099\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00100}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a9aee8e08c491010401d77058183e9d96}{00100}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a9aee8e08c491010401d77058183e9d96}{operator<=}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ <=\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00101}00101\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00102}00102\ \ \ \ \ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keywordtype}{bool}\ R>}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00103}\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3a2743e694b03437a6c333dd9f53ed86}{00103}}\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a3a2743e694b03437a6c333dd9f53ed86}{operator>=}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a4fa613024e05b77ee3973bcabf736761}{CompositionIterator<R>}}\&\ other)\textcolor{keyword}{\ const\ }\{\ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a624ae61ce7193d043284ff404fb1eae3}{m\_sIt}}\ >=\ other.\mbox{\hyperlink{classfourdst_1_1composition_1_1detail_1_1_composition_iterator_a30ee7e1431e51d0539c2ccdc2804d598}{getSpeciesIt}}();\ \}}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00104}00104\ \ \ \ \ \};}
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00105}00105\ }
\DoxyCodeLine{\Hypertarget{composition__abstract__iterator_8h_source_l00106}00106\ \}}

\end{DoxyCode}
