View Javadoc

    1   /*
    2    * @(#) InterpreterFactory.java Jan 14, 2004
    3    *
    4    * Copyright (c) 2003 Delft University of Technology Jaffalaan 5, 2628 BX Delft,
    5    * the Netherlands All rights reserved.
    6    *
    7    * This software is proprietary information of Delft University of Technology
    8    * The code is published under the General Public License
    9    */
    10  package nl.tudelft.simulation.dsol.formalisms.process;
    11
    12  import java.io.DataInput;
    13  import java.io.IOException;
    14
    15  import nl.tudelft.simulation.dsol.interpreter.Operation;
    16  import nl.tudelft.simulation.dsol.interpreter.operations.InterpreterFactory;
    17  import nl.tudelft.simulation.dsol.interpreter.operations.reflection.INVOKEINTERFACE;
    18  import nl.tudelft.simulation.dsol.interpreter.operations.reflection.INVOKESPECIAL;
    19  import nl.tudelft.simulation.dsol.interpreter.operations.reflection.INVOKESTATIC;
    20  import nl.tudelft.simulation.dsol.interpreter.operations.reflection.INVOKEVIRTUAL;
    21
    22  /***
    23   * A InterpreterFactory <br>
    24   * (c) copyright 2003 <a href="http://www.simulation.tudelft.nl">Delft
    25   * University of Technology </a>, the Netherlands. <br>
    26   * See for project information <a
    27   * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <br>
    28   * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
    29   * License (GPL) </a>, no warranty <br>
    30   *
    31   * @version 1.0 Jan 14, 2004 <br>
    32   * @author <a href="http://www.simulation.tudelft.nl/people/jacobs.html">Peter
    33   *         Jacobs </a>
    34   */
    35  public class ProcessFactory extends InterpreterFactory
    36  {
    37  	/***
    38  	 * constructs a new InterpreterFactory
    39  	 */
    40  	public ProcessFactory()
    41  	{
    42  		super();
    43  	}
    44
    45  	/***
    46  	 * reads a sequence of bytes and returns the appropriate bytecode
    47  	 * operations.
    48  	 *
    49  	 * @param operand the operatand (short value)
    50  	 * @param dataInput the dataInput to read from
    51  	 * @param startBytePostion the position in the current block of bytecode.
    52  	 * @return the assemnbly Operation
    53  	 * @throws IOException on IO exception
    54  	 */
    55  	public Operation readOperation(final int operand,
    56  			final DataInput dataInput, final int startBytePostion)
    57  			throws IOException
    58  	{
    59  		switch (operand)
    60  		{
    61  			case INVOKEINTERFACE.OP :
    62  				return new PROCESSINVOKEINTERFACE(dataInput);
    63  			case INVOKESPECIAL.OP :
    64  				return new PROCESSINVOKESPECIAL(dataInput);
    65  			case INVOKESTATIC.OP :
    66  				return new PROCESSINVOKESTATIC(dataInput);
    67  			case INVOKEVIRTUAL.OP :
    68  				return new PROCESSINVOKEVIRTUAL(dataInput);
    69  			default :
    70  				return super
    71  						.readOperation(operand, dataInput, startBytePostion);
    72  		}
    73  	}
    74  }