\hypertarget{class_qore_1_1zzz8hashzzz9}{}\section{Qore\+:\+:zzz8hashzzz9 Class Reference}
\label{class_qore_1_1zzz8hashzzz9}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}


Methods in this pseudo-\/class can be executed on \hyperlink{container_data_types_hash}{hash values}.  




Inheritance diagram for Qore\+:\+:zzz8hashzzz9\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=139pt]{class_qore_1_1zzz8hashzzz9__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_a93f356ddb1150791325155586accbb90}{compare\+Keys} (\hyperlink{group__type__conversion__functions_ga5182bb860e3837e1eb337e85a9b3ebd6}{hash} oh)
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash argument passed has the same keys in the same order as the current hash, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. \end{DoxyCompactList}\item 
\hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} \hyperlink{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367}{context\+Iterator} ()
\begin{DoxyCompactList}\small\item\em Returns a \hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} object for the hash. \end{DoxyCompactList}\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}{empty} ()
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash has no keys, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if it does. \end{DoxyCompactList}\item 
\+\_\+\+\_\+7\+\_\+ \hyperlink{group__type__conversion__functions_ga4f2b4292a08b8533d6425a1368258cf2}{string} \hyperlink{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}{first\+Key} ()
\begin{DoxyCompactList}\small\item\em Returns the first key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. \end{DoxyCompactList}\item 
any \hyperlink{class_qore_1_1zzz8hashzzz9_a14cbe583291f759b355140f01dba2a12}{first\+Value} ()
\begin{DoxyCompactList}\small\item\em Returns the value assigned to the first key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. \end{DoxyCompactList}\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}{has\+Key} (softstring key)
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists in the hash (may or may not be assigned a value), \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. \end{DoxyCompactList}\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}{has\+Key\+Value} (softstring key)
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists and is assigned to a value, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. \end{DoxyCompactList}\item 
\hyperlink{class_qore_1_1_abstract_iterator}{Abstract\+Iterator} \hyperlink{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee}{iterator} ()
\begin{DoxyCompactList}\small\item\em Returns a \hyperlink{class_qore_1_1_hash_iterator}{Hash\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} \hyperlink{class_qore_1_1zzz8hashzzz9_a4dde09aa84522bbd942d9339c0315ed5}{key\+Iterator} ()
\begin{DoxyCompactList}\small\item\em Returns a \hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\hyperlink{group__type__conversion__functions_ga8f596b49953b71928f04c24b19834bc3}{list} \hyperlink{class_qore_1_1zzz8hashzzz9_a4490151663b186b98f31cd99d45f5f8a}{keys} ()
\begin{DoxyCompactList}\small\item\em Returns a list of key names of the hash. \end{DoxyCompactList}\item 
\+\_\+\+\_\+7\+\_\+ \hyperlink{group__type__conversion__functions_ga4f2b4292a08b8533d6425a1368258cf2}{string} \hyperlink{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}{last\+Key} ()
\begin{DoxyCompactList}\small\item\em Returns the last key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. \end{DoxyCompactList}\item 
any \hyperlink{class_qore_1_1zzz8hashzzz9_ac7a094ed0f93bb60a4d4dbf7479951ad}{last\+Value} ()
\begin{DoxyCompactList}\small\item\em Returns the value assigned to the last key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. \end{DoxyCompactList}\item 
\hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} \hyperlink{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b}{pair\+Iterator} ()
\begin{DoxyCompactList}\small\item\em Returns a \hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\hyperlink{group__type__conversion__functions_gafa2f2472f43231ec932cdc6dbcc58daf}{int} \hyperlink{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}{size} ()
\begin{DoxyCompactList}\small\item\em Returns the number of keys in the hash. \end{DoxyCompactList}\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}{sizep} ()
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} since hashes can return a non-\/zero size. \end{DoxyCompactList}\item 
\hyperlink{group__type__conversion__functions_gafa2f2472f43231ec932cdc6dbcc58daf}{int} \hyperlink{class_qore_1_1zzz8hashzzz9_af648c06c9cd615790aae13c7278efeee}{type\+Code} ()
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+N\+T\+\_\+\+H\+A\+S\+H}. \end{DoxyCompactList}\item 
bool \hyperlink{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}{val} ()
\begin{DoxyCompactList}\small\item\em Returns \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if the hash has no keys, \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if it does. \end{DoxyCompactList}\item 
\hyperlink{group__type__conversion__functions_ga8f596b49953b71928f04c24b19834bc3}{list} \hyperlink{class_qore_1_1zzz8hashzzz9_acba59a98364e7bb083557449d8c5e689}{values} ()
\begin{DoxyCompactList}\small\item\em Returns a list of values of the hash. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Methods in this pseudo-\/class can be executed on \hyperlink{container_data_types_hash}{hash values}. 

