\hypertarget{structefl_1_1eina_1_1stringshare}{\section{efl\+:\+:eina\+:\+:stringshare Struct Reference}
\label{structefl_1_1eina_1_1stringshare}\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
}


Stringshare class.  


\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{structefl_1_1eina_1_1stringshare_ac11d06b4148f48a71b9b02cb94e87112}{typedef char {\bfseries value\+\_\+type}}\label{structefl_1_1eina_1_1stringshare_ac11d06b4148f48a71b9b02cb94e87112}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a66451304ed45e2907b522f46f18a706a}{typedef value\+\_\+type \& {\bfseries reference}}\label{structefl_1_1eina_1_1stringshare_a66451304ed45e2907b522f46f18a706a}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_aa24563d2f1f27ad5579cbac9fb02b272}{typedef value\+\_\+type const \& {\bfseries const\+\_\+reference}}\label{structefl_1_1eina_1_1stringshare_aa24563d2f1f27ad5579cbac9fb02b272}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_af52c617e75bd3bb8db8e0604f62f5722}{typedef value\+\_\+type $\ast$ {\bfseries pointer}}\label{structefl_1_1eina_1_1stringshare_af52c617e75bd3bb8db8e0604f62f5722}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a9d96cbbff06b17d3fa6e38c04351da78}{typedef value\+\_\+type const $\ast$ {\bfseries const\+\_\+pointer}}\label{structefl_1_1eina_1_1stringshare_a9d96cbbff06b17d3fa6e38c04351da78}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_aaaaa48b58d250da3916adf6d124aa50d}{typedef const\+\_\+pointer {\bfseries const\+\_\+iterator}}\label{structefl_1_1eina_1_1stringshare_aaaaa48b58d250da3916adf6d124aa50d}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_aaba437878a4ef41416bed083bd03afe2}{typedef std\+::reverse\+\_\+iterator\\*
$<$ const\+\_\+iterator $>$ {\bfseries const\+\_\+reverse\+\_\+iterator}}\label{structefl_1_1eina_1_1stringshare_aaba437878a4ef41416bed083bd03afe2}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a899c36295effae7fa034fcccdcfe0f7f}{typedef std\+::ptrdiff\+\_\+t {\bfseries difference\+\_\+type}}\label{structefl_1_1eina_1_1stringshare_a899c36295effae7fa034fcccdcfe0f7f}

