\doxysection{intern.\+h}
\hypertarget{intern_8h_source}{}\label{intern_8h_source}\index{workspace/post-\/scarcity/src/ops/intern.h@{workspace/post-\/scarcity/src/ops/intern.h}}
\mbox{\hyperlink{intern_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00001}00001\ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00002}00002\ \textcolor{comment}{\ *\ intern.h}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00003}00003\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00004}00004\ \textcolor{comment}{\ *\ For\ now\ this\ implements\ an\ oblist\ and\ shallow\ binding;\ local\ environments\ can}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00005}00005\ \textcolor{comment}{\ *\ be\ consed\ onto\ the\ front\ of\ the\ oblist.\ Later,\ this\ won't\ do;\ bindings\ will\ happen}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00006}00006\ \textcolor{comment}{\ *\ in\ namespaces,\ which\ will\ probably\ be\ implemented\ as\ hash\ tables.}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00007}00007\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8h_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_8h_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_8h_source_l00010}00010\ \textcolor{comment}{\ *\ a\ new\ oblist\ without\ the\ previous\ binding\ but\ with\ the\ new\ binding.\ Anything\ which,}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00011}00011\ \textcolor{comment}{\ *\ prior\ to\ this\ action,\ held\ a\ pointer\ to\ the\ old\ oblist\ (as\ all\ current\ threads'}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00012}00012\ \textcolor{comment}{\ *\ environments\ must\ do)\ continues\ to\ hold\ a\ pointer\ to\ the\ old\ oblist,\ and\ consequently}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00013}00013\ \textcolor{comment}{\ *\ doesn't\ see\ the\ change.\ This\ is\ probably\ good\ but\ does\ mean\ you\ cannot\ use\ bindings}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00014}00014\ \textcolor{comment}{\ *\ on\ the\ oblist\ to\ signal\ between\ threads.}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00015}00015\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00016}00016\ \textcolor{comment}{\ *\ (c)\ 2017\ Simon\ Brooke\ <simon@journeyman.cc>}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00017}00017\ \textcolor{comment}{\ *\ Licensed\ under\ GPL\ version\ 2.0,\ or,\ at\ your\ option,\ any\ later\ version.}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00018}00018\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00019}00019\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00020}00020\ \textcolor{preprocessor}{\#ifndef\ \_\_intern\_h}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00021}00021\ \textcolor{preprocessor}{\#define\ \_\_intern\_h}}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00022}00022\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00023}00023\ \textcolor{keyword}{extern}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8h_a500315152ff6607a52db22945446e6dc}{privileged\_symbol\_nil}};}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00024}00024\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00025}00025\ \textcolor{keyword}{extern}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8h_aca78d8df225fa73eef263164d8427430}{oblist}};}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00026}00026\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00027}00027\ uint32\_t\ \mbox{\hyperlink{intern_8h_a89bab54666e014aba6cbb9c4ab4c9c2a}{get\_hash}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00028}00028\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00029}00029\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{intern_8h_a3ae5f663a2af92f205fde29b19c8da55}{free\_hashmap}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ ptr\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00030}00030\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00031}00031\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{intern_8h_a288bcdc76785b84f975bd61dc47d37fd}{dump\_map}}(\ \mbox{\hyperlink{fopen_8h_structfcurl__data}{URL\_FILE}}\ *\ output,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ pointer\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00032}00032\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00033}00033\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00034}00034\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00035}00035\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00036}00036\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00037}00037\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00038}00038\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ val\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00039}00039\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00040}00040\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00041}00041\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ assoc\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00042}00042\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00043}00043\ \textcolor{keyword}{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\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00044}00044\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00045}00045\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{intern_8h_a712a222e5d6695c29e78516d7c60ba2a}{make\_hashmap}}(\ uint32\_t\ n\_buckets,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00046}00046\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ hash\_fn,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00047}00047\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ write\_acl\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00048}00048\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00049}00049\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00050}00050\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ store\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00051}00051\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00052}00052\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00053}00053\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ environment\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00054}00054\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00055}00055\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00056}00056\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00057}00057\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00058}00058\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00059}00059\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ key,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00060}00060\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ val\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00061}00061\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00062}00062\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00063}00063\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ value,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00064}00064\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ store\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00065}00065\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00066}00066\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00067}00067\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ value\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00068}00068\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00069}00069\ \textcolor{keyword}{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,}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00070}00070\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ environment\ );}
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00071}00071\ }
\DoxyCodeLine{\Hypertarget{intern_8h_source_l00072}00072\ \textcolor{preprocessor}{\#endif}}

\end{DoxyCode}