\subsection{Member Function Documentation}
\hypertarget{class_qore_1_1zzz8hashzzz9_a93f356ddb1150791325155586accbb90}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!compare\+Keys@{compare\+Keys}}
\index{compare\+Keys@{compare\+Keys}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{compare\+Keys}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::compare\+Keys (
\begin{DoxyParamCaption}
\item[{{\bf hash}}]{oh}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a93f356ddb1150791325155586accbb90}


Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash argument passed has the same keys in the same order as the current hash, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{bool} $b = $h.compareKeys($oh);
\end{DoxyCode}

\end{DoxyParagraph}
Values are not compraed, only the key names and order


\begin{DoxyParams}{Parameters}
{\em oh} & a hash to compare the keys against\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash argument passed has the same keys in the same order as the current hash, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not
\end{DoxyReturn}
\begin{DoxySince}{Since}
Qore 0.\+8.\+8 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!context\+Iterator@{context\+Iterator}}
\index{context\+Iterator@{context\+Iterator}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{context\+Iterator}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Hash\+List\+Iterator} Qore\+::zzz8hashzzz9\+::context\+Iterator (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367}


Returns a \hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} object for the hash. 

\begin{DoxyReturn}{Returns}
a \hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my *\hyperlink{group__type__conversion__functions_ga5182bb860e3837e1eb337e85a9b3ebd6}{hash} $q = $db.select(\textcolor{stringliteral}{"select * from table\_name"});
map \hyperlink{group__string__functions_ga32070517a9f8a70a32ef48f83a6f128e}{printf}(\textcolor{stringliteral}{"+ %s\(\backslash\)n"}, $1), $h.contextIterator();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}

\begin{DoxyItemize}
\item this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\item this pseudo-\/method is very useful when iterating query results from \hyperlink{class_qore_1_1_s_q_l_1_1_datasource_a718ccadbbc0031d8e563ef173d82ab4c}{Datasource\+:\+:select()} or \hyperlink{class_qore_1_1_s_q_l_1_1_datasource_pool_a6b0e44a8b3963580cafef9de08739ccd}{Datasource\+Pool\+:\+:select()} with the \hyperlink{operators_map}{map operator}, for example
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!empty@{empty}}
\index{empty@{empty}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{empty}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::empty (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}


Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash has no keys, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if it does. 

\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the hash has no keys, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if it does
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{bool} $b = $h.empty();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it's safe to use on all data types 
\end{DoxyNote}
\hypertarget{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!first\+Key@{first\+Key}}
\index{first\+Key@{first\+Key}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{first\+Key}]{\setlength{\rightskip}{0pt plus 5cm}\+\_\+\+\_\+7\+\_\+ {\bf string} Qore\+::zzz8hashzzz9\+::first\+Key (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}


Returns the first key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the first key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my *\textcolor{keywordtype}{string} $n = $h.firstKey();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}{Qore\+::zzz8hashzzz9\+::last\+Key()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_a14cbe583291f759b355140f01dba2a12}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!first\+Value@{first\+Value}}
\index{first\+Value@{first\+Value}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{first\+Value}]{\setlength{\rightskip}{0pt plus 5cm}any Qore\+::zzz8hashzzz9\+::first\+Value (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a14cbe583291f759b355140f01dba2a12}


Returns the value assigned to the first key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the value assigned to the first key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my any $v = $h.firstValue();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_ac7a094ed0f93bb60a4d4dbf7479951ad}{Qore\+::zzz8hashzzz9\+::last\+Value()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!has\+Key@{has\+Key}}
\index{has\+Key@{has\+Key}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{has\+Key}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::has\+Key (
\begin{DoxyParamCaption}
\item[{softstring}]{key}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}


Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists in the hash (may or may not be assigned a value), \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_RET_VALUE_ONLY}{R\+E\+T\+\_\+\+V\+A\+L\+U\+E\+\_\+\+O\+N\+L\+Y}
\end{DoxyParagraph}

