CRU_SIG (7)
CRU MANUAL
CRU_SIG (7)

NAME

cru_sig - graph destructors and order relations for the cru library

SYNOPSIS

#include <cru/cru.h>

typedef struct cru_sig_s
{
   uintptr_t vertex_limit;
   struct cru_order_pair_s orders;
   struct cru_destructor_pair_s destructors;
} *cru_sig;

DESCRIPTION

This structure encapsulates much of the information needed by cru library functions for comparison and reclamation of vertices and edges in a graph. Applications initialize it when creating a graph, and it subsequently remains implicitly associated with the graph. The orders field specifies hash functions and equality relations for vertices and edges, and the destructors field specifies the functions that reclaim them if they are dynamically allocated.

The vertex_limit specification enables applications to impose a limit on the number of vertices created in a graph, with the operation aborted if it grows excessive. Setting the vertex_limit to zero requests that no limit be imposed. For performance reasons, the limit is enforced only approximately.

Default values can be inferred for the orders depending on whether a corresponding destructor is defined. A NULL vertex destructor field in of the destructors implies that the vertices are not dynamically allocated and permits the inference of a default vertex ordering if not specified. A similar convention applies edge destructors and edge ordering.

ERRORS

If the number of vertices in a graph reaches or exceeds the specified vertex_limit during any operation that builds or increases the number of vertices in a graph, an error of CRU_INTOVF is reported.

NOTES

The cru_sig structure is a field in the cru_builder, cru_crosser, and cru_fabricator structures.

FILES

/usr/local/include/cru/data_types.h

/usr/local/include/cru/error_codes.h

SEE ALSO

cru, cru_bop, cru_bpred, cru_builder, cru_built, cru_cbop, cru_classifier, cru_class_of, cru_class_size, cru_composed, cru_composer, cru_connect, cru_connector, cru_cqop, cru_crossed, cru_crosser, cru_ctop, cru_ctop_pair, cru_ctop_quad, cru_data_types, cru_deduplicated, cru_destructor, cru_destructor_pair, cru_edge_count, cru_fabricated, cru_fabricator, cru_filter, cru_filtered, cru_fold, cru_free_kill_switch, cru_free_later, cru_free_now, cru_free_partition, cru_function_types, cru_get, cru_hash, cru_induced, cru_inducer, cru_kernel, cru_kill, cru_killed, cru_mapreduced, cru_mapreducer, cru_merged, cru_merger, cru_mutated, cru_mutator, cru_new_kill_switch, cru_nop, cru_order, cru_order_pair, cru_partition_of, cru_plan, cru_postponed, cru_postponer, cru_prop, cru_prop_pair, cru_pruner, cru_qop, cru_qpred, cru_set, cru_singleton, cru_split, cru_splitter, cru_spread, cru_strerror, cru_stretch, cru_stretched, cru_stretcher, cru_subconnector, cru_terminus_count, cru_top, cru_tpred, cru_united, cru_uop, cru_vertex_count, cru_zone

AUTHOR

Dennis Furey (milonga@delayinsensitive.com)

PROJECT PAGE

https://github.com/gueststar/cru

CRU VERSION 0.15.3
October 05, 2024
CRU_SIG (7)