\hypertarget{group__Eina__Hash__Group}{}\doxysection{Hash Table}
\label{group__Eina__Hash__Group}\index{Hash Table@{Hash Table}}


Hash table management.  


\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Eina__Hash__Tuple}{\+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple}}
\begin{DoxyCompactList}\small\item\em Data for a hash table of key/value pairs. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Eina__Hash__Group_gaaaa18f69c9854f63beae15c42f1256b8}{EINA\+\_\+\+KEY\+\_\+\+LENGTH}}(Function)~((\mbox{\hyperlink{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}{Eina\+\_\+\+Key\+\_\+\+Length}})Function)
\item 
\#define \mbox{\hyperlink{group__Eina__Hash__Group_ga1c48d74b1ed071d8c156a98f5f0a06f6}{EINA\+\_\+\+KEY\+\_\+\+CMP}}(Function)~((\mbox{\hyperlink{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}{Eina\+\_\+\+Key\+\_\+\+Cmp}})Function)
\item 
\#define \mbox{\hyperlink{group__Eina__Hash__Group_gaf53593bdd5cc3d238e5eea2ae86d42a0}{EINA\+\_\+\+KEY\+\_\+\+HASH}}(Function)~((\mbox{\hyperlink{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}{Eina\+\_\+\+Key\+\_\+\+Hash}})Function)
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}\label{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}} 
typedef struct \+\_\+\+Eina\+\_\+\+Hash \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}
\begin{DoxyCompactList}\small\item\em Type for a generic hash table. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_gad6674b938d2e803035a19e2c97683961}\label{group__Eina__Hash__Group_gad6674b938d2e803035a19e2c97683961}} 
typedef struct \mbox{\hyperlink{struct__Eina__Hash__Tuple}{\+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple}} \mbox{\hyperlink{group__Eina__Hash__Group_gad6674b938d2e803035a19e2c97683961}{Eina\+\_\+\+Hash\+\_\+\+Tuple}}
\begin{DoxyCompactList}\small\item\em Type for a hash table of key/value pairs. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}\label{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}} 
typedef unsigned int($\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}{Eina\+\_\+\+Key\+\_\+\+Length}}) (const void $\ast$key)
\begin{DoxyCompactList}\small\item\em Type for a function to determine the length of a hash key. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}\label{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}} 
typedef int($\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}{Eina\+\_\+\+Key\+\_\+\+Cmp}}) (const void $\ast$key1, int key1\+\_\+length, const void $\ast$key2, int key2\+\_\+length)
\begin{DoxyCompactList}\small\item\em Type for a function to compare two hash keys. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}\label{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}} 
typedef int($\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}{Eina\+\_\+\+Key\+\_\+\+Hash}}) (const void $\ast$key, int key\+\_\+length)
\begin{DoxyCompactList}\small\item\em Type for a function to create a hash key. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Hash__Group_ga29e5a6f3ff7e719018d87d8769604e40}\label{group__Eina__Hash__Group_ga29e5a6f3ff7e719018d87d8769604e40}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga29e5a6f3ff7e719018d87d8769604e40}{Eina\+\_\+\+Hash\+\_\+\+Foreach}}) (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, void $\ast$data, void $\ast$fdata)
\begin{DoxyCompactList}\small\item\em Type for a function to iterate over a hash table. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}{Eina\+\_\+\+Key\+\_\+\+Length}} key\+\_\+length\+\_\+cb, \mbox{\hyperlink{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}{Eina\+\_\+\+Key\+\_\+\+Cmp}} key\+\_\+cmp\+\_\+cb, \mbox{\hyperlink{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}{Eina\+\_\+\+Key\+\_\+\+Hash}} key\+\_\+hash\+\_\+cb, \mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb, int buckets\+\_\+power\+\_\+size)
\begin{DoxyCompactList}\small\item\em Creates a new hash table. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_ga5b2ef7d6f5d6c4bdbb65c3440832dc2d}{eina\+\_\+hash\+\_\+free\+\_\+cb\+\_\+set}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, \mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Sets the data cleanup callback for a hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga32047bcf971a00298f4564b567444c65}{eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table using the djb2 algorithm. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}{eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table for use with strings. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}{eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table for use with strings with small bucket size. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga63adbae9fc326c58d8d7e50573936089}{eina\+\_\+hash\+\_\+int32\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table for use with 32bit integers. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga0be89f46d734f7c51cc0cf1cee55e341}{eina\+\_\+hash\+\_\+int64\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table for use with 64bit integers. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga0cd41f505034160d99f3b907ad3d74ce}{eina\+\_\+hash\+\_\+pointer\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table for use with pointers. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga75266e6a40be3a377345b4d883b6e9a7}{eina\+\_\+hash\+\_\+stringshared\+\_\+new}} (\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}} data\+\_\+free\+\_\+cb)
\begin{DoxyCompactList}\small\item\em Creates a new hash table optimized for stringshared values. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Adds an entry to the given hash table. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Adds an entry to the given hash table without duplicating the string. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Removes the entry identified by a key or a data from the given hash table. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key)
\begin{DoxyCompactList}\small\item\em Retrieves a specific entry in the given hash table. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_gaabf2f2af1d93f969591f2c5b7378c543}{eina\+\_\+hash\+\_\+modify}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Modifies the entry pointer at the specified key and returns the previous entry. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Modifies the entry pointer at the specified key and returns the previous entry or adds the entry if not found. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_gaa390160f31c235d91947281244e77628}{eina\+\_\+hash\+\_\+move}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$old\+\_\+key, const void $\ast$new\+\_\+key)
\begin{DoxyCompactList}\small\item\em Changes the key of an entry in a hash without triggering the free callback. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_gadb6acb720ce267cc1cd4f51893539f59}{eina\+\_\+hash\+\_\+free}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Frees the given hash table\textquotesingle{}s resources. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_gabe2ba51e5dbf6fd5f60628b8e8f00eaa}{eina\+\_\+hash\+\_\+free\+\_\+buckets}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Frees the given hash table buckets resources. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Eina__Hash__Group_ga9289542f6724083eab306e5bb3ab10b0}{eina\+\_\+hash\+\_\+population}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Returns the number of entries in the given hash table. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga4637f61969ecc13adaca17def6ed1a91}{eina\+\_\+hash\+\_\+add\+\_\+by\+\_\+hash}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Adds an entry to the given hash table by its key hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga1a88c8632539860e1df25d1812f4146f}{eina\+\_\+hash\+\_\+direct\+\_\+add\+\_\+by\+\_\+hash}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Adds an entry to a hash table by its key hash without duplicating the string key. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash)
\begin{DoxyCompactList}\small\item\em Removes the entry identified by a key and a key hash from the given hash table. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key)
\begin{DoxyCompactList}\small\item\em Removes the entry identified by a key from the given hash table. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Removes an entry from a hash table identified by its data value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Hash__Group_ga4ce2a4a6917d96d5a791633d83e7af4e}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+hash}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Removes the entry identified by a key and a key hash, or a data value from the given hash table. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga42dee6ba7f023156397ec4ece52e3cf5}{eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash)
\begin{DoxyCompactList}\small\item\em Retrieves a specific entry from the given hash table. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga821f033abb9edea2929df2ecb4880a3a}{eina\+\_\+hash\+\_\+modify\+\_\+by\+\_\+hash}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, int key\+\_\+length, int key\+\_\+hash, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Modifies the entry pointer at the specified key and returns the previous entry. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga1a090384b1c057daec8e19c6a1ea2c0d}{eina\+\_\+hash\+\_\+iterator\+\_\+key\+\_\+new}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Returns a new iterator associated with hash keys. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_ga5191350d6044d93b6518a957f12f5ac3}{eina\+\_\+hash\+\_\+iterator\+\_\+data\+\_\+new}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Returns a new iterator associated with a hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Eina__Hash__Group_gaf0e7e38ec02c4bcfca3c3c4dd13c6af9}{eina\+\_\+hash\+\_\+iterator\+\_\+tuple\+\_\+new}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash)
\begin{DoxyCompactList}\small\item\em Returned a new iterator associated with hash keys and data. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_ga2c23f8425d3afcc61827ab67b46d7190}{eina\+\_\+hash\+\_\+foreach}} (const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, \mbox{\hyperlink{group__Eina__Hash__Group_ga29e5a6f3ff7e719018d87d8769604e40}{Eina\+\_\+\+Hash\+\_\+\+Foreach}} func, const void $\ast$fdata)
\begin{DoxyCompactList}\small\item\em Calls a function on every member stored in the hash table. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_ga7a119b7c8261a4d1026f3b7fcad13eca}{eina\+\_\+hash\+\_\+list\+\_\+append}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Appends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_gabc49a780fb6752c9dd8c51ca85c16be5}{eina\+\_\+hash\+\_\+list\+\_\+direct\+\_\+append}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Appends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash using \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_ga7381144c09108de9fa9a8e67c281d289}{eina\+\_\+hash\+\_\+list\+\_\+prepend}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Prepends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_ga1997c0cea9757431da603d46f6ee1902}{eina\+\_\+hash\+\_\+list\+\_\+direct\+\_\+prepend}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Prepends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash using \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}}. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Hash__Group_gabb0157184bfef0302709e2d351446e7f}{eina\+\_\+hash\+\_\+list\+\_\+remove}} (\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$hash, const void $\ast$key, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Removes data from an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Eina__Hash__Group_ga3a8434dd0fe7446af605c75e05e8eff0}{eina\+\_\+hash\+\_\+superfast}} (const char $\ast$key, int len)
\begin{DoxyCompactList}\small\item\em Paul Hsieh (\href{http://www.azillionmonkeys.com/qed/hash.html}{\texttt{ http\+://www.\+azillionmonkeys.\+com/qed/hash.\+html}}) hash function used by Web\+Core (\href{http://webkit.org/blog/8/hashtables-part-2/}{\texttt{ http\+://webkit.\+org/blog/8/hashtables-\/part-\/2/}}) \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_ga558f01dbe075fb0a6c45001e57419c63}{eina\+\_\+hash\+\_\+djb2}} (const char $\ast$key, int len)
\begin{DoxyCompactList}\small\item\em Hash function first reported by Dan Bernstein many years ago in comp.\+lang.\+c. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_gaa0995ca588bd9508f53f722aaa6ee9b3}{eina\+\_\+hash\+\_\+djb2\+\_\+len}} (const char $\ast$key, int $\ast$plen)
\begin{DoxyCompactList}\small\item\em Hash function first reported by Dan Bernstein many years ago in comp.\+lang.\+c. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_gaeceefc13a4baf86ceac4f963f221fa8b}{eina\+\_\+hash\+\_\+int32}} (const unsigned int $\ast$pkey, int len)
\begin{DoxyCompactList}\small\item\em Hash function from \href{http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm}{\texttt{ http\+://web.\+archive.\+org/web/20071223173210/http\+://www.\+concentric.\+net/$\sim$\+Ttwang/tech/inthash.\+htm}}. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_ga59af62e37bbdab2cf63f49295fd57213}{eina\+\_\+hash\+\_\+int64}} (const unsigned long long int $\ast$pkey, int len)
\begin{DoxyCompactList}\small\item\em Hash function from \href{http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm}{\texttt{ http\+://web.\+archive.\+org/web/20071223173210/http\+://www.\+concentric.\+net/$\sim$\+Ttwang/tech/inthash.\+htm}}. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_ga66870993e96429900f8ceeadd6f2cadf}{eina\+\_\+hash\+\_\+murmur3}} (const char $\ast$key, int len)
\begin{DoxyCompactList}\small\item\em Hash function from \href{http://sites.google.com/site/murmurhash/}{\texttt{ http\+://sites.\+google.\+com/site/murmurhash/}}. \end{DoxyCompactList}\item 
static int \mbox{\hyperlink{group__Eina__Hash__Group_gaaada49d4a448f849d3ffa1b48060b174}{eina\+\_\+hash\+\_\+crc}} (const char $\ast$key, int len)
\begin{DoxyCompactList}\small\item\em Hash function using crc-\/32 algorithm and and 0x\+EDB88320 polynomial. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Hash table management. 

Maps keys to values.

The hash table associates keys (e.\+g. strings) to data, with relatively fast access time. The performance is proportional to the load factor of the table (number of elements / number of buckets). See \mbox{\hyperlink{group__Eina__Hash__Group_hashtable_algo}{Algorithm}} for implementation details.

There are optimized implementations for some common key types, such as strings, integers, pointers, and stringshared; custom optimizations are also permitted.

The hash table keys can be either copied or non-\/copied, using \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add()}} or \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}}, respectively.\hypertarget{group__Eina__Hash__Group_hashtable_algo}{}\doxysubsection{Algorithm}\label{group__Eina__Hash__Group_hashtable_algo}
The Eina\+\_\+\+Hash is implemented using an array of N \char`\"{}buckets\char`\"{}, where each bucket is a pointer to a structure that is the head of a \href{http://en.wikipedia.org/wiki/Red-black_tree}{\texttt{ red-\/black tree}}. The array can then be indexed by the \mbox{[}hash\+\_\+of\+\_\+element mod N\mbox{]}. The hash\+\_\+of\+\_\+element is calculated using the hashing function, passed as a parameter to the \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}} function. N is the number of buckets (array positions), and is calculated based on the buckets\+\_\+power\+\_\+size (argument of \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}} too). The following picture illustrates the basic idea\+:


\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{01_hash-table}}
\end{DoxyImageNoCaption}
 

