\hypertarget{group__Eina__Unicode__String}{}\section{Unicode String}
\label{group__Eina__Unicode__String}\index{Unicode String@{Unicode String}}


These functions provide basic unicode string handling.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{}typedef wchar\+\_\+t \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode}\label{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}

\begin{DoxyCompactList}\small\item\em A type that holds Unicode codepoints. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__Unicode__String_gabbf95a2ae7d1356ddb8248f1be82985c}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} size\+\_\+t {\bfseries eina\+\_\+unicode\+\_\+strlen} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ustr) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga4669a55a23089d0f9b70702ef05cea68}{E\+I\+N\+A\+\_\+\+P\+U\+R\+E}\label{group__Eina__Unicode__String_gabbf95a2ae7d1356ddb8248f1be82985c}

\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} size\+\_\+t \hyperlink{group__Eina__Unicode__String_ga75c4e18409ae96f45dbe35c129ad3b92}{eina\+\_\+unicode\+\_\+strnlen} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ustr, int n) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga4669a55a23089d0f9b70702ef05cea68}{E\+I\+N\+A\+\_\+\+P\+U\+R\+E}
\begin{DoxyCompactList}\small\item\em Returns the length of a Eina\+\_\+\+Unicode string, up to a limit. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_gae1282b77a4075b9455f9da169e202934}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_gae1282b77a4075b9455f9da169e202934}{eina\+\_\+unicode\+\_\+strdup} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$text) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}\label{group__Eina__Unicode__String_gae1282b77a4075b9455f9da169e202934}

\begin{DoxyCompactList}\small\item\em Same as the standard strdup just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_gacf49bb9f9d7d0bfd22d97efebde2a6fd}{eina\+\_\+unicode\+\_\+strndup} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$text, size\+\_\+t n) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Same as strdup but cuts on the given size. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_ga5620a3806b5b0ea42b5334fd578bf5c1}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Unicode__String_ga5620a3806b5b0ea42b5334fd578bf5c1}{eina\+\_\+unicode\+\_\+strcmp} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$a, const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$b) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1\label{group__Eina__Unicode__String_ga5620a3806b5b0ea42b5334fd578bf5c1}

\begin{DoxyCompactList}\small\item\em Same as the standard strcmp just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_ga5dc6bd67dab8ed577f1f485bd5459d3d}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_ga5dc6bd67dab8ed577f1f485bd5459d3d}{eina\+\_\+unicode\+\_\+strcpy} (\hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$dest, const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$source) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1\label{group__Eina__Unicode__String_ga5dc6bd67dab8ed577f1f485bd5459d3d}

\begin{DoxyCompactList}\small\item\em Same as the standard strcpy just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_ga4d323dd88159e04c370ced24a4821a67}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_ga4d323dd88159e04c370ced24a4821a67}{eina\+\_\+unicode\+\_\+strstr} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$haystack, const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$needle) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1\label{group__Eina__Unicode__String_ga4d323dd88159e04c370ced24a4821a67}

\begin{DoxyCompactList}\small\item\em Same as the standard strstr just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_ga94b6cd0750a29e99994561171674f718}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_ga94b6cd0750a29e99994561171674f718}{eina\+\_\+unicode\+\_\+strncpy} (\hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$dest, const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$source, size\+\_\+t n) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1\label{group__Eina__Unicode__String_ga94b6cd0750a29e99994561171674f718}

