package de.dhbwstuttgart.bytecode;

import org.objectweb.asm.*;

public class JavaTXSignatureAttribute extends Attribute {
    public String signature;

    public JavaTXSignatureAttribute() {
        super("JavaTXSignature");
    }
    protected JavaTXSignatureAttribute(String signature) {
        this();
        this.signature = signature;
    }

    @Override
    protected Attribute read(ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) {
        var data = new byte[length];
        System.arraycopy(classReader.b, offset, data, 0, length);
        var constantPoolOffset = data[0] << 8 | data[1];
        return new JavaTXSignatureAttribute((String) classReader.readConst(constantPoolOffset, charBuffer));
    }

    @Override
    protected ByteVector write(ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) {
        var data = new ByteVector();
        data.putShort(classWriter.newConst(this.signature));
        return data;
    }
}