Adding an element to the hash table involves the following steps\+: \begin{DoxyItemize}
\item calculate the hash for that key (using the specified hash function); \item calculate the array position \mbox{[}hash mod N\mbox{]}; \item add the element to the rbtree on that position.\end{DoxyItemize}
The first two steps have constant time, proportional to the hash function being used. Adding the key to the rbtree will be proportional to the number of keys in that bucket.

The average lookup cost depends on the number of keys per bucket (load factor) of the table, assuming the distribution of keys is sufficiently uniform.\hypertarget{group__Eina__Hash__Group_hashtable_perf}{}\doxysubsection{Performance}\label{group__Eina__Hash__Group_hashtable_perf}
Keeping the load factor small will improve the hash table performance. But increasing the buckets\+\_\+power\+\_\+size will also increase the memory consumption. The default hash table creation functions provides enough buckets for most cases. If just a few string keys (less than 30) will be added to the hash table, \mbox{\hyperlink{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}{eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new}} should be used, since it reduces the memory consumption for the buckets without causing too many collisions. However, \mbox{\hyperlink{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}{eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new}} still uses the same hash calculation function that \mbox{\hyperlink{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}{eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new}}, which is more complex than \mbox{\hyperlink{group__Eina__Hash__Group_ga32047bcf971a00298f4564b567444c65}{eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new}}. The latter has a faster hash computation function, but that will imply a not so good distribution. But if just a few keys are being added, this is not a problem, it will still have not many collisions and be faster to calculate the hash than in a hash created with \mbox{\hyperlink{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}{eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new}} and \mbox{\hyperlink{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}{eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new}}.

A simple comparison between them would be\+:

\begin{DoxyItemize}
\item {\ttfamily djb2} -\/ faster hash function -\/ 256 buckets (higher memory consumption) \item {\ttfamily string\+\_\+small} -\/ slower hash function but less collisions -\/ 32 buckets (lower memory consumption) \item {\ttfamily string\+\_\+superfast} -\/ slower hash function but less collisions -\/ 256 buckets (higher memory consumption) -\/ not randomized, avoid it on public remote interface.\end{DoxyItemize}
Basically for a very small number of keys (10 or less), {\ttfamily djb2} should be used, or {\ttfamily string\+\_\+small} if you have a restriction on memory usage. And for a higher number of keys, {\ttfamily string\+\_\+superfast} should be preferred if not used on a public remote interface.

If just stringshared keys are being added, use \mbox{\hyperlink{group__Eina__Hash__Group_ga75266e6a40be3a377345b4d883b6e9a7}{eina\+\_\+hash\+\_\+stringshared\+\_\+new}}. If a lot of keys will be added to the hash table (e.\+g. more than 1000), then it\textquotesingle{}s better to increase the buckets\+\_\+power\+\_\+size. See \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}} for more details.

When adding a new key to a hash table, use \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add}} or \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add}} (the latter if this key is already stored elsewhere). If the key may be already inside the hash table, rather than checking with \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find}} followed by \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add}}, one can use just \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set}} (this will change the data pointed by this key if it was already present in the table).\hypertarget{group__Eina__Hash__Group_hashtable_tutorial}{}\doxysubsection{Tutorial}\label{group__Eina__Hash__Group_hashtable_tutorial}
These examples show many Eina\+\_\+\+Hash functions in action\+: 
\begin{DoxyItemize}
\item \mbox{\hyperlink{hash_01_example_page}{Eina\+\_\+\+Hash in action}} 
\item \mbox{\hyperlink{hash_02_example_page}{Different types of tables}} 
\item Different types of hash in use\+: 
\begin{DoxyItemize}
\item \mbox{\hyperlink{eina_hash_03_8c-example}{string small}} 
\item \mbox{\hyperlink{eina_hash_04_8c-example}{string djb2}} 
\item \mbox{\hyperlink{eina_hash_05_8c-example}{int32}} 
\item \mbox{\hyperlink{eina_hash_06_8c-example}{int64}} 
\item \mbox{\hyperlink{eina_hash_07_8c-example}{pointer}} 
\end{DoxyItemize}
\item \mbox{\hyperlink{eina_hash_08_8c-example}{Different add and delete functions}} 
\end{DoxyItemize}

\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__Hash__Group_gaaaa18f69c9854f63beae15c42f1256b8}\label{group__Eina__Hash__Group_gaaaa18f69c9854f63beae15c42f1256b8}} 
\index{Hash Table@{Hash Table}!EINA\_KEY\_LENGTH@{EINA\_KEY\_LENGTH}}
\index{EINA\_KEY\_LENGTH@{EINA\_KEY\_LENGTH}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{EINA\_KEY\_LENGTH}{EINA\_KEY\_LENGTH}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+KEY\+\_\+\+LENGTH(\begin{DoxyParamCaption}\item[{}]{Function }\end{DoxyParamCaption})~((\mbox{\hyperlink{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}{Eina\+\_\+\+Key\+\_\+\+Length}})Function)}


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em Function} & The function used to calculate length of hash key. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{eina_hash_02_8c-example}{eina\+\_\+hash\+\_\+02.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Eina__Hash__Group_ga1c48d74b1ed071d8c156a98f5f0a06f6}\label{group__Eina__Hash__Group_ga1c48d74b1ed071d8c156a98f5f0a06f6}} 
\index{Hash Table@{Hash Table}!EINA\_KEY\_CMP@{EINA\_KEY\_CMP}}
\index{EINA\_KEY\_CMP@{EINA\_KEY\_CMP}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{EINA\_KEY\_CMP}{EINA\_KEY\_CMP}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+KEY\+\_\+\+CMP(\begin{DoxyParamCaption}\item[{}]{Function }\end{DoxyParamCaption})~((\mbox{\hyperlink{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}{Eina\+\_\+\+Key\+\_\+\+Cmp}})Function)}


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em Function} & The function used to compare hash key. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{eina_hash_02_8c-example}{eina\+\_\+hash\+\_\+02.\+c}}.\end{Desc}
\mbox{\Hypertarget{group__Eina__Hash__Group_gaf53593bdd5cc3d238e5eea2ae86d42a0}\label{group__Eina__Hash__Group_gaf53593bdd5cc3d238e5eea2ae86d42a0}} 
\index{Hash Table@{Hash Table}!EINA\_KEY\_HASH@{EINA\_KEY\_HASH}}
\index{EINA\_KEY\_HASH@{EINA\_KEY\_HASH}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{EINA\_KEY\_HASH}{EINA\_KEY\_HASH}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+KEY\+\_\+\+HASH(\begin{DoxyParamCaption}\item[{}]{Function }\end{DoxyParamCaption})~((\mbox{\hyperlink{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}{Eina\+\_\+\+Key\+\_\+\+Hash}})Function)}


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em Function} & The function used to hash key. \\
\hline
\end{DoxyParams}
\begin{Desc}
\item[Examples]\par
\mbox{\hyperlink{eina_hash_02_8c-example}{eina\+\_\+hash\+\_\+02.\+c}}.\end{Desc}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}\label{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}} 
\index{Hash Table@{Hash Table}!eina\_hash\_new@{eina\_hash\_new}}
\index{eina\_hash\_new@{eina\_hash\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_new()}{eina\_hash\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga290c5e9227e166b006e0373805576fa2}{Eina\+\_\+\+Key\+\_\+\+Length}}}]{key\+\_\+length\+\_\+cb,  }\item[{\mbox{\hyperlink{group__Eina__Hash__Group_gaa6df1403bfe855ea76c3828da89f5bdc}{Eina\+\_\+\+Key\+\_\+\+Cmp}}}]{key\+\_\+cmp\+\_\+cb,  }\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga273283c779b3c12b56bd74292dd110cd}{Eina\+\_\+\+Key\+\_\+\+Hash}}}]{key\+\_\+hash\+\_\+cb,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb,  }\item[{int}]{buckets\+\_\+power\+\_\+size }\end{DoxyParamCaption})}