\begin{DoxyCompactList}\small\item\em Same as the standard strncpy just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_ga88683a27dbce6569c3fa67bf90a82979}{eina\+\_\+unicode\+\_\+escape} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$str) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C} \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}
\item 
static \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Eina__Unicode__String_gae19707e54d7ff808e52ae6f0ade4faff}{eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get} (const char $\ast$buf, int $\ast$iindex) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and advances {\ttfamily iindex} to the next code point after this. \end{DoxyCompactList}\item 
static \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Eina__Unicode__String_gaee98e7b1e105cf2d66001b895a7fe4eb}{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next} (const char $\ast$buf, int $\ast$iindex) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and advances {\ttfamily iindex} to the next code point after this. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Eina__Unicode__String_ga0ffa41d417ad9517e37edb31dfea658a}{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev} (const char $\ast$buf, int $\ast$iindex) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1
\begin{DoxyCompactList}\small\item\em Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and moves àp iindex to the previous code point. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int \hyperlink{group__Eina__Unicode__String_ga4b82b60ec4726830f069d8a00126bf83}{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len} (const char $\ast$buf) \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1)
\begin{DoxyCompactList}\small\item\em Returns the number of unicode characters in the string. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_ga9ca197c52ab8de49053633c062c93525}{eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode} (const char $\ast$utf, int $\ast$\+\_\+len) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Converts a utf-\/8 string to a newly allocated Eina\+\_\+\+Unicode string. \end{DoxyCompactList}\item 
\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} char $\ast$ \hyperlink{group__Eina__Unicode__String_ga8a3bc1c1e50618630f100bbf9d4fa45d}{eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8} (const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$uni, int $\ast$\+\_\+len) \hyperlink{group__Eina__Types__Group_ga4ba89e4b58eff707a6cf05ffe0cd4dea}{E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T} \hyperlink{group__Eina__Types__Group_ga1a066aa3069f7e43279021cc1e378fac}{E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L}(1) \hyperlink{group__Eina__Types__Group_gaabeaa41dd47f4b4d3991b10ba00bc59c}{E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}
\begin{DoxyCompactList}\small\item\em Converts an Eina\+\_\+\+Unicode string to a newly allocated utf-\/8 string. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Eina__Unicode__String_gaf32034aa063052b2fa8c126104af7ac7}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} const \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} $\ast$ \hyperlink{group__Eina__Unicode__String_gaf32034aa063052b2fa8c126104af7ac7}{E\+I\+N\+A\+\_\+\+U\+N\+I\+C\+O\+D\+E\+\_\+\+E\+M\+P\+T\+Y\+\_\+\+S\+T\+R\+I\+N\+G}\label{group__Eina__Unicode__String_gaf32034aa063052b2fa8c126104af7ac7}

\begin{DoxyCompactList}\small\item\em Same as the standard strlen just with Eina\+\_\+\+Unicode instead of char. \end{DoxyCompactList}\item 
\hypertarget{group__Eina__Unicode__String_ga4669a55a23089d0f9b70702ef05cea68}{}\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} int {\bfseries E\+I\+N\+A\+\_\+\+P\+U\+R\+E}\label{group__Eina__Unicode__String_ga4669a55a23089d0f9b70702ef05cea68}

\item 
\hypertarget{group__Eina__Unicode__String_ga75899cfc1e37383e9ac7a7f02310bcc0}{}static \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} \hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__Eina__Unicode__String_ga00d6dbe6710822ef81e9539fc57c4b12}{Eina\+\_\+\+Unicode} {\bfseries E\+I\+N\+A\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D}\label{group__Eina__Unicode__String_ga75899cfc1e37383e9ac7a7f02310bcc0}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
These functions provide basic unicode string handling. 

Eina\+\_\+\+Unicode is a type that holds unicode codepoints. 

\subsection{Function Documentation}
\hypertarget{group__Eina__Unicode__String_ga75c4e18409ae96f45dbe35c129ad3b92}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+strnlen@{eina\+\_\+unicode\+\_\+strnlen}}
\index{eina\+\_\+unicode\+\_\+strnlen@{eina\+\_\+unicode\+\_\+strnlen}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+strnlen(const Eina\+\_\+\+Unicode $\ast$ustr, int n) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+P\+U\+R\+E}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} size\+\_\+t eina\+\_\+unicode\+\_\+strnlen (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Unicode} $\ast$}]{ustr, }
\item[{int}]{n}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga75c4e18409ae96f45dbe35c129ad3b92}


Returns the length of a Eina\+\_\+\+Unicode string, up to a limit. 

This function returns the number of characters in string, up to a maximum of n. If the terminating character is not found in the string, it returns n.


