\hypertarget{a09020}{}\section{Open\+Mesh\+:\+:Kernel\+\_\+\+O\+SG\+:\+:o\+PropertyT$<$ Geo\+Property $>$ Class Template Reference}
\label{a09020}\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 $<$Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Kernel\+\_\+\+O\+S\+G/\+Property\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Kernel\+\_\+\+O\+SG\+:\+:o\+PropertyT$<$ Geo\+Property $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{a09020}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09020_acbc1653e06fdb802c666acc919fc79b1}\label{a09020_acbc1653e06fdb802c666acc919fc79b1}} 
typedef Geo\+Property {\bfseries property\+\_\+t}
\item 
\mbox{\Hypertarget{a09020_a51fd217fd82f1bcea7351ed6ca812ea6}\label{a09020_a51fd217fd82f1bcea7351ed6ca812ea6}} 
typedef property\+\_\+t\+::\+Ptr\+Type {\bfseries property\+\_\+ptr\+\_\+t}
\item 
\mbox{\Hypertarget{a09020_a0ac8ef38a920b2555a25241e5acc6d7e}\label{a09020_a0ac8ef38a920b2555a25241e5acc6d7e}} 
typedef property\+\_\+t\+::\+Stored\+Field\+Type {\bfseries field\+\_\+t}
\item 
\mbox{\Hypertarget{a09020_a00d73e914c72898b07630e5d54868e1d}\label{a09020_a00d73e914c72898b07630e5d54868e1d}} 
typedef field\+\_\+t\+::\+Stored\+Type {\bfseries element\+\_\+t}
\item 
\mbox{\Hypertarget{a09020_a1ce9172ca80aabd40d7b93a9c68d5766}\label{a09020_a1ce9172ca80aabd40d7b93a9c68d5766}} 
typedef field\+\_\+t\+::\+Stored\+Type {\bfseries value\+\_\+type}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09020_a6358ad85c37b8e374bbc5bbde9660fda}\label{a09020_a6358ad85c37b8e374bbc5bbde9660fda}} 
{\bfseries o\+PropertyT} (property\+\_\+ptr\+\_\+t \+\_\+geo\+\_\+prop, const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\item 
\mbox{\Hypertarget{a09020_a797dfbe8202e7f972ce077863e9c38b6}\label{a09020_a797dfbe8202e7f972ce077863e9c38b6}} 
{\bfseries o\+PropertyT} (const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\item 
\mbox{\Hypertarget{a09020_ac9ffd31fa982c7b7c4988400e7ee9835}\label{a09020_ac9ffd31fa982c7b7c4988400e7ee9835}} 
\hyperlink{a09020}{o\+PropertyT} \& {\bfseries operator=} (const \hyperlink{a09020}{o\+PropertyT} \&\+\_\+rhs)
\item 
\mbox{\Hypertarget{a09020_a76d932e13622eb8a87cfc13058538b53}\label{a09020_a76d932e13622eb8a87cfc13058538b53}} 
virtual void \hyperlink{a09020_a76d932e13622eb8a87cfc13058538b53}{reserve} (size\+\_\+t \+\_\+n)
\begin{DoxyCompactList}\small\item\em Reserve memory for n elements. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_a91c309c4854fb5181326f9747478b5e0}\label{a09020_a91c309c4854fb5181326f9747478b5e0}} 
virtual void \hyperlink{a09020_a91c309c4854fb5181326f9747478b5e0}{resize} (size\+\_\+t \+\_\+n)
\begin{DoxyCompactList}\small\item\em Resize storage to hold n elements. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_ab44f9a631e21f158844394e7a14f8341}\label{a09020_ab44f9a631e21f158844394e7a14f8341}} 
virtual void \hyperlink{a09020_ab44f9a631e21f158844394e7a14f8341}{push\+\_\+back} ()
\begin{DoxyCompactList}\small\item\em Extend the number of elements by one. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_ac098080990152ff86b1cd445dab4eaa8}\label{a09020_ac098080990152ff86b1cd445dab4eaa8}} 
virtual void \hyperlink{a09020_ac098080990152ff86b1cd445dab4eaa8}{swap} (size\+\_\+t \+\_\+i0, size\+\_\+t \+\_\+i1)
\begin{DoxyCompactList}\small\item\em Let two elements swap their storage place. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_a76070a181626945bfb31afe7611ce960}\label{a09020_a76070a181626945bfb31afe7611ce960}} 
virtual \hyperlink{a09020}{o\+PropertyT}$<$ property\+\_\+t $>$ $\ast$ \hyperlink{a09020_a76070a181626945bfb31afe7611ce960}{clone} () const
\begin{DoxyCompactList}\small\item\em Return a deep copy of self. \end{DoxyCompactList}\item 
virtual void \hyperlink{a09020_ac0e7839eeeba0528390ccbe9315dd153}{set\+\_\+persistent} (bool \+\_\+yn)
\item 
\mbox{\Hypertarget{a09020_a1f342209a0d6d043582651b161a297e4}\label{a09020_a1f342209a0d6d043582651b161a297e4}} 
virtual size\+\_\+t \hyperlink{a09020_a1f342209a0d6d043582651b161a297e4}{n\+\_\+elements} () const
\begin{DoxyCompactList}\small\item\em Number of elements in property. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_ad304097b132a114a207881af1b50feaf}\label{a09020_ad304097b132a114a207881af1b50feaf}} 
virtual size\+\_\+t \hyperlink{a09020_ad304097b132a114a207881af1b50feaf}{element\+\_\+size} () const
\begin{DoxyCompactList}\small\item\em Size of one element in bytes or Unknown\+Size if not known. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_a0b44d27b7e7d2e48b4be2f3b5bbeef18}\label{a09020_a0b44d27b7e7d2e48b4be2f3b5bbeef18}} 
virtual size\+\_\+t \hyperlink{a09020_a0b44d27b7e7d2e48b4be2f3b5bbeef18}{store} (std\+::ostream \&\+\_\+ostr, bool \+\_\+swap) const
\begin{DoxyCompactList}\small\item\em Store self as one binary block. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{a09020_af263bcb96eb989660cd802eaf93cd028}{restore} (std\+::istream \&\+\_\+istr, bool \+\_\+swap)
\item 
\mbox{\Hypertarget{a09020_aaa63de2e07f86498cc680035833773b8}\label{a09020_aaa63de2e07f86498cc680035833773b8}} 
void \hyperlink{a09020_aaa63de2e07f86498cc680035833773b8}{clear} (void)
\begin{DoxyCompactList}\small\item\em Clear all elements and free memory. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a09020_aff8c7fdc5b332dd1503655f6dae165d2}\label{a09020_aff8c7fdc5b332dd1503655f6dae165d2}} 
property\+\_\+ptr\+\_\+t \& {\bfseries osg\+\_\+ptr} ()
\item 
\mbox{\Hypertarget{a09020_a1640369f1d2018e57f33926ce4ca6057}\label{a09020_a1640369f1d2018e57f33926ce4ca6057}} 
const property\+\_\+ptr\+\_\+t \& {\bfseries osg\+\_\+ptr} () const
\item 
\mbox{\Hypertarget{a09020_a694029f514b6d2dd7574b83af49aa417}\label{a09020_a694029f514b6d2dd7574b83af49aa417}} 
const element\+\_\+t $\ast$ {\bfseries data} () const
\item 
\mbox{\Hypertarget{a09020_a7243f520e92997bc806db84654870525}\label{a09020_a7243f520e92997bc806db84654870525}} 
element\+\_\+t \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t idx)
\item 
\mbox{\Hypertarget{a09020_a4f3063f1e49bae29cdc74920a60e34ff}\label{a09020_a4f3063f1e49bae29cdc74920a60e34ff}} 
const element\+\_\+t \& {\bfseries operator\mbox{[}$\,$\mbox{]}} (size\+\_\+t idx) const
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09020_a6ca288c2e73f0aefcfdd6b2bd2c9b621}\label{a09020_a6ca288c2e73f0aefcfdd6b2bd2c9b621}} 
property\+\_\+ptr\+\_\+t {\bfseries data\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a09020_a0d91943ecd5b7b40e056705975b9c80c}\label{a09020_a0d91943ecd5b7b40e056705975b9c80c}} 
void {\bfseries osg\+\_\+init\+\_\+check} (void)
\item 
\mbox{\Hypertarget{a09020_a7554963a433021f29036e6eaafa52f62}\label{a09020_a7554963a433021f29036e6eaafa52f62}} 
{\bfseries o\+PropertyT} (const \hyperlink{a09020}{o\+PropertyT} \&)
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


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