\begin{DoxyParams}{Parameters}
{\em key} & the key name to check\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists in the hash (may or may not be assigned a value), \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not
\end{DoxyReturn}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{bool} $b = $h.hasKey($key);
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}{Qore\+::zzz8hashzzz9\+::has\+Key\+Value(softstring)} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!has\+Key\+Value@{has\+Key\+Value}}
\index{has\+Key\+Value@{has\+Key\+Value}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{has\+Key\+Value}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::has\+Key\+Value (
\begin{DoxyParamCaption}
\item[{softstring}]{key}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}


Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists and is assigned to a value, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_RET_VALUE_ONLY}{R\+E\+T\+\_\+\+V\+A\+L\+U\+E\+\_\+\+O\+N\+L\+Y}
\end{DoxyParagraph}

\begin{DoxyParams}{Parameters}
{\em key} & the key name to check\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if the key exists and is assigned to a value, \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if not
\end{DoxyReturn}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{bool} $b = $h.hasKeyValue($key);
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}{Qore\+::zzz8hashzzz9\+::has\+Key(softstring)} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!iterator@{iterator}}
\index{iterator@{iterator}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{iterator}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Abstract\+Iterator} Qore\+::zzz8hashzzz9\+::iterator (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee}


Returns a \hyperlink{class_qore_1_1_hash_iterator}{Hash\+Iterator} object for the hash. 

\begin{DoxyReturn}{Returns}
a \hyperlink{class_qore_1_1_hash_iterator}{Hash\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
map \hyperlink{group__string__functions_ga32070517a9f8a70a32ef48f83a6f128e}{printf}(\textcolor{stringliteral}{"+ %s: %y\(\backslash\)n"}, $1.key, $1.value), $h.iterator();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it's safe to use on all data types
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_a4dde09aa84522bbd942d9339c0315ed5}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!key\+Iterator@{key\+Iterator}}
\index{key\+Iterator@{key\+Iterator}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{key\+Iterator}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Hash\+Key\+Iterator} Qore\+::zzz8hashzzz9\+::key\+Iterator (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a4dde09aa84522bbd942d9339c0315ed5}


Returns a \hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} object for the hash. 

\begin{DoxyReturn}{Returns}
a \hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
map \hyperlink{group__string__functions_ga32070517a9f8a70a32ef48f83a6f128e}{printf}(\textcolor{stringliteral}{"+ %s\(\backslash\)n"}, $1), $h.keyIterator();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}

\begin{DoxyItemize}
\item this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\item this pseudo-\/method is very useful when using a hash as a simulation for a set of strings and quickly iterating the hash with the \hyperlink{operators_map}{map operator}, for example
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_a4490151663b186b98f31cd99d45f5f8a}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!keys@{keys}}
\index{keys@{keys}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{keys}]{\setlength{\rightskip}{0pt plus 5cm}{\bf list} Qore\+::zzz8hashzzz9\+::keys (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_a4490151663b186b98f31cd99d45f5f8a}


Returns a list of key names of the hash. 

\begin{DoxyReturn}{Returns}
a list of key names of the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my list $l = $h.keys();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_acba59a98364e7bb083557449d8c5e689}{Qore\+::zzz8hashzzz9\+::values()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!last\+Key@{last\+Key}}
\index{last\+Key@{last\+Key}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{last\+Key}]{\setlength{\rightskip}{0pt plus 5cm}\+\_\+\+\_\+7\+\_\+ {\bf string} Qore\+::zzz8hashzzz9\+::last\+Key (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}


Returns the last key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the last key name in the hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my *\textcolor{keywordtype}{string} $n = $h.lastKey();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}{Qore\+::zzz8hashzzz9\+::first\+Key()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_ac7a094ed0f93bb60a4d4dbf7479951ad}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!last\+Value@{last\+Value}}
\index{last\+Value@{last\+Value}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{last\+Value}]{\setlength{\rightskip}{0pt plus 5cm}any Qore\+::zzz8hashzzz9\+::last\+Value (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_ac7a094ed0f93bb60a4d4dbf7479951ad}


Returns the value assigned to the last key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the value assigned to the last key in the hash if any or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my any $v = $h.lastValue();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_a14cbe583291f759b355140f01dba2a12}{Qore\+::zzz8hashzzz9\+::first\+Value()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!pair\+Iterator@{pair\+Iterator}}
\index{pair\+Iterator@{pair\+Iterator}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{pair\+Iterator}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Hash\+Pair\+Iterator} Qore\+::zzz8hashzzz9\+::pair\+Iterator (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b}


Returns a \hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} object for the hash. 

\begin{DoxyReturn}{Returns}
a \hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
map \hyperlink{group__string__functions_ga32070517a9f8a70a32ef48f83a6f128e}{printf}(\textcolor{stringliteral}{"+ %s\(\backslash\)n"}, $1), $h.pairIterator();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!size@{size}}
\index{size@{size}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{size}]{\setlength{\rightskip}{0pt plus 5cm}{\bf int} Qore\+::zzz8hashzzz9\+::size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}


