DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
text.h File Reference

This file contains definitions for ARI text CODEC functions. More...

#include "base.h"
#include "containers.h"
#include "cace/config.h"
#include <m-string.h>
#include <stdint.h>
#include <stdbool.h>
+ Include dependency graph for text.h:

Data Structures

struct  cace_ari_text_enc_opts_t
 Parameters for ARI text encoding. More...
 

Macros

#define CACE_ARI_TEXT_ENC_OPTS_DEFAULT
 

Enumerations

enum  cace_ari_text_scheme_prefix_e { CACE_ARI_TEXT_SCHEME_NONE , CACE_ARI_TEXT_SCHEME_FIRST , CACE_ARI_TEXT_SCHEME_ALL }
 Options for URI scheme presence. More...
 
enum  cace_ari_text_aritype_e { CACE_ARI_TEXT_ARITYPE_ORIG , CACE_ARI_TEXT_ARITYPE_TEXT , CACE_ARI_TEXT_ARITYPE_INT }
 Options for encoding ARITYPE values. More...
 
enum  cace_ari_int_base_e { CACE_ARI_TEXT_INT_BASE2 = 2 , CACE_ARI_TEXT_INT_BASE10 = 10 , CACE_ARI_TEXT_INT_BASE16 = 16 }
 Options for encoding integer bases. More...
 
enum  cace_ari_bstr_form_e { CACE_ARI_TEXT_BSTR_RAW , CACE_ARI_TEXT_BSTR_BASE16 , CACE_ARI_TEXT_BSTR_BASE64URL }
 Options for encoding byte strings. More...
 

Functions

int cace_ari_text_encode_objpath (m_string_t text, const cace_ari_objpath_t *path, enum cace_ari_text_aritype_e show)
 Encode just an object path, which can be useful for debugging output.
 
int cace_ari_text_encode (m_string_t text, const cace_ari_t *ari, cace_ari_text_enc_opts_t opts)
 Encode an ARI to text form.
 
int cace_ari_text_decode (cace_ari_t *ari, const m_string_t text, char **errm)
 Decode an ARI from text form.
 
int cace_ari_text_decode_cstr (cace_ari_t *ari, const char *text_ptr, size_t text_len, char **errm)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Decode from a bare C string.
 

Detailed Description

This file contains definitions for ARI text CODEC functions.

Macro Definition Documentation

◆ CACE_ARI_TEXT_ENC_OPTS_DEFAULT

#define CACE_ARI_TEXT_ENC_OPTS_DEFAULT
Value:
{ \
.scheme_prefix = CACE_ARI_TEXT_SCHEME_FIRST, .show_ari_type = CACE_ARI_TEXT_ARITYPE_TEXT, \
.int_base = CACE_ARI_TEXT_INT_BASE10, .float_form = 'g', .text_identity = true, \
.bstr_form = CACE_ARI_TEXT_BSTR_BASE16, .time_text = true, \
}
Parameters for ARI text encoding.
Definition text.h:87
@ CACE_ARI_TEXT_INT_BASE10
Decimal.
Definition text.h:64
@ CACE_ARI_TEXT_SCHEME_FIRST
Prefix only the outer-most value.
Definition text.h:42
@ CACE_ARI_TEXT_BSTR_BASE16
Base16 according to Section 8 of RFC 4648 .
Definition text.h:74
@ CACE_ARI_TEXT_ARITYPE_TEXT
Always show the text name.
Definition text.h:53

Enumeration Type Documentation

◆ cace_ari_bstr_form_e

Options for encoding byte strings.

Enumerator
CACE_ARI_TEXT_BSTR_RAW 

Attempt to output as text.

CACE_ARI_TEXT_BSTR_BASE16 

Base16 according to Section 8 of RFC 4648 [11].

CACE_ARI_TEXT_BSTR_BASE64URL 

◆ cace_ari_int_base_e

Options for encoding integer bases.

Enumerator
CACE_ARI_TEXT_INT_BASE2 

Binary with 0b prefix.

CACE_ARI_TEXT_INT_BASE10 

Decimal.

CACE_ARI_TEXT_INT_BASE16 

Hexadecimal with 0x prefix.

◆ cace_ari_text_aritype_e

Options for encoding ARITYPE values.

Enumerator
CACE_ARI_TEXT_ARITYPE_ORIG 

Show whatever the original decoding was.

CACE_ARI_TEXT_ARITYPE_TEXT 

Always show the text name.

CACE_ARI_TEXT_ARITYPE_INT 

Always show the integer enumeration.

◆ cace_ari_text_scheme_prefix_e

Options for URI scheme presence.

Enumerator
CACE_ARI_TEXT_SCHEME_NONE 

