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