Creates a new hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key\+\_\+length\+\_\+cb} & The function called when getting the size of the key. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+cmp\+\_\+cb} & The function called when comparing the keys. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash\+\_\+cb} & The function called when getting the values. \\
\hline
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as a callback. \\
\hline
\mbox{\texttt{ in}}  & {\em buckets\+\_\+power\+\_\+size} & The size of the buckets. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table using user-\/defined callbacks to manage the hash table. If {\ttfamily key\+\_\+cmp\+\_\+cb} or {\ttfamily key\+\_\+hash\+\_\+cb} are {\ttfamily NULL}, {\ttfamily NULL} is returned. If {\ttfamily buckets\+\_\+power\+\_\+size} is smaller or equal than 2, or if it is greater or equal than 17, {\ttfamily NULL} is returned.

The number of buckets created will be 2 $^\wedge$ {\ttfamily buckets\+\_\+power\+\_\+size}. This means that if {\ttfamily buckets\+\_\+power\+\_\+size} is 5, there will be created 32 buckets, whereas for a {\ttfamily buckets\+\_\+power\+\_\+size} of 8, there will be 256 buckets.

Pre-\/defined functions are available to create a hash table. See \mbox{\hyperlink{group__Eina__Hash__Group_ga32047bcf971a00298f4564b567444c65}{eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new()}}, \mbox{\hyperlink{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}{eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new()}}, \mbox{\hyperlink{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}{eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga63adbae9fc326c58d8d7e50573936089}{eina\+\_\+hash\+\_\+int32\+\_\+new()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga0be89f46d734f7c51cc0cf1cee55e341}{eina\+\_\+hash\+\_\+int64\+\_\+new()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga0cd41f505034160d99f3b907ad3d74ce}{eina\+\_\+hash\+\_\+pointer\+\_\+new()}} and \mbox{\hyperlink{group__Eina__Hash__Group_ga75266e6a40be3a377345b4d883b6e9a7}{eina\+\_\+hash\+\_\+stringshared\+\_\+new()}}. 

References EINA\+\_\+\+MAGIC\+\_\+\+SET, EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+TRUE\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by eina\+\_\+cow\+\_\+add(), eina\+\_\+file\+\_\+open(), eina\+\_\+file\+\_\+virtualize(), eina\+\_\+hash\+\_\+int32\+\_\+new(), eina\+\_\+hash\+\_\+int64\+\_\+new(), eina\+\_\+hash\+\_\+pointer\+\_\+new(), eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new(), eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new(), eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new(), and eina\+\_\+hash\+\_\+stringshared\+\_\+new().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga5b2ef7d6f5d6c4bdbb65c3440832dc2d}\label{group__Eina__Hash__Group_ga5b2ef7d6f5d6c4bdbb65c3440832dc2d}} 
\index{Hash Table@{Hash Table}!eina\_hash\_free\_cb\_set@{eina\_hash\_free\_cb\_set}}
\index{eina\_hash\_free\_cb\_set@{eina\_hash\_free\_cb\_set}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_free\_cb\_set()}{eina\_hash\_free\_cb\_set()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+free\+\_\+cb\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Sets the data cleanup callback for a hash. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback to remove an existing callback.\\
\hline
\end{DoxyParams}
The argument received by {\ttfamily data\+\_\+free\+\_\+cb} will be the data of the item being removed.

\begin{DoxySince}{Since}
1.\+1 
\end{DoxySince}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}}. 
\end{DoxySeeAlso}


References EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga32047bcf971a00298f4564b567444c65}\label{group__Eina__Hash__Group_ga32047bcf971a00298f4564b567444c65}} 
\index{Hash Table@{Hash Table}!eina\_hash\_string\_djb2\_new@{eina\_hash\_string\_djb2\_new}}
\index{eina\_hash\_string\_djb2\_new@{eina\_hash\_string\_djb2\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_string\_djb2\_new()}{eina\_hash\_string\_djb2\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table using the djb2 algorithm. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table using the djb2 algorithm for table management and strcmp() to compare the keys. Values can then be looked up with pointers other than the original key pointer that was used to add values. 

References eina\+\_\+hash\+\_\+djb2(), eina\+\_\+hash\+\_\+new(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.

\mbox{\Hypertarget{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}\label{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}} 
\index{Hash Table@{Hash Table}!eina\_hash\_string\_superfast\_new@{eina\_hash\_string\_superfast\_new}}
\index{eina\_hash\_string\_superfast\_new@{eina\_hash\_string\_superfast\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_string\_superfast\_new()}{eina\_hash\_string\_superfast\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table for use with strings. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table using the superfast algorithm for table management and strcmp() to compare the keys. Values can then be looked up with pointers other than the original key pointer that was used to add values.

\begin{DoxyWarning}{Warning}
Don\textquotesingle{}t use this kind of hash when there is a possibility to remotely request and push data in it. This hash is subject to denial of service. 
\end{DoxyWarning}


References eina\+\_\+hash\+\_\+new(), eina\+\_\+hash\+\_\+superfast(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.



Referenced by ecore\+\_\+buffer\+\_\+init(), ecore\+\_\+evas\+\_\+data\+\_\+set(), ecore\+\_\+imf\+\_\+context\+\_\+prediction\+\_\+hint\+\_\+hash\+\_\+set(), ecore\+\_\+imf\+\_\+module\+\_\+register(), ecore\+\_\+wl2\+\_\+display\+\_\+connect(), ecore\+\_\+wl2\+\_\+display\+\_\+create(), edje\+\_\+color\+\_\+class\+\_\+set(), efreet\+\_\+desktop\+\_\+x\+\_\+field\+\_\+set(), efreet\+\_\+menu\+\_\+parse(), eldbus\+\_\+proxy\+\_\+event\+\_\+callback\+\_\+add(), elm\+\_\+color\+\_\+class\+\_\+editor\+\_\+add(), and elm\+\_\+theme\+\_\+flush().

\mbox{\Hypertarget{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}\label{group__Eina__Hash__Group_gaad2e43204f79ee5a8f19470ff5ba4ac8}} 
\index{Hash Table@{Hash Table}!eina\_hash\_string\_small\_new@{eina\_hash\_string\_small\_new}}
\index{eina\_hash\_string\_small\_new@{eina\_hash\_string\_small\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_string\_small\_new()}{eina\_hash\_string\_small\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table for use with strings with small bucket size. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table using the superfast algorithm for table management and strcmp() to compare the keys, but with a smaller bucket size (compared to \mbox{\hyperlink{group__Eina__Hash__Group_gad7203e20b1496445cb819c7862171c87}{eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new()}}) which will minimize the memory used by the returned hash table. Values can then be looked up with pointers other than the original key pointer that was used to add values. 

References eina\+\_\+hash\+\_\+new(), eina\+\_\+hash\+\_\+superfast(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.



Referenced by ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+add(), ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+set(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+add(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+set(), edje\+\_\+edit\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+add(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+set(), eio\+\_\+file\+\_\+associate\+\_\+add(), eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add(), eldbus\+\_\+address\+\_\+connection\+\_\+get(), and eldbus\+\_\+object\+\_\+get().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga63adbae9fc326c58d8d7e50573936089}\label{group__Eina__Hash__Group_ga63adbae9fc326c58d8d7e50573936089}} 
\index{Hash Table@{Hash Table}!eina\_hash\_int32\_new@{eina\_hash\_int32\_new}}
\index{eina\_hash\_int32\_new@{eina\_hash\_int32\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_int32\_new()}{eina\_hash\_int32\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+int32\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table for use with 32bit integers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table where keys are 32bit integers. When adding or looking up in the hash table, pointers to 32bit integers must be passed. They can be addresses on the stack if you let the eina\+\_\+hash copy the key. Values can then be looked up with pointers other than the original key pointer that was used to add values. This method is not suitable to match string keys as it would only match the first character. 

References eina\+\_\+hash\+\_\+int32(), eina\+\_\+hash\+\_\+new(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.



Referenced by ecore\+\_\+drm\+\_\+evdev\+\_\+key\+\_\+remap\+\_\+set(), and ecore\+\_\+wl2\+\_\+display\+\_\+connect().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga0be89f46d734f7c51cc0cf1cee55e341}\label{group__Eina__Hash__Group_ga0be89f46d734f7c51cc0cf1cee55e341}} 
\index{Hash Table@{Hash Table}!eina\_hash\_int64\_new@{eina\_hash\_int64\_new}}
\index{eina\_hash\_int64\_new@{eina\_hash\_int64\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_int64\_new()}{eina\_hash\_int64\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+int64\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table for use with 64bit integers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table where keys are 64bit integers. When adding or looking up in the hash table, pointers to 64bit integers must be passed. They can be addresses on the stack. Values can then be looked up with pointers other than the original key pointer that was used to add values. This method is not suitable to match string keys as it would only match the first character. 

References eina\+\_\+hash\+\_\+int64(), eina\+\_\+hash\+\_\+new(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga0cd41f505034160d99f3b907ad3d74ce}\label{group__Eina__Hash__Group_ga0cd41f505034160d99f3b907ad3d74ce}} 
\index{Hash Table@{Hash Table}!eina\_hash\_pointer\_new@{eina\_hash\_pointer\_new}}
\index{eina\_hash\_pointer\_new@{eina\_hash\_pointer\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_pointer\_new()}{eina\_hash\_pointer\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+pointer\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table for use with pointers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table using the int64/int32 algorithm for table management and dereferenced pointers to compare the keys. Values can then be looked up with pointers other than the original key pointer that was used to add values. This method may appear to be able to match string keys, but actually it only matches the first character.


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{comment}{// For a hash that will have only one pointer to each structure}}
\DoxyCodeLine{\textcolor{keyword}{extern} \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\_Hash}} *hash;}
\DoxyCodeLine{\textcolor{keyword}{extern} \textcolor{keywordtype}{void} *data;}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\_hash\_find}}(hash, \&data))}
\DoxyCodeLine{   \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\_hash\_add}}(hash, \&data, data);}

\end{DoxyCode}
 

References eina\+\_\+hash\+\_\+int32(), eina\+\_\+hash\+\_\+int64(), eina\+\_\+hash\+\_\+new(), EINA\+\_\+\+KEY\+\_\+\+CMP, EINA\+\_\+\+KEY\+\_\+\+HASH, and EINA\+\_\+\+KEY\+\_\+\+LENGTH.



Referenced by eina\+\_\+cow\+\_\+add(), eina\+\_\+file\+\_\+open(), eina\+\_\+file\+\_\+virtualize(), elm\+\_\+drop\+\_\+target\+\_\+add(), eolian\+\_\+aux\+\_\+class\+\_\+callables\+\_\+get(), eolian\+\_\+aux\+\_\+state\+\_\+class\+\_\+children\+\_\+find(), and evas\+\_\+object\+\_\+image\+\_\+data\+\_\+get().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga75266e6a40be3a377345b4d883b6e9a7}\label{group__Eina__Hash__Group_ga75266e6a40be3a377345b4d883b6e9a7}} 
\index{Hash Table@{Hash Table}!eina\_hash\_stringshared\_new@{eina\_hash\_stringshared\_new}}
\index{eina\_hash\_stringshared\_new@{eina\_hash\_stringshared\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_stringshared\_new()}{eina\_hash\_stringshared\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}}$\ast$ eina\+\_\+hash\+\_\+stringshared\+\_\+new (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Types__Group_gadbac560ba2bca5c61d97bfbb542018f3}{Eina\+\_\+\+Free\+\_\+\+Cb}}}]{data\+\_\+free\+\_\+cb }\end{DoxyParamCaption})}



