\hypertarget{a00937}{\section{Open\+Mesh\+:\+:Kernel\+\_\+\+O\+S\+G\+:\+:o\+Property\+T$<$ Geo\+Property $>$ Class Template Reference}
\label{a00937}\index{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T$<$ Geo\+Property $>$@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T$<$ Geo\+Property $>$}}
}


{\ttfamily \#include $<$libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Kernel\+\_\+\+O\+S\+G/\+Property\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Kernel\+\_\+\+O\+S\+G\+:\+:o\+Property\+T$<$ Geo\+Property $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a00937}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00937_acbc1653e06fdb802c666acc919fc79b1}{typedef Geo\+Property {\bfseries property\+\_\+t}}\label{a00937_acbc1653e06fdb802c666acc919fc79b1}

\item 
\hypertarget{a00937_a51fd217fd82f1bcea7351ed6ca812ea6}{typedef property\+\_\+t\+::\+Ptr\+Type {\bfseries property\+\_\+ptr\+\_\+t}}\label{a00937_a51fd217fd82f1bcea7351ed6ca812ea6}

\item 
\hypertarget{a00937_a0ac8ef38a920b2555a25241e5acc6d7e}{typedef property\+\_\+t\+::\+Stored\+Field\+Type {\bfseries field\+\_\+t}}\label{a00937_a0ac8ef38a920b2555a25241e5acc6d7e}

\item 
\hypertarget{a00937_a00d73e914c72898b07630e5d54868e1d}{typedef field\+\_\+t\+::\+Stored\+Type {\bfseries element\+\_\+t}}\label{a00937_a00d73e914c72898b07630e5d54868e1d}

\item 
\hypertarget{a00937_a1ce9172ca80aabd40d7b93a9c68d5766}{typedef field\+\_\+t\+::\+Stored\+Type {\bfseries value\+\_\+type}}\label{a00937_a1ce9172ca80aabd40d7b93a9c68d5766}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00937_a6358ad85c37b8e374bbc5bbde9660fda}{{\bfseries o\+Property\+T} (property\+\_\+ptr\+\_\+t \+\_\+geo\+\_\+prop, const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})}\label{a00937_a6358ad85c37b8e374bbc5bbde9660fda}

\item 
\hypertarget{a00937_a797dfbe8202e7f972ce077863e9c38b6}{{\bfseries o\+Property\+T} (const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})}\label{a00937_a797dfbe8202e7f972ce077863e9c38b6}

\item 
\hypertarget{a00937_ac9ffd31fa982c7b7c4988400e7ee9835}{\hyperlink{a00937}{o\+Property\+T} \& {\bfseries operator=} (const \hyperlink{a00937}{o\+Property\+T} \&\+\_\+rhs)}\label{a00937_ac9ffd31fa982c7b7c4988400e7ee9835}

\item 
\hypertarget{a00937_a76d932e13622eb8a87cfc13058538b53}{virtual void \hyperlink{a00937_a76d932e13622eb8a87cfc13058538b53}{reserve} (size\+\_\+t \+\_\+n)}\label{a00937_a76d932e13622eb8a87cfc13058538b53}

\begin{DoxyCompactList}\small\item\em Reserve memory for n elements. \end{DoxyCompactList}\item 
\hypertarget{a00937_a91c309c4854fb5181326f9747478b5e0}{virtual void \hyperlink{a00937_a91c309c4854fb5181326f9747478b5e0}{resize} (size\+\_\+t \+\_\+n)}\label{a00937_a91c309c4854fb5181326f9747478b5e0}

\begin{DoxyCompactList}\small\item\em Resize storage to hold n elements. \end{DoxyCompactList}\item 
\hypertarget{a00937_ab44f9a631e21f158844394e7a14f8341}{virtual void \hyperlink{a00937_ab44f9a631e21f158844394e7a14f8341}{push\+\_\+back} ()}\label{a00937_ab44f9a631e21f158844394e7a14f8341}

\begin{DoxyCompactList}\small\item\em Extend the number of elements by one. \end{DoxyCompactList}\item 
\hypertarget{a00937_ac098080990152ff86b1cd445dab4eaa8}{virtual void \hyperlink{a00937_ac098080990152ff86b1cd445dab4eaa8}{swap} (size\+\_\+t \+\_\+i0, size\+\_\+t \+\_\+i1)}\label{a00937_ac098080990152ff86b1cd445dab4eaa8}

\begin{DoxyCompactList}\small\item\em Let two elements swap their storage place. \end{DoxyCompactList}\item 
\hypertarget{a00937_ac6126879a2c7b7dc06858702168a6f28}{virtual \hyperlink{a00937}{o\+Property\+T}$<$ property\+\_\+t $>$ $\ast$ \hyperlink{a00937_ac6126879a2c7b7dc06858702168a6f28}{clone} () const }\label{a00937_ac6126879a2c7b7dc06858702168a6f28}

\begin{DoxyCompactList}\small\item\em Return a deep copy of self. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00937_ac0e7839eeeba0528390ccbe9315dd153}{set\+\_\+persistent} (bool \+\_\+yn)
\item 
\hypertarget{a00937_a343ed6ccf1c18c068708936f8413bf2c}{virtual size\+\_\+t \hyperlink{a00937_a343ed6ccf1c18c068708936f8413bf2c}{n\+\_\+elements} () const }\label{a00937_a343ed6ccf1c18c068708936f8413bf2c}

\begin{DoxyCompactList}\small\item\em Number of elements in property. \end{DoxyCompactList}\item 
\hypertarget{a00937_af01714b3c18b264a0ffabc328f6cd258}{virtual size\+\_\+t \hyperlink{a00937_af01714b3c18b264a0ffabc328f6cd258}{element\+\_\+size} () const }\label{a00937_af01714b3c18b264a0ffabc328f6cd258}

