DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
numeric.h File Reference
#include "cace/ari/base.h"
+ Include dependency graph for numeric.h:
+ This graph shows which files directly or indirectly include this file:

Typedefs

typedef cace_ari_uvast(* cace_binop_uvast) (cace_ari_uvast, cace_ari_uvast)
 
typedef cace_ari_vast(* cace_binop_vast) (cace_ari_vast, cace_ari_vast)
 
typedef cace_ari_real64(* cace_binop_real64) (cace_ari_real64, cace_ari_real64)
 
typedef int(* cace_binop_timespec) (cace_ari_t *, const cace_ari_t *, const cace_ari_t *)
 

Functions

int cace_amm_numeric_promote_type (cace_ari_type_t *result, const cace_ari_t *left, const cace_ari_t *right)
 Determine the numeric type which is the least common promotion type.
 
cace_ari_type_t cace_eqiv_ari_type (const cace_ari_lit_t *lit)
 Determine the equivalent ari type of the provided literal-value ARI.
 
int cace_numeric_integer_binary_operator (cace_ari_t *result, const cace_ari_t *lt_val, const cace_ari_t *rt_val, cace_binop_uvast op_uvast, cace_binop_vast op_vast)
 Execute a numeric operation accepting two integers.
 
int cace_numeric_binary_operator (cace_ari_t *result, const cace_ari_t *lt_val, const cace_ari_t *rt_val, cace_binop_uvast op_uvast, cace_binop_vast op_vast, cace_binop_real64 op_real64, cace_binop_timespec op_timespec)
 Execute a numeric operation accepting two parameters.
 
int cace_numeric_binary_comparison_operator (cace_ari_t *result, const cace_ari_t *lt_val, const cace_ari_t *rt_val, cace_binop_uvast op_uvast, cace_binop_vast op_vast, cace_binop_real64 op_real64)
 Compare two numeric values.
 
bool cace_numeric_is_zero (const cace_ari_t *val)
 Determine if given value is zero.
 
bool cace_is_numeric_type (cace_ari_type_t typ)
 Determine if given type is numeric.
 
bool cace_has_numeric_prim_type (const cace_ari_t *obj)
 Determine if given object is using a numeric primitive type.
 

Typedef Documentation

◆ cace_binop_real64

typedef cace_ari_real64(* cace_binop_real64) (cace_ari_real64, cace_ari_real64)

◆ cace_binop_timespec

typedef int(* cace_binop_timespec) (cace_ari_t *, const cace_ari_t *, const cace_ari_t *)

◆ cace_binop_uvast

typedef cace_ari_uvast(* cace_binop_uvast) (cace_ari_uvast, cace_ari_uvast)

◆ cace_binop_vast

typedef cace_ari_vast(* cace_binop_vast) (cace_ari_vast, cace_ari_vast)

Function Documentation

◆ cace_amm_numeric_promote_type()

int cace_amm_numeric_promote_type ( cace_ari_type_t result,
const cace_ari_t left,
const cace_ari_t right 
)

Determine the numeric type which is the least common promotion type.

This is done in accordance with Section 6.11.2.1 of [amm].

Parameters
[out]resultThe promotion type if the return is zero.
[in]leftOne input value.
[in]rightThe other input value.
Returns
Zero if successful.

References cace_ari_t::as_lit, CACE_ARI_TYPE_INT, CACE_ARI_TYPE_UVAST, CACE_ARI_TYPE_VAST, cace_eqiv_ari_type(), CHKERR1, cace_ari_t::is_ref, numeric_rank(), and result.

Referenced by ari_numeric_add(), cace_ari_equal(), cace_numeric_binary_comparison_operator(), cace_numeric_binary_operator(), and cace_numeric_integer_binary_operator().

◆ cace_eqiv_ari_type()

◆ cace_has_numeric_prim_type()

bool cace_has_numeric_prim_type ( const cace_ari_t obj)

Determine if given object is using a numeric primitive type.

Parameters
[in]valInput object.
Returns
true if numeric prim type.

References cace_ari_t::as_lit, CACE_ARI_PRIM_FLOAT64, CACE_ARI_PRIM_INT64, CACE_ARI_PRIM_UINT64, CHKERR1, and cace_ari_lit_t::prim_type.

Referenced by cace_ari_equal(), timespec_numeric_div(), and timespec_numeric_mul().

◆ cace_is_numeric_type()

bool cace_is_numeric_type ( cace_ari_type_t  typ)

Determine if given type is numeric.

Parameters
[in]valInput value.
Returns
true if numeric type.

References CACE_ARI_TYPE_BYTE, CACE_ARI_TYPE_INT, CACE_ARI_TYPE_REAL32, CACE_ARI_TYPE_REAL64, CACE_ARI_TYPE_UINT, CACE_ARI_TYPE_UVAST, and CACE_ARI_TYPE_VAST.

◆ cace_numeric_binary_comparison_operator()

int cace_numeric_binary_comparison_operator ( cace_ari_t result,
const cace_ari_t lt_val,
const cace_ari_t rt_val,
cace_binop_uvast  op_uvast,
cace_binop_vast  op_vast,
cace_binop_real64  op_real64 
)

◆ cace_numeric_binary_operator()

int cace_numeric_binary_operator ( cace_ari_t result,
const cace_ari_t lt_val,
const cace_ari_t rt_val,
cace_binop_uvast  op_uvast,
cace_binop_vast  op_vast,
cace_binop_real64  op_real64,
cace_binop_timespec  op_timespec 
)

Execute a numeric operation accepting two parameters.

Parameters
[out]resultOutput value.
[in]leftOne input value.
[in]rightThe other input value.
[in]op_uvastOperator function for uvast types.
[in]op_vastOperator function for vast types.
[in]op_real64Operator function for real64 types.
[in]op_timespecOperator function for timespec related types.
Returns
Zero if successful.

References cace_ari_lit_t::ari_type, cace_ari_prim_val_u::as_float64, cace_ari_prim_val_u::as_int64, cace_ari_t::as_lit, cace_ari_prim_val_u::as_uint64, cace_amm_numeric_promote_type(), cace_amm_type_convert(), cace_amm_type_get_builtin(), cace_ari_deinit(), cace_ari_init_lit(), CACE_ARI_INIT_UNDEFINED, CACE_ARI_PRIM_FLOAT64, CACE_ARI_PRIM_INT64, CACE_ARI_PRIM_UINT64, CACE_ARI_TYPE_TD, CACE_ARI_TYPE_TP, cace_eqiv_ari_type(), CHKERR1, cace_ari_lit_t::has_ari_type, cace_ari_lit_t::prim_type, result, and cace_ari_lit_t::value.

Referenced by refda_adm_ietf_dtnma_agent_oper_add(), refda_adm_ietf_dtnma_agent_oper_divide(), refda_adm_ietf_dtnma_agent_oper_multiply(), refda_adm_ietf_dtnma_agent_oper_remainder(), and refda_adm_ietf_dtnma_agent_oper_sub().

◆ cace_numeric_integer_binary_operator()

int cace_numeric_integer_binary_operator ( cace_ari_t result,
const cace_ari_t lt_val,
const cace_ari_t rt_val,
cace_binop_uvast  op_uvast,
cace_binop_vast  op_vast 
)

◆ cace_numeric_is_zero()