haxe/src/haxe/ds/EnumValueMap.cs
// Generated by Haxe 4.3.7

#pragma warning disable 109, 114, 219, 429, 168, 162
namespace haxe.ds {
	public class EnumValueMap<K, V> : global::haxe.ds.BalancedTree<K, V>, global::haxe.ds.EnumValueMap, global::haxe.IMap<K, V> {
		
		public EnumValueMap(global::haxe.lang.EmptyObject empty) : base(global::haxe.lang.EmptyObject.EMPTY) {
		}
		
		
		public EnumValueMap() : base(global::haxe.lang.EmptyObject.EMPTY) {
			global::haxe.ds.EnumValueMap<object, object>.__hx_ctor_haxe_ds_EnumValueMap<K, V>(((global::haxe.ds.EnumValueMap<K, V>) (this) ));
		}
		
		
		protected static void __hx_ctor_haxe_ds_EnumValueMap<K_c, V_c>(global::haxe.ds.EnumValueMap<K_c, V_c> __hx_this) {
			global::haxe.ds.BalancedTree<object, object>.__hx_ctor_haxe_ds_BalancedTree<K_c, V_c>(((global::haxe.ds.BalancedTree<K_c, V_c>) (__hx_this) ));
		}
		
		
		public static new object __hx_cast<K_c_c, V_c_c>(global::haxe.ds.EnumValueMap me) {
			return ( (( me != null )) ? (me.haxe_ds_EnumValueMap_cast<K_c_c, V_c_c>()) : default(object) );
		}
		
		
		global::haxe.IMap<K, V> global::haxe.IMap<K, V>.copy() {
			return ((global::haxe.IMap<K, V>) (this.copy()) );
		}
		
		
		public virtual object haxe_ds_EnumValueMap_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.ds.EnumValueMap<K_c, V_c> new_me = new global::haxe.ds.EnumValueMap<K_c, V_c>(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 override object haxe_IMap_cast<K_c, V_c>() {
			return this.haxe_ds_EnumValueMap_cast<K, V>();
		}
		
		
		public override object haxe_ds_BalancedTree_cast<K_c, V_c>() {
			return this.haxe_ds_EnumValueMap_cast<K, V>();
		}
		
		
		public override int compare(K __temp_k11, K __temp_k22) {
			object k2 = ((object) (__temp_k22) );
			object k1 = ((object) (__temp_k11) );
			int d = ( global::Type.enumIndex(k1) - global::Type.enumIndex(k2) );
			if (( d != 0 )) {
				return d;
			}
			
			global::Array p1 = global::Type.enumParameters(k1);
			global::Array p2 = global::Type.enumParameters(k2);
			if (( ( ((int) (global::haxe.lang.Runtime.getField_f(p1, "length", 520590566, true)) ) == 0 ) && ( ((int) (global::haxe.lang.Runtime.getField_f(p2, "length", 520590566, true)) ) == 0 ) )) {
				return 0;
			}
			
			return this.compareArgs(p1, p2);
		}
		
		
		public virtual int compareArgs(global::Array a1, global::Array a2) {
			int ld = ( ((int) (global::haxe.lang.Runtime.getField_f(a1, "length", 520590566, true)) ) - ((int) (global::haxe.lang.Runtime.getField_f(a2, "length", 520590566, true)) ) );
			if (( ld != 0 )) {
				return ld;
			}
			
			{
				int _g = 0;
				int _g1 = ((int) (global::haxe.lang.Runtime.getField_f(a1, "length", 520590566, true)) );
				while (( _g < _g1 )) {
					int i = _g++;
					int d = this.compareArg(a1[i], a2[i]);
					if (( d != 0 )) {
						return d;
					}
					
				}
				
			}
			
			return 0;
		}
		
		
		public virtual int compareArg(object v1, object v2) {
			if (( global::Reflect.isEnumValue(v1) && global::Reflect.isEnumValue(v2) )) {
				return this.compare(global::haxe.lang.Runtime.genericCast<K>(v1), global::haxe.lang.Runtime.genericCast<K>(v2));
			}
			else if (( ( v1 is global::Array ) && ( v2 is global::Array ) )) {
				return this.compareArgs(((global::Array) (v1) ), ((global::Array) (v2) ));
			}
			else {
				return global::Reflect.compare<object>(((object) (v1) ), ((object) (v2) ));
			}
			
		}
		
		
		public override global::haxe.ds.BalancedTree<K, V> copy() {
			global::haxe.ds.EnumValueMap<K, V> copied = new global::haxe.ds.EnumValueMap<K, V>();
			copied.root = this.root;
			return copied;
		}
		
		
		public override object __hx_getField(string field, int hash, bool throwErrors, bool isCheck, bool handleProperties) {
			unchecked {
				switch (hash) {
					case 1103412149:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "copy", 1103412149)) );
					}
					
					
					case 244830897:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "compareArg", 244830897)) );
					}
					
					
					case 910198946:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "compareArgs", 910198946)) );
					}
					
					
					case 57219237:
					{
						return ((global::haxe.lang.Function) (new global::haxe.lang.Closure(this, "compare", 57219237)) );
					}
					
					
					default:
					{
						return base.__hx_getField(field, hash, throwErrors, isCheck, handleProperties);
					}
					
				}
				
			}
		}
		
		
		public override object __hx_invokeField(string field, int hash, object[] dynargs) {
			unchecked {
				switch (hash) {
					case 57219237:
					case 1103412149:
					{
						return global::haxe.lang.Runtime.slowCallField(this, field, dynargs);
					}
					
					
					case 244830897:
					{
						return this.compareArg(dynargs[0], dynargs[1]);
					}
					
					
					case 910198946:
					{
						return this.compareArgs(((global::Array) (dynargs[0]) ), ((global::Array) (dynargs[1]) ));
					}
					
					
					default:
					{
						return base.__hx_invokeField(field, hash, dynargs);
					}
					
				}
				
			}
		}
		
		
	}
}



#pragma warning disable 109, 114, 219, 429, 168, 162
namespace haxe.ds {
	[global::haxe.lang.GenericInterface(typeof(global::haxe.ds.EnumValueMap<object, object>))]
	public interface EnumValueMap : global::haxe.lang.IHxObject, global::haxe.ds.BalancedTree, global::haxe.lang.IGenericObject {
		
		object haxe_ds_EnumValueMap_cast<K_c, V_c>();
		
		int compareArgs(global::Array a1, global::Array a2);
		
		int compareArg(object v1, object v2);
		
	}
}