Creates a new hash table optimized for stringshared values. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data\+\_\+free\+\_\+cb} & The function called on each value when the hash table is freed, or when an item is deleted from it. {\ttfamily NULL} can be passed as callback. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new hash table, or {\ttfamily NULL} on failure.
\end{DoxyReturn}
This function creates a new hash table optimized for stringshared values. Values CANNOT be looked up with pointers not equal to the original key pointer that was used to add a value.

Excerpt of code that will NOT work with this type of hash\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{extern} \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\_Hash}} *hash;}
\DoxyCodeLine{\textcolor{keyword}{extern} \textcolor{keyword}{const} \textcolor{keywordtype}{char} *value;}
\DoxyCodeLine{\textcolor{keyword}{const} \textcolor{keywordtype}{char} *a = \mbox{\hyperlink{group__Eina__Stringshare__Group_ga5293082680141132ffcacc28866ef0ef}{eina\_stringshare\_add}}(\textcolor{stringliteral}{"{}key"{}});}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\_hash\_add}}(hash, a, value);}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\_hash\_find}}(hash, \textcolor{stringliteral}{"{}key"{}});}

\end{DoxyCode}
 

References eina\+\_\+hash\+\_\+new(), EINA\+\_\+\+KEY\+\_\+\+CMP, and EINA\+\_\+\+KEY\+\_\+\+HASH.



Referenced by efreet\+\_\+mime\+\_\+type\+\_\+cache\+\_\+clear().

\mbox{\Hypertarget{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}\label{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}} 
\index{Hash Table@{Hash Table}!eina\_hash\_add@{eina\_hash\_add}}
\index{eina\_hash\_add@{eina\_hash\_add}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_add()}{eina\_hash\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Adds an entry to the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & A unique key. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to associate with the string given by {\ttfamily key}. Cannot be {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function adds {\ttfamily key} to {\ttfamily hash}. {\ttfamily key} must be unique within the hash table so that \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}} and \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}} operate on the correct data item.

Key uniqueness varies depending on the type of {\ttfamily hash\+:} a stringshared \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} needs unique pointers (which implies unique strings). All other string hash types require that the strings themselves are unique. Pointer, int32 and int64 hashes need to have unique values. Failure to use sufficient uniqueness will result in unexpected results when inserting data pointers accessed with \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, and removed with \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}}.

Key strings are case sensitive. 

References EINA\+\_\+\+FALSE, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by ecore\+\_\+buffer\+\_\+register(), ecore\+\_\+drm\+\_\+evdev\+\_\+key\+\_\+remap\+\_\+set(), ecore\+\_\+evas\+\_\+data\+\_\+set(), ecore\+\_\+imf\+\_\+module\+\_\+register(), ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+add(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+add(), ecore\+\_\+wl2\+\_\+display\+\_\+connect(), ecore\+\_\+wl2\+\_\+display\+\_\+create(), edje\+\_\+edit\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+program\+\_\+del(), edje\+\_\+external\+\_\+type\+\_\+register(), eeze\+\_\+net\+\_\+new(), efreet\+\_\+desktop\+\_\+x\+\_\+field\+\_\+set(), eina\+\_\+error\+\_\+msg\+\_\+get(), eina\+\_\+file\+\_\+map\+\_\+new(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new(), eina\+\_\+hash\+\_\+move(), eina\+\_\+mempool\+\_\+register(), eio\+\_\+file\+\_\+associate\+\_\+add(), eldbus\+\_\+service\+\_\+object\+\_\+manager\+\_\+attach(), elm\+\_\+color\+\_\+class\+\_\+editor\+\_\+add(), elm\+\_\+prefs\+\_\+item\+\_\+iface\+\_\+register(), and evas\+\_\+object\+\_\+image\+\_\+data\+\_\+get().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}\label{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}} 
\index{Hash Table@{Hash Table}!eina\_hash\_direct\_add@{eina\_hash\_direct\_add}}
\index{eina\_hash\_direct\_add@{eina\_hash\_direct\_add}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_direct\_add()}{eina\_hash\_direct\_add()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+direct\+\_\+add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Adds an entry to the given hash table without duplicating the string. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & A unique key. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to associate with the string given by {\ttfamily key}. Cannot be {\ttfamily NULL} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function adds {\ttfamily key} to {\ttfamily hash}. {\ttfamily key} must be unique within the hash table so that \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}} and \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}} operate on the correct data item.

Key uniqueness varies depending on the type of {\ttfamily hash\+:} a stringshared \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} needs unique pointers (which implies unique strings). All other string hash types require that the strings themselves are unique. Pointer, int32 and int64 hashes need to have unique values. Failure to use sufficient uniqueness will result in unexpected results when inserting data pointers accessed with \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, and removed with \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}}.

Unlike \mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add()}}, this function does not make a copy of {\ttfamily key}, so it must be a string constant or stored elsewhere (such as in the object being added). Key strings are case sensitive. 

References EINA\+\_\+\+FALSE, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+add(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+alias\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+copy(), edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+set(), eina\+\_\+file\+\_\+map\+\_\+new(), eina\+\_\+file\+\_\+open(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new(), eio\+\_\+file\+\_\+associate\+\_\+direct\+\_\+add(), eio\+\_\+monitor\+\_\+stringshared\+\_\+add(), elm\+\_\+prefs\+\_\+item\+\_\+iface\+\_\+register(), elm\+\_\+prefs\+\_\+page\+\_\+iface\+\_\+register(), and ethumb\+\_\+client\+\_\+thumb\+\_\+exists().

\mbox{\Hypertarget{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}\label{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}} 
\index{Hash Table@{Hash Table}!eina\_hash\_del@{eina\_hash\_del}}
\index{eina\_hash\_del@{eina\_hash\_del}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_del()}{eina\_hash\_del()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+del (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Removes the entry identified by a key or a data from the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data pointer to remove if the key is {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function removes the entry identified by {\ttfamily key} or {\ttfamily data} from {\ttfamily hash}. If a free function was given to the callback on creation, it will be called for the data being deleted. If {\ttfamily hash} is {\ttfamily NULL}, the function returns immediately \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}. If {\ttfamily key} is {\ttfamily NULL}, then {\ttfamily data} is used to find the a match to remove, otherwise {\ttfamily key} is used and {\ttfamily data} is not required and can be {\ttfamily NULL}.

\begin{DoxyNote}{Note}
If you already have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key()}} or \mbox{\hyperlink{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash()}}. If you don\textquotesingle{}t have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data()}} directly. 
\end{DoxyNote}


References EINA\+\_\+\+FALSE, eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by ecore\+\_\+buffer\+\_\+unregister(), ecore\+\_\+evas\+\_\+data\+\_\+set(), ecore\+\_\+imf\+\_\+context\+\_\+prediction\+\_\+hint\+\_\+hash\+\_\+del(), ecore\+\_\+wl\+\_\+window\+\_\+free(), edje\+\_\+edit\+\_\+data\+\_\+del(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+del(), edje\+\_\+edit\+\_\+group\+\_\+del(), edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+del(), eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free(), eina\+\_\+file\+\_\+flush(), eina\+\_\+file\+\_\+open(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free(), eina\+\_\+hash\+\_\+move(), eina\+\_\+mempool\+\_\+unregister(), eio\+\_\+monitor\+\_\+stringshared\+\_\+add(), eldbus\+\_\+service\+\_\+interface\+\_\+unregister(), eldbus\+\_\+service\+\_\+object\+\_\+manager\+\_\+detach(), elm\+\_\+prefs\+\_\+item\+\_\+iface\+\_\+unregister(), elm\+\_\+prefs\+\_\+page\+\_\+iface\+\_\+unregister(), and evas\+\_\+object\+\_\+image\+\_\+data\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}\label{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}} 
\index{Hash Table@{Hash Table}!eina\_hash\_find@{eina\_hash\_find}}
\index{eina\_hash\_find@{eina\_hash\_find}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_find()}{eina\_hash\_find()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+hash\+\_\+find (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key }\end{DoxyParamCaption})}



Retrieves a specific entry in the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key of the entry to find. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer for the stored entry on success, or {\ttfamily NULL} otherwise.
\end{DoxyReturn}
This function retrieves the entry associated with {\ttfamily key} in {\ttfamily hash}. If {\ttfamily hash} is {\ttfamily NULL}, this function returns {\ttfamily NULL}. 

References eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by ecore\+\_\+buffer\+\_\+unregister(), ecore\+\_\+evas\+\_\+data\+\_\+get(), ecore\+\_\+evas\+\_\+drop\+\_\+available\+\_\+types\+\_\+get(), ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+find(), ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+wait(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+find(), ecore\+\_\+wl2\+\_\+connected\+\_\+display\+\_\+get(), ecore\+\_\+wl2\+\_\+display\+\_\+connect(), ecore\+\_\+wl2\+\_\+display\+\_\+create(), ecore\+\_\+wl\+\_\+window\+\_\+find(), edje\+\_\+edit\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+data\+\_\+del(), edje\+\_\+edit\+\_\+data\+\_\+source\+\_\+generate(), edje\+\_\+edit\+\_\+data\+\_\+value\+\_\+get(), edje\+\_\+edit\+\_\+data\+\_\+value\+\_\+set(), edje\+\_\+edit\+\_\+font\+\_\+del(), edje\+\_\+edit\+\_\+group\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+alias\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+alias\+\_\+is(), edje\+\_\+edit\+\_\+group\+\_\+aliased\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+aliases\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+copy(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+del(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+value\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+value\+\_\+set(), edje\+\_\+edit\+\_\+group\+\_\+del(), edje\+\_\+edit\+\_\+group\+\_\+exist(), edje\+\_\+edit\+\_\+group\+\_\+name\+\_\+set(), edje\+\_\+edit\+\_\+object\+\_\+color\+\_\+class\+\_\+list\+\_\+get(), edje\+\_\+edit\+\_\+part\+\_\+del(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+append(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+index\+\_\+source\+\_\+set(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+insert\+\_\+after(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+insert\+\_\+after\+\_\+index(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+insert\+\_\+at(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+insert\+\_\+before(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+insert\+\_\+before\+\_\+index(), edje\+\_\+edit\+\_\+part\+\_\+item\+\_\+source\+\_\+set(), edje\+\_\+edit\+\_\+program\+\_\+action\+\_\+set(), edje\+\_\+edit\+\_\+program\+\_\+del(), edje\+\_\+edit\+\_\+script\+\_\+program\+\_\+get(), edje\+\_\+edit\+\_\+script\+\_\+program\+\_\+set(), edje\+\_\+edit\+\_\+state\+\_\+del(), edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get(), edje\+\_\+external\+\_\+type\+\_\+get(), edje\+\_\+external\+\_\+type\+\_\+register(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+del(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+get(), edje\+\_\+file\+\_\+text\+\_\+class\+\_\+set(), edje\+\_\+mmap\+\_\+data\+\_\+get(), edje\+\_\+mmap\+\_\+group\+\_\+exists(), eeze\+\_\+net\+\_\+new(), efreet\+\_\+desktop\+\_\+x\+\_\+field\+\_\+get(), efreet\+\_\+util\+\_\+desktop\+\_\+exec\+\_\+find(), efreet\+\_\+util\+\_\+desktop\+\_\+exec\+\_\+glob\+\_\+list(), efreet\+\_\+util\+\_\+desktop\+\_\+file\+\_\+id\+\_\+find(), efreet\+\_\+util\+\_\+path\+\_\+to\+\_\+file\+\_\+id(), eina\+\_\+error\+\_\+msg\+\_\+get(), eina\+\_\+file\+\_\+common\+\_\+map\+\_\+free(), eina\+\_\+file\+\_\+map\+\_\+faulted(), eina\+\_\+file\+\_\+map\+\_\+new(), eina\+\_\+file\+\_\+map\+\_\+populate(), eina\+\_\+file\+\_\+open(), eina\+\_\+file\+\_\+unlink(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+free(), eina\+\_\+file\+\_\+virtual\+\_\+map\+\_\+new(), eina\+\_\+hash\+\_\+move(), eio\+\_\+file\+\_\+associate\+\_\+find(), eio\+\_\+monitor\+\_\+stringshared\+\_\+add(), eldbus\+\_\+name\+\_\+owner\+\_\+changed\+\_\+callback\+\_\+del(), eldbus\+\_\+proxy\+\_\+property\+\_\+local\+\_\+get(), eldbus\+\_\+service\+\_\+object\+\_\+manager\+\_\+attach(), eldbus\+\_\+service\+\_\+property\+\_\+changed(), elm\+\_\+drop\+\_\+target\+\_\+del(), ethumb\+\_\+client\+\_\+thumb\+\_\+exists(), evas\+\_\+object\+\_\+image\+\_\+data\+\_\+set(), evas\+\_\+object\+\_\+smart\+\_\+type\+\_\+check(), and evas\+\_\+object\+\_\+smart\+\_\+type\+\_\+check\+\_\+ptr().

\mbox{\Hypertarget{group__Eina__Hash__Group_gaabf2f2af1d93f969591f2c5b7378c543}\label{group__Eina__Hash__Group_gaabf2f2af1d93f969591f2c5b7378c543}} 
\index{Hash Table@{Hash Table}!eina\_hash\_modify@{eina\_hash\_modify}}
\index{eina\_hash\_modify@{eina\_hash\_modify}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_modify()}{eina\_hash\_modify()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+hash\+\_\+modify (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Modifies the entry pointer at the specified key and returns the previous entry. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key of the entry to modify. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The new data. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer for the previously stored entry on success, or {\ttfamily NULL} otherwise.
\end{DoxyReturn}
This function modifies the data of {\ttfamily key} with {\ttfamily data} in {\ttfamily hash}. If no entry is found, nothing is added to {\ttfamily hash}. 

References eina\+\_\+hash\+\_\+modify\+\_\+by\+\_\+hash(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}\label{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}} 
\index{Hash Table@{Hash Table}!eina\_hash\_set@{eina\_hash\_set}}
\index{eina\_hash\_set@{eina\_hash\_set}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_set()}{eina\_hash\_set()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+hash\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Modifies the entry pointer at the specified key and returns the previous entry or adds the entry if not found. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key of the entry to modify. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to replace the previous entry. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer for the previous stored entry, or {\ttfamily NULL} otherwise.
\end{DoxyReturn}
This function modifies the value of {\ttfamily key} to {\ttfamily data} in {\ttfamily hash}. If no entry is found, {\ttfamily data} is added to {\ttfamily hash} with the key {\ttfamily key}. 

References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by ecore\+\_\+imf\+\_\+context\+\_\+prediction\+\_\+hint\+\_\+hash\+\_\+set(), ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+set(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+set(), edje\+\_\+edit\+\_\+program\+\_\+action\+\_\+set(), efreet\+\_\+util\+\_\+path\+\_\+to\+\_\+file\+\_\+id(), and evas\+\_\+smart\+\_\+legacy\+\_\+type\+\_\+register().

\mbox{\Hypertarget{group__Eina__Hash__Group_gaa390160f31c235d91947281244e77628}\label{group__Eina__Hash__Group_gaa390160f31c235d91947281244e77628}} 
\index{Hash Table@{Hash Table}!eina\_hash\_move@{eina\_hash\_move}}
\index{eina\_hash\_move@{eina\_hash\_move}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_move()}{eina\_hash\_move()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+move (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{old\+\_\+key,  }\item[{const void $\ast$}]{new\+\_\+key }\end{DoxyParamCaption})}



Changes the key of an entry in a hash without triggering the free callback. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em old\+\_\+key} & The current key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+key} & The new key to associate data with. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} in any case but success, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} on success.
\end{DoxyReturn}
This function moves data from one key to another, but does not call the Eina\+\_\+\+Free\+\_\+\+Cb associated with the hash table when destroying the old key. 

References EINA\+\_\+\+FALSE, eina\+\_\+hash\+\_\+add(), eina\+\_\+hash\+\_\+del(), eina\+\_\+hash\+\_\+find(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by edje\+\_\+edit\+\_\+data\+\_\+name\+\_\+set(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+name\+\_\+set(), and edje\+\_\+edit\+\_\+group\+\_\+name\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_gadb6acb720ce267cc1cd4f51893539f59}\label{group__Eina__Hash__Group_gadb6acb720ce267cc1cd4f51893539f59}} 
\index{Hash Table@{Hash Table}!eina\_hash\_free@{eina\_hash\_free}}
\index{eina\_hash\_free@{eina\_hash\_free}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_free()}{eina\_hash\_free()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Frees the given hash table\textquotesingle{}s resources. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash table to be freed.\\
\hline
\end{DoxyParams}
This function frees memory allocated for the {\ttfamily hash} and to its internal buckets.

If {\ttfamily data\+\_\+free\+\_\+cb} was specified at creation time in \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new}}, it will be called for each element as it gets freed. If the callback was not specified, then any data in these elements may now be lost, if not stored or freed elsewhere.

If {\ttfamily hash} is {\ttfamily NULL}, the function returns immediately.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{extern} \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\_Hash}} *hash;}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Hash__Group_gadb6acb720ce267cc1cd4f51893539f59}{eina\_hash\_free}}(hash);}
\DoxyCodeLine{hash = NULL;}

\end{DoxyCode}
 

References eina\+\_\+rbtree\+\_\+delete(), and EINA\+\_\+\+RBTREE\+\_\+\+FREE\+\_\+\+CB.



Referenced by ecore\+\_\+buffer\+\_\+free(), ecore\+\_\+buffer\+\_\+init(), ecore\+\_\+buffer\+\_\+shutdown(), ecore\+\_\+drm\+\_\+evdev\+\_\+key\+\_\+remap\+\_\+enable(), ecore\+\_\+imf\+\_\+context\+\_\+del(), ecore\+\_\+wl2\+\_\+display\+\_\+connect(), efreet\+\_\+mime\+\_\+type\+\_\+cache\+\_\+clear(), eina\+\_\+cow\+\_\+del(), eina\+\_\+file\+\_\+clean\+\_\+close(), eldbus\+\_\+proxy\+\_\+event\+\_\+callback\+\_\+del(), elm\+\_\+theme\+\_\+flush(), and ethumb\+\_\+client\+\_\+shutdown().

\mbox{\Hypertarget{group__Eina__Hash__Group_gabe2ba51e5dbf6fd5f60628b8e8f00eaa}\label{group__Eina__Hash__Group_gabe2ba51e5dbf6fd5f60628b8e8f00eaa}} 
\index{Hash Table@{Hash Table}!eina\_hash\_free\_buckets@{eina\_hash\_free\_buckets}}
\index{eina\_hash\_free\_buckets@{eina\_hash\_free\_buckets}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_free\_buckets()}{eina\_hash\_free\_buckets()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+free\+\_\+buckets (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Frees the given hash table buckets resources. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash table whose buckets have to be freed.\\
\hline
\end{DoxyParams}
This function frees memory allocated to internal buckets for {\ttfamily hash}.

If {\ttfamily data\+\_\+free\+\_\+cb} was specified at creation time in \mbox{\hyperlink{group__Eina__Hash__Group_ga32c9a8a82e2d20338618baf6af3d1614}{eina\+\_\+hash\+\_\+new()}}, it will be called for each element as it gets freed. If the callback was not specified, then any data in these elements may now be lost, if not stored or freed elsewhere.

If {\ttfamily hash} is {\ttfamily NULL}, the function returns immediately. 

References eina\+\_\+rbtree\+\_\+delete(), and EINA\+\_\+\+RBTREE\+\_\+\+FREE\+\_\+\+CB.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga9289542f6724083eab306e5bb3ab10b0}\label{group__Eina__Hash__Group_ga9289542f6724083eab306e5bb3ab10b0}} 
\index{Hash Table@{Hash Table}!eina\_hash\_population@{eina\_hash\_population}}
\index{eina\_hash\_population@{eina\_hash\_population}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_population()}{eina\_hash\_population()}}
{\footnotesize\ttfamily int eina\+\_\+hash\+\_\+population (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Returns the number of entries in the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The given hash table. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The number of entries in the hash table, or {\ttfamily 0} on error or if {\ttfamily hash} is {\ttfamily NULL}. 
\end{DoxyReturn}


Referenced by eina\+\_\+cow\+\_\+gc().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga4637f61969ecc13adaca17def6ed1a91}\label{group__Eina__Hash__Group_ga4637f61969ecc13adaca17def6ed1a91}} 
\index{Hash Table@{Hash Table}!eina\_hash\_add\_by\_hash@{eina\_hash\_add\_by\_hash}}
\index{eina\_hash\_add\_by\_hash@{eina\_hash\_add\_by\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_add\_by\_hash()}{eina\_hash\_add\_by\_hash()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+add\+\_\+by\+\_\+hash (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Adds an entry to the given hash table by its key hash. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & A unique key. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & The length of {\ttfamily key} (including terminating \textquotesingle{}\textbackslash{}0\textquotesingle{}). \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash of {\ttfamily key}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to associate with the string given by the key. Cannot be {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function adds {\ttfamily key} to {\ttfamily hash}.

{\ttfamily key} must be unique within the hash table so that \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}} and \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}} operate on the correct data item. {\ttfamily key\+\_\+hash} must match {\ttfamily key} so that the correct item can be found by \mbox{\hyperlink{group__Eina__Hash__Group_ga42dee6ba7f023156397ec4ece52e3cf5}{eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash()}}. Key strings are case sensitive.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Hash__Group_gafe3bb7c1f5616b4e158f60322e133260}{eina\+\_\+hash\+\_\+add()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eina__Hash__Group_ga1a88c8632539860e1df25d1812f4146f}\label{group__Eina__Hash__Group_ga1a88c8632539860e1df25d1812f4146f}} 
\index{Hash Table@{Hash Table}!eina\_hash\_direct\_add\_by\_hash@{eina\_hash\_direct\_add\_by\_hash}}
\index{eina\_hash\_direct\_add\_by\_hash@{eina\_hash\_direct\_add\_by\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_direct\_add\_by\_hash()}{eina\_hash\_direct\_add\_by\_hash()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+direct\+\_\+add\+\_\+by\+\_\+hash (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Adds an entry to a hash table by its key hash without duplicating the string key. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & A unique key. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & The length of {\ttfamily key} (including terminating \textquotesingle{}\textbackslash{}0\textquotesingle{}). \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash of {\ttfamily key}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to associate with the string given by {\ttfamily key}. Cannot be {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function adds {\ttfamily key} to {\ttfamily hash}.

{\ttfamily key} must be unique within the hash table so that \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}} and \mbox{\hyperlink{group__Eina__Hash__Group_gad8a9ac3c61ead249a6927a12e9de871a}{eina\+\_\+hash\+\_\+del()}} operate on the correct data item. {\ttfamily key\+\_\+hash} must match {\ttfamily key} so that the correct item can be found by \mbox{\hyperlink{group__Eina__Hash__Group_ga42dee6ba7f023156397ec4ece52e3cf5}{eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash()}}. Key strings are case sensitive.

Unlike \mbox{\hyperlink{group__Eina__Hash__Group_ga4637f61969ecc13adaca17def6ed1a91}{eina\+\_\+hash\+\_\+add\+\_\+by\+\_\+hash()}}, this function does not make a copy of {\ttfamily key}, so it must be a string constant or stored elsewhere (such as inside the object being added).

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}\label{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}} 
\index{Hash Table@{Hash Table}!eina\_hash\_del\_by\_key\_hash@{eina\_hash\_del\_by\_key\_hash}}
\index{eina\_hash\_del\_by\_key\_hash@{eina\_hash\_del\_by\_key\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_del\_by\_key\_hash()}{eina\_hash\_del\_by\_key\_hash()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash }\end{DoxyParamCaption})}



Removes the entry identified by a key and a key hash from the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & The length of the key (including terminating \textquotesingle{}\textbackslash{}0\textquotesingle{}). \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash that always matches the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function removes the entry identified by {\ttfamily key} and {\ttfamily key\+\_\+hash} from {\ttfamily hash}. If a free function was given to the callback on creation, it will be called for the data being deleted. If {\ttfamily hash} or {\ttfamily key} are {\ttfamily NULL}, the function returns \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} immediately.

