\hypertarget{group__Eina__Cxx__Value__Group}{\section{Generic Value Storage}
\label{group__Eina__Cxx__Value__Group}\index{Generic Value Storage@{Generic Value Storage}}
}


Abstracts generic data storage and access to it in an extensible and efficient way.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ T, Enable $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits__base}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits\+\_\+base$<$ T $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits__aux}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits\+\_\+aux$<$ T $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits__aux_3_01uint64__t_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits\+\_\+aux$<$ uint64\+\_\+t $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01unsigned_01char_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ unsigned char $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01unsigned_01short_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ unsigned short $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01unsigned_01int_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ unsigned int $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01unsigned_01long_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ unsigned long $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01char_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ char $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01short_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ short $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01int_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ int $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01long_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ long $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01float_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ float $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01double_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ double $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01stringshare_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ stringshare $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01std_1_1string_01_4}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ std\+::string $>$}
\item 
struct \hyperlink{structefl_1_1eina_1_1__eina__value__traits_3_01T[]_00_01typename_01eina_1_1enable__if_3_01eina_1190eb20710eede81ab2a1c109ac5426b}{efl\+::eina\+::\+\_\+eina\+\_\+value\+\_\+traits$<$ T\mbox{[}$\,$\mbox{]}, typename eina\+::enable\+\_\+if$<$ eina\+::is\+\_\+pod$<$ T $>$\+::value $>$\+::type $>$}
\item 
class \hyperlink{classefl_1_1eina_1_1value}{efl\+::eina\+::value}
\begin{DoxyCompactList}\small\item\em Store generic value. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename T $>$ }\\T \hyperlink{group__Eina__Cxx__Value__Group_ga8adbb624faa2bf9e084c3b02ab88c0fd}{efl\+::eina\+::get} (value const \&v)
\item 
void \hyperlink{group__Eina__Cxx__Value__Group_gad44f59bcb6444b75beb73488b2620aec}{efl\+::eina\+::swap} (value \&lhs, value \&rhs)
\begin{DoxyCompactList}\small\item\em Swap the stored values between the given {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_ga6877bc80cd1d49ac32f93f72759ace44}{efl\+::eina\+::operator==} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em Compare if the stored values are equal. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_gab98468e6a00ad3e6b26051ca86ece723}{efl\+::eina\+::operator$<$} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em Less than comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_gac576343619bfa51dacd84140dd31fb4d}{efl\+::eina\+::operator$>$} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em More than comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_ga5eabef6a4f3ebf44ba6cc79f5799d307}{efl\+::eina\+::operator$<$=} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em Less than or equal comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_ga8f924e3889b4a293c6e195b4d5db921f}{efl\+::eina\+::operator$>$=} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em More than or equal comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. \end{DoxyCompactList}\item 
bool \hyperlink{group__Eina__Cxx__Value__Group_ga6486c618c4ce54c43f89a6197eafc924}{efl\+::eina\+::operator!=} (value const \&lhs, value const \&rhs)
\begin{DoxyCompactList}\small\item\em Compare if the stored values are different. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstracts generic data storage and access to it in an extensible and efficient way. 

It is meant for simple data types, providing uniform access, useful to exchange data preserving their types. 

\subsection{Function Documentation}
\hypertarget{group__Eina__Cxx__Value__Group_ga8adbb624faa2bf9e084c3b02ab88c0fd}{\index{Generic Value Storage@{Generic Value Storage}!get@{get}}
\index{get@{get}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{get}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ T efl\+::eina\+::get (
\begin{DoxyParamCaption}
\item[{value const \&}]{v}
\end{DoxyParamCaption}
)}}\label{group__Eina__Cxx__Value__Group_ga8adbb624faa2bf9e084c3b02ab88c0fd}

