CRU_DESTRUCTOR_PAIR (7)
CRU MANUAL
CRU_DESTRUCTOR_PAIR (7)

NAME

cru_destructor_pair - graph reclamation specification

SYNOPSIS

#include <cru/cru.h>

typedef struct cru_destructor_pair_s
{
   cru_destructor v_free;
   cru_destructor e_free;
} *cru_destructor_pair;

DESCRIPTION

This structure encapsulates the information needed for reclaiming or releasing the memory used by a graph. Large graphs might use considerable memory, so reclaiming them is important when they are no longer needed and the memory is needed for other purposes.

Because the edge labels and the vertices in a graph may be of different types dependent on the application, two seperate user-defined destructor functions can be specified. The v_free field is for the vertex destructor, and the e_free field is for the edge label destructor.

Applications have the option of initializing either or both of these fields as pointers to functions, or of making either or both fields NULL. Any functions referenced must follow the usual calling conventions for cru_destructor functions.

A NULL value assigned to either of these fields at the time a graph is built tells cru that the corresponding vertices or edge labels in the graph are scalar values rather than pointers, hence never in need of reclamation. This condition may enable other inferences, such as the use of default equality relations and hash functions.

ERRORS

It is an error to omit the destructors for dynamically allocated vertices or edges because doing so causes memory leaks and possibly other anomalies. There is no way for cru to detect this error.

NOTES

The cru_destructor_pair structure is part of the cru_sig structure, which is part of the cru_builder, cru_fabricator, and cru_crosser top level structures. Inferences about relations and hash functions based on the lack of a corresponding destructor apply to the cru_order in the same cru_sig.

FILES

/usr/local/include/cru/function_types.h

/usr/local/include/cru/data_types.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_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_sig, 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_DESTRUCTOR_PAIR (7)