\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a19bee8acc704ccc99af99999b34af68d}{typedef std\+::size\+\_\+t {\bfseries size\+\_\+type}}\label{structefl_1_1eina_1_1stringshare_a19bee8acc704ccc99af99999b34af68d}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structefl_1_1eina_1_1stringshare_a321973820a8283c7d0e719f36ee4cfab}{stringshare} ()
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare} (const char $\ast$str)
\begin{DoxyCompactList}\small\item\em Share an instance of the given string wrapped by the newly created {\ttfamily stringshare} object. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare_a71a60df3b85affb8d74faaf1d58a5210}{stringshare} (char $\ast$str, \hyperlink{structefl_1_1eina_1_1steal__stringshare__ref__t}{steal\+\_\+stringshare\+\_\+ref\+\_\+t})
\begin{DoxyCompactList}\small\item\em Create an {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}} that steal the ownership of the given shared string. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Input\+Iterator $>$ }\\\hyperlink{structefl_1_1eina_1_1stringshare_a69dddcfe4405e919f445b572224f1764}{stringshare} (Input\+Iterator i, Input\+Iterator j, typename eina\+::enable\+\_\+if$<$!eina\+::is\+\_\+integral$<$ Input\+Iterator $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} \&\&!\hyperlink{structefl_1_1eina_1_1is__contiguous__iterator}{eina\+::is\+\_\+contiguous\+\_\+iterator}$<$ Input\+Iterator $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Share the string between the iterator. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Contiguous\+Memory\+Iterator $>$ }\\\hyperlink{structefl_1_1eina_1_1stringshare_a766c6d900962e2e3aac9e10f9dd1fe77}{stringshare} (Contiguous\+Memory\+Iterator i, Contiguous\+Memory\+Iterator j, typename eina\+::enable\+\_\+if$<$ \hyperlink{structefl_1_1eina_1_1is__contiguous__iterator}{eina\+::is\+\_\+contiguous\+\_\+iterator}$<$ Contiguous\+Memory\+Iterator $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Share the string between the iterator. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare_ab6254b9f844b828a351b3c131818d816}{$\sim$stringshare} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare_a5b8807f502528460690f05c681be937d}{stringshare} (\hyperlink{structefl_1_1eina_1_1stringshare}{stringshare} const \&other)
\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare}{stringshare} \& \hyperlink{structefl_1_1eina_1_1stringshare_ad77bba4c24e85689246e9e31be9bc139}{operator=} (\hyperlink{structefl_1_1eina_1_1stringshare}{stringshare} const \&other)
\begin{DoxyCompactList}\small\item\em Replace the current shared string. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1stringshare}{stringshare} \& \hyperlink{structefl_1_1eina_1_1stringshare_a58586955566bd10aef89aa55406ba7c8}{operator=} (const char $\ast$c\+\_\+string)
\begin{DoxyCompactList}\small\item\em Replace the current shared string. \end{DoxyCompactList}\item 
const\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a916b097f161f4942a51972e8a852b73d}{begin} () const 
\begin{DoxyCompactList}\small\item\em Get a constant iterator pointing to the first character of the string. \end{DoxyCompactList}\item 
const\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_aa35ad287e2bdd0d233d6daca54de6e98}{end} () const 
\begin{DoxyCompactList}\small\item\em Get a constant iterator to the position following the last character of the string. \end{DoxyCompactList}\item 
const\+\_\+reverse\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a071a52178688ec5ecdf66432610fd5d7}{rbegin} () const 
\begin{DoxyCompactList}\small\item\em Get a constant reverse iterator pointing to the reverse begin of the string. \end{DoxyCompactList}\item 
const\+\_\+reverse\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a1d688b079a5cd6a981f127a35a5a9f95}{rend} () const 
\begin{DoxyCompactList}\small\item\em Get a constant reverse iterator pointing to the reverse end of the string. \end{DoxyCompactList}\item 
const\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a812668c85b6bf6c7b7e5a2e3918a5743}{cbegin} () const 
\begin{DoxyCompactList}\small\item\em Get a constant iterator pointing to the first character of the string. \end{DoxyCompactList}\item 
const\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a6d30abb38a46c7f8f7fa72b91025c515}{cend} () const 
\begin{DoxyCompactList}\small\item\em Get a constant iterator to the position following the last character of the string. \end{DoxyCompactList}\item 
const\+\_\+reverse\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_ad48430cded7eb2fb0b3abfc99d9ff6b9}{crbegin} () const 
\begin{DoxyCompactList}\small\item\em Get a constant reverse iterator pointing to the reverse begin of the string. \end{DoxyCompactList}\item 
const\+\_\+reverse\+\_\+iterator \hyperlink{structefl_1_1eina_1_1stringshare_a8ab2e56430056a002389a6399ebd279e}{crend} () const 
\begin{DoxyCompactList}\small\item\em Get a constant reverse iterator pointing to the reverse end of the string. \end{DoxyCompactList}\item 
size\+\_\+type \hyperlink{structefl_1_1eina_1_1stringshare_a7ba267cd465a39b91e3f3fba7a8e3f6a}{size} () const 
\begin{DoxyCompactList}\small\item\em Get the size of the string. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a63acd2e5708b99b4d0e1fd2f3d977a47}{size\+\_\+type \hyperlink{structefl_1_1eina_1_1stringshare_a63acd2e5708b99b4d0e1fd2f3d977a47}{length} () const }\label{structefl_1_1eina_1_1stringshare_a63acd2e5708b99b4d0e1fd2f3d977a47}