Never prefix with a scheme.

CACE_ARI_TEXT_SCHEME_FIRST 

Prefix only the outer-most value.

CACE_ARI_TEXT_SCHEME_ALL 

Prefix all values, including container contents.

Function Documentation

◆ cace_ari_text_decode()

int cace_ari_text_decode ( cace_ari_t ari,
const m_string_t  text,
char **  errm 
)

Decode an ARI from text form.

Parameters
[out]ariThe struct to decode into.
textA null-terminated UTF-8 text string.
[out]errmIf non-null, this will be set to a specific error message associated with any failure. When the return code is non-zero, if the pointed-to pointer is non-null it must be freed using CACE_FREE().
Returns
Zero upon success.

Referenced by agentParseText(), LLVMFuzzerTestOneInput(), and read_text().

◆ cace_ari_text_decode_cstr()

int cace_ari_text_decode_cstr ( cace_ari_t ari,
const char *  text_ptr,
size_t  text_len,
char **  errm 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Decode from a bare C string.

Parameters
[out]ariThe struct to decode into.
[in]text_ptrA null-terminated UTF-8 text string.
text_lenThe length of text, including including the null terminator.
[out]errmIf non-null, this will be set to a specific error message associated with any failure. When the return code is non-zero, if the pointed-to pointer is non-null it must be freed using CACE_FREE().
Returns
Zero upon success.

Referenced by cace_ari_macrofile_read().

◆ cace_ari_text_encode()

int cace_ari_text_encode ( m_string_t  text,
const cace_ari_t ari,
cace_ari_text_enc_opts_t  opts 
)

Encode an ARI to text form.

Parameters
[out]textThe data buffer to modify and write the result into. It will contain a null-terminated UTF-8 string if successful.
ariThe ARI to encode from.
optsEncoding parameters.
Returns
Zero upon success.

References cace_ari_text_encode_stream(), CHKERR1, cace_ari_text_enc_state_t::depth, and cace_ari_text_enc_state_t::out.

Referenced by agentParseHex(), agentShowTextReports(), bp_send_worker(), cace_amm_actual_param_set_populate(), cace_amm_obj_ns_add_obj(), cace_amm_semtype_tblt_match(), cace_amm_semtype_union_convert(), cace_amm_type_set_name(), cace_amp_msg_decode(), cace_amp_msg_encode(), cace_amp_proxy_cli_recv(), cace_amp_proxy_cli_send(), cace_amp_proxy_msg_recv(), cace_amp_socket_send(), cace_ari_cbor_decode_am(), cace_ari_get_str(), check_decoding(), check_encode(), check_execute(), handle_recv(), LLVMFuzzerTestOneInput(), mock_ctrl_exec_none(), mock_ctrl_exec_one_int(), normalize_key(), refda_acl_search_endpoint(), refda_adm_ietf_dtnma_agent_ctrl_ensure_const(), refda_adm_ietf_dtnma_agent_ctrl_ensure_rule_enabled(), refda_adm_ietf_dtnma_agent_ctrl_ensure_var(), refda_adm_ietf_dtnma_agent_ctrl_inspect(), refda_adm_ietf_dtnma_agent_ctrl_obsolete_const(), refda_adm_ietf_dtnma_agent_ctrl_obsolete_rule(), refda_adm_ietf_dtnma_agent_ctrl_obsolete_var(), refda_adm_ietf_dtnma_agent_ctrl_reset_rule_enabled(), refda_adm_ietf_dtnma_agent_ctrl_var_reset(), refda_adm_ietf_dtnma_agent_ctrl_var_store(), refda_agent_get_object(), refda_amm_ident_base_get_str(), refda_amm_ident_base_populate(), refda_binding_ident_bases(), refda_binding_semtype_use(), refda_ctrl_exec_ctx_check_result(), refda_edd_prod_check_result(), refda_eval_oper(), refda_eval_target(), refda_exec_proc_ctrl_finish(), refda_exec_proc_ctrl_start(), refda_exec_proc_expand(), refda_oper_eval_ctx_populate(), refda_reporting_gen(), refda_reporting_rptt_val(), refda_reporting_target(), refda_valprod_const_run(), refda_valprod_edd_run(), refda_valprod_run(), refda_valprod_var_run(), refdm_db_insert_execset(), refdm_db_insert_rptset(), refdm_ingress_worker(), stdin_recv(), TEST_CASE(), test_exec_ctrl_exec_one_int(), test_refda_exec_target(), test_reporting_edd_one_int(), test_reporting_edd_one_int(), test_reporting_oper_add(), and write_text().

◆ cace_ari_text_encode_objpath()