using Invercargill.DataStructures; namespace Invercargill.Iterate { public static Enumerable single(T item) { var buffer = new Buffer(1); non_error(() => buffer[0] = item); return buffer.seal(); } public static Enumerable range(int from, int to, int increment = 1) { return new Generators.Range(from, to, increment); } public static Enumerable nothing() { return new Generators.Empty(); } public static Enumerable directory(string path, uint flags = 0) throws FileError { return new Generators.Directory(Dir.open(path, flags)); } public static Enumerable on(Generators.GeneratorDelegate function) { return new Generators.Function(function); } public static Enumerable these(T item1, ...) { var series = new Series(); var args = va_list(); series.add(item1); while(true) { T? item = args.arg(); if(item == null) { break; } series.add(item); } return series.seal(); } }