\hypertarget{classOpenMesh_1_1PropertyT}{}\section{Open\+Mesh\+:\+:PropertyT$<$ T $>$ Class Template Reference}
\label{classOpenMesh_1_1PropertyT}\index{Open\+Mesh\+::\+Property\+T$<$ T $>$@{Open\+Mesh\+::\+Property\+T$<$ T $>$}}


Default property class for any type T.  




{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Utils/\+Property\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:PropertyT$<$ T $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classOpenMesh_1_1PropertyT}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_ac8ee4ae5b121638b1683b20773a3a123}\label{classOpenMesh_1_1PropertyT_ac8ee4ae5b121638b1683b20773a3a123}} 
typedef T {\bfseries Value}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_af16421a5b9363cf91f7b16cfbebb3f1d}\label{classOpenMesh_1_1PropertyT_af16421a5b9363cf91f7b16cfbebb3f1d}} 
typedef std\+::vector$<$ T $>$ {\bfseries vector\+\_\+type}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a0f7bd287f8fc1a2371cf8be298356709}\label{classOpenMesh_1_1PropertyT_a0f7bd287f8fc1a2371cf8be298356709}} 
typedef T {\bfseries value\+\_\+type}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a80a5e0165e69180cd5560145d6c0172e}\label{classOpenMesh_1_1PropertyT_a80a5e0165e69180cd5560145d6c0172e}} 
typedef vector\+\_\+type\+::reference {\bfseries reference}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a38f56e6ab10c40ba58075b6533febed7}\label{classOpenMesh_1_1PropertyT_a38f56e6ab10c40ba58075b6533febed7}} 
typedef vector\+\_\+type\+::const\+\_\+reference {\bfseries const\+\_\+reference}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_ac1c0ebeec3b51c67e7e4a096db62d8ab}\label{classOpenMesh_1_1PropertyT_ac1c0ebeec3b51c67e7e4a096db62d8ab}} 
\hyperlink{classOpenMesh_1_1PropertyT_ac1c0ebeec3b51c67e7e4a096db62d8ab}{PropertyT} (const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{}, const std\+::string \&\+\_\+internal\+\_\+type\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a872b2ac8e65cc6e1b47ba418e1537a41}\label{classOpenMesh_1_1PropertyT_a872b2ac8e65cc6e1b47ba418e1537a41}} 
\hyperlink{classOpenMesh_1_1PropertyT_a872b2ac8e65cc6e1b47ba418e1537a41}{PropertyT} (const \hyperlink{classOpenMesh_1_1PropertyT}{PropertyT} \&\+\_\+rhs)
\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a67f2951c213ec8061ae512da4ee3fb89}\label{classOpenMesh_1_1PropertyT_a67f2951c213ec8061ae512da4ee3fb89}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a67f2951c213ec8061ae512da4ee3fb89}{reserve} (size\+\_\+t \+\_\+n) override
\begin{DoxyCompactList}\small\item\em Reserve memory for n elements. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a7e06024c56e21bbf62b16aad235101bc}\label{classOpenMesh_1_1PropertyT_a7e06024c56e21bbf62b16aad235101bc}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a7e06024c56e21bbf62b16aad235101bc}{resize} (size\+\_\+t \+\_\+n) override
\begin{DoxyCompactList}\small\item\em Resize storage to hold n elements. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a5d9e05e86d99bf11cb19ff2fe879ee27}\label{classOpenMesh_1_1PropertyT_a5d9e05e86d99bf11cb19ff2fe879ee27}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a5d9e05e86d99bf11cb19ff2fe879ee27}{clear} () override
\begin{DoxyCompactList}\small\item\em Clear all elements and free memory. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a1616afdf2a0c44696431171e95df272d}\label{classOpenMesh_1_1PropertyT_a1616afdf2a0c44696431171e95df272d}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a1616afdf2a0c44696431171e95df272d}{push\+\_\+back} () override
\begin{DoxyCompactList}\small\item\em Extend the number of elements by one. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a80e3f5bb08a8d56629cec79ccb45b546}\label{classOpenMesh_1_1PropertyT_a80e3f5bb08a8d56629cec79ccb45b546}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a80e3f5bb08a8d56629cec79ccb45b546}{swap} (size\+\_\+t \+\_\+i0, size\+\_\+t \+\_\+i1) override
\begin{DoxyCompactList}\small\item\em Let two elements swap their storage place. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a27b9a7739005a22f1c11f6093d12a604}\label{classOpenMesh_1_1PropertyT_a27b9a7739005a22f1c11f6093d12a604}} 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a27b9a7739005a22f1c11f6093d12a604}{copy} (size\+\_\+t \+\_\+i0, size\+\_\+t \+\_\+i1) override
\begin{DoxyCompactList}\small\item\em Copy one element to another. \end{DoxyCompactList}\item 
virtual void \hyperlink{classOpenMesh_1_1PropertyT_a319472fa862c14ae79a15be9b943624e}{set\+\_\+persistent} (bool \+\_\+yn) override
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a906d50b1e3a724b4590823b5c87e8478}\label{classOpenMesh_1_1PropertyT_a906d50b1e3a724b4590823b5c87e8478}} 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_a906d50b1e3a724b4590823b5c87e8478}{n\+\_\+elements} () const override
\begin{DoxyCompactList}\small\item\em Number of elements in property. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a43b1c83e7362aef0834d3a95c6f37077}\label{classOpenMesh_1_1PropertyT_a43b1c83e7362aef0834d3a95c6f37077}} 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_a43b1c83e7362aef0834d3a95c6f37077}{element\+\_\+size} () const override
\begin{DoxyCompactList}\small\item\em Size of one element in bytes or Unknown\+Size if not known. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a7cc657624c47bb24c40d4596690cb770}\label{classOpenMesh_1_1PropertyT_a7cc657624c47bb24c40d4596690cb770}} 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_a7cc657624c47bb24c40d4596690cb770}{size\+\_\+of} (void) const override
\begin{DoxyCompactList}\small\item\em Return size of property in bytes. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_a8a6a422ca248fab83e371d825e57ba32}{size\+\_\+of} (size\+\_\+t \+\_\+n\+\_\+elem) const override
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_ad49726a89ca775f8af0018e9360687ff}\label{classOpenMesh_1_1PropertyT_ad49726a89ca775f8af0018e9360687ff}} 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_ad49726a89ca775f8af0018e9360687ff}{store} (std\+::ostream \&\+\_\+ostr, bool \+\_\+swap) const override
\begin{DoxyCompactList}\small\item\em Store self as one binary block. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT_a21a883eb8907a589071a1a9992f08663}{restore} (std\+::istream \&\+\_\+istr, bool \+\_\+swap) override
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a130a438feb9dc1ab77f7074e22824177}\label{classOpenMesh_1_1PropertyT_a130a438feb9dc1ab77f7074e22824177}} 
const T $\ast$ \hyperlink{classOpenMesh_1_1PropertyT_a130a438feb9dc1ab77f7074e22824177}{data} () const
\begin{DoxyCompactList}\small\item\em Get pointer to array (does not work for T==bool) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_ab71162b8f060386c75d8af9df942a874}\label{classOpenMesh_1_1PropertyT_ab71162b8f060386c75d8af9df942a874}} 
vector\+\_\+type \& \hyperlink{classOpenMesh_1_1PropertyT_ab71162b8f060386c75d8af9df942a874}{data\+\_\+vector} ()
\begin{DoxyCompactList}\small\item\em Get reference to property vector (be careful, improper usage, e.\+g. resizing, may crash Open\+Mesh!!!) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a73730f14b36da2a98f1fd36f5c3d7e01}\label{classOpenMesh_1_1PropertyT_a73730f14b36da2a98f1fd36f5c3d7e01}} 
const vector\+\_\+type \& \hyperlink{classOpenMesh_1_1PropertyT_a73730f14b36da2a98f1fd36f5c3d7e01}{data\+\_\+vector} () const
\begin{DoxyCompactList}\small\item\em Const access to property vector. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a342f2a3b3c93620ba30aea94c854ecc3}\label{classOpenMesh_1_1PropertyT_a342f2a3b3c93620ba30aea94c854ecc3}} 
reference \hyperlink{classOpenMesh_1_1PropertyT_a342f2a3b3c93620ba30aea94c854ecc3}{operator\mbox{[}$\,$\mbox{]}} (int \+\_\+idx)
\begin{DoxyCompactList}\small\item\em Access the i\textquotesingle{}th element. No range check is performed! \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_af813dbcf4ac14abe583e3889fd5f50f4}\label{classOpenMesh_1_1PropertyT_af813dbcf4ac14abe583e3889fd5f50f4}} 
const\+\_\+reference \hyperlink{classOpenMesh_1_1PropertyT_af813dbcf4ac14abe583e3889fd5f50f4}{operator\mbox{[}$\,$\mbox{]}} (int \+\_\+idx) const
\begin{DoxyCompactList}\small\item\em Const access to the i\textquotesingle{}th element. No range check is performed! \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a6d362d3604fc1bab2acac818999c8263}\label{classOpenMesh_1_1PropertyT_a6d362d3604fc1bab2acac818999c8263}} 
\hyperlink{classOpenMesh_1_1PropertyT}{PropertyT}$<$ T $>$ $\ast$ \hyperlink{classOpenMesh_1_1PropertyT_a6d362d3604fc1bab2acac818999c8263}{clone} () const override
\begin{DoxyCompactList}\small\item\em Make a copy of self. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_ae696c8cf934efd1002cf80f02702f609}\label{classOpenMesh_1_1PropertyT_ae696c8cf934efd1002cf80f02702f609}} 
vector\+\_\+type {\bfseries data\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$class T$>$\newline
class Open\+Mesh\+::\+Property\+T$<$ T $>$}

