CRU_PLAN (7)
CRU MANUAL
CRU_PLAN (7)

NAME

cru_plan - specification of a graph traversal strategy

SYNOPSIS

#include <cru/cru.h>

typedef struct cru_plan_s
{
   int local_first;
   int remote_first;
   struct cru_zone_s zone;
} *cru_plan;

DESCRIPTION

This structure specifies a selected region of some existing graph and a traversal priority through that region as instructions to cru library functions for mutating the graph. Only the selected region is visited, and the vertices in it are visited only in the requested order.

The region of the graph to be visited is specified by the zone field and the traversal priority is indicated by the integer fields. If the zone is omitted or filled with zeros, then the whole graph is visited. At most one of the integer fields may be non-zero.

The requested traversal priority, if any, further constrains each vertex to be visited only after its adjacent prerequisites are visited. The prerequisites depend on both the traversal priority and the zone orientation, which is backwards if the backwards field in the zone is non-zero, and forward otherwise. A backwards oriented zone consists of all vertices from which the initial vertex is reachable, whereas a forward oriented zone consists of all vertices reachable from the initial vertex.

ERRORS

Error codes are reported when this structure is passed to the cru_mutated function with invalid settings under the following circumstances.

CRU_INCTRP

Both traversal priorities are requested.

CRU_INCINV

The zone offset is non-zero but its initial vertex is not in the graph.

CRU_TPCMUT

The mutation changes the destructors but the zone does not cover the whole graph.

NOTES

Vertices in backwards oriented zones may have outgoing edges to vertices outside the zone, and vertices in forward oriented zones may have incoming edges from vertices outside the zone. Vertices outside of a zone are not prerequisites but are visible nevertheless to the kernel operators during a mutation.

A cru_plan structure is a field in the cru_mutator top level structure parameterizing the cru_mutated function. Omitting or filling the mu_plan field with zeros is valid.

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_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_PLAN (7)