\doxysection{workspace/post-\/scarcity/src/ops/intern.h File Reference}
\hypertarget{intern_8h}{}\label{intern_8h}\index{workspace/post-\/scarcity/src/ops/intern.h@{workspace/post-\/scarcity/src/ops/intern.h}}
This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{intern_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_ac42ecb66595443f6fc62333afb326873}{c\+\_\+assoc}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} store)
\begin{DoxyCompactList}\small\item\em Implementation of assoc in C. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_af42e4cc2712549155503fad3bb010564}{deep\+\_\+bind}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} value)
\begin{DoxyCompactList}\small\item\em Binds this key to this value in the global oblist. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{intern_8h_a288bcdc76785b84f975bd61dc47d37fd}{dump\+\_\+map}} (\mbox{\hyperlink{fopen_8h_a8c81a077422f5e2410ba71eb75108f6e}{URL\+\_\+\+FILE}} \texorpdfstring{$\ast$}{*}output, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} pointer)
\item 
void \mbox{\hyperlink{intern_8h_a3ae5f663a2af92f205fde29b19c8da55}{free\+\_\+hashmap}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} ptr)
\begin{DoxyCompactList}\small\item\em Free the hashmap indicated by this {\ttfamily pointer}. \end{DoxyCompactList}\item 
uint32\+\_\+t \mbox{\hyperlink{intern_8h_a89bab54666e014aba6cbb9c4ab4c9c2a}{get\+\_\+hash}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} ptr)
\begin{DoxyCompactList}\small\item\em Get the hash value for the cell indicated by this {\ttfamily ptr}; currently only implemented for string like things and integers. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a1a35271cbbb62363f57943aa19b2b592}{hashmap\+\_\+get}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} mapp, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key)
\begin{DoxyCompactList}\small\item\em Get a value from a hashmap. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a3e7c98276584c4ae93959b346816e4ab}{hashmap\+\_\+keys}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} map)
\begin{DoxyCompactList}\small\item\em return a flat list of all the keys in the hashmap indicated by {\ttfamily map}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a3593c291344b1053a5055c976c6d9917}{hashmap\+\_\+put}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} mapp, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} val)
\begin{DoxyCompactList}\small\item\em Store this {\ttfamily val} as the value of this {\ttfamily key} in this hashmap {\ttfamily mapp}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a6c37b87bbbfe5335b46fdf7f76ef0298}{hashmap\+\_\+put\+\_\+all}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} mapp, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} assoc)
\begin{DoxyCompactList}\small\item\em Copy all key/value pairs in this association list {\ttfamily assoc} into this hashmap {\ttfamily mapp}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_ac9ad50b4f804b350122712c80416bbf9}{intern}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} environment)
\begin{DoxyCompactList}\small\item\em Ensure that a canonical copy of this key is bound in this environment, and return that canonical copy. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a2a8afa51f59098bcf88b6c7f242ab21a}{internedp}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} environment)
\begin{DoxyCompactList}\small\item\em Implementation of interned? in C. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a712a222e5d6695c29e78516d7c60ba2a}{make\+\_\+hashmap}} (uint32\+\_\+t n\+\_\+buckets, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} hash\+\_\+fn, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} write\+\_\+acl)
\begin{DoxyCompactList}\small\item\em Make a hashmap with this number of buckets, using this {\ttfamily hash\+\_\+fn}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_af8e370c233928d41c268874a6aa5d9e2}{set}} (struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} key, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} value, struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} store)
\begin{DoxyCompactList}\small\item\em Return a new key/value store containing all the key/value pairs in this store with this key/value pair added to the front. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_aca78d8df225fa73eef263164d8427430}{oblist}}
\begin{DoxyCompactList}\small\item\em The global object list/or, to put it differently, the root namespace. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} \mbox{\hyperlink{intern_8h_a500315152ff6607a52db22945446e6dc}{privileged\+\_\+symbol\+\_\+nil}}
\begin{DoxyCompactList}\small\item\em the symbol {\ttfamily NIL}, which is special! \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Function Documentation}
\Hypertarget{intern_8h_ac42ecb66595443f6fc62333afb326873}\label{intern_8h_ac42ecb66595443f6fc62333afb326873} 
\index{intern.h@{intern.h}!c\_assoc@{c\_assoc}}
\index{c\_assoc@{c\_assoc}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{c\_assoc()}{c\_assoc()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} c\+\_\+assoc (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{store }\end{DoxyParamCaption})}