\begin{DoxyNote}{Note}
If you don\textquotesingle{}t have the key\+\_\+hash, use \mbox{\hyperlink{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key()}} instead. If you don\textquotesingle{}t have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data()}}. 
\end{DoxyNote}


References EINA\+\_\+\+FALSE, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by eina\+\_\+file\+\_\+close().

\mbox{\Hypertarget{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}\label{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}} 
\index{Hash Table@{Hash Table}!eina\_hash\_del\_by\_key@{eina\_hash\_del\_by\_key}}
\index{eina\_hash\_del\_by\_key@{eina\_hash\_del\_by\_key}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_del\_by\_key()}{eina\_hash\_del\_by\_key()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key }\end{DoxyParamCaption})}



Removes the entry identified by a key from the given hash table. 

This version will calculate key length and hash by using functions provided to the hash creation function.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key. Cannot be {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function removes the entry identified by {\ttfamily key} from {\ttfamily hash}. The key length and hash will be calculated automatically via a function provided to the hash creation function. If a free function was given to the callback on creation, it will be called for the data being deleted. If {\ttfamily hash} or {\ttfamily key} are {\ttfamily NULL}, the function returns \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} immediately.

\begin{DoxyNote}{Note}
If you already have the key\+\_\+hash, use \mbox{\hyperlink{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash()}}. If you don\textquotesingle{}t have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data()}} instead. 
\end{DoxyNote}


References EINA\+\_\+\+FALSE, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by ecore\+\_\+thread\+\_\+global\+\_\+data\+\_\+del(), ecore\+\_\+thread\+\_\+local\+\_\+data\+\_\+del(), ecore\+\_\+wl2\+\_\+display\+\_\+destroy(), ecore\+\_\+wl2\+\_\+display\+\_\+disconnect(), edje\+\_\+external\+\_\+type\+\_\+unregister(), eeze\+\_\+net\+\_\+free(), efreet\+\_\+desktop\+\_\+x\+\_\+field\+\_\+del(), and efreet\+\_\+desktop\+\_\+x\+\_\+field\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}\label{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}} 
\index{Hash Table@{Hash Table}!eina\_hash\_del\_by\_data@{eina\_hash\_del\_by\_data}}
\index{eina\_hash\_del\_by\_data@{eina\_hash\_del\_by\_data}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_del\_by\_data()}{eina\_hash\_del\_by\_data()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Removes an entry from a hash table identified by its data value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data value to search and remove. Cannot be {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred or if {\ttfamily hash} or {\ttfamily data} are {\ttfamily NULL}, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise. thing goes fine.
\end{DoxyReturn}
This function removes the entry identified by {\ttfamily data} from {\ttfamily hash}. If a free function was given to the callback on creation, it will be called for the data being deleted.

\begin{DoxyNote}{Note}
This version is slow since there is no quick access to nodes based on data.

If you already have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_gacdcde189b35d525773d699793daa9017}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key()}} or \mbox{\hyperlink{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash()}} instead. 
\end{DoxyNote}


References EINA\+\_\+\+FALSE, and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.



Referenced by eina\+\_\+hash\+\_\+del(), and eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+hash().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga4ce2a4a6917d96d5a791633d83e7af4e}\label{group__Eina__Hash__Group_ga4ce2a4a6917d96d5a791633d83e7af4e}} 
\index{Hash Table@{Hash Table}!eina\_hash\_del\_by\_hash@{eina\_hash\_del\_by\_hash}}
\index{eina\_hash\_del\_by\_hash@{eina\_hash\_del\_by\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_del\_by\_hash()}{eina\_hash\_del\_by\_hash()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+hash (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Removes the entry identified by a key and a key hash, or a data value from the given hash table. 

If {\ttfamily key} is {\ttfamily NULL}, then {\ttfamily data} is used to find a match to remove.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & The length of the key. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash that always match the key. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data pointer to remove if the key is {\ttfamily NULL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} if an error occurred, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} otherwise.
\end{DoxyReturn}
This function removes the entry identified by {\ttfamily key} and {\ttfamily key\+\_\+hash}, or {\ttfamily data}, from {\ttfamily hash}. If a free function was given to the callback on creation, it will be called for the data being deleted. If {\ttfamily hash} is {\ttfamily NULL}, the function returns \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} immediately. If {\ttfamily key} is {\ttfamily NULL}, then {\ttfamily key\+\_\+length} and {\ttfamily key\+\_\+hash} are ignored and {\ttfamily data} is used to find a match to remove, otherwise {\ttfamily key} and {\ttfamily key\+\_\+hash} are used and {\ttfamily data} is not required and can be {\ttfamily NULL}. Do not forget to count \textquotesingle{}\textbackslash{}0\textquotesingle{} for string when setting the value of {\ttfamily key\+\_\+length}.

\begin{DoxyNote}{Note}
If you already have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_ga7454f861781493345ff389a2605a9237}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key\+\_\+hash()}}. If you don\textquotesingle{}t have the key, use \mbox{\hyperlink{group__Eina__Hash__Group_ga66ca7b9af4f40eeefd8aa401e07147c1}{eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data()}} directly. 
\end{DoxyNote}


References EINA\+\_\+\+FALSE, eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+data(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga42dee6ba7f023156397ec4ece52e3cf5}\label{group__Eina__Hash__Group_ga42dee6ba7f023156397ec4ece52e3cf5}} 
\index{Hash Table@{Hash Table}!eina\_hash\_find\_by\_hash@{eina\_hash\_find\_by\_hash}}
\index{eina\_hash\_find\_by\_hash@{eina\_hash\_find\_by\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_find\_by\_hash()}{eina\_hash\_find\_by\_hash()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+hash\+\_\+find\+\_\+by\+\_\+hash (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash }\end{DoxyParamCaption})}



