haxe/src/Lambda.cs
// Generated by Haxe 4.3.7

#pragma warning disable 109, 114, 219, 429, 168, 162
public class Lambda : global::haxe.lang.HxObject {
	
	public Lambda(global::haxe.lang.EmptyObject empty) {
	}
	
	
	public Lambda() {
		global::Lambda.__hx_ctor__Lambda(this);
	}
	
	
	protected static void __hx_ctor__Lambda(global::Lambda __hx_this) {
	}
	
	
	public static global::Array<A> array<A>(object it) {
		global::Array<A> a = new global::Array<A>();
		{
			object i = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(i, "hasNext", 407283053, null))) {
				A i1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(i, "next", 1224901875, null));
				a.push(i1);
			}
			
		}
		
		return a;
	}
	
	
	public static global::haxe.ds.List<A> list<A>(object it) {
		global::haxe.ds.List<A> l = new global::haxe.ds.List<A>();
		{
			object i = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(i, "hasNext", 407283053, null))) {
				A i1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(i, "next", 1224901875, null));
				l.@add(i1);
			}
			
		}
		
		return l;
	}
	
	
	public static global::Array<B> map<A, B>(object it, global::haxe.lang.Function f) {
		global::Array<B> _g = new global::Array<B>(new B[]{});
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				_g.push(global::haxe.lang.Runtime.genericCast<B>(f.__hx_invoke1_o(default(double), x1)));
			}
			
		}
		
		return _g;
	}
	
	
	public static global::Array<B> mapi<A, B>(object it, global::haxe.lang.Function f) {
		int i = 0;
		global::Array<B> _g = new global::Array<B>(new B[]{});
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				_g.push(global::haxe.lang.Runtime.genericCast<B>(f.__hx_invoke2_o(((double) (i++) ), global::haxe.lang.Runtime.undefined, default(double), x1)));
			}
			
		}
		
		return _g;
	}
	
	
	public static global::Array<A> flatten<A>(object it) {
		global::Array<A> _g = new global::Array<A>(new A[]{});
		{
			object e = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(e, "hasNext", 407283053, null))) {
				object e1 = ((object) (global::haxe.lang.Runtime.callField(e, "next", 1224901875, null)) );
				{
					object x = ((object) (global::haxe.lang.Runtime.callField(e1, "iterator", 328878574, null)) );
					while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
						A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
						_g.push(x1);
					}
					
				}
				
			}
			
		}
		
		return _g;
	}
	
	
	public static global::Array<B> flatMap<A, B>(object it, global::haxe.lang.Function f) {
		return global::Lambda.flatten<B>(((object) (global::Lambda.map<A, object>(((object) (it) ), ((global::haxe.lang.Function) (f) ))) ));
	}
	
	
	public static bool has<A>(object it, A elt) {
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				if (global::haxe.lang.Runtime.eq(x1, elt)) {
					return true;
				}
				
			}
			
		}
		
		return false;
	}
	
	
	public static bool exists<A>(object it, global::haxe.lang.Function f) {
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				if (global::haxe.lang.Runtime.toBool(f.__hx_invoke1_o(default(double), x1))) {
					return true;
				}
				
			}
			
		}
		
		return false;
	}
	
	
	public static bool @foreach<A>(object it, global::haxe.lang.Function f) {
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				if ( ! (global::haxe.lang.Runtime.toBool(f.__hx_invoke1_o(default(double), x1))) ) {
					return false;
				}
				
			}
			
		}
		
		return true;
	}
	
	
	public static void iter<A>(object it, global::haxe.lang.Function f) {
		object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
		while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
			A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
			f.__hx_invoke1_o(default(double), x1);
		}
		
	}
	
	
	public static global::Array<A> filter<A>(object it, global::haxe.lang.Function f) {
		global::Array<A> _g = new global::Array<A>(new A[]{});
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				if (global::haxe.lang.Runtime.toBool(f.__hx_invoke1_o(default(double), x1))) {
					_g.push(x1);
				}
				
			}
			
		}
		
		return _g;
	}
	
	
	public static B fold<A, B>(object it, global::haxe.lang.Function f, B first) {
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				first = global::haxe.lang.Runtime.genericCast<B>(f.__hx_invoke2_o(default(double), x1, default(double), first));
			}
			
		}
		
		return first;
	}
	
	
	public static B foldi<A, B>(object it, global::haxe.lang.Function f, B first) {
		int i = 0;
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				first = global::haxe.lang.Runtime.genericCast<B>(f.__hx_invoke3_o(default(double), x1, default(double), first, ((double) (i) ), global::haxe.lang.Runtime.undefined));
				 ++ i;
			}
			
		}
		
		return first;
	}
	
	
	public static int count<A>(object it, global::haxe.lang.Function pred) {
		int n = 0;
		if (( pred == null )) {
			object _ = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(_, "hasNext", 407283053, null))) {
				A _1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(_, "next", 1224901875, null));
				 ++ n;
			}
			
		}
		else {
			object x = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				A x1 = global::haxe.lang.Runtime.genericCast<A>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				if (global::haxe.lang.Runtime.toBool(((global::haxe.lang.Function) (pred) ).__hx_invoke1_o(default(double), x1))) {
					 ++ n;
				}
				
			}
			
		}
		
		return n;
	}
	
	
	public static bool empty<T>(object it) {
		return  ! (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) ), "hasNext", 407283053, null))) ;
	}
	
	
	public static int indexOf<T>(object it, T v) {
		unchecked {
			int i = 0;
			{
				object v2 = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
				while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(v2, "hasNext", 407283053, null))) {
					T v21 = global::haxe.lang.Runtime.genericCast<T>(global::haxe.lang.Runtime.callField(v2, "next", 1224901875, null));
					if (global::haxe.lang.Runtime.eq(v, v21)) {
						return i;
					}
					
					 ++ i;
				}
				
			}
			
			return -1;
		}
	}
	
	
	public static global::haxe.lang.Null<T> find<T>(object it, global::haxe.lang.Function f) {
		{
			object v = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(v, "hasNext", 407283053, null))) {
				T v1 = global::haxe.lang.Runtime.genericCast<T>(global::haxe.lang.Runtime.callField(v, "next", 1224901875, null));
				if (global::haxe.lang.Runtime.toBool(f.__hx_invoke1_o(default(double), v1))) {
					return new global::haxe.lang.Null<T>(v1, true);
				}
				
			}
			
		}
		
		return default(global::haxe.lang.Null<T>);
	}
	
	
	public static int findIndex<T>(object it, global::haxe.lang.Function f) {
		unchecked {
			int i = 0;
			{
				object v = ((object) (global::haxe.lang.Runtime.callField(it, "iterator", 328878574, null)) );
				while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(v, "hasNext", 407283053, null))) {
					T v1 = global::haxe.lang.Runtime.genericCast<T>(global::haxe.lang.Runtime.callField(v, "next", 1224901875, null));
					if (global::haxe.lang.Runtime.toBool(f.__hx_invoke1_o(default(double), v1))) {
						return i;
					}
					
					 ++ i;
				}
				
			}
			
			return -1;
		}
	}
	
	
	public static global::Array<T> concat<T>(object a, object b) {
		global::Array<T> l = new global::Array<T>();
		{
			object x = ((object) (global::haxe.lang.Runtime.callField(a, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x, "hasNext", 407283053, null))) {
				T x1 = global::haxe.lang.Runtime.genericCast<T>(global::haxe.lang.Runtime.callField(x, "next", 1224901875, null));
				l.push(x1);
			}
			
		}
		
		{
			object x2 = ((object) (global::haxe.lang.Runtime.callField(b, "iterator", 328878574, null)) );
			while (global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(x2, "hasNext", 407283053, null))) {
				T x3 = global::haxe.lang.Runtime.genericCast<T>(global::haxe.lang.Runtime.callField(x2, "next", 1224901875, null));
				l.push(x3);
			}
			
		}
		
		return l;
	}
	
	
}