Simple and quite easy to use iterator library for D
    Witold Baryluk 
    baryluk at mpi.int.pl
       
    Sun Jan 28 10:24:37 PST 2007
    
    
  
Hello,
http://smp.if.uj.edu.pl/~baryluk/d/iterators-1.0.tar.gz
documentation and samples included.
Feel free to comment, providing bug report, or nice examples. :)
Performance note: about 5% slowdown in comparison to hand writen loops.
Examples:
 class Naturals(int n) {
    int iter() {
       for (int i = 1; i <= n; i++) yield(i); 
       return 0;
    }
    mixin mainiter!(int, iter);   // mixin iterator's stuff
  }
  ...
  foreach (int x; new Naturals!(10)()) {
      ...
  }
Multiple iterators:
  class MNaturals(int n) {
   int iter2(Iterator!(double) x) {
       for (int i = 1; i <= n; i++) x.yield(i*i);
       return 0;
   }
   mixin inneriter!(double, iter2) squers;
   int iter3(Iterator!(double) x) {
       for (int i = 1; i <= n; i++) x.yield(i*i*i);
       return 0;
   }
   mixin inneriter!(double, iter3) qubes;
 }
  ...
  auto s = new MNaturals!(10)();
  foreach (int x; s.squers.ic()) {
      ...
  }
  foreach (int x; s.qubes.ic()) {
      ...
  }
-- 
Witold Baryluk
    
    
More information about the Digitalmars-d-announce
mailing list