Returns the number of keys in the hash. 

The opposite of \hyperlink{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}{Qore\+::zzz8hashzzz9\+::val()}

\begin{DoxyReturn}{Returns}
the number of keys in the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{int} $num = $h.size();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it's safe to use on all data types
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}{Qore\+::zzz8hashzzz9\+::sizep()} 
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!sizep@{sizep}}
\index{sizep@{sizep}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{sizep}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::sizep (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}


Returns \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} since hashes can return a non-\/zero size. 

\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} since hashes can return a non-\/zero size
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}{Qore\+::zzz8hashzzz9\+::size()}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
Qore 0.\+8.\+9 
\end{DoxySince}
\hypertarget{class_qore_1_1zzz8hashzzz9_af648c06c9cd615790aae13c7278efeee}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!type\+Code@{type\+Code}}
\index{type\+Code@{type\+Code}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{type\+Code}]{\setlength{\rightskip}{0pt plus 5cm}{\bf int} Qore\+::zzz8hashzzz9\+::type\+Code (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_af648c06c9cd615790aae13c7278efeee}


Returns \hyperlink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+N\+T\+\_\+\+H\+A\+S\+H}. 

\begin{DoxyReturn}{Returns}
\hyperlink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+N\+T\+\_\+\+H\+A\+S\+H}
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
\textcolor{keywordflow}{switch} ($h.typeCode()) \{
    \textcolor{keywordflow}{case} \hyperlink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{NT\_HASH}:
        \hyperlink{group__string__functions_ga32070517a9f8a70a32ef48f83a6f128e}{printf}(\textcolor{stringliteral}{"%y: is a hash\(\backslash\)n"}, $h);
        \textcolor{keywordflow}{break};
\}
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it's safe to use on all data types 
\end{DoxyNote}
\hypertarget{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!val@{val}}
\index{val@{val}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{val}]{\setlength{\rightskip}{0pt plus 5cm}bool Qore\+::zzz8hashzzz9\+::val (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}


Returns \hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if the hash has no keys, \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if it does. 

The opposite of \hyperlink{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}{Qore\+::zzz8hashzzz9\+::empty()}

\begin{DoxyReturn}{Returns}
\hyperlink{group__boolean__constants_ga9da2b9a8003cd3788e48305f8a00540f}{False} if the hash has no keys, \hyperlink{group__boolean__constants_ga3ba2df91713a6249449347131ea526c3}{True} if it does
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my \textcolor{keywordtype}{bool} $b = $h.val();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it's safe to use on all data types
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}

\begin{DoxyItemize}
\item \hyperlink{parse_directives_perl-bool-eval}{\%perl-\/bool-\/eval}
\item \hyperlink{parse_directives_strict-bool-eval}{\%strict-\/bool-\/eval} 
\end{DoxyItemize}
\end{DoxySeeAlso}
\hypertarget{class_qore_1_1zzz8hashzzz9_acba59a98364e7bb083557449d8c5e689}{}\index{Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}!values@{values}}
\index{values@{values}!Qore\+::zzz8hashzzz9@{Qore\+::zzz8hashzzz9}}
\subsubsection[{values}]{\setlength{\rightskip}{0pt plus 5cm}{\bf list} Qore\+::zzz8hashzzz9\+::values (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{class_qore_1_1zzz8hashzzz9_acba59a98364e7bb083557449d8c5e689}


Returns a list of values of the hash. 

\begin{DoxyReturn}{Returns}
a list of values of the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\hyperlink{code_flags_CONSTANT}{C\+O\+N\+S\+T\+A\+N\+T}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}
my list $l = $h.values();
\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}

\begin{DoxyItemize}
\item equivalent to \hyperlink{group__misc__functions_ga4fdc10fe7c8f77e24432ae2e435f9211}{hash\+\_\+values()}
\item this pseudo-\/method is also implemented in \hyperlink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it's safe to use where the value could be a hash or \hyperlink{basic_data_types_nothing}{N\+O\+T\+H\+I\+N\+G} (ex\+: \hyperlink{data_type_declarations_hash_or_nothing_type}{$\ast$hash})
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{class_qore_1_1zzz8hashzzz9_a4490151663b186b98f31cd99d45f5f8a}{Qore\+::zzz8hashzzz9\+::keys()} 
\end{DoxySeeAlso}