\begin{DoxyCompactList}\small\item\em Alias to \hyperlink{structefl_1_1eina_1_1stringshare_a7ba267cd465a39b91e3f3fba7a8e3f6a}{size()} const. \end{DoxyCompactList}\item 
size\+\_\+type \hyperlink{structefl_1_1eina_1_1stringshare_aebbd7732c064c316d618b52862f86c02}{max\+\_\+size} () const 
\begin{DoxyCompactList}\small\item\em Get the maximum number of characters a string can hold. \end{DoxyCompactList}\item 
bool \hyperlink{structefl_1_1eina_1_1stringshare_a21788aed98e7f44e2f59f4160035cd3b}{empty} () const 
\begin{DoxyCompactList}\small\item\em Check if the string has no characters. \end{DoxyCompactList}\item 
const\+\_\+reference \hyperlink{structefl_1_1eina_1_1stringshare_a9d1be51b50a87b8019e96b4c24c00d40}{operator\mbox{[}$\,$\mbox{]}} (size\+\_\+type i) const 
\begin{DoxyCompactList}\small\item\em Get the character at the given position. \end{DoxyCompactList}\item 
const\+\_\+reference \hyperlink{structefl_1_1eina_1_1stringshare_aaf16b7529c6bad41603ffc8a873339b9}{at} (size\+\_\+type i) const 
\begin{DoxyCompactList}\small\item\em Get the character at the given position. \end{DoxyCompactList}\item 
const\+\_\+reference \hyperlink{structefl_1_1eina_1_1stringshare_a1d22d60d40f4e4bcd6e42515334eac46}{back} () const 
\begin{DoxyCompactList}\small\item\em Get the last character of the string. \end{DoxyCompactList}\item 
const\+\_\+reference \hyperlink{structefl_1_1eina_1_1stringshare_ac66201f10a578bc5c077f8ea80b7b14e}{front} () const 
\begin{DoxyCompactList}\small\item\em Get the first character of the string. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a0f1c07e1cdff948c0a62d05a54f0c447}{void \hyperlink{structefl_1_1eina_1_1stringshare_a0f1c07e1cdff948c0a62d05a54f0c447}{swap} (\hyperlink{structefl_1_1eina_1_1stringshare}{stringshare} \&other)}\label{structefl_1_1eina_1_1stringshare_a0f1c07e1cdff948c0a62d05a54f0c447}

\begin{DoxyCompactList}\small\item\em Swap shared strings with other {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}}. \end{DoxyCompactList}\item 
const char $\ast$ \hyperlink{structefl_1_1eina_1_1stringshare_a22ad05c67d231fcb22b069eb6ebe9306}{c\+\_\+str} () const 
\begin{DoxyCompactList}\small\item\em Get the c-\/like shared string currently associated with the object. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eina_1_1stringshare_a90bbab657c4240cbc692335ab9362b43}{const char $\ast$ \hyperlink{structefl_1_1eina_1_1stringshare_a90bbab657c4240cbc692335ab9362b43}{data} () const }\label{structefl_1_1eina_1_1stringshare_a90bbab657c4240cbc692335ab9362b43}

\begin{DoxyCompactList}\small\item\em Alias to \hyperlink{structefl_1_1eina_1_1stringshare_a22ad05c67d231fcb22b069eb6ebe9306}{c\+\_\+str()} const. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Stringshare class. 

It provides an O\+O\+P interface to the {\ttfamily Eina\+\_\+\+Stringshare} functions, and automatically take care of sharing the string upon construction and deleting it upon destruction using the R\+A\+I\+I programming idiom.

It also provides additional member functions to facilitate the access to the string content, much like a S\+T\+L string. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{structefl_1_1eina_1_1stringshare_a321973820a8283c7d0e719f36ee4cfab}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a321973820a8283c7d0e719f36ee4cfab}


Default constructor. 

Creates a new object holding an shared empty string. \begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}
\hypertarget{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{str}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}


Share an instance of the given string wrapped by the newly created {\ttfamily stringshare} object. 


\begin{DoxyParams}{Parameters}
{\em $<$tt$>$\+N\+U\+L\+L$<$/tt$>$-\/terminated} & string to be shared.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}} object that shares the given string and wraps the shared pointer, providing an O\+O\+P interface to the string content. If the string is already shared this constructor simple increment its reference counter and wraps the shared pointer.

\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a71a60df3b85affb8d74faaf1d58a5210}{stringshare(char$\ast$ str, steal\+\_\+stringshare\+\_\+ref\+\_\+t)} 
\end{DoxySeeAlso}
\hypertarget{structefl_1_1eina_1_1stringshare_a71a60df3b85affb8d74faaf1d58a5210}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str, }
\item[{{\bf steal\+\_\+stringshare\+\_\+ref\+\_\+t}}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a71a60df3b85affb8d74faaf1d58a5210}


