cru_builder - graph building specification for the cru library
#include <cru/cru.h>
typedef struct
cru_builder_s
{
void
*attribute;
cru_connector
connector;
cru_subconnector
subconnector;
struct
cru_sig_s
bu_sig;
} *cru_builder;
This structure parameterizes the cru_built library function with necessary information initialized by the application to build a graph. The attribute field optionally contains or points to unspecified user-defined data that can be accessed while the graph is being built by the connector or subconnector function calling cru_get. Exactly one connector or subconnector must be specified, following their usual calling conventions. If the application opts for dynamically allocated vertices or edges in the graph rather than scalar values, then the corresponding orderings and destructors must be specified in the bu_sig field per convention. Otherwise, it may be omitted or zero-filled.
These errors are reportable for the following reasons by the cru_built function given an invalid cru_builder structure.
CRU_UNDCON
Neither a connector nor a subconnector is defined.
CRU_INCCON
Both a connector and a subconnector are defined.
CRU_UNDHSH
No hash function is defined or inferrable for vertices, edges, or both.
CRU_UNDEQU
No equality relational predicate is defined or inferrable for vertices, edges, or both.
CRU_INCVEL
The vertex equality relational predicate is not reflexive.
Non-reflexive equality is not always detected but is always an error.
/usr/local/include/cru/data_types.h
/usr/local/include/cru/function_types.h
/usr/local/include/cru/error_codes.h
cru, cru_bop, cru_bpred, 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_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
Dennis Furey (milonga@delayinsensitive.com)
https://github.com/gueststar/cru