\label{doc_usecases_core_README_md_md_doc_usecases_core_README}%
\Hypertarget{doc_usecases_core_README_md_md_doc_usecases_core_README}%
 This folder contains the use cases for {\ttfamily libelektra-\/core}.

{\ttfamily libelektra-\/core} primarily implements an ordered, hierarchical associative array data structure, called {\ttfamily Key\+Set}, which\+:


\begin{DoxyEnumerate}
\item uses arbitrary byte sequences, grouped into namespaces, as keys
\item associates each key with
\begin{DoxyEnumerate}
\item values\+: an arbitrary byte sequence
\item metadata\+: another ordered, hierarchical associative array, which only associates keys with values
\end{DoxyEnumerate}
\item orders keys first by namespace then lexicographically with respect to hierarchy
\item supports the operations\+: insert, remove, lookup, hierarchy lookup (a form of prefix lookup) and access by index (which enables iteration)
\end{DoxyEnumerate}

Additionally, {\ttfamily libelektra-\/core} provides a data structure, called {\ttfamily Key}, that represents a single key-\/value pair in the associative array, but can also be used standalone.

To support the hierarchical and ordered nature of a {\ttfamily Key\+Set} there are two fundamental comparison operations that can be performed on two {\ttfamily Key}s\+:


\begin{DoxyEnumerate}
\item Order Comparison\+: Establishes the linear order of {\ttfamily Key}s and thereby defines the iteration order of a {\ttfamily Key\+Set}.
\item Hierarchy Comparison\+: Establishes the hierarchy of {\ttfamily Key}s, by defining based on their names whether one {\ttfamily Key} is a descendant of another.
\end{DoxyEnumerate}

The individual use cases provide details on these data structures and the operations it supports. 