Create an {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}} that steal the ownership of the given shared string. 


\begin{DoxyParams}{Parameters}
{\em str} & Shared string whose ownership should be stolen.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}} object that steals the ownership of the given shared string. At destruction time, the reference counter for the shared string will be decremented.

The second parameter is an empty object of a specific type that should be supplied to explicitly inform that this is the intended constructor; and to differentiate this from \hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)}.

\begin{DoxyWarning}{Warning}
{\ttfamily str} should be a string that was previously shared (most likely by an call to the native {\ttfamily eina\+\_\+stringshare\+\_\+add} function). If the string is not shared, upon destruction time bad things will happen, likely a segmentation fault.
\end{DoxyWarning}
\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}
\hypertarget{structefl_1_1eina_1_1stringshare_a69dddcfe4405e919f445b572224f1764}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Input\+Iterator $>$ efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
\item[{Input\+Iterator}]{i, }
\item[{Input\+Iterator}]{j, }
\item[{typename eina\+::enable\+\_\+if$<$!eina\+::is\+\_\+integral$<$ Input\+Iterator $>$\+::{\bf value} \&\&!{\bf eina\+::is\+\_\+contiguous\+\_\+iterator}$<$ Input\+Iterator $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a69dddcfe4405e919f445b572224f1764}


Share the string between the iterator. 


\begin{DoxyParams}{Parameters}
{\em i} & Iterator to the initial position of the string (inclusive). \\
\hline
{\em j} & Iterator to the final position of the string (exclusive). \\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
The ending position (pointed by {\ttfamily j}) is not considered. 
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}


References eina\+\_\+stringshare\+\_\+add().

\hypertarget{structefl_1_1eina_1_1stringshare_a766c6d900962e2e3aac9e10f9dd1fe77}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Contiguous\+Memory\+Iterator $>$ efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
\item[{Contiguous\+Memory\+Iterator}]{i, }
\item[{Contiguous\+Memory\+Iterator}]{j, }
\item[{typename eina\+::enable\+\_\+if$<$ {\bf eina\+::is\+\_\+contiguous\+\_\+iterator}$<$ Contiguous\+Memory\+Iterator $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a766c6d900962e2e3aac9e10f9dd1fe77}


Share the string between the iterator. 


\begin{DoxyParams}{Parameters}
{\em i} & Iterator to the initial position of the string (inclusive). \\
\hline
{\em j} & Iterator to the final position of the string (exclusive). \\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
The ending position (pointed by {\ttfamily j}) is not considered. 
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}
\hypertarget{structefl_1_1eina_1_1stringshare_ab6254b9f844b828a351b3c131818d816}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!````~stringshare@{$\sim$stringshare}}
\index{````~stringshare@{$\sim$stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{$\sim$stringshare}]{\setlength{\rightskip}{0pt plus 5cm}efl\+::eina\+::stringshare\+::$\sim$stringshare (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_ab6254b9f844b828a351b3c131818d816}


Destructor. 

Delete the shared string.

Decreases the reference counter associated with the shared string. If the reference counter reaches 0, the memory associated with the string is freed. 

References eina\+\_\+stringshare\+\_\+del().

\hypertarget{structefl_1_1eina_1_1stringshare_a5b8807f502528460690f05c681be937d}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!stringshare@{stringshare}}
\index{stringshare@{stringshare}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{stringshare}]{\setlength{\rightskip}{0pt plus 5cm}efl\+::eina\+::stringshare\+::stringshare (
\begin{DoxyParamCaption}
\item[{{\bf stringshare} const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a5b8807f502528460690f05c681be937d}


Copy constructor. 

Creates a new {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}} associated with the same shared string. 
\begin{DoxyParams}{Parameters}
{\em other} & Another {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}}.\\
\hline
\end{DoxyParams}
This constructor increments the reference counter to the shared string associated with {\ttfamily other}.

\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}


\subsection{Member Function Documentation}
\hypertarget{structefl_1_1eina_1_1stringshare_ad77bba4c24e85689246e9e31be9bc139}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf stringshare}\& efl\+::eina\+::stringshare\+::operator= (
\begin{DoxyParamCaption}
\item[{{\bf stringshare} const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_ad77bba4c24e85689246e9e31be9bc139}


Replace the current shared string. 


\begin{DoxyParams}{Parameters}
{\em other} & Another {\ttfamily \hyperlink{structefl_1_1eina_1_1stringshare}{eina\+::stringshare}}.\\
\hline
\end{DoxyParams}
This operator replaces the current shared string by the string shared by {\ttfamily other}. The reference counter of the older shared string is decremented (the string is released if needed) and the reference counter of the given shared string is incremented. \hypertarget{structefl_1_1eina_1_1stringshare_a58586955566bd10aef89aa55406ba7c8}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}{\bf stringshare}\& efl\+::eina\+::stringshare\+::operator= (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{c\+\_\+string}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a58586955566bd10aef89aa55406ba7c8}


Replace the current shared string. 


\begin{DoxyParams}{Parameters}
{\em c\+\_\+string} & {\ttfamily N\+U\+L\+L}-\/terminated string.\\
\hline
\end{DoxyParams}
This operator replaces the shared string currently associated with this object by a shared instance of {\ttfamily c\+\_\+string}.

\begin{DoxySeeAlso}{See also}
\hyperlink{structefl_1_1eina_1_1stringshare_a83e552bde77322601c593b5c8d6b72cf}{stringshare(const char$\ast$ str)} 
\end{DoxySeeAlso}
\hypertarget{structefl_1_1eina_1_1stringshare_a916b097f161f4942a51972e8a852b73d}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!begin@{begin}}
\index{begin@{begin}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{begin}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+iterator efl\+::eina\+::stringshare\+::begin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a916b097f161f4942a51972e8a852b73d}


