## nci - n-Tree cell Iterator

### Module Description

The nci module implements an iterator on a cell n-Tree [nct].

### Module Words

#### Iterator structure

nci% ( -- n )
  Get the required space for a nci variable

#### Iterator creation, initialisation and destruction

nci-init ( nct nci -- )
  Initialise the iterator with the n-tree nct
nci-create ( nct "<spaces>name" -- ; -- nci )
  Create a named iterator in the dictionary on the n-tree nct
nci-new ( nct -- nci )
  Create an iterator on the heap on the n-tree nct
nci-free ( nci -- )
  Free the iterator from heap

#### Member words

nci-get ( nci -- x true | false )
  Get the cell data x from the current node

#### Tree iterator words

nci-root? ( nci -- flag )
  Check if the current node is the root node
nci-root ( nci -- x true | false )
  Move the iterator to the root of the tree, return the cell data x from this node
nci-parent ( nci -- x true | false )
  Move the iterator to the parent of the current node, return the cell data x from this node
nci-children ( nci -- n )
  Return the number of children of the current node
nci-children? ( nci -- flag )
  Check if the current node has children
nci-child ( nci -- x true | false )
  Move the iterator to the first child of the current node, return the cell data x of this node
nci-prepend-child ( x nci -- )
  Prepend data x as child to the children of the current node, iterator is moved to the new child
nci-append-child ( x nci -- )
  Append data x as child to the children of the current node, iterator is moved to the new child

#### Sibling iterator words

nci-first ( nci -- x true | false )
  Move the iterator to the first sibling, return the cell data x from this node
nci-next ( nci -- x true | false )
  Move the iterator to the next sibling, return the cell data x from this node
nci-prev ( nci -- x true | false )
  Move the iterator to the previous sibling, return the cell data x from this node
nci-last ( nci -- x true | false )
  Move the iterator to the last sibling, return the cell data x from this node
nci-first? ( nci -- flag )
  Check if the iterator is on the first sibling
nci-last? ( nci -- flag )
  Check if the iterator is on the last sibling
nci-insert-before ( x nci -- )
  Insert data x as sibling before the current sibling in the tree
nci-insert-after ( x nci -- )
  Insert data x as sibling after the current sibling in the tree
nci-remove ( nci -- x true | false )
  Remove the current sibling without children from the tree, move the iterator to the next, previous or parent node, return the cell data x of the removed node

#### Inspection

nci-dump ( nci -- )
  Dump the iterator

generated 03-Jun-2010 by ofcfrth-0.10.0