package com.dragome.compiler.type;
import java.io.Serializable;
import com.dragome.compiler.DragomeJsCompiler;
import com.dragome.compiler.Project;
public class Signature implements Serializable
{
private String signatureString;
private int id;
public Signature(String theSignatureString, int theId)
{
signatureString= theSignatureString;
id= theId;
}
public int hashCode()
{
return signatureString.hashCode();
}
public boolean equals(Object obj)
{
if (obj instanceof Signature)
{
return signatureString.equals(((Signature) obj).signatureString);
}
return false;
}
public String toString()
{
return signatureString;
}
public boolean isClass()
{
return signatureString.indexOf('#') == -1;
}
public boolean isArrayType()
{
return isClass() && signatureString.startsWith("[");
}
public boolean isConstructor()
{
return signatureString.startsWith("<init>");
}
public boolean isMethod()
{
return !isConstructor() && signatureString.indexOf('(') != -1;
}
public boolean isField()
{
return !isClass() && signatureString.indexOf('(') == -1;
}
public String className()
{
String array[]= signatureString.split("#");
return array[0];
}
public String relativeSignature()
{
String array[]= signatureString.split("#");
if (array.length != 2)
{
throw new RuntimeException("Not a method signature: " + this);
}
return array[1];
}
public Signature relative()
{
return Project.getSingleton().getSignature(relativeSignature());
}
public int getId()
{
return id;
}
public String getCommentedId()
{
StringBuffer sb= new StringBuffer();
sb.append(String.valueOf(getId()));
if (!DragomeJsCompiler.compiler.isCompression())
{
sb.append(" /*");
sb.append(toString());
sb.append("*/");
}
return sb.toString();
}
}