Implementation of assoc in C. 

Like interned?, the final implementation will deal with stores which can be association lists or hashtables or hybrids of the two, but that will almost certainly be implemented in lisp.

If this key is lexically identical to a key in this store, return the value of that key from the store; otherwise return NIL. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00327}{327}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{lispops_8c_source_l01410}{c\+\_\+append()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00125}{c\+\_\+car()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00454}{c\+\_\+string\+\_\+to\+\_\+lisp\+\_\+string()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00100}{c\+\_\+type()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00308}{consp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00046}{CONSTV}}, \mbox{\hyperlink{debug_8h_source_l00035}{DEBUG\+\_\+\+BIND}}, \mbox{\hyperlink{debug_8c_source_l00041}{debug\+\_\+print()}}, \mbox{\hyperlink{debug_8c_source_l00119}{debug\+\_\+print\+\_\+object()}}, \mbox{\hyperlink{debug_8c_source_l00085}{debug\+\_\+println()}}, \mbox{\hyperlink{equal_8c_source_l00247}{equal()}}, \mbox{\hyperlink{intern_8c_source_l00220}{hashmap\+\_\+get()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{cons\+\_\+space\+\_\+object\+::payload}}, \mbox{\hyperlink{consspaceobject_8h_source_l00297}{pointer2cell}}, \mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{cons\+\_\+space\+\_\+object\+::tag}}, \mbox{\hyperlink{lispops_8c_source_l01208}{throw\+\_\+exception()}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00262}{VECTORPOINTTV}}.



Referenced by \mbox{\hyperlink{lispops_8c_source_l00340}{c\+\_\+apply()}}, \mbox{\hyperlink{io_8c_source_l00411}{get\+\_\+default\+\_\+stream()}}, \mbox{\hyperlink{intern_8c_source_l00220}{hashmap\+\_\+get()}}, \mbox{\hyperlink{intern_8c_source_l00281}{internedp()}}, \mbox{\hyperlink{lispops_8c_source_l00835}{lisp\+\_\+assoc()}}, \mbox{\hyperlink{lispops_8c_source_l00504}{lisp\+\_\+eval()}}, \mbox{\hyperlink{lispops_8c_source_l01263}{lisp\+\_\+repl()}}, and \mbox{\hyperlink{lispops_8c_source_l01377}{lisp\+\_\+source()}}.

\Hypertarget{intern_8h_af42e4cc2712549155503fad3bb010564}\label{intern_8h_af42e4cc2712549155503fad3bb010564} 
\index{intern.h@{intern.h}!deep\_bind@{deep\_bind}}
\index{deep\_bind@{deep\_bind}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{deep\_bind()}{deep\_bind()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} deep\+\_\+bind (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{value }\end{DoxyParamCaption})}



Binds this key to this value in the global oblist. 



Definition at line \mbox{\hyperlink{intern_8c_source_l00447}{447}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{consspaceobject_8h_source_l00308}{consp}}, \mbox{\hyperlink{debug_8h_source_l00035}{DEBUG\+\_\+\+BIND}}, \mbox{\hyperlink{debug_8c_source_l00041}{debug\+\_\+print()}}, \mbox{\hyperlink{debug_8c_source_l00119}{debug\+\_\+print\+\_\+object()}}, \mbox{\hyperlink{debug_8c_source_l00085}{debug\+\_\+println()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00080}{dec\+\_\+ref()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00062}{inc\+\_\+ref()}}, \mbox{\hyperlink{intern_8c_source_l00048}{oblist}}, and \mbox{\hyperlink{intern_8c_source_l00412}{set()}}.