Get a constant iterator pointing to the first character of the string. 

\begin{DoxyReturn}{Returns}
Constant iterator to the initial position of the string.
\end{DoxyReturn}
This member function returns a constant iterator pointing to the first character of the string. If the string is empty the iterator is equal to the one returned by \hyperlink{structefl_1_1eina_1_1stringshare_aa35ad287e2bdd0d233d6daca54de6e98}{end()} const. 

Referenced by cbegin(), and rend().

\hypertarget{structefl_1_1eina_1_1stringshare_aa35ad287e2bdd0d233d6daca54de6e98}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!end@{end}}
\index{end@{end}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{end}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+iterator efl\+::eina\+::stringshare\+::end (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_aa35ad287e2bdd0d233d6daca54de6e98}


Get a constant iterator to the position following the last character of the string. 

\begin{DoxyReturn}{Returns}
Constant iterator to the final position of the string.
\end{DoxyReturn}
This member function returns an constant iterator to the position following the last character in the string. If the string is empty the iterator is equal to the one returned by \hyperlink{structefl_1_1eina_1_1stringshare_a916b097f161f4942a51972e8a852b73d}{begin()}.

\begin{DoxyNote}{Note}
Note that attempting to access this position causes undefined behavior. 
\end{DoxyNote}


References size().



Referenced by cend(), and rbegin().

\hypertarget{structefl_1_1eina_1_1stringshare_a071a52178688ec5ecdf66432610fd5d7}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!rbegin@{rbegin}}
\index{rbegin@{rbegin}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{rbegin}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reverse\+\_\+iterator efl\+::eina\+::stringshare\+::rbegin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a071a52178688ec5ecdf66432610fd5d7}


Get a constant reverse iterator pointing to the reverse begin of the string. 

\begin{DoxyReturn}{Returns}
Constant reverse iterator pointing to the reverse begin of the string.
\end{DoxyReturn}
This member function returns a constant reverse iterator pointing to the last character of the string. If the string is empty the returned reverse iterator is the same as the one returned by \hyperlink{structefl_1_1eina_1_1stringshare_a1d688b079a5cd6a981f127a35a5a9f95}{rend()} const. 

References end().



Referenced by crbegin().

