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

org.jruby.ir.persistence.IRWriterEncoder Maven / Gradle / Ivy

package org.jruby.ir.persistence;

import org.jcodings.Encoding;
import org.jruby.RubySymbol;
import org.jruby.ir.IRScope;
import org.jruby.ir.IRScopeType;
import org.jruby.ir.Operation;
import org.jruby.ir.instructions.Instr;
import org.jruby.ir.operands.Operand;
import org.jruby.ir.operands.OperandType;
import org.jruby.parser.StaticScope.Type;
import org.jruby.runtime.RubyEvent;
import org.jruby.runtime.Signature;
import org.jruby.util.ByteList;

/**
 * Names are tough to find.  Encodes values destined to be written to a persisted space.
 * This interface doubles for the encoder which actually writes the finished encoded file
 * and also for the recorder which calculates the constant pool and basic statistics used as
 * input the the encoder which writes the file.
 */
public interface IRWriterEncoder {

    public void encode(ByteList bytelist);
    public void encode(Encoding encoding);
    public void encode(RubySymbol value);
    public void encode(String value);
    public void encode(String[] values);
    public void encode(Instr value);
    public void encode(IRScope scope);
    public void encode(IRScopeType value);
    public void encode(Signature signature);
    public void encode(RubyEvent event);
    public void encode(Type value);
    public void encode(Operation value);
    public void encode(Operand value);
    public void encode(Operand[] value);
    public void encode(OperandType value);
    public void encode(byte[] values);
    public void encode(boolean value);
    public void encode(byte value);
    public void encode(char value);
    public void encode(int value);
    public void encode(int[] value);
    public void encode(long value);
    public void encode(double value);
    public void encode(float value);

    // Demarcate sections in encoded file methods

    // Start writing an individual scope header
    public void startEncodingScopeHeader(IRScope scope);
    // Finish writing an individual scope header
    public void endEncodingScopeHeader(IRScope scope);
    // Start writing an instruction list of a single scopes instructions
    public void startEncodingScopeInstrs(IRScope scope);
    // Finish writing an instruction list of a single scopes instructions
    public void endEncodingScopeInstrs(IRScope scope);
    // Start writing metadata for all scopes
    public void startEncodingScopeHeaders(IRScope script);
    // Finish writing metadata for all scopes
    public void endEncodingScopeHeaders(IRScope script);
    // Start writing out the entire scope
    public void startEncoding(IRScope script);
    // Finish writing out the entire scope
    public void endEncoding(IRScope script);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy