# class NodeIterator

###

Module | soprano
Namespace | Soprano
Class | NodeIterator
Inherits | Iterator<Node>

\class NodeIterator nodeiterator.h Soprano/NodeIterator

An iterator that provides a stream of Nodes.

The most common use of %NodeIterator is through Model.listContexts().

Many backends do lock the underlying Model during iteration. Thus, it is always a good idea to cache the results if they are to be used to modify the model to prevent a deadlock:

    Soprano.NodeIterator it = model->listContexts();
    QList<Node> allNodes = it.allElements();
    Q_FOREACH( Soprano.Node n, allNodes ) {
    modifyTheModel( model, n );
    }

For further details on %Soprano iterators see Iterator.

Be aware that iterators in Soprano are shared objects which means that copies of one iterator object work on the same data.

Author Sebastian Trueg <trueg@kde.org>

### methods

- NodeIterator ( )

  returns ctor

  Creates and empty, invalid iterator.

- NodeIterator (sti)

  returns ctor

  Argument | Type | Default
  --- | --- | ---
  sti | IteratorBackend<Soprano::Node> |

  Create a new NodeIterator instance that uses sti as backend. NodeIterator will take ownership of the backend.

- NodeIterator (sti)

  returns ctor

  Argument | Type | Default
  --- | --- | ---
  sti | Soprano.NodeIterator |

- allNodes ( )

  returns QList<Soprano::Node>

  Convenience method which extracts all nodes (this does not include the nodes that have already been read from the iterator) from the iterator and returns them in a list.

  Be aware that after calling this method the iterator will be invalid.

  Returns A list of all nodes that rest in the iterator.