\hypertarget{a09056}{}\section{Open\+Mesh\+:\+:Smart\+TaggerT$<$ Mesh, E\+Handle, E\+P\+Handle $>$ Class Template Reference}
\label{a09056}\index{Open\+Mesh\+::\+Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$@{Open\+Mesh\+::\+Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$}}


Smart Tagger.  




{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Smart\+Tagger/\+Smart\+Tagger\+T.\+hh$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09056_aedb0c12ad24bc112bbc8b032ace6352d}\label{a09056_aedb0c12ad24bc112bbc8b032ace6352d}} 
\hyperlink{a09056_aedb0c12ad24bc112bbc8b032ace6352d}{Smart\+TaggerT} (\hyperlink{a08764}{Mesh} \&\+\_\+mesh, unsigned int \+\_\+tag\+\_\+range=1)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09056_ae250256ec76cf93fba39e497877c451b}\label{a09056_ae250256ec76cf93fba39e497877c451b}} 
\hyperlink{a09056_ae250256ec76cf93fba39e497877c451b}{$\sim$\+Smart\+TaggerT} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
void \hyperlink{a09056_aad12b72675587c5b8a1471877dd2db79}{untag\+\_\+all} ()
\begin{DoxyCompactList}\small\item\em untag all elements \end{DoxyCompactList}\item 
void \hyperlink{a09056_aeb3d2fee18a5111d2deb08a4b3b1d09b}{untag\+\_\+all} (const unsigned int \+\_\+new\+\_\+tag\+\_\+range)
\begin{DoxyCompactList}\small\item\em untag all elements and set new tag\+\_\+range \end{DoxyCompactList}\item 
void \hyperlink{a09056_a0edad4928e899822241648cbaa2f31f6}{set\+\_\+tag} (const E\+Handle \+\_\+eh, unsigned int \+\_\+tag=1)
\begin{DoxyCompactList}\small\item\em set tag to a value in \mbox{[}0..tag\+\_\+range\mbox{]} \end{DoxyCompactList}\item 
unsigned int \hyperlink{a09056_a0a3cb6334274bc91d02b061586c849c6}{get\+\_\+tag} (const E\+Handle \+\_\+eh) const
\begin{DoxyCompactList}\small\item\em get tag value in range \mbox{[}0..tag\+\_\+range\mbox{]} \end{DoxyCompactList}\item 
bool \hyperlink{a09056_a0cb0379768cbe3ffbd6602d13f99d26c}{is\+\_\+tagged} (const E\+Handle \+\_\+eh) const
\begin{DoxyCompactList}\small\item\em overloaded member for boolean tags \end{DoxyCompactList}\item 
void \hyperlink{a09056_a2a0485089b01c7563f34866f8b45e0cd}{set\+\_\+tag\+\_\+range} (const unsigned int \+\_\+tag\+\_\+range)
\begin{DoxyCompactList}\small\item\em set new tag range and untag\+\_\+all \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09056_a2ec5c3740f0ef9b8ba47f176e3948446}\label{a09056_a2ec5c3740f0ef9b8ba47f176e3948446}} 
void {\bfseries all\+\_\+tags\+\_\+to\+\_\+zero} ()
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09056_a4ae1a305927428be7eb904815b99b36d}\label{a09056_a4ae1a305927428be7eb904815b99b36d}} 
\hyperlink{a08764}{Mesh} \& {\bfseries mesh\+\_\+}
\item 
\mbox{\Hypertarget{a09056_ae7a88f350b5206abbd35cfa7b4974825}\label{a09056_ae7a88f350b5206abbd35cfa7b4974825}} 
E\+P\+Handle {\bfseries ep\+\_\+tag\+\_\+}
\item 
\mbox{\Hypertarget{a09056_aba0731c32113226c6be8b193e031015b}\label{a09056_aba0731c32113226c6be8b193e031015b}} 
unsigned int {\bfseries current\+\_\+base\+\_\+}
\item 
\mbox{\Hypertarget{a09056_a0d8a849dd409c36da2c527698567a7eb}\label{a09056_a0d8a849dd409c36da2c527698567a7eb}} 
unsigned int {\bfseries tag\+\_\+range\+\_\+}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class Mesh, class E\+Handle, class E\+P\+Handle$>$\newline
class Open\+Mesh\+::\+Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$}

Smart Tagger. 

A tagger class to be used on \hyperlink{a06210}{Open\+Mesh}. It provides an O(1) reset function for the property.
\begin{DoxyItemize}
\item Smarttagging for vertices\+: \hyperlink{a09040}{Smart\+Tagger\+VT};
\item Smarttagging for edges\+: \hyperlink{a09044}{Smart\+Tagger\+ET};
\item Smarttagging for faces\+: \hyperlink{a09048}{Smart\+Tagger\+FT};
\item Smarttagging for halfedges\+: \hyperlink{a09052}{Smart\+Tagger\+HT};
\end{DoxyItemize}

Usage\+:


\begin{DoxyCode}
SmartTaggerVT< MeshType >* tagger = \textcolor{keyword}{new} SmartTaggerVT< MeshType > (mesh\_);