Retrieves a specific entry from the given hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The given hash table. Cannot be {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key of the entry to find. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & The length of the key. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash that always matches the key \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer for the stored entry on success, or {\ttfamily NULL} if {\ttfamily hash} is {\ttfamily NULL} or if the data pointer could not be retrieved.
\end{DoxyReturn}
This function retrieves the entry associated with {\ttfamily key} of length {\ttfamily key\+\_\+length} in {\ttfamily hash}. {\ttfamily key\+\_\+hash} is the hash that always matches {\ttfamily key}. It is ignored if {\ttfamily key} is {\ttfamily NULL}. Do not forget to count \textquotesingle{}\textbackslash{}0\textquotesingle{} for string when setting the value of {\ttfamily key\+\_\+length}. 

References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by eina\+\_\+file\+\_\+close(), and eina\+\_\+hash\+\_\+find().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga821f033abb9edea2929df2ecb4880a3a}\label{group__Eina__Hash__Group_ga821f033abb9edea2929df2ecb4880a3a}} 
\index{Hash Table@{Hash Table}!eina\_hash\_modify\_by\_hash@{eina\_hash\_modify\_by\_hash}}
\index{eina\_hash\_modify\_by\_hash@{eina\_hash\_modify\_by\_hash}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_modify\_by\_hash()}{eina\_hash\_modify\_by\_hash()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+hash\+\_\+modify\+\_\+by\+\_\+hash (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{int}]{key\+\_\+length,  }\item[{int}]{key\+\_\+hash,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Modifies the entry pointer at the specified key and returns the previous entry. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The given hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key of the entry to modify. \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+length} & Should be the length of {\ttfamily key} (don\textquotesingle{}t forget to count \textquotesingle{}\textbackslash{}0\textquotesingle{} for string). \\
\hline
\mbox{\texttt{ in}}  & {\em key\+\_\+hash} & The hash that always matches the key. Ignored if {\ttfamily key} is {\ttfamily NULL}. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to replace the current entry, if it exists. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer for the previously stored entry, or {\ttfamily NULL} if not found. If an existing entry is not found, nothing is added to the hash. 
\end{DoxyReturn}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN\+\_\+\+VAL, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by eina\+\_\+hash\+\_\+modify().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga1a090384b1c057daec8e19c6a1ea2c0d}\label{group__Eina__Hash__Group_ga1a090384b1c057daec8e19c6a1ea2c0d}} 
\index{Hash Table@{Hash Table}!eina\_hash\_iterator\_key\_new@{eina\_hash\_iterator\_key\_new}}
\index{eina\_hash\_iterator\_key\_new@{eina\_hash\_iterator\_key\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_iterator\_key\_new()}{eina\_hash\_iterator\_key\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+hash\+\_\+iterator\+\_\+key\+\_\+new (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Returns a new iterator associated with hash keys. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new iterator, or {\ttfamily NULL} if memory could not be allocated.
\end{DoxyReturn}
This function returns a newly allocated iterator associated with {\ttfamily hash}. If {\ttfamily hash} is not populated, this function still returns a valid iterator that will always return false on \mbox{\hyperlink{group__Eina__Iterator__Group_ga83346e93c32dbebc8fd66e4f278140c5}{eina\+\_\+iterator\+\_\+next()}}.

\begin{DoxyWarning}{Warning}
If the hash structure changes then the iterator becomes invalid; adding or removing items may lead to program crash. 
\end{DoxyWarning}


References EINA\+\_\+\+MAGIC\+\_\+\+SET, FUNC\+\_\+\+ITERATOR\+\_\+\+FREE, FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER, and FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT.



Referenced by edje\+\_\+edit\+\_\+data\+\_\+list\+\_\+get(), edje\+\_\+edit\+\_\+data\+\_\+source\+\_\+generate(), edje\+\_\+edit\+\_\+group\+\_\+data\+\_\+list\+\_\+get(), and edje\+\_\+mmap\+\_\+collection\+\_\+list().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga5191350d6044d93b6518a957f12f5ac3}\label{group__Eina__Hash__Group_ga5191350d6044d93b6518a957f12f5ac3}} 
\index{Hash Table@{Hash Table}!eina\_hash\_iterator\_data\_new@{eina\_hash\_iterator\_data\_new}}
\index{eina\_hash\_iterator\_data\_new@{eina\_hash\_iterator\_data\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_iterator\_data\_new()}{eina\_hash\_iterator\_data\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+hash\+\_\+iterator\+\_\+data\+\_\+new (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Returns a new iterator associated with a hash. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new iterator, or {\ttfamily NULL} if memory could not be allocated.
\end{DoxyReturn}
This function returns a newly allocated iterator associated with {\ttfamily hash}. If {\ttfamily hash} is not populated, this function still returns a valid iterator that will always return false on \mbox{\hyperlink{group__Eina__Iterator__Group_ga83346e93c32dbebc8fd66e4f278140c5}{eina\+\_\+iterator\+\_\+next()}}.

\begin{DoxyWarning}{Warning}
If the hash structure changes then the iterator becomes invalid; adding or removing items may lead to program crash. 
\end{DoxyWarning}


References EINA\+\_\+\+MAGIC\+\_\+\+SET, FUNC\+\_\+\+ITERATOR\+\_\+\+FREE, FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER, and FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT.



Referenced by ecore\+\_\+wl2\+\_\+display\+\_\+globals\+\_\+get(), ecore\+\_\+wl\+\_\+window\+\_\+surface\+\_\+find(), edje\+\_\+edit\+\_\+clean\+\_\+save\+\_\+as(), edje\+\_\+edit\+\_\+font\+\_\+path\+\_\+get(), edje\+\_\+edit\+\_\+fonts\+\_\+list\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+add(), edje\+\_\+edit\+\_\+group\+\_\+aliased\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+aliases\+\_\+get(), edje\+\_\+edit\+\_\+group\+\_\+copy(), edje\+\_\+edit\+\_\+image\+\_\+replace(), edje\+\_\+edit\+\_\+image\+\_\+set\+\_\+del(), edje\+\_\+edit\+\_\+set\+\_\+usage\+\_\+list\+\_\+get(), edje\+\_\+edit\+\_\+vector\+\_\+usage\+\_\+list\+\_\+get(), edje\+\_\+file\+\_\+iterator\+\_\+new(), edje\+\_\+mmap\+\_\+group\+\_\+exists(), eina\+\_\+cow\+\_\+gc(), eina\+\_\+file\+\_\+flush(), and eio\+\_\+monitoring\+\_\+interval\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_gaf0e7e38ec02c4bcfca3c3c4dd13c6af9}\label{group__Eina__Hash__Group_gaf0e7e38ec02c4bcfca3c3c4dd13c6af9}} 
\index{Hash Table@{Hash Table}!eina\_hash\_iterator\_tuple\_new@{eina\_hash\_iterator\_tuple\_new}}
\index{eina\_hash\_iterator\_tuple\_new@{eina\_hash\_iterator\_tuple\_new}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_iterator\_tuple\_new()}{eina\_hash\_iterator\_tuple\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}}$\ast$ eina\+\_\+hash\+\_\+iterator\+\_\+tuple\+\_\+new (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash }\end{DoxyParamCaption})}



Returned a new iterator associated with hash keys and data. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new iterator, or {\ttfamily NULL} if memory could not be allocated.
\end{DoxyReturn}
This function returns a newly allocated iterator associated with {\ttfamily hash}. If {\ttfamily hash} is not populated, this function still returns a valid iterator that will always return false on \mbox{\hyperlink{group__Eina__Iterator__Group_ga83346e93c32dbebc8fd66e4f278140c5}{eina\+\_\+iterator\+\_\+next()}}.

\begin{DoxyNote}{Note}
Iterator data will provide values as Eina\+\_\+\+Hash\+\_\+\+Tuple that should not be modified!
\end{DoxyNote}
\begin{DoxyWarning}{Warning}
If the hash structure changes then the iterator becomes invalid; adding or removing items may lead to program crash. 
\end{DoxyWarning}


References EINA\+\_\+\+MAGIC\+\_\+\+SET, FUNC\+\_\+\+ITERATOR\+\_\+\+FREE, FUNC\+\_\+\+ITERATOR\+\_\+\+GET\+\_\+\+CONTAINER, and FUNC\+\_\+\+ITERATOR\+\_\+\+NEXT.



Referenced by edje\+\_\+external\+\_\+iterator\+\_\+get(), edje\+\_\+mmap\+\_\+color\+\_\+class\+\_\+iterator\+\_\+new(), edje\+\_\+mmap\+\_\+size\+\_\+class\+\_\+iterator\+\_\+new(), edje\+\_\+mmap\+\_\+text\+\_\+class\+\_\+iterator\+\_\+new(), and eina\+\_\+hash\+\_\+foreach().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga2c23f8425d3afcc61827ab67b46d7190}\label{group__Eina__Hash__Group_ga2c23f8425d3afcc61827ab67b46d7190}} 
\index{Hash Table@{Hash Table}!eina\_hash\_foreach@{eina\_hash\_foreach}}
\index{eina\_hash\_foreach@{eina\_hash\_foreach}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_foreach()}{eina\_hash\_foreach()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+foreach (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga29e5a6f3ff7e719018d87d8769604e40}{Eina\+\_\+\+Hash\+\_\+\+Foreach}}}]{func,  }\item[{const void $\ast$}]{fdata }\end{DoxyParamCaption})}



Calls a function on every member stored in the hash table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em hash} & The hash table whose members will be walked. \\
\hline
\mbox{\texttt{ in}}  & {\em func} & The function to call on each parameter. \\
\hline
\mbox{\texttt{ in}}  & {\em fdata} & The data pointer to pass to the function being called.\\
\hline
\end{DoxyParams}
This function iterates over the hash table {\ttfamily hash}, calling the function {\ttfamily func} on each member. If {\ttfamily func} modifies the contents of the hash table, or wishes to stop processing it should return \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}. If {\ttfamily func} returns \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} the foreach loop will keep processing.

Example\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{extern} \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\_Hash}} *hash;}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}} hash\_fn(\textcolor{keyword}{const} \mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\_Hash}} *hash, \textcolor{keyword}{const} \textcolor{keywordtype}{void} *key,}
\DoxyCodeLine{                  \textcolor{keywordtype}{void} *data, \textcolor{keywordtype}{void} *fdata)}
\DoxyCodeLine{\{}
\DoxyCodeLine{  printf(\textcolor{stringliteral}{"{}Func data: \%s, Hash entry: \%s / \%p\(\backslash\)n"{}},}
\DoxyCodeLine{         fdata, (\textcolor{keyword}{const} \textcolor{keywordtype}{char} *)key, data);}
\DoxyCodeLine{  \textcolor{keywordflow}{return} \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}};}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keywordtype}{int} main(\textcolor{keywordtype}{int} argc, \textcolor{keywordtype}{char} **argv)}
\DoxyCodeLine{\{}
\DoxyCodeLine{  \textcolor{keywordtype}{char} *hash\_fn\_data;}
\DoxyCodeLine{}
\DoxyCodeLine{  hash\_fn\_data = strdup(\textcolor{stringliteral}{"{}Hello World"{}});}
\DoxyCodeLine{  \mbox{\hyperlink{group__Eina__Hash__Group_ga2c23f8425d3afcc61827ab67b46d7190}{eina\_hash\_foreach}}(hash, hash\_fn, hash\_fn\_data);}
\DoxyCodeLine{  free(hash\_fn\_data);}
\DoxyCodeLine{\}}

\end{DoxyCode}
 

References EINA\+\_\+\+EACH\+\_\+\+CB, eina\+\_\+hash\+\_\+iterator\+\_\+tuple\+\_\+new(), eina\+\_\+iterator\+\_\+foreach(), eina\+\_\+iterator\+\_\+free(), and EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN.



