## org.apache.bcel.verifier.structurals
Class OperandStack

    java.lang.Object
      |
      +--org.apache.bcel.verifier.structurals.OperandStack

public class OperandStack
extends java.lang.Object

This class implements a stack used for symbolic JVM stack simulation. [It's used an an operand stack substitute.] Elements of this stack are org.apache.bcel.generic.Type objects.

Version:
  $Id: OperandStack.java,v 1.2 2002/08/02 11:57:51 enver Exp $
Author:
  Enver Haase

Constructor Summary
`OperandStack(int maxStack)` Creates an empty stack with a maximum of maxStack slots.
`OperandStack(int maxStack, ObjectType obj)` Creates an otherwise empty stack with a maximum of maxStack slots and the ObjectType 'obj' at the top.

Method Summary
`void` `clear()` Clears the stack.
`protected java.lang.Object` `clone()` Returns a deep copy of this object; that means, the clone operates on a new stack.
`boolean` `equals(java.lang.Object o)` Returns true if and only if this OperandStack equals another, meaning equal lengths and equal objects on the stacks.
`OperandStack` `getClone()` Returns a (typed!)
`void` `initializeObject(UninitializedObjectType u)` Replaces all occurences of u in this OperandStack instance with an "initialized" ObjectType.
`boolean` `isEmpty()` Returns true IFF this OperandStack is empty.
`int` `maxStack()` Returns the number of stack slots this stack can hold.
`void` `merge(OperandStack s)` Merges another stack state into this instance's stack state.
`Type` `peek()` Returns the element on top of the stack.
`Type` `peek(int i)` Returns the element that's i elements below the top element; that means, iff i==0 the top element is returned.
`Type` `pop()` Returns the element on top of the stack.
`Type` `pop(int i)` Pops i elements off the stack.
`void` `push(Type type)` Pushes a Type object onto the stack.
`int` `slotsUsed()` Returns the number of stack slots used.
`java.lang.String` `toString()` Returns a String representation of this OperandStack instance.

Methods inherited from class java.lang.Object
`finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### OperandStack

    public OperandStack(int maxStack)

  Creates an empty stack with a maximum of maxStack slots.

### OperandStack

    public OperandStack(int maxStack,
                        ObjectType obj)

  Creates an otherwise empty stack with a maximum of maxStack slots and the ObjectType 'obj' at the top.

Method Detail

### clone

    protected java.lang.Object clone()

  Returns a deep copy of this object; that means, the clone operates on a new stack. However, the Type objects on the stack are shared.

  Overrides:
    `clone` in class `java.lang.Object`

### clear

    public void clear()

  Clears the stack.

### equals

    public boolean equals(java.lang.Object o)

  Returns true if and only if this OperandStack equals another, meaning equal lengths and equal objects on the stacks.

  Overrides:
    `equals` in class `java.lang.Object`

### getClone

    public OperandStack getClone()

  Returns a (typed!) clone of this.

  See Also:
    `clone()`

### isEmpty

    public boolean isEmpty()

  Returns true IFF this OperandStack is empty.

### maxStack

    public int maxStack()

  Returns the number of stack slots this stack can hold.

### peek

    public Type peek()

  Returns the element on top of the stack. The element is not popped off the stack!

### peek

    public Type peek(int i)

  Returns the element that's i elements below the top element; that means, iff i==0 the top element is returned. The element is not popped off the stack!

### pop

    public Type pop()

  Returns the element on top of the stack. The element is popped off the stack.

### pop

    public Type pop(int i)

  Pops i elements off the stack. ALWAYS RETURNS "null"!!!

### push

    public void push(Type type)

  Pushes a Type object onto the stack.

### slotsUsed

    public int slotsUsed()

  Returns the number of stack slots used.

  See Also:
    `maxStack()`

### toString

    public java.lang.String toString()

  Returns a String representation of this OperandStack instance.

  Overrides:
    `toString` in class `java.lang.Object`

### merge

    public void merge(OperandStack s)

  Merges another stack state into this instance's stack state. See the Java Virtual Machine Specification, Second Edition, page 146: 4.9.2 for details.

### initializeObject

    public void initializeObject(UninitializedObjectType u)

  Replaces all occurences of u in this OperandStack instance with an "initialized" ObjectType.

Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.