92 lines
1.8 KiB
Plaintext
92 lines
1.8 KiB
Plaintext
package slangc.model;
|
|
|
|
import slang.data.Mappable;
|
|
|
|
public class TemplateArguments implements Mappable {
|
|
private TemplateArgument[] arguments;
|
|
public TemplateArguments(TemplateArgument[] arguments) {
|
|
this.arguments = arguments;
|
|
}
|
|
|
|
public int countArguments() {
|
|
return arguments.length;
|
|
}
|
|
|
|
public TemplateArgument getArgument(int i) {
|
|
return arguments[i];
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
String result = "";
|
|
|
|
for(int i = 0; i < arguments.length; i++) {
|
|
TemplateArgument t = arguments[i];
|
|
if (result.ints().length != 0) {
|
|
result += ",";
|
|
}
|
|
result += t.toString();
|
|
}
|
|
|
|
return "<" + result + ">";
|
|
}
|
|
|
|
public String genericString() {
|
|
String result = "";
|
|
|
|
for(int i = 0; i < arguments.length; i++) {
|
|
TemplateArgument t = arguments[i];
|
|
if (result.ints().length != 0) {
|
|
result += ",";
|
|
}
|
|
result += "?";
|
|
}
|
|
|
|
return "<" + result + ">";
|
|
}
|
|
|
|
@Override
|
|
public int mappableHash() {
|
|
final int prime = 31;
|
|
int result = 1;
|
|
result = prime * result + arrHash(arguments);
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public boolean mappableEquals(Mappable obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof TemplateArguments)) {
|
|
return false;
|
|
}
|
|
TemplateArguments other = (TemplateArguments) obj;
|
|
if (!arrEquals(arguments, other.arguments)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public boolean arrEquals(TemplateArgument[] a, TemplateArgument[] b) {
|
|
if (a.length != b.length) {
|
|
return false;
|
|
}
|
|
for (int i = 0; i < a.length; i++) {
|
|
if (!a[i].mappableEquals(b[i])) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public int arrHash(TemplateArgument[] a) {
|
|
int hash = 0;
|
|
for (int i = 0; i < a.length; i++) {
|
|
hash += a[i].mappableHash();
|
|
}
|
|
return hash;
|
|
}
|
|
|
|
}
|