Property adaptor for Open\+SG Geo\+Properties

This class bridges the interfaces of Open\+Mesh properties and Open\+SG Geo\+Properties. The Property\+KernelT uses these adaptors to add all necessary property functions to the kernel, while the \hyperlink{a09004}{Attrib\+KernelT} extends the kernel with the standard properites. Finally the \hyperlink{a09000}{Array\+KernelT} 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\+SG geometry node using \hyperlink{a06216_a16b8b29bbad427ea962a06fc04f5eb7a}{Kernel\+\_\+\+O\+S\+G\+::bind}. 
\end{DoxyAttention}


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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a09020_af263bcb96eb989660cd802eaf93cd028}\label{a09020_af263bcb96eb989660cd802eaf93cd028}} 
\index{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}!restore@{restore}}
\index{restore@{restore}!Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}}
\subsubsection{\texorpdfstring{restore()}{restore()}}
{\footnotesize\ttfamily template$<$typename Geo\+Property$>$ \\
virtual size\+\_\+t \hyperlink{a09020}{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}$<$ Geo\+Property $>$\+::restore (\begin{DoxyParamCaption}\item[{std\+::istream \&}]{\+\_\+istr,  }\item[{bool}]{\+\_\+swap }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

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

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



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

\mbox{\Hypertarget{a09020_ac0e7839eeeba0528390ccbe9315dd153}\label{a09020_ac0e7839eeeba0528390ccbe9315dd153}} 
\index{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}!set\+\_\+persistent@{set\+\_\+persistent}}
\index{set\+\_\+persistent@{set\+\_\+persistent}!Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT@{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}}
\subsubsection{\texorpdfstring{set\+\_\+persistent()}{set\_persistent()}}
{\footnotesize\ttfamily template$<$typename Geo\+Property$>$ \\
virtual void \hyperlink{a09020}{Open\+Mesh\+::\+Kernel\+\_\+\+O\+S\+G\+::o\+PropertyT}$<$ Geo\+Property $>$\+::set\+\_\+persistent (\begin{DoxyParamCaption}\item[{bool}]{\+\_\+yn }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}

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

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



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



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