---
name: "Graph::Easy::Layout::Chain"
section: "3pm"
platform: "linux"
package: "libgraph-easy-perl"
version: "0.76-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Graph::Easy::Layout::Chain"
---

# Graph::Easy::Layout::Chain(3pm)

Chain of nodes for layouter

## NAME

Graph::Easy::Layout::Chain - Chain of nodes for layouter

## SYNOPSIS

```
        # used internally, do not use directly
        use Graph::Easy;
        use Graph::Easy::Layout::Chain;
        my $graph = Graph::Easy->new( );
        my ($node, $node2) = $graph->add_edge( 'A', 'B' );
        my $chain = Graph::Easy::Layout::Chain->new(
                start => $node,
                graph => $graph, );
        $chain->add_node( $node2 );
```

## DESCRIPTION

A `"Graph::Easy::Layout::Chain"` object represents a chain of nodes for the layouter.

## METHODS

### new()

```
        my $chain = Graph::Easy::Layout::Chain->new( start => $node );
```

Create a new chain and set its starting node to `$node`.

### length()

```
        my $len = $chain->length();
```

Return the length of the chain, in nodes.

```
        my $len = $chain->length( $node );
```

Given an optional `$node` as argument, returns the length from that node onwards. For the chain with the three nodes A, B and C would return 3, 2, and 1 for A, B and C, respectively.

Returns 0 if the passed node is not part of this chain.

### nodes()

```
        my @nodes = $chain->nodes();
```

Return all the node objects in the chain as list, in order.

### add\_node()

```
        $chain->add_node( $node );
```

Add `$node` to the end of the chain.

### start()

```
        my $node = $chain->start();
```

Return first node in the chain.

### end()

```
        my $node = $chain->end();
```

Return last node in the chain.

### layout()

```
        my $todo = $chain->layout();
```

Return an action stack as array ref, containing the nec. actions to layout the chain (nodes, plus interlinks in the chain).

Will recursively traverse all chains linked to this chain.

### merge()

```
        my $chain->merge ( $other_chain );
        my $chain->merge ( $other_chain, $where );
```

Merge the other chain into ourselves, adding its nodes at our end. The other chain is emptied and must be deleted by the caller.

If `$where` is defined and a member of `$other_chain`, absorb only the nodes from `$where` onwards, instead of all of them.

### error()

```
        $last_error = $node->error();
        $node->error($error);                   # set new messages
        $node->error('');                       # clear error
```

Returns the last error message, or '' for no error.

### dump()

```
        $chain->dump();
```

Dump the chain to STDERR, to aid debugging.

## EXPORT

None by default.

## SEE ALSO

Graph::Easy, Graph::Easy::Layout.

## AUTHOR

Copyright (C) 2004 - 2006 by Tels \<http://bloodgate.com\>.

See the LICENSE file for more details.
