\hypertarget{a00333}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:Open\+Mesh\+:\+:Base\+Property Class Reference}
\label{a00333}\index{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}}
}


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

Inheritance diagram for A\+C\+G\+:\+:Scene\+Graph\+:\+:Open\+Mesh\+:\+:Base\+Property\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=1.127895cm]{a00333}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a00333_a93b3998d32259ec5a0271d6b97170135}{Base\+Property} (const std\+::string \&\+\_\+name=\char`\"{}$<$unknown$>$\char`\"{})
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\hypertarget{a00333_a2d2f27e4464485cc948df8c263ad2c40}{\hyperlink{a00333_a2d2f27e4464485cc948df8c263ad2c40}{Base\+Property} (const \hyperlink{a00333}{Base\+Property} \&\+\_\+rhs)}\label{a00333_a2d2f27e4464485cc948df8c263ad2c40}

\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hypertarget{a00333_a0300c84f0875b04b6bfe3d73d55c410a}{virtual \hyperlink{a00333_a0300c84f0875b04b6bfe3d73d55c410a}{$\sim$\+Base\+Property} ()}\label{a00333_a0300c84f0875b04b6bfe3d73d55c410a}

\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\hypertarget{a00333_a99476d3d10a76da1d4940f65d235d7b0}{virtual void \hyperlink{a00333_a99476d3d10a76da1d4940f65d235d7b0}{reserve} (size\+\_\+t \+\_\+n)=0}\label{a00333_a99476d3d10a76da1d4940f65d235d7b0}

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

\begin{DoxyCompactList}\small\item\em Resize storage to hold n elements. \end{DoxyCompactList}\item 
\hypertarget{a00333_ae6caa6edc131d50e06fa76ec84b1e038}{virtual void \hyperlink{a00333_ae6caa6edc131d50e06fa76ec84b1e038}{clear} ()=0}\label{a00333_ae6caa6edc131d50e06fa76ec84b1e038}

\begin{DoxyCompactList}\small\item\em Clear all elements and free memory. \end{DoxyCompactList}\item 
\hypertarget{a00333_a59370e2655b012513595ba6da5261805}{virtual void \hyperlink{a00333_a59370e2655b012513595ba6da5261805}{push\+\_\+back} ()=0}\label{a00333_a59370e2655b012513595ba6da5261805}

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

\begin{DoxyCompactList}\small\item\em Let two elements swap their storage place. \end{DoxyCompactList}\item 
\hypertarget{a00333_a6539aef1b2dcef3a47fc23de3dd00837}{virtual void \hyperlink{a00333_a6539aef1b2dcef3a47fc23de3dd00837}{copy} (size\+\_\+t \+\_\+io, size\+\_\+t \+\_\+i1)=0}\label{a00333_a6539aef1b2dcef3a47fc23de3dd00837}

\begin{DoxyCompactList}\small\item\em Copy one element to another. \end{DoxyCompactList}\item 
\hypertarget{a00333_a5d96eb120e5b6399bdceb5e60588bacc}{virtual \hyperlink{a00333}{Base\+Property} $\ast$ \hyperlink{a00333_a5d96eb120e5b6399bdceb5e60588bacc}{clone} () const =0}\label{a00333_a5d96eb120e5b6399bdceb5e60588bacc}

\begin{DoxyCompactList}\small\item\em Return a deep copy of self. \end{DoxyCompactList}\item 
\hypertarget{a00333_a9102a03b964c9cda4269efbca964a218}{const std\+::string \& \hyperlink{a00333_a9102a03b964c9cda4269efbca964a218}{name} () const }\label{a00333_a9102a03b964c9cda4269efbca964a218}

\begin{DoxyCompactList}\small\item\em Return the name of the property. \end{DoxyCompactList}\item 
\hypertarget{a00333_a88a0f23b3581aa7a5baa3135a3b1d7a0}{virtual void {\bfseries stats} (std\+::ostream \&\+\_\+ostr) const }\label{a00333_a88a0f23b3581aa7a5baa3135a3b1d7a0}

\item 
\hypertarget{a00333_a6507e07da26da5e6d4db254825a66ef4}{bool \hyperlink{a00333_a6507e07da26da5e6d4db254825a66ef4}{persistent} (void) const }\label{a00333_a6507e07da26da5e6d4db254825a66ef4}

\begin{DoxyCompactList}\small\item\em Returns true if the persistent flag is enabled else false. \end{DoxyCompactList}\item 
virtual void \hyperlink{a00333_a2d986f28e6c09cbb028e5e189c15a5db}{set\+\_\+persistent} (bool \+\_\+yn)=0
\item 
\hypertarget{a00333_ab64e36b55559c0b390c45356fd580786}{virtual size\+\_\+t \hyperlink{a00333_ab64e36b55559c0b390c45356fd580786}{n\+\_\+elements} () const =0}\label{a00333_ab64e36b55559c0b390c45356fd580786}

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

\begin{DoxyCompactList}\small\item\em Size of one element in bytes or Unknown\+Size if not known. \end{DoxyCompactList}\item 
\hypertarget{a00333_a1e5e48b700972cf5a93b0df30228bf82}{virtual size\+\_\+t \hyperlink{a00333_a1e5e48b700972cf5a93b0df30228bf82}{size\+\_\+of} () const }\label{a00333_a1e5e48b700972cf5a93b0df30228bf82}

\begin{DoxyCompactList}\small\item\em Return size of property in bytes. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{a00333_aa5eebab2b4996b6ebae21c2d9a42b3df}{size\+\_\+of} (size\+\_\+t \+\_\+n\+\_\+elem) const 
\item 
\hypertarget{a00333_a62c30899a6862cf73a4a547c04ffc996}{virtual size\+\_\+t \hyperlink{a00333_a62c30899a6862cf73a4a547c04ffc996}{store} (std\+::ostream \&\+\_\+ostr, bool \+\_\+swap) const =0}\label{a00333_a62c30899a6862cf73a4a547c04ffc996}

\begin{DoxyCompactList}\small\item\em Store self as one binary block. \end{DoxyCompactList}\item 
virtual size\+\_\+t \hyperlink{a00333_a99986d18bb42d1ff958fa0529d2a0e86}{restore} (std\+::istream \&\+\_\+istr, bool \+\_\+swap)=0
\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00333_a0de4c79656f7e1f60a251af667d722a5}{static const size\+\_\+t \hyperlink{a00333_a0de4c79656f7e1f60a251af667d722a5}{Unknown\+Size} = size\+\_\+t(-\/1)}\label{a00333_a0de4c79656f7e1f60a251af667d722a5}

