programmer's documentation
Functions
cs_tree.c File Reference
#include "cs_defs.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "bft_mem.h"
#include "cs_tree.h"
Include dependency graph for cs_tree.c:

Functions

cs_tree_node_t * cs_tree_node_create (const char *name)
 Create an empty node. More...
 
void cs_tree_node_free (cs_tree_node_t **pnode)
 Free a branch in a tree starting from a node. More...
 
void cs_tree_node_set_name (cs_tree_node_t *node, const char *name)
 Name or rename a node. More...
 
void cs_tree_node_set_val_string (cs_tree_node_t *node, const char *val)
 Allocate the value member of a node and assign to it a string. More...
 
void cs_tree_node_set_bool (cs_tree_node_t *node, bool val)
 Allocate the value member of a node and assign to it a boolean. More...
 
void cs_tree_node_set_bool_val (cs_tree_node_t *node, int size, const bool *val)
 Allocate the value member of a node and assign to it a boolean. More...
 
void cs_tree_node_set_int_val (cs_tree_node_t *node, int size, const int *val)
 Allocate the value member of a node and assign to it an integer. More...
 
void cs_tree_node_set_real_val (cs_tree_node_t *node, int size, const cs_real_t *val)
 Allocate the value member of a node and assign to it an array of real values. More...
 
void cs_tree_node_dump (cs_log_t log, int depth, const cs_tree_node_t *node)
 Dump a cs_tree_node_t structure. More...
 
cs_tree_node_t * cs_tree_get_node_rw (cs_tree_node_t *root, const char *path)
 Retrieve the pointer to the value member of the node. More...
 
const cs_tree_node_t * cs_tree_get_node (const cs_tree_node_t *root, const char *path)
 Retrieve the pointer to a node with read-only access. More...
 
cs_tree_node_t * cs_tree_add_child (cs_tree_node_t *parent, const char *name)
 Create and add a node in a tree below the given parent node. More...
 
cs_tree_node_t * cs_tree_add_sibling (cs_tree_node_t *sibling, const char *name)
 Create and add a node in a tree at the right of the given node. More...
 
void cs_tree_dump (cs_log_t log, int depth, const cs_tree_node_t *root)
 Dump a cs_tree_node_t structure starting from the node "root". More...
 

Detailed Description

Tree structure used to store data and settings.

Function Documentation

◆ cs_tree_add_child()

cs_tree_node_t* cs_tree_add_child ( cs_tree_node_t *  parent,
const char *  name 
)

Create and add a node in a tree below the given parent node.

Parameters
[in,out]parentpointer to the parent node to handle.
[in]namename of the node to add
Returns
pointer to the new node in the tree structure

◆ cs_tree_add_sibling()

cs_tree_node_t* cs_tree_add_sibling ( cs_tree_node_t *  sibling,
const char *  name 
)

Create and add a node in a tree at the right of the given node.

Parameters
[in,out]siblingpointer to the sibling node to handle
[in]namename of the node to add
Returns
pointer to the new node in the tree structure

◆ cs_tree_dump()

void cs_tree_dump ( cs_log_t  log,
int  depth,
const cs_tree_node_t *  root 
)

Dump a cs_tree_node_t structure starting from the node "root".

Parameters
[in]logindicate which log file to use
[in]depthstarting depth in the tree
[in]rootpointer to a cs_tree_node_t to dump

◆ cs_tree_get_node()

const cs_tree_node_t* cs_tree_get_node ( const cs_tree_node_t *  root,
const char *  path 
)

Retrieve the pointer to a node with read-only access.

This node is located at "path" from the given root node level switch is indicated by a "/" in path.

Exits on error if not found.

Parameters
[in]rootpointer to the root node where we start searching
[in]pathstring describing the path access
Returns
pointer to the node

◆ cs_tree_get_node_rw()

cs_tree_node_t* cs_tree_get_node_rw ( cs_tree_node_t *  root,
const char *  path 
)

Retrieve the pointer to the value member of the node.

This node can be modified.

This node is located at "path" from the given root node level switch is indicated by a "/" in path

Exits on error if not found.

Parameters
[in,out]rootpointer to the root node where we start searching
[in]pathstring describing the path access
Returns
pointer to the node

◆ cs_tree_node_create()

cs_tree_node_t* cs_tree_node_create ( const char *  name)

Create an empty node.

Only the name is assigned if given

Parameters
[in]namename of the node, or NULL
Returns
pointer to a new allocated cs_tree_node_t structure

◆ cs_tree_node_dump()

void cs_tree_node_dump ( cs_log_t  log,
int  depth,
const cs_tree_node_t *  node 
)

Dump a cs_tree_node_t structure.

Parameters
[in]logindicate which log file to use
[in]depthshift to apply when printing
[in]nodepointer to a cs_tree_node_t to dump

◆ cs_tree_node_free()

void cs_tree_node_free ( cs_tree_node_t **  pnode)

Free a branch in a tree starting from a node.

If the node is the root of the tree, the whole tree is freed.

Parameters
[in,out]pnodepointer to a pointer to a cs_tree_node_t to free

◆ cs_tree_node_set_bool()

void cs_tree_node_set_bool ( cs_tree_node_t *  node,
bool  val 
)

Allocate the value member of a node and assign to it a boolean.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]valboolean

◆ cs_tree_node_set_bool_val()

void cs_tree_node_set_bool_val ( cs_tree_node_t *  node,
int  size,
const bool *  val 
)

Allocate the value member of a node and assign to it a boolean.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]sizenumber of elements in val
[in]valarray of boolean

◆ cs_tree_node_set_int_val()

void cs_tree_node_set_int_val ( cs_tree_node_t *  node,
int  size,
const int *  val 
)

Allocate the value member of a node and assign to it an integer.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]sizenumber of integers in val
[in]valarray of integers

◆ cs_tree_node_set_name()

void cs_tree_node_set_name ( cs_tree_node_t *  node,
const char *  name 
)

Name or rename a node.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]namename to set

◆ cs_tree_node_set_real_val()

void cs_tree_node_set_real_val ( cs_tree_node_t *  node,
int  size,
const cs_real_t val 
)

Allocate the value member of a node and assign to it an array of real values.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]sizenumber of elements in val
[in]valarray of real values

◆ cs_tree_node_set_val_string()

void cs_tree_node_set_val_string ( cs_tree_node_t *  node,
const char *  val 
)

Allocate the value member of a node and assign to it a string.

Parameters
[in,out]nodepointer to a cs_tree_node_t to modify
[in]valvalue of the string