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


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




{\ttfamily \#include $<$Pseudo\+\_\+\+QC\+\_\+\+Hash.\+dox.\+h$>$}



Inheritance diagram for Qore\+::zzz8hashzzz9\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=140pt]{class_qore_1_1zzz8hashzzz9__inherit__graph}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a5e83d974ab0eb3ea39aedbf5ca7c30a8}{compare\+Keys}} (\mbox{\hyperlink{group__type__conversion__functions_ga24ee71727f0785d3b826833ed6f5e2ee}{hash}}$<$ \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} $>$ \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{oh}})
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} if the hash argument passed has the same keys in the same order as the current hash, \doxysectlink{basic_data_types_False}{False}{2} if not. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a32e0071f511bc645bfacbfd112ee11d4}{complex\+Type}} ()
\begin{DoxyCompactList}\small\item\em returns \doxysectlink{basic_data_types_True}{True}{2} if the hash has a complex type (\doxylink{hashdecl}{Hashdecl\+: Type-\/\+Safe Hash Declarations} or \doxysectlink{data_type_declarations_hash_complex_type}{Hash With Declared Value Type}{2}), \doxysectlink{basic_data_types_False}{False}{2} if not \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367}{context\+Iterator}} ()
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}{empty}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} if the hash has no keys, \doxysectlink{basic_data_types_False}{False}{2} if it does. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}{first\+Key}} ()
\begin{DoxyCompactList}\small\item\em Returns the first key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a7197725a855c1fc1dcdfb639739dc794}{first\+Value}} ()
\begin{DoxyCompactList}\small\item\em Returns the value assigned to the first key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}{has\+Key}} (\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{softstring}} \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{key}})
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} if the key exists in the hash (may or may not be assigned a value), \doxysectlink{basic_data_types_False}{False}{2} if not. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}{has\+Key\+Value}} (\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{softstring}} \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{key}})
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} if the key exists and is assigned to a value, \doxysectlink{basic_data_types_False}{False}{2} if not. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_qore_1_1_abstract_iterator}{Abstract\+Iterator}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee}{iterator}} ()
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{class_qore_1_1_hash_iterator}{Hash\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a4dde09aa84522bbd942d9339c0315ed5}{key\+Iterator}} ()
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{list}}$<$ \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} $>$ \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a12e3939d3f18b9b2b6fcf4fef7a0b818}{keys}} ()
\begin{DoxyCompactList}\small\item\em Returns a list of key names of the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}{last\+Key}} ()
\begin{DoxyCompactList}\small\item\em Returns the last key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a918a125aaaa36d854377b5853e5ef02a}{last\+Value}} ()
\begin{DoxyCompactList}\small\item\em Returns the value assigned to the last key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b}{pair\+Iterator}} ()
\begin{DoxyCompactList}\small\item\em Returns a \doxylink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} object for the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}{size}} ()
\begin{DoxyCompactList}\small\item\em Returns the number of keys in the hash. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}{sizep}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} since hashes can return a non-\/zero size. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_af648c06c9cd615790aae13c7278efeee}{type\+Code}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxylink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+NT\+\_\+\+HASH}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}{val}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_False}{False}{2} if the hash has no keys, \doxysectlink{basic_data_types_True}{True}{2} if it does. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{list}}$<$ \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} $>$ \mbox{\hyperlink{class_qore_1_1zzz8hashzzz9_a885897dc8a2a7f7e0d70475c54514278}{values}} ()
\begin{DoxyCompactList}\small\item\em Returns a list of values of the hash. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a3bd7145235f0f4160b29e9ff1a925f4f}{callp}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_False}{False}{2}; this method is reimplemented in other types and will return \doxysectlink{basic_data_types_True}{True}{2} if the given expression is a callable value (ie \doxysectlink{expressions_closure}{closures}{1} or \doxysectlink{expressions_call_reference}{call references}{1}) \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a3ef4fe2f9389f29e7c53e2cfc4217a97}{complex\+Type}} ()
\begin{DoxyCompactList}\small\item\em returns \doxysectlink{basic_data_types_True}{True}{2} if the value has a complex type, \doxysectlink{basic_data_types_False}{False}{2} if not \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_aa89ad8b046cb41c3588b75e07426696c}{empty}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2}; this method will be reimplemented in container types where it may return \doxysectlink{basic_data_types_False}{False}{2}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_abd777c781935cb8faf3381fcc7ef3e88}{full\+Type}} (\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{with\+\_\+namespaces}})
\begin{DoxyCompactList}\small\item\em returns the full type name which differs from the simple type name in case of complex types and objects \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a6feb7fd9eae7eac19775a47db23ad4e5}{intp}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_False}{False}{2}; this method is reimplemented in other types and will return \doxysectlink{basic_data_types_True}{True}{2} if the given expression can be converted to an integer. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_qore_1_1_abstract_iterator}{Abstract\+Iterator}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a16b7eeea1bb08b7c3faa69b2aa602fbb}{iterator}} ()
\begin{DoxyCompactList}\small\item\em Returns an iterator object for the value; the default iterator object returned is \doxylink{class_qore_1_1_single_value_iterator}{Single\+Value\+Iterator}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a6088d2158ce94d0d6c9159a628f79017}{lsize}} ()
\begin{DoxyCompactList}\small\item\em Returns 1; the return value of this method should give the list size of the value, which is normally 1 for non-\/lists (except for \doxysectlink{basic_data_types_nothing}{NOTHING}{1} where the size will be 0) and the number of the elements in the list for lists; this method will be reimplemented in other types where it may return other values. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a794caed9de093e89d88bfbe652e15a06}{size}} ()
\begin{DoxyCompactList}\small\item\em Returns zero; this method will be reimplemented in container types where it may return a non-\/zero value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_aefcaa86868b4993dd5b0f91fa7b5c1ad}{sizep}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_True}{True}{2} if the type can return a non-\/zero size (\doxysectlink{basic_data_types_True}{True}{2} for containers including \doxysectlink{basic_data_types_binary}{binary objects}{1} and \doxysectlink{basic_data_types_string}{strings}{1}, \doxysectlink{basic_data_types_False}{False}{2} for everything else) \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_af066cf20f6d6a860d209acc7e9e40c20}{strp}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_False}{False}{2}; this method is reimplemented in other types and will return \doxysectlink{basic_data_types_True}{True}{2} if the given expression can be converted to a string. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a671b4af222d6351eb969c2b1d710d463}{to\+Bool}} ()
\begin{DoxyCompactList}\small\item\em Returns the boolean representation of the value; the default is \doxysectlink{basic_data_types_False}{False}{2}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga113d18216af1bdb70545081b6a9892ef}{float}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a11505ca76b6e168b1d143b3fc8d1ba60}{to\+Float}} ()
\begin{DoxyCompactList}\small\item\em Returns the floating-\/point representation of the value; the default is 0.\+0. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_aed0897423af7ddcb1ade7df4c4a61364}{to\+Int}} ()
\begin{DoxyCompactList}\small\item\em Returns the integer representation of the value; the default is 0. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_gaf6000d64e3fe99ce81b9faaf44b2de4e}{number}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_ad4bcbe12f38c710e0e7e67a68ab0512f}{to\+Number}} ()
\begin{DoxyCompactList}\small\item\em Returns the arbitrary-\/precision numeric representation of the value; the default is 0. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a82c78c7b10d754b7c528126eee07e286}{to\+String}} (\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} encoding)
\begin{DoxyCompactList}\small\item\em Returns the string representation of the value; the default is an empty string. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a333453fca3889bfa8d4159b921b1ab87}{type}} ()
\begin{DoxyCompactList}\small\item\em Returns the string type for the value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a5e7d381ab49abebd0d0f045708482512}{type\+Code}} ()
\begin{DoxyCompactList}\small\item\em Returns the type code for the value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} \mbox{\hyperlink{class_qore_1_1zzz8valuezzz9_a3a66486cee14aa073cf90fbed5a23edd}{val}} ()
\begin{DoxyCompactList}\small\item\em Returns \doxysectlink{basic_data_types_False}{False}{2}; this method is reimplemented in other types and will return \doxysectlink{basic_data_types_True}{True}{2} if the given expression has a non-\/empty value. \end{DoxyCompactList}\end{DoxyCompactItemize}


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

