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 ConstantInvokeDynamic extends AbstractConstant {
private static final Pattern pattern = Pattern.compile("ConstantInvokeDynamic\\ +(\\d)+\\ +(\\d)+");
private int bootstrap_method_attr_index;
private int name_and_type_index;
protected ConstantInvokeDynamic() {
super(Constants.CONSTANT_InvokeDynamic);
}
public ConstantInvokeDynamic(DataInput file) throws IOException {
this();
this.bootstrap_method_attr_index = file.readUnsignedShort();
this.name_and_type_index = file.readUnsignedShort();
}
@Override
public void dump(DataOutputStream file) throws IOException {
file.writeByte(tag);
file.writeShort(this.bootstrap_method_attr_index);
file.writeShort(this.name_and_type_index);
}
@Override
public String toLineCode() {
return "ConstantInvokeDynamic " + bootstrap_method_attr_index + " " + name_and_type_index;
}
public static AbstractConstant parseLine(String lineCode) {
Matcher matcher = pattern.matcher(lineCode);
if (!matcher.find()) {
return null;
}
ConstantInvokeDynamic cons = new ConstantInvokeDynamic();
cons.bootstrap_method_attr_index = Integer.parseInt(matcher.group(1));
cons.name_and_type_index = Integer.parseInt(matcher.group(2));
return cons;
}
public int getBootstrapMethodAttrIndex() {
return bootstrap_method_attr_index;
}
public void setBootstrapMethodAttrIndex(int bootstrap_method_attr_index) {
this.bootstrap_method_attr_index = bootstrap_method_attr_index;
}
public int getNameAndTypeIndex() {
return name_and_type_index;
}
public void setNameAndTypeIndex(int name_and_type_index) {
this.name_and_type_index = name_and_type_index;
}
}