\begin{DoxyCompactList}\small\item\em Indicates an error when a size is returned by a member. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00333_a5f38dfb71661bf02eb18f027b92ad803}{{\footnotesize template$<$typename T $>$ }\\void {\bfseries check\+\_\+and\+\_\+set\+\_\+persistent} (bool \+\_\+yn)}\label{a00333_a5f38dfb71661bf02eb18f027b92ad803}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a00333_a693643a0947012c9c410feb8d810aab1}{std\+::string {\bfseries name\+\_\+}}\label{a00333_a693643a0947012c9c410feb8d810aab1}

\item 
\hypertarget{a00333_aa4c536a1a492cff145c583cf9afe228c}{bool {\bfseries persistent\+\_\+}}\label{a00333_aa4c536a1a492cff145c583cf9afe228c}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstract class defining the basic interface of a dynamic property. 

Definition at line 65 of file Mesh\+Node2\+T.\+cc.



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a00333_a93b3998d32259ec5a0271d6b97170135}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}!Base\+Property@{Base\+Property}}
\index{Base\+Property@{Base\+Property}!A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}}
\subsubsection[{Base\+Property}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property\+::\+Base\+Property (
\begin{DoxyParamCaption}
\item[{const std\+::string \&}]{\+\_\+name = {\ttfamily \char`\"{}$<$unknown$>$\char`\"{}}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a00333_a93b3998d32259ec5a0271d6b97170135}


Default constructor. 

In Open\+Mesh all mesh data is stored in so-\/called properties. We distinuish between standard properties, which can be defined at compile time using the Attributes in the traits definition and at runtime using the request property functions defined in one of the kernels.

If the property should be stored along with the default properties in the O\+M-\/format one must name the property and enable the persistant flag with \hyperlink{a00333_a2d986f28e6c09cbb028e5e189c15a5db}{set\+\_\+persistent()}.


\begin{DoxyParams}{Parameters}
{\em \+\_\+name} & Optional textual name for the property. \\
\hline
\end{DoxyParams}


Definition at line 88 of file Mesh\+Node2\+T.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a00333_a99986d18bb42d1ff958fa0529d2a0e86}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}!restore@{restore}}
\index{restore@{restore}!A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}}
\subsubsection[{restore}]{\setlength{\rightskip}{0pt plus 5cm}virtual size\+\_\+t A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property\+::restore (
\begin{DoxyParamCaption}
\item[{std\+::istream \&}]{\+\_\+istr, }
\item[{bool}]{\+\_\+swap}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{a00333_a99986d18bb42d1ff958fa0529d2a0e86}
Restore self from a binary block. Uses \hyperlink{a00333_a99476d3d10a76da1d4940f65d235d7b0}{reserve()} to set the size of self before restoring. 

Implemented in \hyperlink{a01045_a4c3997737a9795b5c6d8c2788ddf7cca}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ std\+::string $>$}, \hyperlink{a01043_acd8cecb22386ca6988a38092d84e8011}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ bool $>$}, and \hyperlink{a01040_ab31759c84f08444f7581b14e8448ec1c}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ T $>$}.