\doxysubsection{Member Function Documentation}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a5e83d974ab0eb3ea39aedbf5ca7c30a8}\label{class_qore_1_1zzz8hashzzz9_a5e83d974ab0eb3ea39aedbf5ca7c30a8} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!compareKeys@{compareKeys}}
\index{compareKeys@{compareKeys}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{compareKeys()}{compareKeys()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::compare\+Keys (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__type__conversion__functions_ga24ee71727f0785d3b826833ed6f5e2ee}{hash}}$<$ \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} $>$}]{oh }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_True}{True}{2} if the hash argument passed has the same keys in the same order as the current hash, \doxysectlink{basic_data_types_False}{False}{2} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{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}
\doxysectlink{basic_data_types_True}{True}{2} if the hash argument passed has the same keys in the same order as the current hash, \doxysectlink{basic_data_types_False}{False}{2} if not
\end{DoxyReturn}
\begin{DoxySince}{Since}
Qore 0.\+8.\+8 
\end{DoxySince}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a32e0071f511bc645bfacbfd112ee11d4}\label{class_qore_1_1zzz8hashzzz9_a32e0071f511bc645bfacbfd112ee11d4} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!complexType@{complexType}}
\index{complexType@{complexType}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{complexType()}{complexType()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::complex\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



returns \doxysectlink{basic_data_types_True}{True}{2} if the hash has a complex type (\doxylink{hashdecl}{Hashdecl\+: Type-\/\+Safe Hash Declarations} or \doxysectlink{data_type_declarations_hash_complex_type}{Hash With Declared Value Type}{2}), \doxysectlink{basic_data_types_False}{False}{2} if not 

\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{bool\ b\ =\ n.complexType();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyReturn}{Returns}
\doxysectlink{basic_data_types_True}{True}{2} if the hash has a complex type (\doxylink{hashdecl}{Hashdecl\+: Type-\/\+Safe Hash Declarations} or \doxysectlink{data_type_declarations_hash_complex_type}{Hash With Declared Value Type}{2}), \doxysectlink{basic_data_types_False}{False}{2} if not
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}

\begin{DoxyItemize}
\item \doxylink{class_qore_1_1zzz8valuezzz9_abd777c781935cb8faf3381fcc7ef3e88}{Qore\+::zzz8valuezzz9\+::full\+Type()}
\end{DoxyItemize}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
Qore 0.\+8.\+13 
\end{DoxySince}
\Hypertarget{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367}\label{class_qore_1_1zzz8hashzzz9_aab3d2e6e69d212dbe05de43136f14367} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!contextIterator@{contextIterator}}
\index{contextIterator@{contextIterator}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{contextIterator()}{contextIterator()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator}} Qore\+::zzz8hashzzz9\+::context\+Iterator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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