\begin{DoxyParams}{Parameters}
{\em v} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object. \\
\hline
{\em T} & Type of the value stored. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Copy of the value stored in {\ttfamily v}. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em $<$tt$>$eina\+::system\+\_\+error$<$/tt$>$} & with error the code {\ttfamily E\+I\+N\+A\+\_\+\+E\+R\+R\+O\+R\+\_\+\+V\+A\+L\+U\+E\+\_\+\+F\+A\+I\+L\+E\+D} if {\ttfamily T} doesn't match the type of the value currently stored. Or {\ttfamily eina\+::system\+\_\+error} with an internal Eina error code if the operation fails for another reason.\\
\hline
\end{DoxyExceptions}
This function returns the value stored in {\ttfamily v}. The type of the value must be specified via the template parameter {\ttfamily T}, and must match the current stored value type. \hypertarget{group__Eina__Cxx__Value__Group_gad44f59bcb6444b75beb73488b2620aec}{\index{Generic Value Storage@{Generic Value Storage}!swap@{swap}}
\index{swap@{swap}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{swap}]{\setlength{\rightskip}{0pt plus 5cm}void efl\+::eina\+::swap (
\begin{DoxyParamCaption}
\item[{value \&}]{lhs, }
\item[{value \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_gad44f59bcb6444b75beb73488b2620aec}


Swap the stored values between the given {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. 


\begin{DoxyParams}{Parameters}
{\em lhs} & First {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object. \\
\hline
{\em rhs} & Second {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object. \\
\hline
\end{DoxyParams}


References efl\+::eina\+::value\+::swap().



Referenced by efl\+::eina\+::value\+::swap().

\hypertarget{group__Eina__Cxx__Value__Group_ga6877bc80cd1d49ac32f93f72759ace44}{\index{Generic Value Storage@{Generic Value Storage}!operator==@{operator==}}
\index{operator==@{operator==}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator== (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_ga6877bc80cd1d49ac32f93f72759ace44}


Compare if the stored values are equal. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if the stored values are of the same type and equals in content, {\ttfamily false} otherwise. 
\end{DoxyReturn}


References eina\+\_\+value\+\_\+compare(), and efl\+::eina\+::value\+::type\+\_\+info().

\hypertarget{group__Eina__Cxx__Value__Group_gab98468e6a00ad3e6b26051ca86ece723}{\index{Generic Value Storage@{Generic Value Storage}!operator$<$@{operator$<$}}
\index{operator$<$@{operator$<$}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator$<$}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator$<$ (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_gab98468e6a00ad3e6b26051ca86ece723}


Less than comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
For objects holding values of the same type, returns {\ttfamily true} if {\ttfamily lhs} value is less than {\ttfamily rhs} value. For objects holding values of different types, returns {\ttfamily true} if the type identifier of {\ttfamily lhs} comes before the type indentifier of {\ttfamily rhs}. Returns {\ttfamily false} in all other cases. 
\end{DoxyReturn}


References eina\+\_\+value\+\_\+compare(), and efl\+::eina\+::value\+::type\+\_\+info().

\hypertarget{group__Eina__Cxx__Value__Group_gac576343619bfa51dacd84140dd31fb4d}{\index{Generic Value Storage@{Generic Value Storage}!operator$>$@{operator$>$}}
\index{operator$>$@{operator$>$}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator$>$}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator$>$ (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_gac576343619bfa51dacd84140dd31fb4d}


More than comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
For objects holding values of the same type, returns {\ttfamily true} if {\ttfamily lhs} value is more than {\ttfamily rhs} value. For objects holding values of different types, returns {\ttfamily true} if the type identifier of {\ttfamily lhs} comes after the type indentifier of {\ttfamily rhs}. Returns {\ttfamily false} in all other cases. 
\end{DoxyReturn}


References eina\+\_\+value\+\_\+compare(), and efl\+::eina\+::value\+::type\+\_\+info().

\hypertarget{group__Eina__Cxx__Value__Group_ga5eabef6a4f3ebf44ba6cc79f5799d307}{\index{Generic Value Storage@{Generic Value Storage}!operator$<$=@{operator$<$=}}
\index{operator$<$=@{operator$<$=}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator$<$=}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator$<$= (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_ga5eabef6a4f3ebf44ba6cc79f5799d307}


Less than or equal comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
For objects holding values of the same type, returns {\ttfamily true} if {\ttfamily lhs} value is less than or equal to {\ttfamily rhs} value. For objects holding values of different types, returns {\ttfamily true} if the type identifier of {\ttfamily lhs} comes before the type indentifier of {\ttfamily rhs}. Returns {\ttfamily false} in all other cases. 
\end{DoxyReturn}
\hypertarget{group__Eina__Cxx__Value__Group_ga8f924e3889b4a293c6e195b4d5db921f}{\index{Generic Value Storage@{Generic Value Storage}!operator$>$=@{operator$>$=}}
\index{operator$>$=@{operator$>$=}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator$>$=}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator$>$= (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_ga8f924e3889b4a293c6e195b4d5db921f}


More than or equal comparison between two {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} objects. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
For objects holding values of the same type, returns {\ttfamily true} if {\ttfamily lhs} value is more than or equal to {\ttfamily rhs} value. For objects holding values of different types, returns {\ttfamily true} if the type identifier of {\ttfamily lhs} comes after the type indentifier of {\ttfamily rhs}. Returns {\ttfamily false} in all other cases. 
\end{DoxyReturn}
\hypertarget{group__Eina__Cxx__Value__Group_ga6486c618c4ce54c43f89a6197eafc924}{\index{Generic Value Storage@{Generic Value Storage}!operator"!=@{operator"!=}}
\index{operator"!=@{operator"!=}!Generic Value Storage@{Generic Value Storage}}
\subsubsection[{operator"!=}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::operator!= (
\begin{DoxyParamCaption}
\item[{value const \&}]{lhs, }
\item[{value const \&}]{rhs}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{group__Eina__Cxx__Value__Group_ga6486c618c4ce54c43f89a6197eafc924}


Compare if the stored values are different. 


\begin{DoxyParams}{Parameters}
{\em lhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the left side of the expression. \\
\hline
{\em rhs} & {\ttfamily \hyperlink{classefl_1_1eina_1_1value}{eina\+::value}} object at the right side of the expression. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} if the value types are different or if the value of {\ttfamily lhs} is different from the value of , {\ttfamily false} otherwise. 
\end{DoxyReturn}
