package preserveorder

Import Path
	github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder (on go.dev)

Dependency Relation
	imports 3 packages, and imported by 2 packages

Involved Source Files cm_group_model_order.go Package preserveorder ports ELK Layered's stateful model-order comparators. Their comparison history is observable and is retained across every call made by a sort. port_comparator.go
Package-Level Type Names (total 3)
/* sort by: | */
( LongEdgeOrderingStrategy) ReturnValue() int func NewNodeComparator(arena *layered.LGraphArena, previousLayer []layered.LNodeID, ordering layered.OrderingStrategy, longEdgeOrder LongEdgeOrderingStrategy, beforePorts bool) *NodeComparator const DummyNodeOver const DummyNodeUnder const LongEdgeEqual
NodeComparator is ELK 0.12.0's ModelOrderNodeComparator for ordinary D2 model orders. BiggerThan and SmallerThan encode the transitive associations accumulated while the sort calls Compare. Arena *layered.LGraphArena BeforePorts bool BiggerThan map[layered.LNodeID]map[layered.LNodeID]struct{} LongEdgeOrder LongEdgeOrderingStrategy Ordering layered.OrderingStrategy PreviousLayer []layered.LNodeID SmallerThan map[layered.LNodeID]map[layered.LNodeID]struct{} (*NodeComparator) ClearTransitiveOrdering() (*NodeComparator) Compare(first, second layered.LNodeID) int func NewNodeComparator(arena *layered.LGraphArena, previousLayer []layered.LNodeID, ordering layered.OrderingStrategy, longEdgeOrder LongEdgeOrderingStrategy, beforePorts bool) *NodeComparator
PortComparator ports ELK 0.12.0's ModelOrderPortComparator behavior used by D2's model-order profile. It retains the comparator's transitive ordering state because comparisons made earlier in the stable sort affect later ones. Arena *layered.LGraphArena BiggerThan map[layered.LPortID]map[layered.LPortID]struct{} Ordering layered.OrderingStrategy PortModelOrder bool PreviousLayer []layered.LNodeID SmallerThan map[layered.LPortID]map[layered.LPortID]struct{} TargetNodeModelOrder map[layered.LNodeID]int (*PortComparator) ClearTransitiveOrdering() (*PortComparator) Compare(firstID, secondID layered.LPortID) int func NewPortComparator(arena *layered.LGraphArena, previousLayer []layered.LNodeID, ordering layered.OrderingStrategy, targetNodeModelOrder map[layered.LNodeID]int, portModelOrder bool) *PortComparator
Package-Level Functions (total 3)
CalculateModelOrderOrGroupModelOrder is ELK 0.12's CMGroupModelOrderCalculator. ENFORCED group order applies only when both compared elements belong to one of the configured enforced groups.
func NewNodeComparator(arena *layered.LGraphArena, previousLayer []layered.LNodeID, ordering layered.OrderingStrategy, longEdgeOrder LongEdgeOrderingStrategy, beforePorts bool) *NodeComparator
func NewPortComparator(arena *layered.LGraphArena, previousLayer []layered.LNodeID, ordering layered.OrderingStrategy, targetNodeModelOrder map[layered.LNodeID]int, portModelOrder bool) *PortComparator