\hypertarget{a00333_a2d986f28e6c09cbb028e5e189c15a5db}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}!set\+\_\+persistent@{set\+\_\+persistent}}
\index{set\+\_\+persistent@{set\+\_\+persistent}!A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}}
\subsubsection[{set\+\_\+persistent}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property\+::set\+\_\+persistent (
\begin{DoxyParamCaption}
\item[{bool}]{\+\_\+yn}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{a00333_a2d986f28e6c09cbb028e5e189c15a5db}
Enable or disable persistency. Self must be a named property to enable persistency. 

Implemented in \hyperlink{a01045_ab13103daccd3565fe734410fddd33c63}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ std\+::string $>$}, \hyperlink{a01043_a5c3880a24928789ae51c916979b9643f}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ bool $>$}, and \hyperlink{a01040_a20c96e29825da5786e9ed70a8278956d}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ T $>$}.

\hypertarget{a00333_aa5eebab2b4996b6ebae21c2d9a42b3df}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}!size\+\_\+of@{size\+\_\+of}}
\index{size\+\_\+of@{size\+\_\+of}!A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property@{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property}}
\subsubsection[{size\+\_\+of}]{\setlength{\rightskip}{0pt plus 5cm}virtual size\+\_\+t A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Base\+Property\+::size\+\_\+of (
\begin{DoxyParamCaption}
\item[{size\+\_\+t}]{\+\_\+n\+\_\+elem}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a00333_aa5eebab2b4996b6ebae21c2d9a42b3df}
Estimated size of property if it has \+\_\+n\+\_\+elem elements. The member returns Unknown\+Size if the size cannot be estimated. 

Reimplemented in \hyperlink{a01045_aeada782b333a79228d8a0c5a0a974ad7}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ std\+::string $>$}, \hyperlink{a01043_aa6478bd0c975de9583938a9c8dd9fbc3}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ bool $>$}, and \hyperlink{a01040_a5f32f89e4df3f106656cf0fe4d4bf671}{A\+C\+G\+::\+Scene\+Graph\+::\+Open\+Mesh\+::\+Property\+T$<$ T $>$}.



Definition at line 152 of file Mesh\+Node2\+T.\+cc.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Scenegraph/Mesh\+Node2\+T.\+cc\end{DoxyCompactItemize}