Default property class for any type T. 

The default property class for any type T.

The property supports persistency if T is a \char`\"{}fundamental\char`\"{} type\+:
\begin{DoxyItemize}
\item integer fundamental types except bool\+: char, short, int, long, long long (\+\_\+\+\_\+int64 for MS V\+C++) and their unsigned companions.
\item float fundamentals except {\ttfamily long double}\+: float, double
\item Open\+Mesh vector types
\end{DoxyItemize}

Persistency of non-\/fundamental types is supported if and only if a specialization of struct I\+O\+::binary$<$$>$ exists for the wanted type. 

Definition at line 89 of file Property.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a21a883eb8907a589071a1a9992f08663}\label{classOpenMesh_1_1PropertyT_a21a883eb8907a589071a1a9992f08663}} 
\index{Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}!restore@{restore}}
\index{restore@{restore}!Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}}
\subsubsection{\texorpdfstring{restore()}{restore()}}
{\footnotesize\ttfamily template$<$class T$>$ \\
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT}{Open\+Mesh\+::\+PropertyT}$<$ T $>$\+::restore (\begin{DoxyParamCaption}\item[{std\+::istream \&}]{\+\_\+istr,  }\item[{bool}]{\+\_\+swap }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Restore self from a binary block. Uses \hyperlink{classOpenMesh_1_1PropertyT_a67f2951c213ec8061ae512da4ee3fb89}{reserve()} to set the size of self before restoring. 

Implements \hyperlink{classOpenMesh_1_1BaseProperty_a0eb66e2547283ca989179d508fbbed87}{Open\+Mesh\+::\+Base\+Property}.



Definition at line 158 of file Property.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a319472fa862c14ae79a15be9b943624e}\label{classOpenMesh_1_1PropertyT_a319472fa862c14ae79a15be9b943624e}} 
\index{Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}!set\+\_\+persistent@{set\+\_\+persistent}}
\index{set\+\_\+persistent@{set\+\_\+persistent}!Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}}
\subsubsection{\texorpdfstring{set\+\_\+persistent()}{set\_persistent()}}
{\footnotesize\ttfamily template$<$class T$>$ \\
virtual void \hyperlink{classOpenMesh_1_1PropertyT}{Open\+Mesh\+::\+PropertyT}$<$ T $>$\+::set\+\_\+persistent (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+yn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Enable or disable persistency. Self must be a named property to enable persistency. 

Implements \hyperlink{classOpenMesh_1_1BaseProperty_aeac2109212f8489104137a03ffee3962}{Open\+Mesh\+::\+Base\+Property}.



Definition at line 125 of file Property.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1PropertyT_a8a6a422ca248fab83e371d825e57ba32}\label{classOpenMesh_1_1PropertyT_a8a6a422ca248fab83e371d825e57ba32}} 
\index{Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}!size\+\_\+of@{size\+\_\+of}}
\index{size\+\_\+of@{size\+\_\+of}!Open\+Mesh\+::\+PropertyT@{Open\+Mesh\+::\+PropertyT}}
\subsubsection{\texorpdfstring{size\+\_\+of()}{size\_of()}}
{\footnotesize\ttfamily template$<$class T$>$ \\
virtual size\+\_\+t \hyperlink{classOpenMesh_1_1PropertyT}{Open\+Mesh\+::\+PropertyT}$<$ T $>$\+::size\+\_\+of (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{\+\_\+n\+\_\+elem }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Estimated size of property if it has \+\_\+n\+\_\+elem elements. The member returns Unknown\+Size if the size cannot be estimated. 

Reimplemented from \hyperlink{classOpenMesh_1_1BaseProperty_ac13fe04403a9062dff6988b5aadee639}{Open\+Mesh\+::\+Base\+Property}.



Definition at line 145 of file Property.\+hh.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Utils/Property.\+hh\end{DoxyCompactItemize}
