CRU_UOP (7)
CRU MANUAL
CRU_UOP (7)

NAME

cru_uop - unary operator function type used in the cru library

SYNOPSIS

#include <cru/cru.h>

typedef void* (*cru_uop)(void *, int *)

DESCRIPTION

A user-defined unary operator takes a single operand and a pointer to an initially zero error code as arguments. Unary operators serve various purposes, but the operand invariably represents either a vertex or an edge label in a graph. It can be either a scalar value or a pointer to heap allocated storage. The operator must treat the operand as read only but may assign the error code.

RETURN VALUE

The return value represents an edge label or a vertex in a graph depending on the context, and may be either a scalar value or a pointer to the heap depending on how the application developer chooses to represent them. In the case of a pointer, the result ordinarily refers to newly allocated storage. However, applications may opt to return a pointer to shared storage provided the operator and the corresponding cru_destructor function implement thread-safe reference counting.

ERRORS

If a unary operator sets the error code to any non-zero value, the cru API function invoking it terminates early without completing, and propagates the same error code to its caller.

Applications can report POSIX error codes or define special purpose codes, but should not redefine any that clash with those reserved by cru as declared in the error_codes.h header file.

NOTES

Applications pass unary operators to cru through the v_fab and e_fab fields of a cru_fabricator, which are passed to the cru_fabricated library function, and the boundary_value field of a cru_inducer, which is passed to the cru_induced library function.

FILES

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

/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_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_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_UOP (7)