package net.ptnkjke.jbeditor.logic.own.bytecode;
import java.io.DataInput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConstantNameAndType extends AbstractConstant {
private static final Pattern pattern = Pattern.compile("ConstantNameAndType\\ +(\\d)+\\ +(\\d)+");
private int name_index; // Name of field/method
private int signature_index; // and its signature.
protected ConstantNameAndType() {
super(Constants.CONSTANT_NameAndType);
}
public ConstantNameAndType(DataInput file) throws IOException {
this();
this.name_index = file.readUnsignedShort();
this.signature_index = file.readUnsignedShort();
}
@Override
public void dump(DataOutputStream file) throws IOException {
file.writeByte(tag);
file.writeShort(name_index);
file.writeShort(signature_index);
}
@Override
public String toLineCode() {
return "ConstantNameAndType " + name_index + " " + signature_index;
}
public static AbstractConstant parseLine(String lineCode) {
Matcher matcher = pattern.matcher(lineCode);
if (!matcher.find()) {
return null;
}
ConstantNameAndType cons = new ConstantNameAndType();
cons.name_index = Integer.parseInt(matcher.group(1));
cons.signature_index = Integer.parseInt(matcher.group(2));
return cons;
}
public int getNameIndex() {
return name_index;
}
public void setNameIndex(int name_index) {
this.name_index = name_index;
}
public int getSignatureIndex() {
return signature_index;
}
public void setSignatureIndex(int signature_index) {
this.signature_index = signature_index;
}
}