Referenced by \mbox{\hyperlink{init_8c_source_l00097}{bind\+\_\+function()}}, \mbox{\hyperlink{init_8c_source_l00121}{bind\+\_\+special()}}, \mbox{\hyperlink{init_8c_source_l00144}{bind\+\_\+symbol\+\_\+value()}}, \mbox{\hyperlink{lispops_8c_source_l00616}{lisp\+\_\+set()}}, and \mbox{\hyperlink{lispops_8c_source_l00654}{lisp\+\_\+set\+\_\+shriek()}}.

\Hypertarget{intern_8h_a288bcdc76785b84f975bd61dc47d37fd}\label{intern_8h_a288bcdc76785b84f975bd61dc47d37fd} 
\index{intern.h@{intern.h}!dump\_map@{dump\_map}}
\index{dump\_map@{dump\_map}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{dump\_map()}{dump\_map()}}
{\footnotesize\ttfamily void dump\+\_\+map (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{fopen_8h_a8c81a077422f5e2410ba71eb75108f6e}{URL\+\_\+\+FILE}} \texorpdfstring{$\ast$}{*}}]{output,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{pointer }\end{DoxyParamCaption})}



Definition at line \mbox{\hyperlink{hashmap_8c_source_l00138}{138}} of file \mbox{\hyperlink{hashmap_8c_source}{hashmap.\+c}}.



References \mbox{\hyperlink{vectorspace_8h_source_l00097}{hashmap\+\_\+payload\+::buckets}}, \mbox{\hyperlink{vectorspace_8h_source_l00089}{hashmap\+\_\+payload\+::hash\+\_\+fn}}, \mbox{\hyperlink{vectorspace_8h_source_l00095}{hashmap\+\_\+payload\+::n\+\_\+buckets}}, \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}, \mbox{\hyperlink{print_8c_source_l00151}{print()}}, \mbox{\hyperlink{fopen_8h_source_l00050}{url\+\_\+fwprintf}}, and \mbox{\hyperlink{vectorspace_8h_source_l00091}{hashmap\+\_\+payload\+::write\+\_\+acl}}.



Referenced by \mbox{\hyperlink{dump_8c_source_l00059}{dump\+\_\+object()}}.

\Hypertarget{intern_8h_a3ae5f663a2af92f205fde29b19c8da55}\label{intern_8h_a3ae5f663a2af92f205fde29b19c8da55} 
\index{intern.h@{intern.h}!free\_hashmap@{free\_hashmap}}
\index{free\_hashmap@{free\_hashmap}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{free\_hashmap()}{free\_hashmap()}}
{\footnotesize\ttfamily void free\+\_\+hashmap (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{ptr }\end{DoxyParamCaption})}



Free the hashmap indicated by this {\ttfamily pointer}. 



Definition at line \mbox{\hyperlink{intern_8c_source_l00110}{110}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{debug_8h_source_l00021}{DEBUG\+\_\+\+ALLOC}}, \mbox{\hyperlink{debug_8c_source_l00101}{debug\+\_\+printf()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00080}{dec\+\_\+ref()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{cons\+\_\+space\+\_\+object\+::payload}}, \mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{vector\+\_\+space\+\_\+object\+::payload}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00297}{pointer2cell}}.



Referenced by \mbox{\hyperlink{vectorspace_8c_source_l00123}{free\+\_\+vso()}}.

\Hypertarget{intern_8h_a89bab54666e014aba6cbb9c4ab4c9c2a}\label{intern_8h_a89bab54666e014aba6cbb9c4ab4c9c2a} 
\index{intern.h@{intern.h}!get\_hash@{get\_hash}}
\index{get\_hash@{get\_hash}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{get\_hash()}{get\_hash()}}
{\footnotesize\ttfamily uint32\+\_\+t get\+\_\+hash (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{ptr }\end{DoxyParamCaption})}



Get the hash value for the cell indicated by this {\ttfamily ptr}; currently only implemented for string like things and integers. 