\hypertarget{structefl_1_1eina_1_1stringshare_a1d688b079a5cd6a981f127a35a5a9f95}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!rend@{rend}}
\index{rend@{rend}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{rend}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reverse\+\_\+iterator efl\+::eina\+::stringshare\+::rend (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a1d688b079a5cd6a981f127a35a5a9f95}


Get a constant reverse iterator pointing to the reverse end of the string. 

\begin{DoxyReturn}{Returns}
Constant reverse iterator pointing to the reverse end of the string.
\end{DoxyReturn}
This member function returns a constant reverse iterator pointing to the position before the first character of the string. If the string is empty the returned iterator is the same as the one returned by \hyperlink{structefl_1_1eina_1_1stringshare_a071a52178688ec5ecdf66432610fd5d7}{rbegin()} const.

\begin{DoxyNote}{Note}
Note that attempting to access this position causes undefined behavior. 
\end{DoxyNote}


References begin().



Referenced by crend().

\hypertarget{structefl_1_1eina_1_1stringshare_a812668c85b6bf6c7b7e5a2e3918a5743}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!cbegin@{cbegin}}
\index{cbegin@{cbegin}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{cbegin}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+iterator efl\+::eina\+::stringshare\+::cbegin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a812668c85b6bf6c7b7e5a2e3918a5743}


Get a constant iterator pointing to the first character of the string. 

\begin{DoxyReturn}{Returns}
Constant iterator to the initial position of the string.
\end{DoxyReturn}
This member function works just like \hyperlink{structefl_1_1eina_1_1stringshare_a916b097f161f4942a51972e8a852b73d}{begin()} const. But it is granted to always return a constant iterator. 

References begin().

\hypertarget{structefl_1_1eina_1_1stringshare_a6d30abb38a46c7f8f7fa72b91025c515}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!cend@{cend}}
\index{cend@{cend}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{cend}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+iterator efl\+::eina\+::stringshare\+::cend (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a6d30abb38a46c7f8f7fa72b91025c515}


Get a constant iterator to the position following the last character of the string. 

\begin{DoxyReturn}{Returns}
Constant iterator to the final position of the string.
\end{DoxyReturn}
This member function works just like \hyperlink{structefl_1_1eina_1_1stringshare_aa35ad287e2bdd0d233d6daca54de6e98}{end()} const. But it is granted to always return a constant iterator. 

References end().

\hypertarget{structefl_1_1eina_1_1stringshare_ad48430cded7eb2fb0b3abfc99d9ff6b9}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!crbegin@{crbegin}}
\index{crbegin@{crbegin}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{crbegin}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reverse\+\_\+iterator efl\+::eina\+::stringshare\+::crbegin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_ad48430cded7eb2fb0b3abfc99d9ff6b9}


Get a constant reverse iterator pointing to the reverse begin of the string. 

\begin{DoxyReturn}{Returns}
Constant reverse iterator pointing to the reverse begin of the string.
\end{DoxyReturn}
This member function works just like \hyperlink{structefl_1_1eina_1_1stringshare_a071a52178688ec5ecdf66432610fd5d7}{rbegin()} const. But it is granted to always return a constant reverse iterator. 

References rbegin().

\hypertarget{structefl_1_1eina_1_1stringshare_a8ab2e56430056a002389a6399ebd279e}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!crend@{crend}}
\index{crend@{crend}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{crend}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reverse\+\_\+iterator efl\+::eina\+::stringshare\+::crend (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a8ab2e56430056a002389a6399ebd279e}


Get a constant reverse iterator pointing to the reverse end of the string. 

\begin{DoxyReturn}{Returns}
Constant reverse iterator pointing to the reverse end of the string.
\end{DoxyReturn}
This member function works just like \hyperlink{structefl_1_1eina_1_1stringshare_a1d688b079a5cd6a981f127a35a5a9f95}{rend()} const. But it is granted to always return a constant reverse iterator. 

References rend().

\hypertarget{structefl_1_1eina_1_1stringshare_a7ba267cd465a39b91e3f3fba7a8e3f6a}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!size@{size}}
\index{size@{size}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{size}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+type efl\+::eina\+::stringshare\+::size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a7ba267cd465a39b91e3f3fba7a8e3f6a}


Get the size of the string. 

\begin{DoxyReturn}{Returns}
Number of characters in the string. 
\end{DoxyReturn}


References eina\+\_\+stringshare\+\_\+strlen().



Referenced by at(), back(), end(), and length().