\begin{DoxyReturn}{Returns}
a \doxylink{class_qore_1_1_hash_list_iterator}{Hash\+List\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{*hash<auto>\ q\ =\ db.select(\textcolor{stringliteral}{"{}select\ *\ from\ table\_name"{}});}
\DoxyCodeLine{map\ printf(\textcolor{stringliteral}{"{}+\ \%s\(\backslash\)n"{}},\ \$1),\ h.contextIterator();}

\end{DoxyCode}

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

\begin{DoxyItemize}
\item a hash with non-\/list values will be iterated as if each key value were a single element list
\item this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\item this pseudo-\/method is very useful when iterating query results from \doxylink{class_qore_1_1_s_q_l_1_1_datasource_a05b1d0d126d815b2d7578e5ce8b9a0de}{Datasource\+::select()} or \doxylink{class_qore_1_1_s_q_l_1_1_datasource_pool_acafe45a0cf883bc51917e7a0bb8e77fd}{Datasource\+Pool\+::select()} with the \doxysectlink{operators_map}{map operator}{2}, for example
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84}\label{class_qore_1_1zzz8hashzzz9_a77253c70cb9379eb688ba076ad478e84} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!empty@{empty}}
\index{empty@{empty}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{empty()}{empty()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::empty (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_True}{True}{2} if the hash has no keys, \doxysectlink{basic_data_types_False}{False}{2} if it does. 

\begin{DoxyReturn}{Returns}
\doxysectlink{basic_data_types_True}{True}{2} if the hash has no keys, \doxysectlink{basic_data_types_False}{False}{2} if it does
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{bool\ b\ =\ h.empty();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it\textquotesingle{}s safe to use on all data types 
\end{DoxyNote}
\Hypertarget{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}\label{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!firstKey@{firstKey}}
\index{firstKey@{firstKey}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{firstKey()}{firstKey()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} Qore\+::zzz8hashzzz9\+::first\+Key (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the first key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the first key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{*string\ n\ =\ h.firstKey();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}{Qore\+::zzz8hashzzz9\+::last\+Key()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a7197725a855c1fc1dcdfb639739dc794}\label{class_qore_1_1zzz8hashzzz9_a7197725a855c1fc1dcdfb639739dc794} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!firstValue@{firstValue}}
\index{firstValue@{firstValue}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{firstValue()}{firstValue()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} Qore\+::zzz8hashzzz9\+::first\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the value assigned to the first key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the value assigned to the first key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{auto\ v\ =\ h.firstValue();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a918a125aaaa36d854377b5853e5ef02a}{Qore\+::zzz8hashzzz9\+::last\+Value()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}\label{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!hasKey@{hasKey}}
\index{hasKey@{hasKey}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{hasKey()}{hasKey()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::has\+Key (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{softstring}}}]{key }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_True}{True}{2} if the key exists in the hash (may or may not be assigned a value), \doxysectlink{basic_data_types_False}{False}{2} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_RET_VALUE_ONLY}{RET\+\_\+\+VALUE\+\_\+\+ONLY}{1}
\end{DoxyParagraph}

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

\begin{DoxyCode}{0}
\DoxyCodeLine{bool\ b\ =\ h.hasKey(key);}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}{Qore\+::zzz8hashzzz9\+::has\+Key\+Value(softstring)} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db}\label{class_qore_1_1zzz8hashzzz9_a004a9455703ac3e07c15de46f07607db} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!hasKeyValue@{hasKeyValue}}
\index{hasKeyValue@{hasKeyValue}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{hasKeyValue()}{hasKeyValue()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::has\+Key\+Value (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{softstring}}}]{key }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_True}{True}{2} if the key exists and is assigned to a value, \doxysectlink{basic_data_types_False}{False}{2} if not. 