Definition at line \mbox{\hyperlink{intern_8c_source_l00081}{81}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{consspaceobject_8h_source_l00090}{INTEGERTV}}, \mbox{\hyperlink{consspaceobject_8h_source_l00100}{KEYTV}}, \mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{cons\+\_\+space\+\_\+object\+::payload}}, \mbox{\hyperlink{consspaceobject_8h_source_l00297}{pointer2cell}}, \mbox{\hyperlink{consspaceobject_8h_source_l00221}{STRINGTV}}, \mbox{\hyperlink{intern_8c_source_l00061}{sxhash()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00231}{SYMBOLTV}}, \mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{cons\+\_\+space\+\_\+object\+::tag}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00252}{TRUETV}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00220}{hashmap\+\_\+get()}}, \mbox{\hyperlink{intern_8c_source_l00385}{hashmap\+\_\+put()}}, \mbox{\hyperlink{hashmap_8c_source_l00025}{lisp\+\_\+get\+\_\+hash()}}, and \mbox{\hyperlink{hashmap_8c_source_l00039}{lisp\+\_\+make\+\_\+hashmap()}}.

\Hypertarget{intern_8h_a1a35271cbbb62363f57943aa19b2b592}\label{intern_8h_a1a35271cbbb62363f57943aa19b2b592} 
\index{intern.h@{intern.h}!hashmap\_get@{hashmap\_get}}
\index{hashmap\_get@{hashmap\_get}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{hashmap\_get()}{hashmap\_get()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} hashmap\+\_\+get (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{mapp,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key }\end{DoxyParamCaption})}



Get a value from a hashmap. 

Note that this is here, rather than in \doxylink{hashmap_8c}{memory/hashmap.\+c}, because it is closely tied in with c\+\_\+assoc, q.\+v. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00220}{220}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{authorise_8c_source_l00018}{authorised()}}, \mbox{\hyperlink{intern_8c_source_l00327}{c\+\_\+assoc()}}, \mbox{\hyperlink{intern_8c_source_l00081}{get\+\_\+hash()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{vector\+\_\+space\+\_\+object\+::payload}}, \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00410}{truep}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00327}{c\+\_\+assoc()}}, \mbox{\hyperlink{intern_8c_source_l00183}{hashmap\+\_\+put\+\_\+all()}}, and \mbox{\hyperlink{print_8c_source_l00091}{print\+\_\+map()}}.

\Hypertarget{intern_8h_a3e7c98276584c4ae93959b346816e4ab}\label{intern_8h_a3e7c98276584c4ae93959b346816e4ab} 
\index{intern.h@{intern.h}!hashmap\_keys@{hashmap\_keys}}
\index{hashmap\_keys@{hashmap\_keys}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{hashmap\_keys()}{hashmap\_keys()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} hashmap\+\_\+keys (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{map }\end{DoxyParamCaption})}



return a flat list of all the keys in the hashmap indicated by {\ttfamily map}. 



Definition at line \mbox{\hyperlink{intern_8c_source_l00162}{162}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{authorise_8c_source_l00018}{authorised()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00125}{c\+\_\+car()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00139}{c\+\_\+cdr()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8c_source_l00177}{make\+\_\+cons()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{vector\+\_\+space\+\_\+object\+::payload}}, \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00410}{truep}}.



Referenced by \mbox{\hyperlink{lispops_8c_source_l00840}{c\+\_\+keys()}}, \mbox{\hyperlink{intern_8c_source_l00183}{hashmap\+\_\+put\+\_\+all()}}, \mbox{\hyperlink{hashmap_8c_source_l00132}{lisp\+\_\+hashmap\+\_\+keys()}}, and \mbox{\hyperlink{print_8c_source_l00091}{print\+\_\+map()}}.