\begin{DoxyCompactList}\small\item\em Size of one element in bytes or Unknown\+Size if not known. \end{DoxyCompactList}\item 
\hypertarget{a00937_a3d7ba03c98003ab49c441be61a78269f}{virtual size\+\_\+t \hyperlink{a00937_a3d7ba03c98003ab49c441be61a78269f}{store} (std\+::ostream \&\+\_\+ostr, bool \+\_\+swap) const }\label{a00937_a3d7ba03c98003ab49c441be61a78269f}

\begin{DoxyCompactList}\small\item\em Store self as one binary block. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{a00937_af263bcb96eb989660cd802eaf93cd028}{restore} (std\+::istream \&\+\_\+istr, bool \+\_\+swap)
\item 
\hypertarget{a00937_aaa63de2e07f86498cc680035833773b8}{void \hyperlink{a00937_aaa63de2e07f86498cc680035833773b8}{clear} (void)}\label{a00937_aaa63de2e07f86498cc680035833773b8}

\begin{DoxyCompactList}\small\item\em Clear all elements and free memory. \end{DoxyCompactList}\item 
\hypertarget{a00937_aff8c7fdc5b332dd1503655f6dae165d2}{property\+\_\+ptr\+\_\+t \& {\bfseries osg\+\_\+ptr} ()}\label{a00937_aff8c7fdc5b332dd1503655f6dae165d2}

\item 
\hypertarget{a00937_a7694c7fca2f9e23f36c36a7c2d9fd952}{const property\+\_\+ptr\+\_\+t \& {\bfseries osg\+\_\+ptr} () const }\label{a00937_a7694c7fca2f9e23f36c36a7c2d9fd952}

\item 
\hypertarget{a00937_a4e9a4e09905ac2816af65407791fa841}{const element\+\_\+t $\ast$ {\bfseries data} () const }\label{a00937_a4e9a4e09905ac2816af65407791fa841}

\item 
\hypertarget{a00937_a7243f520e92997bc806db84654870525}{element\+\_\+t \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t idx)}\label{a00937_a7243f520e92997bc806db84654870525}

\item 
\hypertarget{a00937_ad2309c22e77d88da6db96cdbb0533b83}{const element\+\_\+t \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t idx) const }\label{a00937_ad2309c22e77d88da6db96cdbb0533b83}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00937_a6ca288c2e73f0aefcfdd6b2bd2c9b621}{property\+\_\+ptr\+\_\+t {\bfseries data\+\_\+}}\label{a00937_a6ca288c2e73f0aefcfdd6b2bd2c9b621}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00937_a0d91943ecd5b7b40e056705975b9c80c}{void {\bfseries osg\+\_\+init\+\_\+check} (void)}\label{a00937_a0d91943ecd5b7b40e056705975b9c80c}

\item 
\hypertarget{a00937_a7554963a433021f29036e6eaafa52f62}{{\bfseries o\+Property\+T} (const \hyperlink{a00937}{o\+Property\+T} \&)}\label{a00937_a7554963a433021f29036e6eaafa52f62}

\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Geo\+Property$>$class Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T$<$ Geo\+Property $>$}

Property adaptor for Open\+S\+G Geo\+Properties

This class bridges the interfaces of Open\+Mesh properties and Open\+S\+G Geo\+Properties. The Property\+Kernel\+T uses these adaptors to add all necessary property functions to the kernel, while the \hyperlink{a00304}{Attrib\+Kernel\+T} extends the kernel with the standard properites. Finally the \hyperlink{a00296}{Array\+Kernel\+T} completes the kernel build with a specialized version of the garbage collections since the Geo\+Indices require special handling.

\begin{DoxyAttention}{Attention}
Data will be shared with a geometry core when linking a mesh with a Open\+S\+G geometry node using \hyperlink{a03377_a16b8b29bbad427ea962a06fc04f5eb7a}{Kernel\+\_\+\+O\+S\+G\+::bind}. 
\end{DoxyAttention}


Definition at line 92 of file Property\+T.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a00937_af263bcb96eb989660cd802eaf93cd028}{\index{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}!restore@{restore}}
\index{restore@{restore}!Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}}
\subsubsection[{restore}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Geo\+Property$>$ virtual size\+\_\+t {\bf Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}$<$ Geo\+Property $>$\+::restore (
\begin{DoxyParamCaption}
\item[{std\+::istream \&}]{\+\_\+istr, }
\item[{bool}]{\+\_\+swap}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a00937_af263bcb96eb989660cd802eaf93cd028}
Restore self from a binary block. Uses \hyperlink{a00937_a76d932e13622eb8a87cfc13058538b53}{reserve()} to set the size of self before restoring. 

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



Definition at line 180 of file Property\+T.\+hh.

\hypertarget{a00937_ac0e7839eeeba0528390ccbe9315dd153}{\index{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}!set\+\_\+persistent@{set\+\_\+persistent}}
\index{set\+\_\+persistent@{set\+\_\+persistent}!Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}}
\subsubsection[{set\+\_\+persistent}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Geo\+Property$>$ virtual void {\bf Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+Property\+T}$<$ Geo\+Property $>$\+::set\+\_\+persistent (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+yn}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a00937_ac0e7839eeeba0528390ccbe9315dd153}
Enable or disable persistency. Self must be a named property to enable persistency. 

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



Definition at line 166 of file Property\+T.\+hh.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Kernel\+\_\+\+O\+S\+G/Property\+T.\+hh\end{DoxyCompactItemize}
