/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package org.jruby.ir.persistence;

import org.jcodings.Encoding;
import org.jruby.RubySymbol;
import org.jruby.ir.IRFlags;
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.Label;
import org.jruby.ir.operands.Operand;
import org.jruby.ir.operands.OperandType;
import org.jruby.ir.operands.TemporaryVariableType;
import org.jruby.ir.operands.Variable;
import org.jruby.parser.StaticScope;

import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import org.jruby.runtime.RubyEvent;
import org.jruby.runtime.Signature;
import org.jruby.util.ByteList;

Author:enebo
/** * * @author enebo */
public interface IRReaderDecoder { public String decodeString(); public String[] decodeStringArray(); public int[] decodeIntArray(); public Instr decodeInstr(); public IRScopeType decodeIRScopeType(); public StaticScope.Type decodeStaticScopeType(); public Operation decodeOperation(); public Operand decodeOperand(); public List<Operand> decodeOperandList(); public Label decodeLabel(); public Label[] decodeLabelArray(); public Operand[] decodeOperandArray(); public OperandType decodeOperandType(); public boolean decodeBoolean(); public byte decodeByte(); public byte[] decodeByteArray(); public Encoding decodeEncoding(); public ByteList decodeByteList(); public char decodeChar(); public int decodeInt(); public int decodeIntRaw(); public long decodeLong(); public double decodeDouble(); public float decodeFloat(); public RubyEvent decodeRubyEvent(); public RubySymbol decodeSymbol(); public Signature decodeSignature(); EnumSet<IRFlags> decodeIRFlags(); public Variable decodeVariable(); public List<Instr> decodeInstructionsAt(IRScope scope, int poolOffset, int instructionOffset); public IRScope getCurrentScope(); public Map<String, Operand> getVars(); public void addScope(IRScope scope); public void seek(int headersOffset); public IRScope decodeScope(); public TemporaryVariableType decodeTemporaryVariableType(); public ByteList getFilename();
Duplicate this decoder to isolate any state changes.
Returns:An identical decoder that's isolated from the original
/** * Duplicate this decoder to isolate any state changes. * * @return An identical decoder that's isolated from the original */
public IRReaderDecoder dup(); }