\Hypertarget{intern_8h_a3593c291344b1053a5055c976c6d9917}\label{intern_8h_a3593c291344b1053a5055c976c6d9917} 
\index{intern.h@{intern.h}!hashmap\_put@{hashmap\_put}}
\index{hashmap\_put@{hashmap\_put}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{hashmap\_put()}{hashmap\_put()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} hashmap\+\_\+put (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{mapp,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{val }\end{DoxyParamCaption})}



Store this {\ttfamily val} as the value of this {\ttfamily key} in this hashmap {\ttfamily mapp}. 

If current user is authorised to write to this hashmap, modifies the hashmap and returns it; if not, clones the hashmap, modifies the clone, and returns that. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00385}{385}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{authorise_8c_source_l00018}{authorised()}}, \mbox{\hyperlink{intern_8c_source_l00237}{clone\+\_\+hashmap()}}, \mbox{\hyperlink{intern_8c_source_l00081}{get\+\_\+hash()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8c_source_l00062}{inc\+\_\+ref()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00177}{make\+\_\+cons()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{vector\+\_\+space\+\_\+object\+::payload}}, and \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00183}{hashmap\+\_\+put\+\_\+all()}}, \mbox{\hyperlink{hashmap_8c_source_l00106}{lisp\+\_\+hashmap\+\_\+put()}}, \mbox{\hyperlink{read_8c_source_l00441}{read\+\_\+map()}}, and \mbox{\hyperlink{intern_8c_source_l00412}{set()}}.

\Hypertarget{intern_8h_a6c37b87bbbfe5335b46fdf7f76ef0298}\label{intern_8h_a6c37b87bbbfe5335b46fdf7f76ef0298} 
\index{intern.h@{intern.h}!hashmap\_put\_all@{hashmap\_put\_all}}
\index{hashmap\_put\_all@{hashmap\_put\_all}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{hashmap\_put\_all()}{hashmap\_put\_all()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} hashmap\+\_\+put\+\_\+all (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{mapp,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{assoc }\end{DoxyParamCaption})}



Copy all key/value pairs in this association list {\ttfamily assoc} into this hashmap {\ttfamily mapp}. 

If current user is authorised to write to this hashmap, modifies the hashmap and returns it; if not, clones the hashmap, modifies the clone, and returns that. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00183}{183}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{consspaceobject_8c_source_l00125}{c\+\_\+car()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00139}{c\+\_\+cdr()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00308}{consp}}, \mbox{\hyperlink{intern_8c_source_l00220}{hashmap\+\_\+get()}}, \mbox{\hyperlink{intern_8c_source_l00162}{hashmap\+\_\+keys()}}, \mbox{\hyperlink{intern_8c_source_l00385}{hashmap\+\_\+put()}}, \mbox{\hyperlink{intern_8c_source_l00183}{hashmap\+\_\+put\+\_\+all()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00282}{TRUE}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00183}{hashmap\+\_\+put\+\_\+all()}}, and \mbox{\hyperlink{hashmap_8c_source_l00126}{lisp\+\_\+hashmap\+\_\+put\+\_\+all()}}.

\Hypertarget{intern_8h_ac9ad50b4f804b350122712c80416bbf9}\label{intern_8h_ac9ad50b4f804b350122712c80416bbf9} 
\index{intern.h@{intern.h}!intern@{intern}}
\index{intern@{intern}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{intern()}{intern()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} intern (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{environment }\end{DoxyParamCaption})}



Ensure that a canonical copy of this key is bound in this environment, and return that canonical copy. 

