DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
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.
 

Enumerations

enum  cace_ari_translate_result_t { CACE_ARI_TRANSLATE_FAILURE , CACE_ARI_TRANSLATE_FINAL , CACE_ARI_TRANSLATE_DEFAULT }
 

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.
 
void cace_ari_get_str (m_string_t out, const cace_ari_t obj, bool append)
 An M*LIB compatible debug text output function.
 

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)), GET_STR(cace_ari_get_str))
int cace_ari_cmp(const cace_ari_t *left, const cace_ari_t *right)
Compare two ARIs for ordering.
Definition algo.c:586
bool cace_ari_equal(const cace_ari_t *left, const cace_ari_t *right)
Determine if two ARIs have identical value.
Definition algo.c:717
size_t cace_ari_hash(const cace_ari_t *ari)
Interface for M*LIB HASH operation.
Definition algo.c:531
void cace_ari_get_str(m_string_t out, const cace_ari_t obj, bool append)
An M*LIB compatible debug text output function.
Definition algo.c:863
void cace_ari_set_move(cace_ari_t *ari, cace_ari_t *src)
Move an ARI value into another ARI.
Definition base.c:158
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_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
void cace_ari_set_copy(cace_ari_t *ari, const cace_ari_t *src)
Copy an ARI value into another ARI.
Definition base.c:144

Default OPLIST for cace_ari_t.

Enumeration Type Documentation

◆ cace_ari_translate_result_t

Enumerator
CACE_ARI_TRANSLATE_FAILURE 

Indicates that the callback has failed and translation should be stopped as having failed.

CACE_ARI_TRANSLATE_FINAL 

Indicates that the callback has fully translated the value and the output is in its final form.

Note
This result is useful for leaf values and will not recurse into containers.
CACE_ARI_TRANSLATE_DEFAULT 

Indicates that the callback has not modified the output and the default recursive translation needs to be performed.

Function Documentation

◆ cace_ari_cmp()

int cace_ari_cmp ( const cace_ari_t left,
const cace_ari_t right 
)

◆ cace_ari_equal()

bool cace_ari_equal ( const cace_ari_t left,
const cace_ari_t right 
)

Determine if two ARIs have identical value.

Parameters
leftOne value to compare.
rightOther value to compare.
Returns
True if the two are by-value equal.

References cace_ari_lit_t::ari_type, cace_ari_prim_val_u::as_ac, cace_ari_prim_val_u::as_am, cace_ari_prim_val_u::as_bool, cace_ari_prim_val_u::as_data, cace_ari_prim_val_u::as_execset, cace_ari_prim_val_u::as_float64, cace_ari_prim_val_u::as_int64, cace_ari_t::as_lit, cace_ari_t::as_ref, cace_ari_prim_val_u::as_rptset, cace_ari_prim_val_u::as_tbl, cace_ari_prim_val_u::as_timespec, cace_ari_prim_val_u::as_uint64, cace_amm_numeric_promote_type(), cace_amm_type_convert(), cace_amm_type_get_builtin(), cace_ari_ac_equal(), cace_ari_am_equal(), cace_ari_deinit(), cace_ari_execset_equal(), CACE_ARI_INIT_UNDEFINED, cace_ari_objpath_equal(), cace_ari_params_equal(), CACE_ARI_PRIM_BOOL, CACE_ARI_PRIM_BSTR, CACE_ARI_PRIM_FLOAT64, CACE_ARI_PRIM_INT64, CACE_ARI_PRIM_NULL, CACE_ARI_PRIM_OTHER, CACE_ARI_PRIM_TIMESPEC, CACE_ARI_PRIM_TSTR, CACE_ARI_PRIM_UINT64, CACE_ARI_PRIM_UNDEFINED, cace_ari_rptset_equal(), cace_ari_tbl_equal(), CACE_ARI_TYPE_AC, CACE_ARI_TYPE_AM, CACE_ARI_TYPE_EXECSET, CACE_ARI_TYPE_RPTSET, CACE_ARI_TYPE_TBL, cace_data_equal(), cace_has_numeric_prim_type(), CACE_LOG_ERR, CHKFALSE, cace_ari_lit_t::has_ari_type, cace_ari_t::is_ref, cace_ari_ref_t::objpath, cace_ari_ref_t::params, cace_ari_lit_t::prim_type, result, and cace_ari_lit_t::value.

Referenced by cace_ari_execset_equal(), cace_ari_report_equal(), cace_ari_rptset_equal(), check_execute(), check_produce(), refda_adm_ietf_dtnma_agent_oper_compare_eq(), refda_adm_ietf_dtnma_agent_oper_compare_ne(), test_ari_equal(), TEST_CASE(), test_refda_adm_ietf_alarms_category_inventory(), test_refda_adm_ietf_alarms_resource_inventory(), test_refda_alarms_compress_all(), test_refda_alarms_mgr_state_warning(), test_refda_alarms_purge_warning(), test_refda_alarms_set_state_no_category(), test_refda_exec_target(), and test_refda_reporting_target().

◆ cace_ari_get_str()

void cace_ari_get_str ( m_string_t  out,
const cace_ari_t  obj,
bool  append 
)

An M*LIB compatible debug text output function.

This encodes to text with default options.

References CACE_ARI_TEXT_ENC_OPTS_DEFAULT, and cace_ari_text_encode().

◆ 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 cace_ari_hash_visit_lit(), cace_ari_hash_visit_objpath(), cace_ari_visit(), CHKRET, and cace_ari_visitor_t::visit_objpath.

Referenced by test_ari_hash().

◆ 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 cace_ari_translate_ari(), CHKERR1, and cace_ari_translate_ctx_t::parent.

Referenced by refda_adm_ietf_dtnma_agent_oper_tbl_filter(), refda_alarms_compress(), refda_alarms_mgr_state(), and refda_alarms_purge().

◆ 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 cace_ari_visit_ari(), CHKERR1, and cace_ari_visit_ctx_t::parent.

Referenced by cace_amm_builtin_validate(), and cace_ari_hash().