namespace Invercargill { public static Enumerable ate(T[] input) { if(typeof(T).is_value_type()) { // LibGee has already done the hard work around // Vala's funkyness with arrays of type arguments var gee = new Gee.ArrayList.wrap(input); return new GeeEnumerable(gee); } return new ArrayEnumerable(input); } public static Enumerable gte(Gee.Iterable input) { return new GeeEnumerable(input); } // public static Enumerable dte(path input) { // return new DirEnumerable(input); // } public static Enumerable range(int from, int to, int increment = 1) { return new RangeEnumerable(from, to, increment); } public static TransformDelegate trycatch(ErrorThrowingDelegate main, ErrorCatchingDelegate handler) { return (i) => { try { return main(i); } catch(Error e) { return handler(i, e); } }; } public static TransformDelegate trydefault(ErrorThrowingDelegate func, Tout default_value) { return (i) => { try { return func(i); } catch { return default_value; } }; } }