haxe/src/haxe/iterators/MapKeyValueIterator.cs
// Generated by Haxe 4.3.7

#pragma warning disable 109, 114, 219, 429, 168, 162
namespace haxe.iterators {
	public class MapKeyValueIterator<K, V> : global::haxe.lang.HxObject, global::haxe.iterators.MapKeyValueIterator {
		
		public MapKeyValueIterator(global::haxe.lang.EmptyObject empty) {
		}
		
		
		public MapKeyValueIterator(global::haxe.IMap<K, V> map) {
			global::haxe.iterators.MapKeyValueIterator<object, object>.__hx_ctor_haxe_iterators_MapKeyValueIterator<K, V>(((global::haxe.iterators.MapKeyValueIterator<K, V>) (this) ), ((global::haxe.IMap<K, V>) (map) ));
		}
		
		
		protected static void __hx_ctor_haxe_iterators_MapKeyValueIterator<K_c, V_c>(global::haxe.iterators.MapKeyValueIterator<K_c, V_c> __hx_this, global::haxe.IMap<K_c, V_c> map) {
			__hx_this.map = map;
			__hx_this.keys = map.keys();
		}
		
		
		public static object __hx_cast<K_c_c, V_c_c>(global::haxe.iterators.MapKeyValueIterator me) {
			return ( (( me != null )) ? (me.haxe_iterators_MapKeyValueIterator_cast<K_c_c, V_c_c>()) : default(object) );
		}
		
		
		public virtual object haxe_iterators_MapKeyValueIterator_cast<K_c, V_c>() {
			if (( global::haxe.lang.Runtime.eq(typeof(K), typeof(K_c)) && global::haxe.lang.Runtime.eq(typeof(V), typeof(V_c)) )) {
				return this;
			}
			
			global::haxe.iterators.MapKeyValueIterator<K_c, V_c> new_me = new global::haxe.iterators.MapKeyValueIterator<K_c, V_c>(((global::haxe.lang.EmptyObject) (global::haxe.lang.EmptyObject.EMPTY) ));
			global::Array<string> fields = global::Reflect.fields(this);
			int i = 0;
			while (( i < fields.length )) {
				string field = fields[i++];
				global::Reflect.setField(new_me, field, global::Reflect.field(this, field));
			}
			
			return new_me;
		}
		
		
		public global::haxe.IMap<K, V> map;
		
		public object keys;
		
		public bool hasNext() {
			return global::haxe.lang.Runtime.toBool(global::haxe.lang.Runtime.callField(this.keys, "hasNext", 407283053, null));
		}
		
		
		public object next() {
			K key = global::haxe.lang.Runtime.genericCast<K>(global::haxe.lang.Runtime.callField(this.keys, "next", 1224901875, null));
			{
				V __temp_odecl1 = (this.map.@get(key)).@value;
				return new global::haxe.lang.DynamicObject(new int[]{5343647, 834174833}, new object[]{key, __temp_odecl1}, new int[]{}, new double[]{});
			}
			
		}
		
		
		public override double __hx_setField_f(string field, int hash, double @value, bool handleProperties) {
			unchecked {
				switch (hash) {
					case 1191633396:
					{
						this.keys = ((object) (@value) );
						return @value;
					}
					
					
					default:
					{
						return base.__hx_setField_f(field, hash, @value, handleProperties);
					}
					
				}
				
			}
		}
		
		
		public override object __hx_setField(string field, int hash, object @value, bool handleProperties) {
			unchecked {
				switch (hash) {
					case 1191633396:
					{
						this.keys = ((object) (@value) );
						return @value;
					}
					
					
					case 5442204:
					{
						this.map = ((global::haxe.IMap<K, V>) (global::haxe.IMap__Statics_.__hx_cast<K, V>(((global::haxe.IMap) (@value) ))) );
						return @value;
					}
					
					
					default:
					{
						return base.__hx_setField(field, hash, @value, handleProperties);
					}
					
				}
				
			}
		}
		
		
		public override object __hx_getField(string field, int hash, bool throwErrors, bool isCheck, bool handleProperties) {
			unchecked {
				switch (hash) {
					case 1224901875:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "next", 1224901875)) );
					}
					
					
					case 407283053:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "hasNext", 407283053)) );
					}
					
					
					case 1191633396:
					{
						return this.keys;
					}
					
					
					case 5442204:
					{
						return this.map;
					}
					
					
					default:
					{
						return base.__hx_getField(field, hash, throwErrors, isCheck, handleProperties);
					}
					
				}
				
			}
		}
		
		
		public override double __hx_getField_f(string field, int hash, bool throwErrors, bool handleProperties) {
			unchecked {
				switch (hash) {
					case 1191633396:
					{
						return ((double) (global::haxe.lang.Runtime.toDouble(this.keys)) );
					}
					
					
					default:
					{
						return base.__hx_getField_f(field, hash, throwErrors, handleProperties);
					}
					
				}
				
			}
		}
		
		
		public override object __hx_invokeField(string field, int hash, object[] dynargs) {
			unchecked {
				switch (hash) {
					case 1224901875:
					{
						return this.next();
					}
					
					
					case 407283053:
					{
						return this.hasNext();
					}
					
					
					default:
					{
						return base.__hx_invokeField(field, hash, dynargs);
					}
					
				}
				
			}
		}
		
		
		public override void __hx_getFields(global::Array<string> baseArr) {
			baseArr.push("keys");
			baseArr.push("map");
			base.__hx_getFields(baseArr);
		}
		
		
	}
}



#pragma warning disable 109, 114, 219, 429, 168, 162
namespace haxe.iterators {
	[global::haxe.lang.GenericInterface(typeof(global::haxe.iterators.MapKeyValueIterator<object, object>))]
	public interface MapKeyValueIterator : global::haxe.lang.IHxObject, global::haxe.lang.IGenericObject {
		
		object haxe_iterators_MapKeyValueIterator_cast<K_c, V_c>();
		
		bool hasNext();
		
		object next();
		
	}
}