\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_RET_VALUE_ONLY}{RET\+\_\+\+VALUE\+\_\+\+ONLY}{1}
\end{DoxyParagraph}

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

\begin{DoxyCode}{0}
\DoxyCodeLine{bool\ b\ =\ h.hasKeyValue(key);}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a6538b4de8e019977a9b9b3730b4d21fb}{Qore\+::zzz8hashzzz9\+::has\+Key(softstring)} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee}\label{class_qore_1_1zzz8hashzzz9_ad9c31b0d467e2a1496f57e3feff505ee} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!iterator@{iterator}}
\index{iterator@{iterator}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{iterator()}{iterator()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_qore_1_1_abstract_iterator}{Abstract\+Iterator}} Qore\+::zzz8hashzzz9\+::iterator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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

\begin{DoxyReturn}{Returns}
a \doxylink{class_qore_1_1_hash_iterator}{Hash\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{map\ printf(\textcolor{stringliteral}{"{}value:\ \%y\(\backslash\)n"{}},\ \$1),\ h.iterator();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it\textquotesingle{}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}\label{class_qore_1_1zzz8hashzzz9_a4dde09aa84522bbd942d9339c0315ed5} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!keyIterator@{keyIterator}}
\index{keyIterator@{keyIterator}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{keyIterator()}{keyIterator()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator}} Qore\+::zzz8hashzzz9\+::key\+Iterator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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

