All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.saidgadjiev.proxymaker.bytecode.FieldInfo Maven / Gradle / Ivy

There is a newer version: 1.17
Show newest version
package ru.saidgadjiev.proxymaker.bytecode;

import ru.saidgadjiev.proxymaker.bytecode.constantpool.ConstantPool;

import java.io.DataOutputStream;
import java.io.IOException;

/**
 * This class represent field in bytecode.
 */
public class FieldInfo {

    /**
     * Access flag {@link ru.saidgadjiev.proxymaker.AccessFlag}.
     */
    private int accessFlags;

    /**
     * Field name index constant in constant pool.
     */
    private int nameIndex;

    /**
     * Field descriptor index in constant pool.
     */
    private int descriptorIndex;

    /**
     * Create new instance which represent field info in bytecode.
     * @param constantPool current constant pool {@link ConstantPool}
     * @param name field name
     * @param descriptor field descriptor
     */
    public FieldInfo(ConstantPool constantPool, String name, String descriptor) {
        this.nameIndex = constantPool.addUtf8Info(name);
        this.descriptorIndex = constantPool.addUtf8Info(descriptor);
    }

    /**
     * Set field access flags {@link ru.saidgadjiev.proxymaker.AccessFlag}.
     * @param accessFlags target access flags
     */
    public void setAccessFlags(int accessFlags) {
        this.accessFlags = accessFlags;
    }

    /**
     * Write field info to {@link DataOutputStream}.
     * @param outputStream target outputstream
     * @throws IOException throws in {@link DataOutputStream}
     */
    public void write(DataOutputStream outputStream) throws IOException {
        outputStream.writeShort(accessFlags);
        outputStream.writeShort(nameIndex);
        outputStream.writeShort(descriptorIndex);
        outputStream.writeShort(0);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy