DTNMA Reference Tools v2.0.0 - 7.g88e232c
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
algo.h File Reference

This file contains algorithmic functions to operate on ARIs recursively. More...

#include "base.h"
+ Include dependency graph for algo.h:
+ This graph shows which files directly or indirectly include this file:

Data Structures

struct  cace_ari_visit_ctx_t
 Context used for cace_ari_visitor_t functions. More...
 
struct  cace_ari_visitor_t
 Function pointers to implement the cace_ari_visit() behavior. More...
 
struct  cace_ari_translate_ctx_t
 Context used for cace_ari_translator_t functions. More...
 
struct  cace_ari_translator_t
 Function pointers to implement the cace_ari_translate() behavior. More...
 

Macros

#define M_OPL_cace_ari_t()
 Default OPLIST for cace_ari_t.
 

Functions

int cace_ari_visit (cace_ari_t *ari, const cace_ari_visitor_t *visitor, void *user_data)
 Visit an ARI recursively.
 
int cace_ari_translate (cace_ari_t *out, const cace_ari_t *in, const cace_ari_translator_t *translator, void *user_data)
 Translate from an input ARI into an output of the same structure.
 
size_t cace_ari_hash (const cace_ari_t *ari)
 Interface for M*LIB HASH operation.
 
int cace_ari_cmp (const cace_ari_t *left, const cace_ari_t *right)
 Compare two ARIs for ordering.
 
bool cace_ari_equal (const cace_ari_t *left, const cace_ari_t *right)
 Determine if two ARIs have identical value.
 

Detailed Description

This file contains algorithmic functions to operate on ARIs recursively.

Macro Definition Documentation

◆ M_OPL_cace_ari_t

#define M_OPL_cace_ari_t ( )
Value:
(INIT(API_2(cace_ari_init)), INIT_SET(API_6(cace_ari_init_copy)), INIT_MOVE(API_6(cace_ari_init_move)), \
CLEAR(API_2(cace_ari_deinit)), RESET(API_2(cace_ari_reset)), SET(API_6(cace_ari_set_copy)), \
MOVE(API_6(cace_ari_set_move)), HASH(API_2(cace_ari_hash)), CMP(API_6(cace_ari_cmp)), \
EQUAL(API_6(cace_ari_equal)))
int cace_ari_cmp(const cace_ari_t *left, const cace_ari_t *right)
Compare two ARIs for ordering.
Definition algo.c:619
bool cace_ari_equal(const cace_ari_t *left, const cace_ari_t *right)
Determine if two ARIs have identical value.
Definition algo.c:750
size_t cace_ari_hash(const cace_ari_t *ari)
Interface for M*LIB HASH operation.
Definition algo.c:510
void cace_ari_reset(cace_ari_t *ari)
Reset an initialized ARI to the undefined value.
Definition base.c:137
void cace_ari_init(cace_ari_t *ari)
Initialize an ARI to the undefined value.
Definition base.c:70
int cace_ari_set_copy(cace_ari_t *ari, const cace_ari_t *src)
Copy an ARI value into another ARI.
Definition base.c:144
int cace_ari_init_copy(cace_ari_t *ari, const cace_ari_t *src)
Initialize an ARI with copy semantics.
Definition base.c:99
int cace_ari_init_move(cace_ari_t *ari, cace_ari_t *src)
Initialize an ARI with move semantics.
Definition base.c:112
int cace_ari_deinit(cace_ari_t *ari)
De-initialize an ARI.
Definition base.c:128
int cace_ari_set_move(cace_ari_t *ari, cace_ari_t *src)
Move an ARI value into another ARI.
Definition base.c:158

Default OPLIST for cace_ari_t.

Function Documentation

◆ cace_ari_cmp()

◆ cace_ari_equal()

◆ cace_ari_hash()

size_t cace_ari_hash ( const cace_ari_t ari)

Interface for M*LIB HASH operation.

This uses the cace_ari_visit() internally to walk an ARI tree.

Parameters
[in]ariThe object to hash, which contains nested state.
Returns
The hash value.

References CHKRET, and cace_ari_visitor_t::visit_objpath.

◆ cace_ari_translate()

int cace_ari_translate ( cace_ari_t out,
const cace_ari_t in,
const cace_ari_translator_t translator,
void *  user_data 
)

Translate from an input ARI into an output of the same structure.

Precondition
The out value is already initialized.
Parameters
[out]outThe result of translation.
[in]inThe value to translate.
[in]translatorThe translator descriptor.
[in]user_dataData passed to the cace_ari_translator_t functions.
Returns
Zero upon success, or non-zero if one of the translator functions returned non-zero.

References CHKERR1, and cace_ari_translate_ctx_t::parent.

◆ cace_ari_visit()

int cace_ari_visit ( cace_ari_t ari,
const cace_ari_visitor_t visitor,
void *  user_data 
)

Visit an ARI recursively.

Parameters
[in]ariThe value to visit.
[in]visitorThe visitor descriptor.
[in]user_dataData passed to the cace_ari_visitor_t functions.
Returns
Zero upon success, or non-zero if one of the visitor functions returned non-zero.

References CHKERR1, and cace_ari_visit_ctx_t::parent.