\begin{DoxyReturn}{Returns}
a \doxylink{class_qore_1_1_hash_key_iterator}{Hash\+Key\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{map\ printf(\textcolor{stringliteral}{"{}key:\ \%s\(\backslash\)n"{}},\ \$1),\ h.keyIterator();}

\end{DoxyCode}

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

\begin{DoxyItemize}
\item this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\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 \doxysectlink{operators_map}{map operator}{2}, for example
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a12e3939d3f18b9b2b6fcf4fef7a0b818}\label{class_qore_1_1zzz8hashzzz9_a12e3939d3f18b9b2b6fcf4fef7a0b818} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!keys@{keys}}
\index{keys@{keys}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{keys()}{keys()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{list}}$<$ \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} $>$ Qore\+::zzz8hashzzz9\+::keys (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{list<string>\ l\ =\ h.keys();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a885897dc8a2a7f7e0d70475c54514278}{Qore\+::zzz8hashzzz9\+::values()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8}\label{class_qore_1_1zzz8hashzzz9_ae3f6d1b8abf88d08a32ed2d653f0e5e8} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!lastKey@{lastKey}}
\index{lastKey@{lastKey}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{lastKey()}{lastKey()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{\+\_\+\+\_\+7\+\_\+}} \mbox{\hyperlink{group__type__conversion__functions_gacf16b4126b795f4b6933ef3425cadae3}{string}} Qore\+::zzz8hashzzz9\+::last\+Key (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the last key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the last key name in the hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{*string\ n\ =\ h.lastKey();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_aee7729c7e0aa26025151884653ea92e4}{Qore\+::zzz8hashzzz9\+::first\+Key()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a918a125aaaa36d854377b5853e5ef02a}\label{class_qore_1_1zzz8hashzzz9_a918a125aaaa36d854377b5853e5ef02a} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!lastValue@{lastValue}}
\index{lastValue@{lastValue}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{lastValue()}{lastValue()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} Qore\+::zzz8hashzzz9\+::last\+Value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the value assigned to the last key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys. 

\begin{DoxyReturn}{Returns}
the value assigned to the last key in the hash if any or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} if the hash has no keys
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{auto\ v\ =\ h.lastValue();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a7197725a855c1fc1dcdfb639739dc794}{Qore\+::zzz8hashzzz9\+::first\+Value()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b}\label{class_qore_1_1zzz8hashzzz9_aae2e67b218a51791103c21866df5217b} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!pairIterator@{pairIterator}}
\index{pairIterator@{pairIterator}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{pairIterator()}{pairIterator()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator}} Qore\+::zzz8hashzzz9\+::pair\+Iterator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



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

\begin{DoxyReturn}{Returns}
a \doxylink{class_qore_1_1_hash_pair_iterator}{Hash\+Pair\+Iterator} object for the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{map\ printf(\textcolor{stringliteral}{"{}\%s:\ \%y\(\backslash\)n"{}},\ \$1.key,\ \$1.value),\ h.pairIterator());}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\end{DoxyNote}
\begin{DoxySince}{Since}
Qore 0.\+8.\+6.\+2 
\end{DoxySince}
\Hypertarget{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464}\label{class_qore_1_1zzz8hashzzz9_aad47c06b8c27354b9975b394a2a8a464} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!size@{size}}
\index{size@{size}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{size()}{size()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} Qore\+::zzz8hashzzz9\+::size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the number of keys in the hash. 

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

\begin{DoxyReturn}{Returns}
the number of keys in the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{int\ num\ =\ h.size();}

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it\textquotesingle{}s safe to use on all data types
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}{Qore\+::zzz8hashzzz9\+::sizep()} 
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa}\label{class_qore_1_1zzz8hashzzz9_ad69ea20970b8c5e9737247ba581c33aa} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!sizep@{sizep}}
\index{sizep@{sizep}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{sizep()}{sizep()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::sizep (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_True}{True}{2} since hashes can return a non-\/zero size. 

\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyReturn}{Returns}
\doxysectlink{basic_data_types_True}{True}{2} since hashes can return a non-\/zero size
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\doxylink{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}\label{class_qore_1_1zzz8hashzzz9_af648c06c9cd615790aae13c7278efeee} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!typeCode@{typeCode}}
\index{typeCode@{typeCode}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{typeCode()}{typeCode()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga2de8717e92c5f97ccc6511f6062d6502}{int}} Qore\+::zzz8hashzzz9\+::type\+Code (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns \doxylink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+NT\+\_\+\+HASH}. 