\textcolor{comment}{// Reset tagged flag on all vertices}
tagger.untag\_all();

\textcolor{comment}{// Check if something is tagged}
\textcolor{keywordtype}{bool} tag = tagger.is\_tagged(vh);

\textcolor{comment}{// Set tagged:}
tagger.set\_tag(vh);
\end{DoxyCode}
 

Definition at line 124 of file Smart\+Tagger\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a09056_a0a3cb6334274bc91d02b061586c849c6}\label{a09056_a0a3cb6334274bc91d02b061586c849c6}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!get\+\_\+tag@{get\+\_\+tag}}
\index{get\+\_\+tag@{get\+\_\+tag}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{get\+\_\+tag()}{get\_tag()}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ \\
unsigned int \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::get\+\_\+tag (\begin{DoxyParamCaption}\item[{const E\+Handle}]{\+\_\+eh }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



get tag value in range \mbox{[}0..tag\+\_\+range\mbox{]} 


\begin{DoxyParams}{Parameters}
{\em \+\_\+eh} & Edge handle for the tag \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Current tag value at that edge 
\end{DoxyReturn}


Definition at line 141 of file Smart\+Tagger\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a09056_a0cb0379768cbe3ffbd6602d13f99d26c}\label{a09056_a0cb0379768cbe3ffbd6602d13f99d26c}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!is\+\_\+tagged@{is\+\_\+tagged}}
\index{is\+\_\+tagged@{is\+\_\+tagged}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{is\+\_\+tagged()}{is\_tagged()}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ \\
bool \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::is\+\_\+tagged (\begin{DoxyParamCaption}\item[{const E\+Handle}]{\+\_\+eh }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



overloaded member for boolean tags 


\begin{DoxyParams}{Parameters}
{\em \+\_\+eh} & Edge handle for the tag \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Current tag value at that edge 
\end{DoxyReturn}


Definition at line 161 of file Smart\+Tagger\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a09056_a0edad4928e899822241648cbaa2f31f6}\label{a09056_a0edad4928e899822241648cbaa2f31f6}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!set\+\_\+tag@{set\+\_\+tag}}
\index{set\+\_\+tag@{set\+\_\+tag}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{set\+\_\+tag()}{set\_tag()}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ \\
void \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::set\+\_\+tag (\begin{DoxyParamCaption}\item[{const E\+Handle}]{\+\_\+eh,  }\item[{unsigned int}]{\+\_\+tag = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



set tag to a value in \mbox{[}0..tag\+\_\+range\mbox{]} 


\begin{DoxyParams}{Parameters}
{\em \+\_\+eh} & Edge handle for the tag \\
\hline
{\em \+\_\+tag} & Tag value \\
\hline
\end{DoxyParams}


Definition at line 124 of file Smart\+Tagger\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a09056_a2a0485089b01c7563f34866f8b45e0cd}\label{a09056_a2a0485089b01c7563f34866f8b45e0cd}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!set\+\_\+tag\+\_\+range@{set\+\_\+tag\+\_\+range}}
\index{set\+\_\+tag\+\_\+range@{set\+\_\+tag\+\_\+range}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{set\+\_\+tag\+\_\+range()}{set\_tag\_range()}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ \\
void \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::set\+\_\+tag\+\_\+range (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+tag\+\_\+range }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



set new tag range and untag\+\_\+all 

Set new tag range and reset tagger


\begin{DoxyParams}{Parameters}
{\em \+\_\+tag\+\_\+range} & New tag range of the tagger \\
\hline
\end{DoxyParams}


Definition at line 173 of file Smart\+Tagger\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a09056_aad12b72675587c5b8a1471877dd2db79}\label{a09056_aad12b72675587c5b8a1471877dd2db79}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!untag\+\_\+all@{untag\+\_\+all}}
\index{untag\+\_\+all@{untag\+\_\+all}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{untag\+\_\+all()}{untag\_all()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ \\
void \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::untag\+\_\+all (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



untag all elements 



Definition at line 89 of file Smart\+Tagger\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{a09056_aeb3d2fee18a5111d2deb08a4b3b1d09b}\label{a09056_aeb3d2fee18a5111d2deb08a4b3b1d09b}} 
\index{Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}!untag\+\_\+all@{untag\+\_\+all}}
\index{untag\+\_\+all@{untag\+\_\+all}!Open\+Mesh\+::\+Smart\+TaggerT@{Open\+Mesh\+::\+Smart\+TaggerT}}
\subsubsection{\texorpdfstring{untag\+\_\+all()}{untag\_all()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ \\
void \hyperlink{a09056}{Open\+Mesh\+::\+Smart\+TaggerT}$<$ \hyperlink{a08764}{Mesh}, E\+Handle, E\+P\+Handle $>$\+::untag\+\_\+all (\begin{DoxyParamCaption}\item[{const unsigned int}]{\+\_\+new\+\_\+tag\+\_\+range }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



untag all elements and set new tag\+\_\+range 


\begin{DoxyParams}{Parameters}
{\em \+\_\+new\+\_\+tag\+\_\+range} & New tag range of the tagger \\
\hline
\end{DoxyParams}


Definition at line 113 of file Smart\+Tagger\+T\+\_\+impl.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Smart\+Tagger/Smart\+Tagger\+T.\+hh\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Smart\+Tagger/Smart\+Tagger\+T\+\_\+impl.\+hh\end{DoxyCompactItemize}