If there is currently no such binding, create one with the value NIL. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00478}{478}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{intern_8c_source_l00281}{internedp()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, and \mbox{\hyperlink{intern_8c_source_l00412}{set()}}.



Referenced by \mbox{\hyperlink{consspaceobject_8c_source_l00350}{make\+\_\+symbol\+\_\+or\+\_\+key()}}.

\Hypertarget{intern_8h_a2a8afa51f59098bcf88b6c7f242ab21a}\label{intern_8h_a2a8afa51f59098bcf88b6c7f242ab21a} 
\index{intern.h@{intern.h}!internedp@{internedp}}
\index{internedp@{internedp}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{internedp()}{internedp()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} internedp (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{store }\end{DoxyParamCaption})}



Implementation of interned? in C. 

The final implementation if interned? will deal with stores which can be association lists or hashtables or hybrids of the two, but that will almost certainly be implemented in lisp.

If this key is lexically identical to a key in this store, return the key from the store (so that later when we want to retrieve a value, an eq test will work); otherwise return NIL. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00281}{281}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{intern_8c_source_l00327}{c\+\_\+assoc()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00100}{c\+\_\+type()}}, \mbox{\hyperlink{debug_8h_source_l00035}{DEBUG\+\_\+\+BIND}}, \mbox{\hyperlink{debug_8c_source_l00041}{debug\+\_\+print()}}, \mbox{\hyperlink{debug_8c_source_l00119}{debug\+\_\+print\+\_\+object()}}, \mbox{\hyperlink{equal_8c_source_l00247}{equal()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00323}{keywordp}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}, \mbox{\hyperlink{intern_8c_source_l00054}{privileged\+\_\+symbol\+\_\+nil}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00348}{symbolp}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00478}{intern()}}, \mbox{\hyperlink{lispops_8c_source_l00504}{lisp\+\_\+eval()}}, and \mbox{\hyperlink{consspaceobject_8c_source_l00350}{make\+\_\+symbol\+\_\+or\+\_\+key()}}.

\Hypertarget{intern_8h_a712a222e5d6695c29e78516d7c60ba2a}\label{intern_8h_a712a222e5d6695c29e78516d7c60ba2a} 
\index{intern.h@{intern.h}!make\_hashmap@{make\_hashmap}}
\index{make\_hashmap@{make\_hashmap}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{make\_hashmap()}{make\_hashmap()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} make\+\_\+hashmap (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{n\+\_\+buckets,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{hash\+\_\+fn,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{write\+\_\+acl }\end{DoxyParamCaption})}



Make a hashmap with this number of buckets, using this {\ttfamily hash\+\_\+fn}. 

If {\ttfamily hash\+\_\+fn} is {\ttfamily NIL}, use the standard hash funtion. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00137}{137}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{vectorspace_8h_source_l00097}{hashmap\+\_\+payload\+::buckets}}, \mbox{\hyperlink{vectorspace_8h_source_l00089}{hashmap\+\_\+payload\+::hash\+\_\+fn}}, \mbox{\hyperlink{vectorspace_8h_source_l00030}{HASHTV}}, \mbox{\hyperlink{consspaceobject_8c_source_l00062}{inc\+\_\+ref()}}, \mbox{\hyperlink{vectorspace_8c_source_l00075}{make\+\_\+vso()}}, \mbox{\hyperlink{vectorspace_8h_source_l00095}{hashmap\+\_\+payload\+::n\+\_\+buckets}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, \mbox{\hyperlink{vectorspace_8h_source_l00055}{pointer\+\_\+to\+\_\+vso}}, and \mbox{\hyperlink{vectorspace_8h_source_l00091}{hashmap\+\_\+payload\+::write\+\_\+acl}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00237}{clone\+\_\+hashmap()}}, \mbox{\hyperlink{hashmap_8c_source_l00039}{lisp\+\_\+make\+\_\+hashmap()}}, \mbox{\hyperlink{init_8c_source_l00206}{main()}}, and \mbox{\hyperlink{read_8c_source_l00441}{read\+\_\+map()}}.

\Hypertarget{intern_8h_af8e370c233928d41c268874a6aa5d9e2}\label{intern_8h_af8e370c233928d41c268874a6aa5d9e2} 
\index{intern.h@{intern.h}!set@{set}}
\index{set@{set}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{set()}{set()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} set (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{key,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{value,  }\item[{struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}}}]{store }\end{DoxyParamCaption})}



Return a new key/value store containing all the key/value pairs in this store with this key/value pair added to the front. 



