| Elektra 0.11.0

API based on use cases for `libelektra-core`

# Create <tt>Key</tt>

This use case is implemented as `keyNew()`.

# <tt>Key</tt> Name

The name of a `Key` is stored in two forms: escaped and unescaped.

The escaped from can be accessed via `keyName()` and the unescaped form via `keyUnescapedName()`.

Manipulating the name is possible via the `keySetName()`, `keySetBaseName()`, `keyAddName()` and `keyAddBaseName()` functions, which allow various kinds of manipulation.

# <tt>Key</tt> Namespace

This use case implemented via the `keyGetNamespace()` and `keySetNamespace()` functions.

# <tt>Key</tt> Value

The value of a `Key` can be accessed via `keyValue()` and `keyString()`. It can be changed via `keySetString()` and `keySetBinary()`.

# <tt>Key</tt> Metadata

This use case is implemented as the `keyMeta()` function.

## <tt>Key</tt> Ordering

This use case is implemented as the `keyCmp()` function.

# <tt>Key</tt> Hierarchy

This use case is currently implemented via the `keyIsBelow()`, `keyIsBelowOrSame()` and `keyIsDirectlyBelow()` functions, instead of being a single function.

# Create <tt>KeySet</tt>

This use case is implemented as `ksNew()`. Beyond the described use case, the `ksNew()` function also supports creating a `KeySet` with predefined contents.

# Insert <tt>Key</tt> into <tt>KeySet</tt>

This use case is implemented as `ksAppendKey()` and `ksAppend()`.

# Remove <tt>Key</tt> from <tt>KeySet</tt>

This use case is implemented via `ksLookup()` with the `KDB_O_POP` option.

# Direct lookup in <tt>KeySet</tt>

This use case is implemented via `ksLookup()`.

# Cascading Lookup in <tt>KeySet</tt>

This use case is implemented via `ksLookup()`.

# Index access to <tt>KeySet</tt>

This use case is implemented as `ksAtCursor()`.

# Cut <tt>Key</tt> hierarchy from <tt>KeySet</tt>

This use case is implemented as `ksCut()`.