\hypertarget{a01201}{\section{A\+C\+G\+:\+:Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$ Class Template Reference}
\label{a01201}\index{A\+C\+G\+::\+Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$@{A\+C\+G\+::\+Smart\+Tagger\+T$<$ Mesh, E\+Handle, E\+P\+Handle $>$}}
}


Smart Tagger.  




{\ttfamily \#include $<$A\+C\+G/\+Mesh/\+Smart\+Tagger\+T.\+hh$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01201_a16c54d9b8c5335b6eed3ac45f6a1e7f7}{\hyperlink{a01201_a16c54d9b8c5335b6eed3ac45f6a1e7f7}{Smart\+Tagger\+T} (\hyperlink{a01335}{Mesh} \&\+\_\+mesh, unsigned int \+\_\+tag\+\_\+range=1)}\label{a01201_a16c54d9b8c5335b6eed3ac45f6a1e7f7}

\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\hypertarget{a01201_aa55fb61a5ac796311c17d9cf37b77359}{\hyperlink{a01201_aa55fb61a5ac796311c17d9cf37b77359}{$\sim$\+Smart\+Tagger\+T} ()}\label{a01201_aa55fb61a5ac796311c17d9cf37b77359}

\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
void \hyperlink{a01201_a054d42a97e50cef7203b896c9e170cab}{untag\+\_\+all} ()
\begin{DoxyCompactList}\small\item\em untag all elements \end{DoxyCompactList}\item 
void \hyperlink{a01201_a5da841a88f7d269a842b8586f155d66d}{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{a01201_a18689db90f7a89648227e89e9e5a9f99}{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{a01201_aa51433f66c955638428d6cbee47fab74}{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{a01201_a093edda81e1393af1cb3ccafbad3e9cf}{is\+\_\+tagged} (const E\+Handle \+\_\+eh) const 
\begin{DoxyCompactList}\small\item\em overloaded member for boolean tags \end{DoxyCompactList}\item 
void \hyperlink{a01201_a67375f1fe99c78eeaa268a2b6458c9e5}{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 
\hypertarget{a01201_a4a7fc6d73095653bbc6b841688ae245d}{void {\bfseries all\+\_\+tags\+\_\+to\+\_\+zero} ()}\label{a01201_a4a7fc6d73095653bbc6b841688ae245d}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01201_a66bb0741777a145a8781be43c7209926}{\hyperlink{a01335}{Mesh} \& {\bfseries mesh\+\_\+}}\label{a01201_a66bb0741777a145a8781be43c7209926}

\item 
\hypertarget{a01201_af0cd1449f32ae84258f6c60f93d12cf5}{E\+P\+Handle {\bfseries ep\+\_\+tag\+\_\+}}\label{a01201_af0cd1449f32ae84258f6c60f93d12cf5}

\item 
\hypertarget{a01201_a43ddc4e505e5a8f24c86b1d676e4400f}{unsigned int {\bfseries current\+\_\+base\+\_\+}}\label{a01201_a43ddc4e505e5a8f24c86b1d676e4400f}

\item 
\hypertarget{a01201_a515799a437c35fe97ebf377f38c37d61}{unsigned int {\bfseries tag\+\_\+range\+\_\+}}\label{a01201_a515799a437c35fe97ebf377f38c37d61}

\end{DoxyCompactItemize}


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

Smart Tagger. 

A tagger class to be used on \hyperlink{a03368}{Open\+Mesh}. It provides an O(1) reset function for the property.
\begin{DoxyItemize}
\item Smarttagging for vertices\+: \hyperlink{a01202}{Smart\+Tagger\+V\+T};
\item Smarttagging for edges\+: \hyperlink{a01198}{Smart\+Tagger\+E\+T};
\item Smarttagging for faces\+: \hyperlink{a01199}{Smart\+Tagger\+F\+T};
\item Smarttagging for halfedges\+: \hyperlink{a01200}{Smart\+Tagger\+H\+T};
\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 113 of file Smart\+Tagger\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a01201_aa51433f66c955638428d6cbee47fab74}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!get\+\_\+tag@{get\+\_\+tag}}
\index{get\+\_\+tag@{get\+\_\+tag}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{get\+\_\+tag}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ unsigned int {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf Mesh}, E\+Handle, E\+P\+Handle $>$\+::get\+\_\+tag (
\begin{DoxyParamCaption}
\item[{const E\+Handle}]{\+\_\+eh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01201_aa51433f66c955638428d6cbee47fab74}


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 159 of file Smart\+Tagger\+T.\+cc.

\hypertarget{a01201_a093edda81e1393af1cb3ccafbad3e9cf}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!is\+\_\+tagged@{is\+\_\+tagged}}
\index{is\+\_\+tagged@{is\+\_\+tagged}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{is\+\_\+tagged}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ bool {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf Mesh}, E\+Handle, E\+P\+Handle $>$\+::is\+\_\+tagged (
\begin{DoxyParamCaption}
\item[{const E\+Handle}]{\+\_\+eh}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01201_a093edda81e1393af1cb3ccafbad3e9cf}


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 179 of file Smart\+Tagger\+T.\+cc.

\hypertarget{a01201_a18689db90f7a89648227e89e9e5a9f99}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!set\+\_\+tag@{set\+\_\+tag}}
\index{set\+\_\+tag@{set\+\_\+tag}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{set\+\_\+tag}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle, class E\+P\+Handle $>$ void {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf 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]}}}\label{a01201_a18689db90f7a89648227e89e9e5a9f99}


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 142 of file Smart\+Tagger\+T.\+cc.

\hypertarget{a01201_a67375f1fe99c78eeaa268a2b6458c9e5}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!set\+\_\+tag\+\_\+range@{set\+\_\+tag\+\_\+range}}
\index{set\+\_\+tag\+\_\+range@{set\+\_\+tag\+\_\+range}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{set\+\_\+tag\+\_\+range}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ void {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf Mesh}, E\+Handle, E\+P\+Handle $>$\+::set\+\_\+tag\+\_\+range (
\begin{DoxyParamCaption}
\item[{const unsigned int}]{\+\_\+tag\+\_\+range}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01201_a67375f1fe99c78eeaa268a2b6458c9e5}


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 191 of file Smart\+Tagger\+T.\+cc.

\hypertarget{a01201_a054d42a97e50cef7203b896c9e170cab}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!untag\+\_\+all@{untag\+\_\+all}}
\index{untag\+\_\+all@{untag\+\_\+all}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{untag\+\_\+all}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ void {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf Mesh}, E\+Handle, E\+P\+Handle $>$\+::untag\+\_\+all (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01201_a054d42a97e50cef7203b896c9e170cab}


untag all elements 



Definition at line 107 of file Smart\+Tagger\+T.\+cc.

\hypertarget{a01201_a5da841a88f7d269a842b8586f155d66d}{\index{A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}!untag\+\_\+all@{untag\+\_\+all}}
\index{untag\+\_\+all@{untag\+\_\+all}!A\+C\+G\+::\+Smart\+Tagger\+T@{A\+C\+G\+::\+Smart\+Tagger\+T}}
\subsubsection[{untag\+\_\+all}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class Mesh , class E\+Handle , class E\+P\+Handle $>$ void {\bf A\+C\+G\+::\+Smart\+Tagger\+T}$<$ {\bf Mesh}, E\+Handle, E\+P\+Handle $>$\+::untag\+\_\+all (
\begin{DoxyParamCaption}
\item[{const unsigned int}]{\+\_\+new\+\_\+tag\+\_\+range}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01201_a5da841a88f7d269a842b8586f155d66d}


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 131 of file Smart\+Tagger\+T.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Mesh/Smart\+Tagger\+T.\+hh\item 
A\+C\+G/\+Mesh/Smart\+Tagger\+T.\+cc\end{DoxyCompactItemize}