Referenced by ecore\+\_\+buffer\+\_\+shutdown(), edje\+\_\+color\+\_\+class\+\_\+list(), edje\+\_\+size\+\_\+class\+\_\+list(), and edje\+\_\+text\+\_\+class\+\_\+list().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga7a119b7c8261a4d1026f3b7fcad13eca}\label{group__Eina__Hash__Group_ga7a119b7c8261a4d1026f3b7fcad13eca}} 
\index{Hash Table@{Hash Table}!eina\_hash\_list\_append@{eina\_hash\_list\_append}}
\index{eina\_hash\_list\_append@{eina\_hash\_list\_append}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_list\_append()}{eina\_hash\_list\_append()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+list\+\_\+append (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Appends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. 

This function is identical to the sequence of calling \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, \mbox{\hyperlink{group__Eina__List__Group_ga92ec14d1a1040a361c4d8cd0ab7b0ecc}{eina\+\_\+list\+\_\+append()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set()}}, but with one fewer required hash lookup.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to append to the list.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, eina\+\_\+list\+\_\+append(), EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by elm\+\_\+drop\+\_\+target\+\_\+add().

\mbox{\Hypertarget{group__Eina__Hash__Group_gabc49a780fb6752c9dd8c51ca85c16be5}\label{group__Eina__Hash__Group_gabc49a780fb6752c9dd8c51ca85c16be5}} 
\index{Hash Table@{Hash Table}!eina\_hash\_list\_direct\_append@{eina\_hash\_list\_direct\_append}}
\index{eina\_hash\_list\_direct\_append@{eina\_hash\_list\_direct\_append}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_list\_direct\_append()}{eina\_hash\_list\_direct\_append()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+list\+\_\+direct\+\_\+append (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Appends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash using \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}}. 

This function is identical to the sequence of calling \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, \mbox{\hyperlink{group__Eina__List__Group_ga92ec14d1a1040a361c4d8cd0ab7b0ecc}{eina\+\_\+list\+\_\+append()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set()}}, but with one fewer required hash lookup.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to append to the list.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+23 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, eina\+\_\+list\+\_\+append(), EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.

\mbox{\Hypertarget{group__Eina__Hash__Group_ga7381144c09108de9fa9a8e67c281d289}\label{group__Eina__Hash__Group_ga7381144c09108de9fa9a8e67c281d289}} 
\index{Hash Table@{Hash Table}!eina\_hash\_list\_prepend@{eina\_hash\_list\_prepend}}
\index{eina\_hash\_list\_prepend@{eina\_hash\_list\_prepend}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_list\_prepend()}{eina\_hash\_list\_prepend()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+list\+\_\+prepend (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Prepends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. 

This function is identical to the sequence of calling \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, \mbox{\hyperlink{group__Eina__List__Group_ga9f35bfc7c5b798014c3e0a74bc6f39ad}{eina\+\_\+list\+\_\+prepend()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set()}}, but with one fewer required hash lookup.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to prepend to the list.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, eina\+\_\+list\+\_\+append(), eina\+\_\+list\+\_\+prepend(), EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by evas\+\_\+object\+\_\+name\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga1997c0cea9757431da603d46f6ee1902}\label{group__Eina__Hash__Group_ga1997c0cea9757431da603d46f6ee1902}} 
\index{Hash Table@{Hash Table}!eina\_hash\_list\_direct\_prepend@{eina\_hash\_list\_direct\_prepend}}
\index{eina\_hash\_list\_direct\_prepend@{eina\_hash\_list\_direct\_prepend}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_list\_direct\_prepend()}{eina\_hash\_list\_direct\_prepend()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+list\+\_\+direct\+\_\+prepend (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Prepends data to an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash using \mbox{\hyperlink{group__Eina__Hash__Group_ga50aa7d4303e5efbe8dc7f593b59b9f63}{eina\+\_\+hash\+\_\+direct\+\_\+add()}}. 

This function is identical to the sequence of calling \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, \mbox{\hyperlink{group__Eina__List__Group_ga9f35bfc7c5b798014c3e0a74bc6f39ad}{eina\+\_\+list\+\_\+prepend()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set()}}, but with one fewer required hash lookup.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to prepend to the list.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+23 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, eina\+\_\+list\+\_\+append(), eina\+\_\+list\+\_\+prepend(), EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.

\mbox{\Hypertarget{group__Eina__Hash__Group_gabb0157184bfef0302709e2d351446e7f}\label{group__Eina__Hash__Group_gabb0157184bfef0302709e2d351446e7f}} 
\index{Hash Table@{Hash Table}!eina\_hash\_list\_remove@{eina\_hash\_list\_remove}}
\index{eina\_hash\_list\_remove@{eina\_hash\_list\_remove}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_list\_remove()}{eina\_hash\_list\_remove()}}
{\footnotesize\ttfamily void eina\+\_\+hash\+\_\+list\+\_\+remove (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Hash__Group_ga9a89d7d3ee260d3a60572ebf651b07e0}{Eina\+\_\+\+Hash}} $\ast$}]{hash,  }\item[{const void $\ast$}]{key,  }\item[{const void $\ast$}]{data }\end{DoxyParamCaption})}



Removes data from an \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} inside a hash. 

This function is identical to the sequence of calling \mbox{\hyperlink{group__Eina__Hash__Group_ga45703d00fbabffc86e6836ffe98a4c92}{eina\+\_\+hash\+\_\+find()}}, \mbox{\hyperlink{group__Eina__List__Group_ga7c0c6e07aa592a1cb2e010049a718035}{eina\+\_\+list\+\_\+remove()}}, \mbox{\hyperlink{group__Eina__Hash__Group_ga53fd5f171289d63c5d8532bb28434cb3}{eina\+\_\+hash\+\_\+set()}}, but with one fewer required hash lookup.


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in,out}}  & {\em hash} & The hash table. \\
\hline
\mbox{\texttt{ in}}  & {\em key} & The key associated with the data. \\
\hline
\mbox{\texttt{ in}}  & {\em data} & The data to remove from the list.\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


References \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::data, eina\+\_\+list\+\_\+remove(), EINA\+\_\+\+SAFETY\+\_\+\+ON\+\_\+\+NULL\+\_\+\+RETURN, \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key, and \+\_\+\+Eina\+\_\+\+Hash\+\_\+\+Tuple\+::key\+\_\+length.



Referenced by elm\+\_\+drop\+\_\+target\+\_\+del(), and evas\+\_\+object\+\_\+name\+\_\+set().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga3a8434dd0fe7446af605c75e05e8eff0}\label{group__Eina__Hash__Group_ga3a8434dd0fe7446af605c75e05e8eff0}} 
\index{Hash Table@{Hash Table}!eina\_hash\_superfast@{eina\_hash\_superfast}}
\index{eina\_hash\_superfast@{eina\_hash\_superfast}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_superfast()}{eina\_hash\_superfast()}}
{\footnotesize\ttfamily int eina\+\_\+hash\+\_\+superfast (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{int}]{len }\end{DoxyParamCaption})}



Paul Hsieh (\href{http://www.azillionmonkeys.com/qed/hash.html}{\texttt{ http\+://www.\+azillionmonkeys.\+com/qed/hash.\+html}}) hash function used by Web\+Core (\href{http://webkit.org/blog/8/hashtables-part-2/}{\texttt{ http\+://webkit.\+org/blog/8/hashtables-\/part-\/2/}}) 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}


Referenced by eina\+\_\+file\+\_\+close(), eina\+\_\+hash\+\_\+string\+\_\+small\+\_\+new(), and eina\+\_\+hash\+\_\+string\+\_\+superfast\+\_\+new().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga558f01dbe075fb0a6c45001e57419c63}\label{group__Eina__Hash__Group_ga558f01dbe075fb0a6c45001e57419c63}} 
\index{Hash Table@{Hash Table}!eina\_hash\_djb2@{eina\_hash\_djb2}}
\index{eina\_hash\_djb2@{eina\_hash\_djb2}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_djb2()}{eina\_hash\_djb2()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+djb2 (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function first reported by Dan Bernstein many years ago in comp.\+lang.\+c. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}


Referenced by eina\+\_\+hash\+\_\+string\+\_\+djb2\+\_\+new().

\mbox{\Hypertarget{group__Eina__Hash__Group_gaa0995ca588bd9508f53f722aaa6ee9b3}\label{group__Eina__Hash__Group_gaa0995ca588bd9508f53f722aaa6ee9b3}} 
\index{Hash Table@{Hash Table}!eina\_hash\_djb2\_len@{eina\_hash\_djb2\_len}}
\index{eina\_hash\_djb2\_len@{eina\_hash\_djb2\_len}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_djb2\_len()}{eina\_hash\_djb2\_len()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+djb2\+\_\+len (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{int $\ast$}]{plen }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function first reported by Dan Bernstein many years ago in comp.\+lang.\+c. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em plen} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Hash__Group_gaeceefc13a4baf86ceac4f963f221fa8b}\label{group__Eina__Hash__Group_gaeceefc13a4baf86ceac4f963f221fa8b}} 
\index{Hash Table@{Hash Table}!eina\_hash\_int32@{eina\_hash\_int32}}
\index{eina\_hash\_int32@{eina\_hash\_int32}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_int32()}{eina\_hash\_int32()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+int32 (\begin{DoxyParamCaption}\item[{const unsigned int $\ast$}]{pkey,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function from \href{http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm}{\texttt{ http\+://web.\+archive.\+org/web/20071223173210/http\+://www.\+concentric.\+net/$\sim$\+Ttwang/tech/inthash.\+htm}}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em pkey} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}


Referenced by eina\+\_\+hash\+\_\+int32\+\_\+new(), and eina\+\_\+hash\+\_\+pointer\+\_\+new().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga59af62e37bbdab2cf63f49295fd57213}\label{group__Eina__Hash__Group_ga59af62e37bbdab2cf63f49295fd57213}} 
\index{Hash Table@{Hash Table}!eina\_hash\_int64@{eina\_hash\_int64}}
\index{eina\_hash\_int64@{eina\_hash\_int64}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_int64()}{eina\_hash\_int64()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+int64 (\begin{DoxyParamCaption}\item[{const unsigned long long int $\ast$}]{pkey,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function from \href{http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm}{\texttt{ http\+://web.\+archive.\+org/web/20071223173210/http\+://www.\+concentric.\+net/$\sim$\+Ttwang/tech/inthash.\+htm}}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em pkey} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}


Referenced by eina\+\_\+file\+\_\+map\+\_\+key\+\_\+hash(), eina\+\_\+hash\+\_\+int64\+\_\+new(), and eina\+\_\+hash\+\_\+pointer\+\_\+new().

\mbox{\Hypertarget{group__Eina__Hash__Group_ga66870993e96429900f8ceeadd6f2cadf}\label{group__Eina__Hash__Group_ga66870993e96429900f8ceeadd6f2cadf}} 
\index{Hash Table@{Hash Table}!eina\_hash\_murmur3@{eina\_hash\_murmur3}}
\index{eina\_hash\_murmur3@{eina\_hash\_murmur3}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_murmur3()}{eina\_hash\_murmur3()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+murmur3 (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function from \href{http://sites.google.com/site/murmurhash/}{\texttt{ http\+://sites.\+google.\+com/site/murmurhash/}}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Eina__Hash__Group_gaaada49d4a448f849d3ffa1b48060b174}\label{group__Eina__Hash__Group_gaaada49d4a448f849d3ffa1b48060b174}} 
\index{Hash Table@{Hash Table}!eina\_hash\_crc@{eina\_hash\_crc}}
\index{eina\_hash\_crc@{eina\_hash\_crc}!Hash Table@{Hash Table}}
\doxysubsubsection{\texorpdfstring{eina\_hash\_crc()}{eina\_hash\_crc()}}
{\footnotesize\ttfamily static int eina\+\_\+hash\+\_\+crc (\begin{DoxyParamCaption}\item[{const char $\ast$}]{key,  }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Hash function using crc-\/32 algorithm and and 0x\+EDB88320 polynomial. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em key} & The key to hash. \\
\hline
\mbox{\texttt{ in}}  & {\em len} & The length of the key. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The hash value. 
\end{DoxyReturn}
