| Elektra 0.11.0

Namespaces | Functions
keyhelper.cpp File Reference

Key helper functions. More...

`#include <helper/keyhelper.hpp>`
`#include <kdbprivate.h>`

## Namespaces
namespace | kdb
| This is the main namespace for the C++ binding and libraries.
namespace | kdb::tools
| This namespace is for the libtool library.

## Functions
std::string | kdb::tools::helper::rebasePath (const Key &key, const Key &oldParent, const Key &newParent)
| Rebases the relative path of the passed key from the old parent to the new parent and returns the new path.
Key | kdb::tools::helper::rebaseKey (const Key &key, const Key &oldParent, const Key &newParent)
| Rebases the supplied key from the old parent to the new parent.
void | kdb::tools::helper::removeNamespace (Key &key)
| Removes the namespace.
Key | kdb::tools::helper::prependNamespace (Key const &root, std::string const &ns)
| Prepends the namespace to the key.
KeySet | kdb::tools::helper::prependNamespace (KeySet const &resultKeys, std::string const &ns)
| Prepends the namespace to each key of the key set.
void | kdb::tools::helper::copyAllMeta (KeySet &to, KeySet const &from)
| Copies all metadata of each key in from to their pendant in to.
Key | kdb::tools::helper::commonKeyName (Key key1, Key key2)
| Find common name between two keys.

## Detailed Description

Key helper functions.

Copyright
  BSD License (see LICENSE.md or https://www.libelektra.org)

## Function Documentation

## ◆ commonKeyName()

Key kdb::tools::helper::commonKeyName | ( | Key | key1,
|  | Key | key2
| ) |  |

Find common name between two keys.

Returns
  the longest common name found

## ◆ copyAllMeta()

void kdb::tools::helper::copyAllMeta | ( | KeySet & | to,
|  | KeySet const & | from
| ) |  |

Copies all metadata of each key in from to their pendant in to.

The pendant is determined by ksLookup.

Parameters

  to | metadata is copied to keys in this key set
  from | metadata is copied from keys in this key set

## ◆ prependNamespace() [1/2]

Key kdb::tools::helper::prependNamespace | ( | Key const & | root,
|  | std::string const & | ns
| ) |  |

Prepends the namespace to the key.

Parameters

  root | is the key where the namespace will be prepended
  ns | is the namespace to be prepended

Returns
  a duplicate of root with the new namespace

## ◆ prependNamespace() [2/2]

KeySet kdb::tools::helper::prependNamespace | ( | KeySet const & | resultKeys,
|  | std::string const & | ns
| ) |  |

Prepends the namespace to each key of the key set.

Parameters

  resultKeys | which keys to prepend the namepsace to
  ns | is the namespace to be prepended to each key

Returns
  a keyset where each key has the new namespace

## ◆ rebaseKey()

Key kdb::tools::helper::rebaseKey | ( | const Key & | key,
|  | const Key & | oldParent,
|  | const Key & | newParent
| ) |  |

Rebases the supplied key from the old parent to the new parent.

See also
  ThreeWayMerge::rebasePath

Parameters

  key | the key to be rebased
  oldParent | the old parent of the key
  newParent | the new parent of the key

Returns
  a rebased copy of the supplied key

Exceptions

  InvalidRebaseException | if the key is not below the old parent

## ◆ rebasePath()

string kdb::tools::helper::rebasePath | ( | const Key & | key,
|  | const Key & | oldParent,
|  | const Key & | newParent
| ) |  |

Rebases the relative path of the passed key from the old parent to the new parent and returns the new path.

For example a key /user/example/config/key1 with the oldparent /user/example and the new parent /user/newexample/newpath would result in /user/newexample/newpath/config/key1

If any of the parent keys is a cascading key the namespace of the key to be rebased is assumed instead.

Parameters

  key | the key whose path should be rebased
  oldParent | the old parent of the key
  newParent | the new parent of the key

Returns
  the rebased path

Exceptions

  InvalidRebaseException | if the key is not below the old parent

## ◆ removeNamespace()

void kdb::tools::helper::removeNamespace | ( | Key & | key | ) |

Removes the namespace.

Parameters

  key | will be made to a cascading key