5.5.2. edge_handler.hpp

Full path: graph_canon/edge_handler/edge_handler.hpp

template<typename T>
concept EdgeHandlerCreator

An edge handler creator is an object that from a given integer type instantiates the actual edge handler object.

Notation

type SizeType

An integer type.

Associated Types

using EdgeHandlerT = typename T::template type<SizeType>

A type satisfying the EdgeHandler concept.

Valid Expressions

T::make<SizeType>(): return an object of type EdgeHandlerT.

template<typename T>
concept EdgeHandler

An edge handler is an object that implements procedures related to labels on edges. If no labels are present, the handler creator edge_handler_all_equal can be used.

Notation

T edge_handler
type State

A specialization of canon_state.

using Edge = typename boost::graph_traits<typename State::Graph>::edge_descriptor
State state
Edge e_left
Edge e_right
Valid Expressions

  • edge_handler.initialize(state). Is executed in the beginning of canonicalization.

  • edge_handler.compare(state, e_left, e_right) must compare the two edges (e.g., their labels) and return an integer representing their order:

    The function is at least used when creating ordered graphs in the leaves of the search tree, but may also be used by visitors. Note that the function should not compare the end-points, only auxiliary data.

Todo

List requirements from the WL-1 refiner.