\begin{DoxyParams}{Parameters}
{\em ustr} & String to search \\
\hline
{\em n} & Max length to search \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Number of characters or n. 
\end{DoxyReturn}
\hypertarget{group__Eina__Unicode__String_gacf49bb9f9d7d0bfd22d97efebde2a6fd}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+strndup@{eina\+\_\+unicode\+\_\+strndup}}
\index{eina\+\_\+unicode\+\_\+strndup@{eina\+\_\+unicode\+\_\+strndup}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+strndup(const Eina\+\_\+\+Unicode $\ast$text, size\+\_\+t n) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode}$\ast$ eina\+\_\+unicode\+\_\+strndup (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Unicode} $\ast$}]{text, }
\item[{size\+\_\+t}]{n}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_gacf49bb9f9d7d0bfd22d97efebde2a6fd}


Same as strdup but cuts on the given size. 

Assumes n $<$ len


\begin{DoxyParams}{Parameters}
{\em text} & The text to duplicate. \\
\hline
{\em n} & The maximum size of the text to duplicate. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The duplicated string.
\end{DoxyReturn}
This function duplicates {\ttfamily text}. The resuting string is cut on {\ttfamily n}. {\ttfamily n} is assumed to be lesser ($<$) than the length of {\ttfamily text}. When not needed anymore, the returned string must be freed.

\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


Referenced by eina\+\_\+unicode\+\_\+strdup().

\hypertarget{group__Eina__Unicode__String_ga88683a27dbce6569c3fa67bf90a82979}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+escape@{eina\+\_\+unicode\+\_\+escape}}
\index{eina\+\_\+unicode\+\_\+escape@{eina\+\_\+unicode\+\_\+escape}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+escape(const Eina\+\_\+\+Unicode $\ast$str) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode} {\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode}$\ast$ eina\+\_\+unicode\+\_\+escape (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Unicode} $\ast$}]{str}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga88683a27dbce6569c3fa67bf90a82979}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__String__Group_ga96760f2bf2d845b4abec0e95f08271bd}{eina\+\_\+str\+\_\+escape()}
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em str} & The string to escape. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The escaped string. 
\end{DoxyReturn}
\hypertarget{group__Eina__Unicode__String_gae19707e54d7ff808e52ae6f0ade4faff}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get@{eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get}}
\index{eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get@{eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get(const char $\ast$buf, int $\ast$iindex) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\+\_\+\+Unicode} eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{buf, }
\item[{int $\ast$}]{iindex}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}\label{group__Eina__Unicode__String_gae19707e54d7ff808e52ae6f0ade4faff}


Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and advances {\ttfamily iindex} to the next code point after this. 

{\ttfamily iindex} is always advanced, unless if the advancement is after the {\ttfamily N\+U\+L\+L}. On error\+: return a codepoint between D\+C80 to D\+C\+F\+F where the low 8 bits are the byte\textquotesingle{}s value.


\begin{DoxyParams}{Parameters}
{\em buf} & the string \\
\hline
{\em iindex} & the index to look at and return by. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the codepoint found, 0 if {\ttfamily buf} or {\ttfamily iindex} are N\+U\+L\+L 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+8.\+0 
\end{DoxySince}


Referenced by eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len(), eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode(), and evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get().

\hypertarget{group__Eina__Unicode__String_gaee98e7b1e105cf2d66001b895a7fe4eb}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next}}
\index{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next(const char $\ast$buf, int $\ast$iindex) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Eina\+\_\+\+Unicode} {\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode} eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+next (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{buf, }
\item[{int $\ast$}]{iindex}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_gaee98e7b1e105cf2d66001b895a7fe4eb}


Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and advances {\ttfamily iindex} to the next code point after this. 

{\ttfamily iindex} is always advanced, unless if the advancement is after the {\ttfamily N\+U\+L\+L}. On error\+: return a codepoint between D\+C80 to D\+C\+F\+F where the low 8 bits are the byte\textquotesingle{}s value.


\begin{DoxyParams}{Parameters}
{\em buf} & the string \\
\hline
{\em iindex} & the index to look at and return by. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the codepoint found, 0 if {\ttfamily buf} or {\ttfamily iindex} are N\+U\+L\+L 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\begin{DoxyRefDesc}{Deprecated}
\item[\hyperlink{deprecated__deprecated000028}{Deprecated}]use eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get \end{DoxyRefDesc}
\hypertarget{group__Eina__Unicode__String_ga0ffa41d417ad9517e37edb31dfea658a}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev}}
\index{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev(const char $\ast$buf, int $\ast$iindex) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode} eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{buf, }
\item[{int $\ast$}]{iindex}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga0ffa41d417ad9517e37edb31dfea658a}


