package janala.interpreters;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
public class ClassTemplate {
private final ArrayList<String> fields;
private final ArrayList<String> staticFields;
private void populateAllFields(Class c) {
for (Field field: c.getDeclaredFields()) {
if (!Modifier.isStatic(field.getModifiers())) {
addField(field.getName());
} else {
addStaticField(field.getName());
}
}
}
public ClassTemplate(Class c) {
fields = new ArrayList<String>();
staticFields = new ArrayList<String>();
populateAllFields(c);
}
public String toString() {
return fields.toString();
}
private void addField(String name) {
fields.add(name);
}
public void addFields(ClassTemplate pt) {
fields.addAll(0, pt.fields);
staticFields.addAll(0, pt.staticFields);
}
private void addStaticField(String name) {
staticFields.add(name);
}
public int getFieldIndex(String name) {
return fields.indexOf(name);
}
public int getStaticFieldIndex(String name) {
return staticFields.indexOf(name);
}
public int nFields() {
return fields.size();
}
public int nStaticFields() {
return staticFields.size();
}
}