\hypertarget{structefl_1_1eina_1_1stringshare_aebbd7732c064c316d618b52862f86c02}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!max\+\_\+size@{max\+\_\+size}}
\index{max\+\_\+size@{max\+\_\+size}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{max\+\_\+size}]{\setlength{\rightskip}{0pt plus 5cm}size\+\_\+type efl\+::eina\+::stringshare\+::max\+\_\+size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_aebbd7732c064c316d618b52862f86c02}


Get the maximum number of characters a string can hold. 

\begin{DoxyReturn}{Returns}
Maximum number of characters a string can hold. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1stringshare_a21788aed98e7f44e2f59f4160035cd3b}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!empty@{empty}}
\index{empty@{empty}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{empty}]{\setlength{\rightskip}{0pt plus 5cm}bool efl\+::eina\+::stringshare\+::empty (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a21788aed98e7f44e2f59f4160035cd3b}


Check if the string has no characters. 

\begin{DoxyReturn}{Returns}
{\ttfamily true} if the string has no characters, {\ttfamily false} otherwise. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1stringshare_a9d1be51b50a87b8019e96b4c24c00d40}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!operator\mbox{[}$\,$\mbox{]}@{operator[]}}
\index{operator\mbox{[}$\,$\mbox{]}@{operator[]}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{operator[]}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reference efl\+::eina\+::stringshare\+::operator\mbox{[}$\,$\mbox{]} (
\begin{DoxyParamCaption}
\item[{size\+\_\+type}]{i}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a9d1be51b50a87b8019e96b4c24c00d40}


Get the character at the given position. 


\begin{DoxyParams}{Parameters}
{\em i} & Position of the character in the string. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Constant reference to the character at the given position. 
\end{DoxyReturn}
\begin{DoxyNote}{Note}
Do not check if the given position exceeds the string size. 
\end{DoxyNote}
\hypertarget{structefl_1_1eina_1_1stringshare_aaf16b7529c6bad41603ffc8a873339b9}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!at@{at}}
\index{at@{at}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{at}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reference efl\+::eina\+::stringshare\+::at (
\begin{DoxyParamCaption}
\item[{size\+\_\+type}]{i}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_aaf16b7529c6bad41603ffc8a873339b9}


Get the character at the given position. 


\begin{DoxyParams}{Parameters}
{\em i} & Position of the character in the string. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Constant reference to the character at the given position. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em $<$tt$>$std\+::out\+\_\+of\+\_\+range$<$/tt$>$} & if the given position exceeds the string size.\\
\hline
\end{DoxyExceptions}
This member function returns a constant reference to the character at the position {\ttfamily i}. If {\ttfamily i} exceeds the string size this function will throw a {\ttfamily std\+::out\+\_\+of\+\_\+range}. 

References size().

\hypertarget{structefl_1_1eina_1_1stringshare_a1d22d60d40f4e4bcd6e42515334eac46}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!back@{back}}
\index{back@{back}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{back}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reference efl\+::eina\+::stringshare\+::back (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a1d22d60d40f4e4bcd6e42515334eac46}


Get the last character of the string. 

\begin{DoxyReturn}{Returns}
Constant reference to the last character of the string. 
\end{DoxyReturn}


References size().

\hypertarget{structefl_1_1eina_1_1stringshare_ac66201f10a578bc5c077f8ea80b7b14e}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!front@{front}}
\index{front@{front}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{front}]{\setlength{\rightskip}{0pt plus 5cm}const\+\_\+reference efl\+::eina\+::stringshare\+::front (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_ac66201f10a578bc5c077f8ea80b7b14e}


Get the first character of the string. 

\begin{DoxyReturn}{Returns}
Constant reference to the first character of the string. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1stringshare_a22ad05c67d231fcb22b069eb6ebe9306}{\index{efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}!c\+\_\+str@{c\+\_\+str}}
\index{c\+\_\+str@{c\+\_\+str}!efl\+::eina\+::stringshare@{efl\+::eina\+::stringshare}}
\subsubsection[{c\+\_\+str}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ efl\+::eina\+::stringshare\+::c\+\_\+str (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eina_1_1stringshare_a22ad05c67d231fcb22b069eb6ebe9306}


Get the c-\/like shared string currently associated with the object. 

\begin{DoxyReturn}{Returns}
Pointer to the shared string. 
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The pointer returned may be invalidated by calls to non-\/const member functions. 
\end{DoxyNote}


Referenced by efl\+::eina\+::operator==().

