cru_sig - graph destructors and order relations for the cru library
#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;
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.
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.
The cru_sig structure is a field in the cru_builder, cru_crosser, and cru_fabricator structures.
/usr/local/include/cru/data_types.h
/usr/local/include/cru/error_codes.h
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
Dennis Furey (milonga@delayinsensitive.com)
https://github.com/gueststar/cru