\hypertarget{group__striter}{
\section{striter: Iterator over substrings of a str.}
\label{group__striter}\index{striter: Iterator over substrings of a str.@{striter: Iterator over substrings of a str.}}
}
\subsection*{Data Structures}
\begin{CompactItemize}
\item 
struct \hyperlink{structstriter}{striter}
\end{CompactItemize}
\subsection*{Defines}
\begin{CompactItemize}
\item 
\#define \hyperlink{group__striter_g3b984e73388f3c5535d51fc4e1081ed7}{str\_\-copyiter}(STR, ITER)~str\_\-copyb(STR,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)
\item 
\#define \hyperlink{group__striter_gf83fc1e3a1bb3c8fa675313c3f763857}{str\_\-catiter}(STR, ITER)~str\_\-catb(STR,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)
\item 
\#define \hyperlink{group__striter_gf531e0fa5b190d8c588dbd190022dee6}{obuf\_\-putiter}(OBUF, ITER)~obuf\_\-write(OBUF,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)
\item 
\#define \hyperlink{group__striter_g0eda5f095414f384376e11bf29bd9329}{striter\_\-loop}(ITER, STR, SEP)~for(striter\_\-start(ITER,STR,SEP);striter\_\-valid(ITER);striter\_\-advance(ITER))
\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item 
void \hyperlink{group__striter_g0c34c11320670c96e85e9ee6d87374b4}{striter\_\-start} (\hyperlink{structstriter}{striter} $\ast$iter, const struct \hyperlink{structstr}{str} $\ast$s, char sep)
\item 
int \hyperlink{group__striter_g88b26577db55ed705de91602f48f0a76}{striter\_\-valid} (\hyperlink{structstriter}{striter} $\ast$)
\item 
int \hyperlink{group__striter_ge42a28441725b60271f0f885bc74aa8a}{striter\_\-advance} (\hyperlink{structstriter}{striter} $\ast$)
\end{CompactItemize}


\subsection{Detailed Description}
\begin{Desc}
\item[Calling Convention]All non-void functions return {\tt 0} (false) if the function failed or the iterator is no longer valid, and non-zero (true) otherwise. \end{Desc}


\subsection{Define Documentation}
\hypertarget{group__striter_gf531e0fa5b190d8c588dbd190022dee6}{
\index{striter@{striter}!obuf_putiter@{obuf\_\-putiter}}
\index{obuf_putiter@{obuf\_\-putiter}!striter@{striter}}
\subsubsection[obuf\_\-putiter]{\setlength{\rightskip}{0pt plus 5cm}\#define obuf\_\-putiter(OBUF, ITER)~obuf\_\-write(OBUF,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)}}
\label{group__striter_gf531e0fa5b190d8c588dbd190022dee6}


Output the current striter substring to an obuf. \hypertarget{group__striter_gf83fc1e3a1bb3c8fa675313c3f763857}{
\index{striter@{striter}!str_catiter@{str\_\-catiter}}
\index{str_catiter@{str\_\-catiter}!striter@{striter}}
\subsubsection[str\_\-catiter]{\setlength{\rightskip}{0pt plus 5cm}\#define str\_\-catiter(STR, ITER)~str\_\-catb(STR,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)}}
\label{group__striter_gf83fc1e3a1bb3c8fa675313c3f763857}


Append the current striter substring to a str. \hypertarget{group__striter_g3b984e73388f3c5535d51fc4e1081ed7}{
\index{striter@{striter}!str_copyiter@{str\_\-copyiter}}
\index{str_copyiter@{str\_\-copyiter}!striter@{striter}}
\subsubsection[str\_\-copyiter]{\setlength{\rightskip}{0pt plus 5cm}\#define str\_\-copyiter(STR, ITER)~str\_\-copyb(STR,(ITER) $\rightarrow$ startptr,(ITER) $\rightarrow$ len)}}
\label{group__striter_g3b984e73388f3c5535d51fc4e1081ed7}


Assign the current striter substring to a str. \hypertarget{group__striter_g0eda5f095414f384376e11bf29bd9329}{
\index{striter@{striter}!striter_loop@{striter\_\-loop}}
\index{striter_loop@{striter\_\-loop}!striter@{striter}}
\subsubsection[striter\_\-loop]{\setlength{\rightskip}{0pt plus 5cm}\#define striter\_\-loop(ITER, STR, SEP)~for(striter\_\-start(ITER,STR,SEP);striter\_\-valid(ITER);striter\_\-advance(ITER))}}
\label{group__striter_g0eda5f095414f384376e11bf29bd9329}


Loop macro; use in place of {\tt for}(...) 

\subsection{Function Documentation}
\hypertarget{group__striter_ge42a28441725b60271f0f885bc74aa8a}{
\index{striter@{striter}!striter_advance@{striter\_\-advance}}
\index{striter_advance@{striter\_\-advance}!striter@{striter}}
\subsubsection[striter\_\-advance]{\setlength{\rightskip}{0pt plus 5cm}int striter\_\-advance (\hyperlink{structstriter}{striter} $\ast$ {\em iter})}}
\label{group__striter_ge42a28441725b60271f0f885bc74aa8a}


Advance a striter to the next substring. \hypertarget{group__striter_g0c34c11320670c96e85e9ee6d87374b4}{
\index{striter@{striter}!striter_start@{striter\_\-start}}
\index{striter_start@{striter\_\-start}!striter@{striter}}
\subsubsection[striter\_\-start]{\setlength{\rightskip}{0pt plus 5cm}void striter\_\-start (\hyperlink{structstriter}{striter} $\ast$ {\em iter}, const struct \hyperlink{structstr}{str} $\ast$ {\em s}, char {\em sep})}}
\label{group__striter_g0c34c11320670c96e85e9ee6d87374b4}


Start (initialize) a striter. \hypertarget{group__striter_g88b26577db55ed705de91602f48f0a76}{
\index{striter@{striter}!striter_valid@{striter\_\-valid}}
\index{striter_valid@{striter\_\-valid}!striter@{striter}}
\subsubsection[striter\_\-valid]{\setlength{\rightskip}{0pt plus 5cm}int striter\_\-valid (\hyperlink{structstriter}{striter} $\ast$ {\em iter})}}
\label{group__striter_g88b26577db55ed705de91602f48f0a76}


Determine if a striter is valid (after initialization or advancing). 