\begin{DoxyReturn}{Returns}
\doxylink{group__type__code__constants_gaf94c74753aa73379b90ab30d092ffc60}{Qore\+::\+NT\+\_\+\+HASH}
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

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

\end{DoxyCode}

\end{DoxyParagraph}
\begin{DoxyNote}{Note}
this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8valuezzz9}{Qore\+::zzz8valuezzz9}, so it\textquotesingle{}s safe to use on all data types 
\end{DoxyNote}
\Hypertarget{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb}\label{class_qore_1_1zzz8hashzzz9_acc38eb60991abd2c576374b7bdbd2abb} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!val@{val}}
\index{val@{val}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{val()}{val()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{bool}} Qore\+::zzz8hashzzz9\+::val (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns \doxysectlink{basic_data_types_False}{False}{2} if the hash has no keys, \doxysectlink{basic_data_types_True}{True}{2} if it does. 

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

\begin{DoxyReturn}{Returns}
\doxysectlink{basic_data_types_False}{False}{2} if the hash has no keys, \doxysectlink{basic_data_types_True}{True}{2} if it does
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{bool\ b\ =\ h.val();}

\end{DoxyCode}

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

\begin{DoxyItemize}
\item \doxysectlink{parse_directives_perl-bool-eval}{\%perl-\/bool-\/eval}{1}
\item \doxysectlink{parse_directives_strict-bool-eval}{\%strict-\/bool-\/eval}{1} 
\end{DoxyItemize}
\end{DoxySeeAlso}
\Hypertarget{class_qore_1_1zzz8hashzzz9_a885897dc8a2a7f7e0d70475c54514278}\label{class_qore_1_1zzz8hashzzz9_a885897dc8a2a7f7e0d70475c54514278} 
\index{Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}!values@{values}}
\index{values@{values}!Qore::zzz8hashzzz9@{Qore::zzz8hashzzz9}}
\doxysubsubsection{\texorpdfstring{values()}{values()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{list}}$<$ \mbox{\hyperlink{group__type__conversion__functions_ga9a401e5112c58f63c05e7ee1e15968ef}{auto}} $>$ Qore\+::zzz8hashzzz9\+::values (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns a list of values of the hash. 

\begin{DoxyReturn}{Returns}
a list of values of the hash
\end{DoxyReturn}
\begin{DoxyParagraph}{Code Flags\+:}
\doxysectlink{code_flags_CONSTANT}{CONSTANT}{1}
\end{DoxyParagraph}
\begin{DoxyParagraph}{Example\+:}

\begin{DoxyCode}{0}
\DoxyCodeLine{list<auto>\ l\ =\ h.values();}

\end{DoxyCode}

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

\begin{DoxyItemize}
\item equivalent to \doxylink{group__misc__functions_ga6f07280e7c9ab676913b6fcb84588610}{hash\+\_\+values()}
\item this pseudo-\/method is also implemented in \doxylink{class_qore_1_1zzz8nothingzzz9}{Qore\+::zzz8nothingzzz9}, so it\textquotesingle{}s safe to use where the value could be a hash or \doxysectlink{basic_data_types_nothing}{NOTHING}{1} (ex\+: \doxysectlink{data_type_declarations_hash_or_nothing_type}{\texorpdfstring{$\ast$}{*}hash}{1})
\item a hash with a declared value type will have a plain untyped list returned; this will be fixed in a future version of Qore
\end{DoxyItemize}
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\doxylink{class_qore_1_1zzz8hashzzz9_a12e3939d3f18b9b2b6fcf4fef7a0b818}{Qore\+::zzz8hashzzz9\+::keys()} 
\end{DoxySeeAlso}
