\doxysection{intern.\+c}
\hypertarget{intern_8c_source}{}\label{intern_8c_source}\index{workspace/post-\/scarcity/src/ops/intern.c@{workspace/post-\/scarcity/src/ops/intern.c}}
\mbox{\hyperlink{intern_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00001}00001\ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00002}00002\ \textcolor{comment}{\ *\ intern.c}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00003}00003\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00004}00004\ \textcolor{comment}{\ *\ For\ now\ this\ implements\ an\ oblist\ and\ shallow\ binding;\ local\ environments\ can}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00005}00005\ \textcolor{comment}{\ *\ be\ consed\ onto\ the\ front\ of\ the\ oblist.\ Later,\ this\ won't\ do;\ bindings\ will\ happen}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00006}00006\ \textcolor{comment}{\ *\ in\ namespaces,\ which\ will\ probably\ be\ implemented\ as\ hash\ tables.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00007}00007\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00008}00008\ \textcolor{comment}{\ *\ Doctrine\ is\ that\ cons\ cells\ are\ immutable,\ and\ life\ is\ a\ lot\ more\ simple\ if\ they\ are;}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00009}00009\ \textcolor{comment}{\ *\ so\ when\ a\ symbol\ is\ rebound\ in\ the\ master\ oblist,\ what\ in\ fact\ we\ do\ is\ construct}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00010}00010\ \textcolor{comment}{\ *\ a\ new\ oblist\ without\ the\ previous\ binding\ but\ with\ the\ new\ binding.\ Anything\ which,}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00011}00011\ \textcolor{comment}{\ *\ prior\ to\ this\ action,\ held\ a\ pointer\ to\ the\ old\ oblist\ (as\ all\ current\ threads'}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00012}00012\ \textcolor{comment}{\ *\ environments\ must\ do)\ continues\ to\ hold\ a\ pointer\ to\ the\ old\ oblist,\ and\ consequently}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00013}00013\ \textcolor{comment}{\ *\ doesn't\ see\ the\ change.\ This\ is\ probably\ good\ but\ does\ mean\ you\ cannot\ use\ bindings}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00014}00014\ \textcolor{comment}{\ *\ on\ the\ oblist\ to\ signal\ between\ threads.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00015}00015\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00016}00016\ \textcolor{comment}{\ *\ (c)\ 2017\ Simon\ Brooke\ <simon@journeyman.cc>}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00017}00017\ \textcolor{comment}{\ *\ Licensed\ under\ GPL\ version\ 2.0,\ or,\ at\ your\ option,\ any\ later\ version.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00018}00018\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00019}00019\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00020}00020\ \textcolor{preprocessor}{\#include\ <stdbool.h>}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00021}00021\ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00022}00022\ \textcolor{comment}{\ *\ wide\ characters}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00023}00023\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00024}00024\ \textcolor{preprocessor}{\#include\ <wchar.h>}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00025}00025\ \textcolor{preprocessor}{\#include\ <wctype.h>}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00026}00026\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00027}00027\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{authorise_8h}{authorise.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00028}00028\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{debug_8h}{debug.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00029}00029\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{io_8h}{io/io.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00030}00030\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{conspage_8h}{memory/conspage.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00031}00031\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{consspaceobject_8h}{memory/consspaceobject.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00032}00032\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{hashmap_8h}{memory/hashmap.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00033}00033\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{equal_8h}{ops/equal.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00034}00034\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{intern_8h}{ops/intern.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00035}00035\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{lispops_8h}{ops/lispops.h}}"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00036}00036\ \textcolor{comment}{//\ \#include\ "{}print.h"{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00037}00037\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00038}00038\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00039}00039\ \textcolor{comment}{\ *\ @brief\ The\ global\ object\ list/or,\ to\ put\ it\ differently,\ the\ root\ namespace.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00040}00040\ \textcolor{comment}{\ *\ What\ is\ added\ to\ this\ during\ system\ setup\ is\ 'global',\ that\ is,}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00041}00041\ \textcolor{comment}{\ *\ visible\ to\ all\ sessions/threads.\ What\ is\ added\ during\ a\ session/thread\ is\ local\ to}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00042}00042\ \textcolor{comment}{\ *\ that\ session/thread\ (because\ shallow\ binding).\ There\ must\ be\ some\ way\ for\ a\ user\ to}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00043}00043\ \textcolor{comment}{\ *\ make\ the\ contents\ of\ their\ own\ environment\ persistent\ between\ threads\ but\ I\ don't}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00044}00044\ \textcolor{comment}{\ *\ know\ what\ it\ is\ yet.\ At\ some\ stage\ there\ must\ be\ a\ way\ to\ rebind\ deep\ values\ so}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00045}00045\ \textcolor{comment}{\ *\ they're\ visible\ to\ all\ users/threads,\ but\ again\ I\ don't\ yet\ have\ any\ idea\ how}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00046}00046\ \textcolor{comment}{\ *\ that\ will\ work.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00047}00047\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00048}\mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{00048}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}}\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00049}00049\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00050}00050\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00051}00051\ \textcolor{comment}{\ *\ @brief\ the\ symbol\ \`{}NIL`,\ which\ is\ special!}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00052}00052\ \textcolor{comment}{\ *\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00053}00053\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00054}\mbox{\hyperlink{intern_8c_a500315152ff6607a52db22945446e6dc}{00054}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a500315152ff6607a52db22945446e6dc}{privileged\_symbol\_nil}}\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00055}00055\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00056}00056\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00057}00057\ \textcolor{comment}{\ *\ Return\ a\ hash\ value\ for\ the\ structure\ indicated\ by\ \`{}ptr`\ such\ that\ if}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00058}00058\ \textcolor{comment}{\ *\ \`{}x`,`y`\ are\ two\ separate\ structures\ whose\ print\ representation\ is\ the\ same}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00059}00059\ \textcolor{comment}{\ *\ then\ \`{}(sxhash\ x)`\ and\ \`{}(sxhash\ y)`\ will\ always\ be\ equal.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00060}00060\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00061}\mbox{\hyperlink{intern_8c_aac60079976853cd27c1ab58edc82a91f}{00061}}\ uint32\_t\ \mbox{\hyperlink{intern_8c_aac60079976853cd27c1ab58edc82a91f}{sxhash}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ ptr\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00062}00062\ \ \ \ \ \textcolor{comment}{//\ TODO:\ Not\ Yet\ Implemented}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00063}00063\ \ \ \ \ \textcolor{comment}{/*\ TODO:\ should\ look\ at\ the\ implementation\ of\ Common\ Lisp\ sxhash?}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00064}00064\ \textcolor{comment}{\ \ \ \ \ *\ My\ current\ implementation\ of\ \`{}print`\ only\ addresses\ URL\_FILE}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00065}00065\ \textcolor{comment}{\ \ \ \ \ *\ streams.\ It\ would\ be\ better\ if\ it\ also\ addressed\ strings\ but}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00066}00066\ \textcolor{comment}{\ \ \ \ \ *\ currently\ it\ doesn't.\ Creating\ a\ print\ string\ of\ the\ structure}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00067}00067\ \textcolor{comment}{\ \ \ \ \ *\ and\ taking\ the\ hash\ of\ that\ would\ be\ one\ simple\ (but\ not\ necessarily}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00068}00068\ \textcolor{comment}{\ \ \ \ \ *\ cheap)\ solution.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00069}00069\ \textcolor{comment}{\ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00070}00070\ \ \ \ \ \textcolor{comment}{/*\ TODO:\ sbcl's\ implementation\ of\ \`{}sxhash`\ is\ in\ src/compiler/sxhash.lisp}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00071}00071\ \textcolor{comment}{\ \ \ \ \ *\ and\ is\ EXTREMELY\ complex,\ and\ essentially\ has\ a\ different\ dispatch\ for}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00072}00072\ \textcolor{comment}{\ \ \ \ \ *\ every\ type\ of\ object.\ It's\ likely\ we\ need\ to\ do\ the\ same.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00073}00073\ \textcolor{comment}{\ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00074}00074\ \ \ \ \ \textcolor{keywordflow}{return}\ 0;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00075}00075\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00076}00076\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00077}00077\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00078}00078\ \textcolor{comment}{\ *\ Get\ the\ hash\ value\ for\ the\ cell\ indicated\ by\ this\ \`{}ptr`;\ currently\ only}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00079}00079\ \textcolor{comment}{\ *\ implemented\ for\ string\ like\ things\ and\ integers.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00080}00080\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00081}\mbox{\hyperlink{intern_8c_a89bab54666e014aba6cbb9c4ab4c9c2a}{00081}}\ uint32\_t\ \mbox{\hyperlink{intern_8c_a89bab54666e014aba6cbb9c4ab4c9c2a}{get\_hash}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ ptr\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00082}00082\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ *cell\ =\ \&\mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00083}00083\ \ \ \ \ uint32\_t\ result\ =\ 0;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00084}00084\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00085}00085\ \ \ \ \ \textcolor{keywordflow}{switch}\ (\ cell-\/>\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.value\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00086}00086\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a4e0e4ea1576f98a0094f57bf918ded96}{INTEGERTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00087}00087\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ Note\ that\ we're\ only\ hashing\ on\ the\ least\ significant\ word\ of\ an}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00088}00088\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ integer.\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00089}00089\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ cell-\/>\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.integer.value\ \&\ 0xffffffff;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00090}00090\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00091}00091\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a027cdb41b87676d9d2fb55dd058c0078}{KEYTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00092}00092\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a3a4310cf1909a3b9c167a945ef71d3e1}{STRINGTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00093}00093\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a1cef10aef0e023839dbcfe6d5c305393}{SYMBOLTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00094}00094\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ cell-\/>\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.string.hash;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00095}00095\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00096}00096\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a8627f45d97a6bd63ad4063b3fe688f2e}{TRUETV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00097}00097\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ 1;\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ arbitrarily}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00098}00098\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00099}00099\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00100}00100\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_aac60079976853cd27c1ab58edc82a91f}{sxhash}}(\ ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00101}00101\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00102}00102\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00103}00103\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00104}00104\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00105}00105\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00106}00106\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00107}00107\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00108}00108\ \textcolor{comment}{\ *\ Free\ the\ hashmap\ indicated\ by\ this\ \`{}pointer`.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00109}00109\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00110}\mbox{\hyperlink{intern_8c_a5b4f547c810b3a1ca5e7e6bbdc8df92b}{00110}}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{intern_8c_a5b4f547c810b3a1ca5e7e6bbdc8df92b}{free\_hashmap}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ pointer\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00111}00111\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ *cell\ =\ \&\mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ pointer\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00112}00112\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00113}00113\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ pointer\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00114}00114\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *vso\ =\ cell-\/>\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.vectorp.address;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00115}00115\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00116}00116\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.hash\_fn\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00117}00117\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.write\_acl\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00118}00118\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00119}00119\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.n\_buckets;\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00120}00120\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[i]\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00121}00121\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}},}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00122}00122\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ L\textcolor{stringliteral}{"{}Decrementing\ bucket\ [\%d]\ of\ hashmap\ at\ 0x\%lx\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00123}00123\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i,\ cell-\/>\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.vectorp.address\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00124}00124\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[i]\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00125}00125\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00126}00126\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00127}00127\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00128}00128\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}},\ L\textcolor{stringliteral}{"{}Non-\/hashmap\ passed\ to\ \`{}free\_hashmap`\(\backslash\)n"{}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00129}00129\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00130}00130\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00131}00131\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00132}00132\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00133}00133\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00134}00134\ \textcolor{comment}{\ *\ Make\ a\ hashmap\ with\ this\ number\ of\ buckets,\ using\ this\ \`{}hash\_fn`.\ If\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00135}00135\ \textcolor{comment}{\ *\ \`{}hash\_fn`\ is\ \`{}NIL`,\ use\ the\ standard\ hash\ funtion.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00136}00136\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00137}\mbox{\hyperlink{intern_8c_a712a222e5d6695c29e78516d7c60ba2a}{00137}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a712a222e5d6695c29e78516d7c60ba2a}{make\_hashmap}}(\ uint32\_t\ n\_buckets,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00138}00138\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ hash\_fn,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00139}00139\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ write\_acl\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00140}00140\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{vectorspace_8c_af82611898537d85117224ce5d4c5eeb5}{make\_vso}}(\ \mbox{\hyperlink{vectorspace_8h_a845017e723bca337605494a0b9be6d5c}{HASHTV}},}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00141}00141\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ \textcolor{keyword}{sizeof}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ )\ *}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00142}00142\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ n\_buckets\ +\ 2\ )\ )\ +}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00143}00143\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ \textcolor{keyword}{sizeof}(\ uint32\_t\ )\ *\ 2\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00144}00144\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00145}00145\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structhashmap__payload}{hashmap\_payload}}\ *payload\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00146}00146\ \ \ \ \ \ \ \ \ (\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structhashmap__payload}{hashmap\_payload}}\ *\ )\ \&\mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ result\ )-\/>payload;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00147}00147\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00148}00148\ \ \ \ \ payload-\/>\mbox{\hyperlink{vectorspace_8h_a1d86eb1948d0cd90cacbad7eba0bfc0f}{hash\_fn}}\ =\ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ hash\_fn\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00149}00149\ \ \ \ \ payload-\/>\mbox{\hyperlink{vectorspace_8h_a2e3029ea295f8519d2e42e8b3c481b4b}{write\_acl}}\ =\ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ write\_acl\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00150}00150\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00151}00151\ \ \ \ \ payload-\/>\mbox{\hyperlink{vectorspace_8h_a241ccfe90f415a07cad8a881fc0f83ac}{n\_buckets}}\ =\ n\_buckets;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00152}00152\ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ n\_buckets;\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00153}00153\ \ \ \ \ \ \ \ \ payload-\/>\mbox{\hyperlink{vectorspace_8h_ae05c576dff650fd511b86a82723a1942}{buckets}}[i]\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00154}00154\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00155}00155\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00156}00156\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00157}00157\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00158}00158\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00159}00159\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00160}00160\ \textcolor{comment}{\ *\ return\ a\ flat\ list\ of\ all\ the\ keys\ in\ the\ hashmap\ indicated\ by\ \`{}map`.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00161}00161\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00162}\mbox{\hyperlink{intern_8c_a808e8e6f10a04c33a3fa937fba0e9d56}{00162}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a808e8e6f10a04c33a3fa937fba0e9d56}{hashmap\_keys}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ mapp\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00163}00163\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00164}00164\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ mapp\ )\ \&\&\ \mbox{\hyperlink{consspaceobject_8h_a1c1832c6670baed0272a78d536a88c78}{truep}}(\ \mbox{\hyperlink{authorise_8c_ac7a62632b2812cbcf9a3571875529b9b}{authorised}}(\ mapp,\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ )\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00165}00165\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *map\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00166}00166\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00167}00167\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.n\_buckets;\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00168}00168\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ c\ =\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[i];}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00169}00169\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ c\ );\ c\ =\ \mbox{\hyperlink{consspaceobject_8h_a36feb8e8c928ce9ffb6fb80167cc1f04}{c\_cdr}}(\ c\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00170}00170\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{consspaceobject_8h_afff9c83c8c250837b5737c11e21cc4ca}{make\_cons}}(\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ c\ )\ ),\ result\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00171}00171\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00172}00172\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00173}00173\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00174}00174\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00175}00175\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00176}00176\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00177}00177\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00178}00178\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00179}00179\ \textcolor{comment}{\ *\ Copy\ all\ key/value\ pairs\ in\ this\ association\ list\ \`{}assoc`\ into\ this\ hashmap\ \`{}mapp`.\ If}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00180}00180\ \textcolor{comment}{\ *\ current\ user\ is\ authorised\ to\ write\ to\ this\ hashmap,\ modifies\ the\ hashmap\ and}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00181}00181\ \textcolor{comment}{\ *\ returns\ it;\ if\ not,\ clones\ the\ hashmap,\ modifies\ the\ clone,\ and\ returns\ that.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00182}00182\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00183}\mbox{\hyperlink{intern_8c_a6c37b87bbbfe5335b46fdf7f76ef0298}{00183}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a6c37b87bbbfe5335b46fdf7f76ef0298}{hashmap\_put\_all}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ mapp,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00184}00184\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ assoc\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00185}00185\ \ \ \ \ \textcolor{comment}{//\ TODO:\ if\ current\ user\ has\ write\ access\ to\ this\ hashmap}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00186}00186\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ mapp\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00187}00187\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *map\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00188}00188\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00189}00189\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ assoc\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00190}00190\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ pair\ =\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ assoc\ );\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ pair\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00191}00191\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ pair\ =\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ assoc\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00192}00192\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ TODO:\ this\ is\ really\ hammering\ the\ memory\ management\ system,\ because}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00193}00193\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *\ it\ will\ make\ a\ new\ lone\ for\ every\ key/value\ pair\ added.\ Fix.\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00194}00194\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ pair\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00195}00195\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ mapp\ =\ \mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{hashmap\_put}}(\ mapp,\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ pair\ ),\ \mbox{\hyperlink{consspaceobject_8h_a36feb8e8c928ce9ffb6fb80167cc1f04}{c\_cdr}}(\ pair\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00196}00196\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ pair\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00197}00197\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{intern_8c_a6c37b87bbbfe5335b46fdf7f76ef0298}{hashmap\_put\_all}}(\ mapp,\ pair\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00198}00198\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00199}00199\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{hashmap\_put}}(\ mapp,\ pair,\ \mbox{\hyperlink{consspaceobject_8h_aa8cecfc5c5c054d2875c03e77b7be15d}{TRUE}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00200}00200\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00201}00201\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assoc\ =\ \mbox{\hyperlink{consspaceobject_8h_a36feb8e8c928ce9ffb6fb80167cc1f04}{c\_cdr}}(\ assoc\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00202}00202\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00203}00203\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ assoc\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00204}00204\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ keys\ =\ \mbox{\hyperlink{intern_8c_a808e8e6f10a04c33a3fa937fba0e9d56}{hashmap\_keys}}(\ assoc\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00205}00205\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ keys\ );\ keys\ =\ \mbox{\hyperlink{consspaceobject_8h_a36feb8e8c928ce9ffb6fb80167cc1f04}{c\_cdr}}(\ keys\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00206}00206\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key\ =\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ keys\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00207}00207\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{hashmap\_put}}(\ mapp,\ key,\ \mbox{\hyperlink{intern_8c_a1a35271cbbb62363f57943aa19b2b592}{hashmap\_get}}(\ assoc,\ key\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00208}00208\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00209}00209\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00210}00210\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00211}00211\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00212}00212\ \ \ \ \ \textcolor{keywordflow}{return}\ mapp;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00213}00213\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00214}00214\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00215}00215\ \textcolor{comment}{/**\ Get\ a\ value\ from\ a\ hashmap.\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00216}00216\ \textcolor{comment}{\ \ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00217}00217\ \textcolor{comment}{\ \ *\ Note\ that\ this\ is\ here,\ rather\ than\ in\ memory/hashmap.c,\ because\ it\ is\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00218}00218\ \textcolor{comment}{\ \ *\ closely\ tied\ in\ with\ c\_assoc,\ q.v.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00219}00219\ \textcolor{comment}{\ \ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00220}\mbox{\hyperlink{intern_8c_a1a35271cbbb62363f57943aa19b2b592}{00220}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a1a35271cbbb62363f57943aa19b2b592}{hashmap\_get}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ mapp,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00221}00221\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00222}00222\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00223}00223\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ mapp\ )\ \&\&\ \mbox{\hyperlink{consspaceobject_8h_a1c1832c6670baed0272a78d536a88c78}{truep}}(\ \mbox{\hyperlink{authorise_8c_ac7a62632b2812cbcf9a3571875529b9b}{authorised}}(\ mapp,\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ )\ )\ \&\&\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ key\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00224}00224\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *map\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00225}00225\ \ \ \ \ \ \ \ \ uint32\_t\ bucket\_no\ =\ \mbox{\hyperlink{intern_8c_a89bab54666e014aba6cbb9c4ab4c9c2a}{get\_hash}}(\ key\ )\ \%\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.n\_buckets;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00226}00226\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00227}00227\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_ac42ecb66595443f6fc62333afb326873}{c\_assoc}}(\ key,\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[bucket\_no]\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00228}00228\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00229}00229\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00230}00230\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00231}00231\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00232}00232\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00233}00233\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00234}00234\ \textcolor{comment}{\ *\ If\ this\ \`{}ptr`\ is\ a\ pointer\ to\ a\ hashmap,\ return\ a\ new\ identical\ hashmap;\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00235}00235\ \textcolor{comment}{\ *\ else\ return\ an\ exception.\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00236}00236\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00237}\mbox{\hyperlink{intern_8c_adbeba5bd773b0b9375af4d73d149d4b2}{00237}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_adbeba5bd773b0b9375af4d73d149d4b2}{clone\_hashmap}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ ptr\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00238}00238\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00239}00239\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00240}00240\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a1c1832c6670baed0272a78d536a88c78}{truep}}(\ \mbox{\hyperlink{authorise_8c_ac7a62632b2812cbcf9a3571875529b9b}{authorised}}(\ ptr,\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ )\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00241}00241\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ ptr\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00242}00242\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ const\ *from\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00243}00243\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00244}00244\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ from\ !=\ NULL\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00245}00245\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structhashmap__payload}{hashmap\_payload}}\ from\_pl\ =\ from-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00246}00246\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ result\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00247}00247\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{intern_8c_a712a222e5d6695c29e78516d7c60ba2a}{make\_hashmap}}(\ from\_pl.\mbox{\hyperlink{vectorspace_8h_a241ccfe90f415a07cad8a881fc0f83ac}{n\_buckets}},\ from\_pl.\mbox{\hyperlink{vectorspace_8h_a1d86eb1948d0cd90cacbad7eba0bfc0f}{hash\_fn}},}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00248}00248\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ from\_pl.\mbox{\hyperlink{vectorspace_8h_a2e3029ea295f8519d2e42e8b3c481b4b}{write\_acl}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00249}00249\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ const\ *to\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00250}00250\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ result\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00251}00251\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structhashmap__payload}{hashmap\_payload}}\ to\_pl\ =\ to-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00252}00252\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00253}00253\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ to\_pl.\mbox{\hyperlink{vectorspace_8h_a241ccfe90f415a07cad8a881fc0f83ac}{n\_buckets}};\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00254}00254\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ to\_pl.\mbox{\hyperlink{vectorspace_8h_ae05c576dff650fd511b86a82723a1942}{buckets}}[i]\ =\ from\_pl.\mbox{\hyperlink{vectorspace_8h_ae05c576dff650fd511b86a82723a1942}{buckets}}[i];}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00255}00255\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ to\_pl.\mbox{\hyperlink{vectorspace_8h_ae05c576dff650fd511b86a82723a1942}{buckets}}[i]\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00256}00256\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00257}00257\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00258}00258\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00259}00259\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00260}00260\ \ \ \ \ \ \ \ \ result\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00261}00261\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_a2a1abab0c80ab1e97f507bc4eab02523}{make\_exception}}(\ \mbox{\hyperlink{consspaceobject_8h_a9e4202c8555763ca9a119f0d63a058cd}{c\_string\_to\_lisp\_string}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00262}00262\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ L\textcolor{stringliteral}{"{}Arg\ to\ \`{}clone\_hashmap`\ must\ "{}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00263}00263\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ L\textcolor{stringliteral}{"{}be\ a\ readable\ hashmap.`"{}}\ ),\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00264}00264\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00265}00265\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00266}00266\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00267}00267\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00268}00268\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00269}00269\ \textcolor{comment}{//\ (keys\ set\ let\ quote\ read\ equal\ *out*\ *log*\ oblist\ cons\ source\ cond\ close\ meta\ mapcar\ negative?\ open\ subtract\ eval\ nλ\ *in*\ *sink*\ cdr\ set!\ reverse\ slurp\ try\ assoc\ eq\ add\ list\ time\ car\ t\ *prompt*\ absolute\ append\ apply\ divide\ exception\ get-\/hash\ hashmap\ inspect\ metadata\ multiply\ print\ put!\ put-\/all!\ read-\/char\ repl\ throw\ type\ +\ *\ -\/\ /\ =\ lambda\ λ\ nlambda\ progn)}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00270}00270\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00271}00271\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00272}00272\ \textcolor{comment}{\ *\ Implementation\ of\ interned?\ in\ C.\ The\ final\ implementation\ if\ interned?\ will}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00273}00273\ \textcolor{comment}{\ *\ deal\ with\ stores\ which\ can\ be\ association\ lists\ or\ hashtables\ or\ hybrids\ of}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00274}00274\ \textcolor{comment}{\ *\ the\ two,\ but\ that\ will\ almost\ certainly\ be\ implemented\ in\ lisp.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00275}00275\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00276}00276\ \textcolor{comment}{\ *\ If\ this\ key\ is\ lexically\ identical\ to\ a\ key\ in\ this\ store,\ return\ the\ key}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00277}00277\ \textcolor{comment}{\ *\ from\ the\ store\ (so\ that\ later\ when\ we\ want\ to\ retrieve\ a\ value,\ an\ eq\ test}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00278}00278\ \textcolor{comment}{\ *\ will\ work);\ otherwise\ return\ NIL.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00279}00279\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00280}00280\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00281}\mbox{\hyperlink{intern_8c_a8b39bfc8df32e0a71870654ab963ba09}{00281}}\ \mbox{\hyperlink{intern_8c_a8b39bfc8df32e0a71870654ab963ba09}{internedp}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ store\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00282}00282\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00283}00283\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00284}00284\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a868a73028c615e36d3ec378406b725b8}{symbolp}}(\ key\ )\ ||\ \mbox{\hyperlink{consspaceobject_8h_ac3918851cf96819107a5dd7c0ea8e9af}{keywordp}}(\ key\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00285}00285\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ TODO:\ I\ see\ what\ I\ was\ doing\ here\ and\ it\ would\ be\ the\ right\ thing\ to\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00286}00286\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ do\ for\ stores\ which\ are\ old-\/fashioned\ assoc\ lists,\ but\ it\ will\ not\ work}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00287}00287\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ for\ my\ new\ hybrid\ stores.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00288}00288\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ for\ (\ struct\ cons\_pointer\ next\ =\ store;}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00289}00289\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ \ \ nilp(\ result\ )\ \&\&\ consp(\ next\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00290}00290\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ \ \ next\ =\ pointer2cell(\ next\ ).payload.cons.cdr\ )\ \{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00291}00291\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ struct\ cons\_space\_object\ entry\ =}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00292}00292\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ pointer2cell(\ pointer2cell(\ next\ ).payload.cons.car\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00293}00293\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00294}00294\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ debug\_print(\ L"{}Internedp:\ checking\ whether\ \`{}"{},\ DEBUG\_BIND\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00295}00295\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ debug\_print\_object(\ key,\ DEBUG\_BIND\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00296}00296\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ debug\_print(\ L"{}`\ equals\ \`{}"{},\ DEBUG\_BIND\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00297}00297\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ debug\_print\_object(\ entry.payload.cons.car,\ DEBUG\_BIND\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00298}00298\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ debug\_print(\ L"{}`\(\backslash\)n"{},\ DEBUG\_BIND\ );}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00299}00299\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00300}00300\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ if\ (\ equal(\ key,\ entry.payload.cons.car\ )\ )\ \{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00301}00301\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ \ \ \ \ result\ =\ entry.payload.cons.car;}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00302}00302\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ \ \ \ \ \}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00303}00303\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ \mbox{\hyperlink{intern_8c_ac42ecb66595443f6fc62333afb326873}{c\_assoc}}(\ key,\ store\ )\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00304}00304\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ key;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00305}00305\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{equal_8c_a8b86c32fe89b8039c060b6bf9f455870}{equal}}(\ key,\ \mbox{\hyperlink{intern_8c_a500315152ff6607a52db22945446e6dc}{privileged\_symbol\_nil}}\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00306}00306\ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_a500315152ff6607a52db22945446e6dc}{privileged\_symbol\_nil}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00307}00307\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00308}00308\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00309}00309\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00310}00310\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ key,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00311}00311\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\ is\ a\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00312}00312\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ \mbox{\hyperlink{consspaceobject_8h_ad6da5748c65be5613d86664948ecc5ab}{c\_type}}(\ key\ ),\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00313}00313\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{},\ not\ a\ KEYW\ or\ SYMB"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00314}00314\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00315}00315\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00316}00316\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00317}00317\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00318}00318\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00319}00319\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00320}00320\ \textcolor{comment}{\ *\ Implementation\ of\ assoc\ in\ C.\ Like\ interned?,\ the\ final\ implementation\ will}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00321}00321\ \textcolor{comment}{\ *\ deal\ with\ stores\ which\ can\ be\ association\ lists\ or\ hashtables\ or\ hybrids\ of}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00322}00322\ \textcolor{comment}{\ *\ the\ two,\ but\ that\ will\ almost\ certainly\ be\ implemented\ in\ lisp.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00323}00323\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00324}00324\ \textcolor{comment}{\ *\ If\ this\ key\ is\ lexically\ identical\ to\ a\ key\ in\ this\ store,\ return\ the\ value}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00325}00325\ \textcolor{comment}{\ *\ of\ that\ key\ from\ the\ store;\ otherwise\ return\ NIL.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00326}00326\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00327}\mbox{\hyperlink{intern_8c_ac42ecb66595443f6fc62333afb326873}{00327}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_ac42ecb66595443f6fc62333afb326873}{c\_assoc}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00328}00328\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ store\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00329}00329\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00330}00330\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00331}00331\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}c\_assoc;\ key\ is\ \`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00332}00332\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ key,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00333}00333\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00334}00334\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00335}00335\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ store\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00336}00336\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ next\ =\ store;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00337}00337\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ result\ )\ \&\&\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ next\ )\ ||\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ next\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00338}00338\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ next\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ next\ ).payload.cons.cdr\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00339}00339\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ next\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00340}00340\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ entry\_ptr\ =\ \mbox{\hyperlink{consspaceobject_8h_ac683bad260c334cc2e5fad1f7d0c7b52}{c\_car}}(\ next\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00341}00341\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ entry\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ entry\_ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00342}00342\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00343}00343\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{switch}\ (\ entry.\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.value\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00344}00344\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a6a5f5b042aa23509409e0fd00a91ac2e}{CONSTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00345}00345\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{equal_8c_a8b86c32fe89b8039c060b6bf9f455870}{equal}}(\ key,\ entry.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.car\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00346}00346\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ entry.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.cdr;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00347}00347\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00348}00348\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00349}00349\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{case}\ \mbox{\hyperlink{consspaceobject_8h_a0e422043a4797ec1a81f7460486e09da}{VECTORPOINTTV}}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00350}00350\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_a1a35271cbbb62363f57943aa19b2b592}{hashmap\_get}}(\ entry\_ptr,\ key\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00351}00351\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00352}00352\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00353}00353\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{lispops_8c_a24b5ba8eb0cb1705e44fdf3cd90d6f75}{throw\_exception}}(\ \mbox{\hyperlink{lispops_8c_ad91d964e274bbb8abf38aaa3522664a2}{c\_append}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00354}00354\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ \mbox{\hyperlink{consspaceobject_8h_a9e4202c8555763ca9a119f0d63a058cd}{c\_string\_to\_lisp\_string}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00355}00355\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ L\textcolor{stringliteral}{"{}Store\ entry\ is\ of\ unknown\ type:\ "{}}\ ),}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00356}00356\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_ad6da5748c65be5613d86664948ecc5ab}{c\_type}}(\ entry\_ptr\ )\ ),\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00357}00357\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00358}00358\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00359}00359\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00360}00360\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ store\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00361}00361\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_a1a35271cbbb62363f57943aa19b2b592}{hashmap\_get}}(\ store,\ key\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00362}00362\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ store\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00363}00363\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}c\_assoc;\ store\ is\ of\ unknown\ type\ \`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00364}00364\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ \mbox{\hyperlink{consspaceobject_8h_ad6da5748c65be5613d86664948ecc5ab}{c\_type}}(\ store\ ),\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00365}00365\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00366}00366\ \ \ \ \ \ \ \ \ result\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00367}00367\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{lispops_8c_a24b5ba8eb0cb1705e44fdf3cd90d6f75}{throw\_exception}}(\ \mbox{\hyperlink{lispops_8c_ad91d964e274bbb8abf38aaa3522664a2}{c\_append}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00368}00368\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ \mbox{\hyperlink{consspaceobject_8h_a9e4202c8555763ca9a119f0d63a058cd}{c\_string\_to\_lisp\_string}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00369}00369\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (\ L\textcolor{stringliteral}{"{}Store\ is\ of\ unknown\ type:\ "{}}\ ),}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00370}00370\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_ad6da5748c65be5613d86664948ecc5ab}{c\_type}}(\ store\ )\ ),\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00371}00371\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00372}00372\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00373}00373\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}c\_assoc\ returning\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00374}00374\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00375}00375\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00376}00376\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00377}00377\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00378}00378\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00379}00379\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00380}00380\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00381}00381\ \textcolor{comment}{\ *\ Store\ this\ \`{}val`\ as\ the\ value\ of\ this\ \`{}key`\ in\ this\ hashmap\ \`{}mapp`.\ If}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00382}00382\ \textcolor{comment}{\ *\ current\ user\ is\ authorised\ to\ write\ to\ this\ hashmap,\ modifies\ the\ hashmap\ and}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00383}00383\ \textcolor{comment}{\ *\ returns\ it;\ if\ not,\ clones\ the\ hashmap,\ modifies\ the\ clone,\ and\ returns\ that.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00384}00384\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00385}\mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{00385}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{hashmap\_put}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ mapp,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00386}00386\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00387}00387\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ val\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00388}00388\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ mapp\ )\ \&\&\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ key\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00389}00389\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *map\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00390}00390\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00391}00391\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ \mbox{\hyperlink{authorise_8c_ac7a62632b2812cbcf9a3571875529b9b}{authorised}}(\ mapp,\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.write\_acl\ )\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00392}00392\ \ \ \ \ \ \ \ \ \ \ \ \ mapp\ =\ \mbox{\hyperlink{intern_8c_adbeba5bd773b0b9375af4d73d149d4b2}{clone\_hashmap}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00393}00393\ \ \ \ \ \ \ \ \ \ \ \ \ map\ =\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ mapp\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00394}00394\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00395}00395\ \ \ \ \ \ \ \ \ uint32\_t\ bucket\_no\ =\ \mbox{\hyperlink{intern_8c_a89bab54666e014aba6cbb9c4ab4c9c2a}{get\_hash}}(\ key\ )\ \%\ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.n\_buckets;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00396}00396\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00397}00397\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ TODO:\ if\ there\ are\ too\ many\ values\ in\ the\ bucket,\ rehash\ the\ whole\ }}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00398}00398\ \ \ \ \ \ \ \ \ \textcolor{comment}{//\ hashmap\ to\ a\ bigger\ number\ of\ buckets,\ and\ return\ that.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00399}00399\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00400}00400\ \ \ \ \ \ \ \ \ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[bucket\_no]\ =}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00401}00401\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ \mbox{\hyperlink{consspaceobject_8h_afff9c83c8c250837b5737c11e21cc4ca}{make\_cons}}(\ \mbox{\hyperlink{consspaceobject_8h_afff9c83c8c250837b5737c11e21cc4ca}{make\_cons}}(\ key,\ val\ ),}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00402}00402\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ map-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.hashmap.buckets[bucket\_no]\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00403}00403\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00404}00404\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00405}00405\ \ \ \ \ \textcolor{keywordflow}{return}\ mapp;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00406}00406\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00407}00407\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00408}00408\ \textcolor{comment}{\ \ \ \ /**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00409}00409\ \textcolor{comment}{\ \ \ \ \ *\ Return\ a\ new\ key/value\ store\ containing\ all\ the\ key/value\ pairs\ in\ this}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00410}00410\ \textcolor{comment}{\ \ \ \ \ *\ store\ with\ this\ key/value\ pair\ added\ to\ the\ front.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00411}00411\ \textcolor{comment}{\ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00412}\mbox{\hyperlink{intern_8c_af8e370c233928d41c268874a6aa5d9e2}{00412}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8c_af8e370c233928d41c268874a6aa5d9e2}{set}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ value,}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00413}00413\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ store\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00414}00414\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00415}00415\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00416}00416\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}set:\ binding\ \`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00417}00417\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ key,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00418}00418\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\ to\ \`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00419}00419\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ value,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00420}00420\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\ in\ store\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00421}00421\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa0ffa929ddbce890ce4f81264a211233}{debug\_dump\_object}}(\ store,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00422}00422\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00423}00423\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00424}00424\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}},\ L\textcolor{stringliteral}{"{}set:\ store\ is\ \%s\(\backslash\)n\`{}"{}},}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00425}00425\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{io_8c_a7af48ce42d938915fd8e59aad5f566ee}{lisp\_string\_to\_c\_string}}(\ \mbox{\hyperlink{consspaceobject_8h_ad6da5748c65be5613d86664948ecc5ab}{c\_type}}(\ store\ )\ )\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00426}00426\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ value\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00427}00427\ \ \ \ \ \ \ \ \ result\ =\ store;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00428}00428\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ store\ )\ ||\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ store\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00429}00429\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{consspaceobject_8h_afff9c83c8c250837b5737c11e21cc4ca}{make\_cons}}(\ \mbox{\hyperlink{consspaceobject_8h_afff9c83c8c250837b5737c11e21cc4ca}{make\_cons}}(\ key,\ value\ ),\ store\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00430}00430\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{vectorspace_8h_a8587c3e6f9520c9f7810ed351b27c831}{hashmapp}}(\ store\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00431}00431\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}set:\ storing\ in\ hashmap\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00432}00432\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_a3593c291344b1053a5055c976c6d9917}{hashmap\_put}}(\ store,\ key,\ value\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00433}00433\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00434}00434\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00435}00435\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}set\ returning\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00436}00436\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00437}00437\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00438}00438\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00439}00439\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00440}00440\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00441}00441\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00442}00442\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00443}00443\ \textcolor{comment}{\ *\ @brief\ Binds\ this\ key\ to\ this\ value\ in\ the\ global\ oblist.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00444}00444\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00445}00445\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00446}00446\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00447}\mbox{\hyperlink{intern_8c_af42e4cc2712549155503fad3bb010564}{00447}}\ \mbox{\hyperlink{intern_8c_af42e4cc2712549155503fad3bb010564}{deep\_bind}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ value\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00448}00448\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Entering\ deep\_bind\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00449}00449\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00450}00450\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ old\ =\ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}};}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00451}00451\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00452}00452\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}deep\_bind:\ binding\ \`{}"{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00453}00453\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ key,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00454}00454\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}\`{}\ to\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00455}00455\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ value,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00456}00456\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00457}00457\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00458}00458\ \ \ \ \ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}}\ =\ \mbox{\hyperlink{intern_8c_af8e370c233928d41c268874a6aa5d9e2}{set}}(\ key,\ value,\ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00459}00459\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00460}00460\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}}\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00461}00461\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ \mbox{\hyperlink{intern_8c_aca78d8df225fa73eef263164d8427430}{oblist}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00462}00462\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ old\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00463}00463\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00464}00464\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00465}00465\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}deep\_bind\ returning\ "{}},\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00466}00466\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ key,\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00467}00467\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a3af1a0a61320e3e1e759a25bb0749f53}{DEBUG\_BIND}}\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00468}00468\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00469}00469\ \ \ \ \ \textcolor{keywordflow}{return}\ key;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00470}00470\ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00471}00471\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00472}00472\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00473}00473\ \textcolor{comment}{\ *\ Ensure\ that\ a\ canonical\ copy\ of\ this\ key\ is\ bound\ in\ this\ environment,\ and}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00474}00474\ \textcolor{comment}{\ *\ return\ that\ canonical\ copy.\ If\ there\ is\ currently\ no\ such\ binding,\ create\ one}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00475}00475\ \textcolor{comment}{\ *\ with\ the\ value\ NIL.}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00476}00476\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00477}00477\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00478}\mbox{\hyperlink{intern_8c_ac9ad50b4f804b350122712c80416bbf9}{00478}}\ \mbox{\hyperlink{intern_8c_ac9ad50b4f804b350122712c80416bbf9}{intern}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ environment\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00479}00479\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ environment;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00480}00480\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ canonical\ =\ \mbox{\hyperlink{intern_8c_a8b39bfc8df32e0a71870654ab963ba09}{internedp}}(\ key,\ environment\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00481}00481\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ canonical\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00482}00482\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00483}00483\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ not\ currently\ bound}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00484}00484\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00485}00485\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{intern_8c_af8e370c233928d41c268874a6aa5d9e2}{set}}(\ key,\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}},\ environment\ );}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00486}00486\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00487}00487\ }
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00488}00488\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{intern_8c_source_l00489}00489\ \}}

\end{DoxyCode}
