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

software.coley.cafedude.tree.visitor.writer.CodeWriter Maven / Gradle / Ivy

Go to download

Tree module for CafeDude, containing a simplified intermediate model for classes

The newest version!
package software.coley.cafedude.tree.visitor.writer;

import software.coley.cafedude.InvalidCodeException;
import software.coley.cafedude.classfile.attribute.CodeAttribute;
import software.coley.cafedude.classfile.instruction.Opcodes;
import software.coley.cafedude.tree.Code;
import software.coley.cafedude.tree.visitor.CodeDataVisitor;
import software.coley.cafedude.tree.visitor.CodeVisitor;

import java.util.function.Consumer;

/**
 * Code visitor for writing back to {@link CodeAttribute}.
 *
 * @author Justus Garbe
 */
public class CodeWriter implements CodeVisitor, Opcodes {
	private final Symbols symbols;
	private final CodeDataVisitor converter = new CodeDataVisitor();
	private final Consumer callback;

	CodeWriter(Symbols symbols, Consumer callback) {
		this.symbols = symbols;
		this.callback = callback;
	}

	@Override
	public CodeVisitor codeDelegate() {
		return converter;
	}

	@Override
	public void visitCodeEnd() throws InvalidCodeException {
		Code code = converter.getCode();
		callback.accept(new CodeConverter(code, symbols).convertToAttribute());
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy