cru_ctop - conditional ternary operator for the cru library
#include <cru/cru.h>
typedef struct
cru_ctop_s
{
cru_tpred
tpred;
cru_top
top;
} *cru_ctop;
A conditional ternary operator represents a ternary operator whose result is required only if some predicate is true of its operands. When conditional operators are passed to cru library functions, they are used only as follows:
A NULL tpred field causes the operator to be invoked unconditionally.
The top field defaults to an operator that returns a copy of its middle operand if left unspecified, but only when used to operate on a graph whose edge labels are scalar values. Otherwise, it must be initialized to something other than NULL to prevent an error of CRU_UNDCTO from being reported for an undefined conditional ternary operator.
Conditional ternary operators form the cru_ctop_pair structures built into the sp_ctops field of a cru_splitter used in splitting operations. The middle operand is an edge label and the first and last are properties of the edge's originating and terminal vertices, respectively. The properties are computed according to the cru_prop structure built into the sp_prop field of the same splitter.
/usr/local/include/cru/function_types.h
/usr/local/include/cru/data_types.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_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