$darkmode
Elektra 0.11.0
Functions
array.c File Reference

Array methods. More...

#include <kdb.h>
#include <kdbease.h>
#include <kdbhelper.h>
#include <kdbprivate.h>
#include <kdbtypes.h>
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for array.c:

Functions

int elektraArrayValidateName (const Key *key)
 validate array syntax More...
 
int elektraArrayValidateBaseNameString (const char *baseName)
 validate array syntax More...
 
char * elektraArrayGetPrefix (Key *key)
 Get the base name of the passed array. More...
 
int elektraArrayIncName (Key *key)
 Increment the name of the key by one. More...
 
int elektraArrayDecName (Key *key)
 Decrement the name of an array key by one. More...
 
KeySet * elektraArrayGet (const Key *arrayParent, KeySet *keys)
 Return all the array keys below the given array parent. More...
 
Key * elektraArrayGetNextKey (KeySet *arrayKeys)
 Return the next key in the given array. More...
 

Detailed Description

Array methods.

Function Documentation

◆ elektraArrayDecName()

int elektraArrayDecName ( Key *  key)

Decrement the name of an array key by one.

The alphabetical order will remain intact. For example, user:/abc/\#_10 will be changed to user:/abc/\#9.

Parameters
Thisparameter determines the key name this function decrements.
Return values
-1on error (e.g. new array index too small, non-valid array)
0on success

◆ elektraArrayGet()

KeySet* elektraArrayGet ( const Key *  arrayParent,
KeySet *  keys 
)

Return all the array keys below the given array parent.

The array parent itself is not returned. For example, if user:/config/# is an array, user:/config is the array parent. Only the direct array keys will be returned. This means that for example user:/config/#1/key will not be included, but only user:/config/#1.

A new keyset will be allocated for the resulting keys. This means that the caller must ksDel the resulting keyset.

Parameters
arrayParentthe parent of the array to be returned
keysthe keyset containing the array keys
Returns
a keyset containing the array keys (if any)
Return values
NULLon NULL pointers

◆ elektraArrayGetNextKey()

Key* elektraArrayGetNextKey ( KeySet *  arrayKeys)

Return the next key in the given array.

The function will automatically allocate memory for a new key and name it accordingly.

Precondition
The supplied keyset must contain only valid array keys.

The caller has to keyDel the resulting key.

Parameters
arrayKeysthe array where the new key will belong to
Returns
the new array key on success
Return values
NULLif the passed array is empty
NULLon NULL pointers or if an error occurs

◆ elektraArrayGetPrefix()

char* elektraArrayGetPrefix ( Key *  key)

Get the base name of the passed array.

The returned value must be freed (if not null)

e.g. user:/abc/#9/foo#1 wil return user:/abc

Parameters
key
Return values

◆ elektraArrayIncName()

int elektraArrayIncName ( Key *  key)

Increment the name of the key by one.

Alphabetical order will remain

e.g. user:/abc/#9 will be changed to user:/abc/#_10

For the start: user:/abc/# will be changed to user:/abc/#0

Parameters
keywhich base name will be incremented
Return values
-1on error (e.g. array too large, non-valid array)
0on success

◆ elektraArrayValidateBaseNameString()

int elektraArrayValidateBaseNameString ( const char *  baseName)

validate array syntax

Parameters
baseNamethe supposed array element basename
Return values
-1if no array element/syntax error/no key
0if start
offsetIndexotherwise, where offsetIndex stores the offset to the first digit of the array index of baseName

◆ elektraArrayValidateName()

int elektraArrayValidateName ( const Key *  key)

validate array syntax

Parameters
keyan element of an array
Return values
-1if no array element/syntax error/no key
0if start
1if array element