|
@@ -1,7 +1,7 @@
|
|
|
|
|
|
namespace Invercargill {
|
|
|
|
|
|
- public abstract class Enumerable<T> {
|
|
|
+ public abstract class Enumerable<T> : Object {
|
|
|
|
|
|
public abstract Tracker<T> get_tracker();
|
|
|
|
|
@@ -99,6 +99,10 @@ namespace Invercargill {
|
|
|
return new SkipQuery<T>(this, count);
|
|
|
}
|
|
|
|
|
|
+ public virtual Enumerable<Tout> cast<Tout>() {
|
|
|
+ return select<Tout>(i => (Tout)i);
|
|
|
+ }
|
|
|
+
|
|
|
public virtual Enumerable<Tout> parallel_select<Tout>(owned TransformDelegate<T, Tout> transform, uint workers = 0) {
|
|
|
var actual_workers = workers;
|
|
|
if(actual_workers < 1) {
|
|
@@ -205,6 +209,13 @@ namespace Invercargill {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ public virtual Object[] to_object_array() throws SequenceError {
|
|
|
+ if(!typeof(T).is_object()) {
|
|
|
+ throw new SequenceError.INVALID_TYPE("Can only make an object array of an Enumerable<T> where T is derrived from GLib.Object");
|
|
|
+ }
|
|
|
+ return select<Object>(i => (Object)i).to_array();
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|