package haxe.lang;
import haxe.root.*;
@SuppressWarnings(value={"rawtypes", "unchecked"})
public class Enum
{
public Enum(int index, haxe.root.Array<java.lang.Object> params)
{
this.index = index;
this.params = params;
}
public int index;
public haxe.root.Array<java.lang.Object> params;
public java.lang.String getTag()
{
java.lang.Object cl = haxe.root.Type.getEnum(((java.lang.Object) (this) ));
return haxe.lang.Runtime.toString(haxe.lang.Runtime.callField(haxe.lang.Runtime.getField(cl, "constructs", true), "__get", new haxe.root.Array(new java.lang.Object[]{this.index})));
}
@Override public java.lang.String toString()
{
if (( ( this.params == null ) || ( this.params.length == 0 ) ))
{
return this.getTag();
}
haxe.root.StringBuf ret = new haxe.root.StringBuf();
ret.add(this.getTag());
ret.add("(");
boolean first = true;
{
int _g = 0;
haxe.root.Array<java.lang.Object> _g1 = this.params;
while (( _g < _g1.length ))
{
java.lang.Object p = _g1.__get(_g);
++ _g;
if (first)
{
first = false;
}
else
{
ret.add(",");
}
ret.add(p);
}
}
ret.add(")");
return ret.toString();
}
@Override public boolean equals(java.lang.Object obj)
{
if (haxe.lang.Runtime.eq(obj, this))
{
return true;
}
haxe.lang.Enum obj1 = ((haxe.lang.Enum) (obj) );
boolean ret = ( ( ( obj1 != null ) && haxe.root.Std.is(obj1, haxe.root.Type.getEnum(((java.lang.Object) (this) ))) ) && ( obj1.index == this.index ) );
if ( ! (ret) )
{
return false;
}
if (( obj1.params == this.params ))
{
return true;
}
int len = 0;
if (( ( ( obj1.params == null ) || ( this.params == null ) ) || ( (len = this.params.length) != obj1.params.length ) ))
{
return false;
}
{
int _g = 0;
while (( _g < ((int) (len) ) ))
{
int i = _g++;
if ( ! (haxe.root.Type.enumEq(obj1.params.__get(i), this.params.__get(i))) )
{
return false;
}
}
}
return true;
}
@Override public int hashCode()
{
int h = 19;
if (( this.params != null ))
{
int _g = 0;
haxe.root.Array<java.lang.Object> _g1 = this.params;
while (( _g < _g1.length ))
{
java.lang.Object p = _g1.__get(_g);
++ _g;
h = ( h * 31 );
if (( ! (( p == null )) ))
{
h += p.hashCode();
}
}
}
h += this.index;
return h;
}
}