Reads U\+T\+F8 bytes from {\ttfamily buf}, starting at {\ttfamily iindex} and returns the decoded code point at {\ttfamily iindex} offset, and moves àp iindex to the previous code point. 

{\ttfamily iindex} is always moved, as long as it\textquotesingle{}s not past the start of the string. On error\+: return a codepoint between D\+C80 to D\+C\+F\+F where the low 8 bits are the byte\textquotesingle{}s value.


\begin{DoxyParams}{Parameters}
{\em buf} & the string \\
\hline
{\em iindex} & the index to look at and return by. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the codepoint found. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


Referenced by evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get().

\hypertarget{group__Eina__Unicode__String_ga4b82b60ec4726830f069d8a00126bf83}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len}}
\index{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len@{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len(const char $\ast$buf) E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode} {\bf E\+A\+P\+I} int eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{buf}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga4b82b60ec4726830f069d8a00126bf83}


Returns the number of unicode characters in the string. 

That is, the number of Eina\+\_\+\+Unicodes it\textquotesingle{}ll take to store this string in an Eina\+\_\+\+Unicode string.


\begin{DoxyParams}{Parameters}
{\em buf} & the string \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the number of unicode characters (not bytes) in the string 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


References eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get().



Referenced by eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode(), and evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get().

\hypertarget{group__Eina__Unicode__String_ga9ca197c52ab8de49053633c062c93525}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode@{eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode}}
\index{eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode@{eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode(const char $\ast$utf, int $\ast$\+\_\+len) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf Eina\+\_\+\+Unicode}$\ast$ eina\+\_\+unicode\+\_\+utf8\+\_\+to\+\_\+unicode (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{utf, }
\item[{int $\ast$}]{\+\_\+len}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga9ca197c52ab8de49053633c062c93525}


Converts a utf-\/8 string to a newly allocated Eina\+\_\+\+Unicode string. 


\begin{DoxyParams}{Parameters}
{\em utf} & the string in utf-\/8 \\
\hline
{\em \+\_\+len} & the length of the returned Eina\+\_\+\+Unicode string. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the newly allocated Eina\+\_\+\+Unicode string. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


References eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len(), and eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get().



Referenced by evas\+\_\+textblock\+\_\+cursor\+\_\+text\+\_\+append().

\hypertarget{group__Eina__Unicode__String_ga8a3bc1c1e50618630f100bbf9d4fa45d}{}\index{Unicode String@{Unicode String}!eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8@{eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8}}
\index{eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8@{eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8}!Unicode String@{Unicode String}}
\subsubsection[{eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8(const Eina\+\_\+\+Unicode $\ast$uni, int $\ast$\+\_\+len) E\+I\+N\+A\+\_\+\+W\+A\+R\+N\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+\+R\+E\+S\+U\+L\+T E\+I\+N\+A\+\_\+\+A\+R\+G\+\_\+\+N\+O\+N\+N\+U\+L\+L(1) E\+I\+N\+A\+\_\+\+M\+A\+L\+L\+O\+C}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} char$\ast$ eina\+\_\+unicode\+\_\+unicode\+\_\+to\+\_\+utf8 (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Unicode} $\ast$}]{uni, }
\item[{int $\ast$}]{\+\_\+len}
\end{DoxyParamCaption}
)}\label{group__Eina__Unicode__String_ga8a3bc1c1e50618630f100bbf9d4fa45d}


Converts an Eina\+\_\+\+Unicode string to a newly allocated utf-\/8 string. 


\begin{DoxyParams}{Parameters}
{\em uni} & the Eina\+\_\+\+Unicode string \\
\hline
{\em \+\_\+len} & the length byte length of the return utf8 string. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the newly allocated utf-\/8 string. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


Referenced by evas\+\_\+textblock\+\_\+cursor\+\_\+content\+\_\+get().

