Fettpet / DeepIterator

This project implements a trait based iterator.
4 stars 0 forks source link

Navigator #19

Closed Fettpet closed 7 years ago

Fettpet commented 7 years ago

Der Navigator soll zum nächsten Element gehen können. Er benötigt mindestens zwei Ausprägungen.

  1. Es gibt einen index der weiter gerückt wird.
  2. Bei den anderen Implementierungen gibt es keinen index. Sie müssen speziell behandelt werden.

Ein paar Beispiele:

  1. Der Iterator über alle Particle in einem Frame: Hier gibt es einen Index der weitergerückt wird.
  2. Der Iterator über jeden zweiten Frame in einer Superzelle: Hier muss der iterator frameptr = frameptr->nextFrame aufrufen.

Der Navigator benötigt folgende Policies:

  1. Direction: In welche Richtung soll er iterieren? Von letzten zum ersten Element oder vom ersten zum letzten Element.
  2. Jumpsize: Über wie viele Elemente soll gesprungen werden?
  3. Es wird etwas benötigt, um zwischen den Indexbasierten Datentypen und den nicht indexbasierten zu unterscheiden. Hierfür wurde der Indexable Datentyp eingeführt. Für alle datentypen die den operator[] kann Indexable benutzt werden. Für alle anderen muss der Navigator spezialisiert werden.