It can get quite cumbersome to find out about key interrelations like arrays.

The alternative would be to have semantics in key names, with following advantages\+:


\begin{DoxyItemize}
\item maybe less metadata to save memory (only array?)
\end{DoxyItemize}

Do not encode any semantics into the key names. All semantic must be in metadata.

Nevertheless, there are guidelines (without any checks in {\ttfamily key\+Set\+Base\+Name})\+:


\begin{DoxyItemize}
\item {\ttfamily \#} is used to indicate that array numbers follow.
\item {\ttfamily ®} is used to indicate that some information was encoded in the key name. This is usually only needed internally in storage plugins.
\item The U\+T\+F-\/8 sequence {\ttfamily ®elektra} (i.\+e. the 9-\/byte sequence {\ttfamily C2 AE 65 6C 65 6B 74 72 61}) is reserved, see key name docu.
\end{DoxyItemize}

There are, however, rules and conventions which syntax to use for specific semantics. The {\ttfamily spec} plugin guards these rules.


\begin{DoxyItemize}
\item for consistency, whenever possible, metadata should be preferred
\item no escaping of key base names necessary
\item it is very unlikely that {\ttfamily ®elektra} collides with a real key base name a user wanted to have
\item {\ttfamily ®elektra} makes very clear that there is a special reserved meaning
\item {\ttfamily ®elektra} U\+T\+F-\/8 encoding decodes to \char`\"{}some character\char`\"{} + ® in many 8-\/bit encodings (including I\+SO 8859-\/1 aka Latin1 and Windows (Codepage) 1252, in the encoding {\ttfamily C}, however, you get `\textquotesingle{}\textquotesingle{}\$\textquotesingle{}\textbackslash{}302\textbackslash{}256\textquotesingle{}\textquotesingle{}elektra\textquotesingle{}`)
\end{DoxyItemize}


\begin{DoxyItemize}
\item \hyperlink{doc_decisions_array_md}{Arrays}
\item \hyperlink{doc_decisions_base_name_md}{Base Names}
\end{DoxyItemize}