Definition at line \mbox{\hyperlink{intern_8c_source_l00412}{412}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



References \mbox{\hyperlink{consspaceobject_8c_source_l00100}{c\+\_\+type()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00308}{consp}}, \mbox{\hyperlink{debug_8h_source_l00035}{DEBUG\+\_\+\+BIND}}, \mbox{\hyperlink{debug_8c_source_l00136}{debug\+\_\+dump\+\_\+object()}}, \mbox{\hyperlink{debug_8c_source_l00041}{debug\+\_\+print()}}, \mbox{\hyperlink{debug_8c_source_l00119}{debug\+\_\+print\+\_\+object()}}, \mbox{\hyperlink{debug_8c_source_l00101}{debug\+\_\+printf()}}, \mbox{\hyperlink{debug_8c_source_l00085}{debug\+\_\+println()}}, \mbox{\hyperlink{intern_8c_source_l00385}{hashmap\+\_\+put()}}, \mbox{\hyperlink{vectorspace_8h_source_l00032}{hashmapp}}, \mbox{\hyperlink{io_8c_source_l00095}{lisp\+\_\+string\+\_\+to\+\_\+c\+\_\+string()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00177}{make\+\_\+cons()}}, \mbox{\hyperlink{consspaceobject_8h_source_l00277}{NIL}}, and \mbox{\hyperlink{consspaceobject_8h_source_l00303}{nilp}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00447}{deep\+\_\+bind()}}, \mbox{\hyperlink{lispops_8c_source_l00256}{eval\+\_\+lambda()}}, \mbox{\hyperlink{intern_8c_source_l00478}{intern()}}, and \mbox{\hyperlink{lispops_8c_source_l01263}{lisp\+\_\+repl()}}.



\doxysubsection{Variable Documentation}
\Hypertarget{intern_8h_aca78d8df225fa73eef263164d8427430}\label{intern_8h_aca78d8df225fa73eef263164d8427430} 
\index{intern.h@{intern.h}!oblist@{oblist}}
\index{oblist@{oblist}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{oblist}{oblist}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} oblist\hspace{0.3cm}{\ttfamily [extern]}}



The global object list/or, to put it differently, the root namespace. 

What is added to this during system setup is \textquotesingle{}global\textquotesingle{}, that is, visible to all sessions/threads. What is added during a session/thread is local to that session/thread (because shallow binding). There must be some way for a user to make the contents of their own environment persistent between threads but I don\textquotesingle{}t know what it is yet. At some stage there must be a way to rebind deep values so they\textquotesingle{}re visible to all users/threads, but again I don\textquotesingle{}t yet have any idea how that will work. 

Definition at line \mbox{\hyperlink{intern_8c_source_l00048}{48}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00447}{deep\+\_\+bind()}}, \mbox{\hyperlink{lispops_8c_source_l00186}{lisp\+\_\+oblist()}}, \mbox{\hyperlink{lispops_8c_source_l01263}{lisp\+\_\+repl()}}, \mbox{\hyperlink{lispops_8c_source_l00616}{lisp\+\_\+set()}}, \mbox{\hyperlink{init_8c_source_l00206}{main()}}, \mbox{\hyperlink{consspaceobject_8c_source_l00350}{make\+\_\+symbol\+\_\+or\+\_\+key()}}, and \mbox{\hyperlink{repl_8c_source_l00033}{repl()}}.

\Hypertarget{intern_8h_a500315152ff6607a52db22945446e6dc}\label{intern_8h_a500315152ff6607a52db22945446e6dc} 
\index{intern.h@{intern.h}!privileged\_symbol\_nil@{privileged\_symbol\_nil}}
\index{privileged\_symbol\_nil@{privileged\_symbol\_nil}!intern.h@{intern.h}}
\doxysubsubsection{\texorpdfstring{privileged\_symbol\_nil}{privileged\_symbol\_nil}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\+\_\+pointer}} privileged\+\_\+symbol\+\_\+nil\hspace{0.3cm}{\ttfamily [extern]}}



the symbol {\ttfamily NIL}, which is special! 



Definition at line \mbox{\hyperlink{intern_8c_source_l00054}{54}} of file \mbox{\hyperlink{intern_8c_source}{intern.\+c}}.



Referenced by \mbox{\hyperlink{intern_8c_source_l00281}{internedp()}}, \mbox{\hyperlink{init_8c_source_l00206}{main()}}, and \mbox{\hyperlink{init_8c_source_l00073}{maybe\+\_\+bind\+\_\+init\+\_\+symbols()}}.

