accrue.analysis.interprocvarcontext

## Class Stack<T extends AbstractValue<T>>

- java.lang.Object
- - accrue.analysis.interprocvarcontext.Stack<T>

- Type Parameters:
    `T` - The type of the abstract values.

      public abstract class Stack<T extends AbstractValue<T>>
      extends java.lang.Object

  A stack of abstract values. The primary use of this class is to record the expression stack during analysis. That is,

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static accrue.analysis.interprocvarcontext.Stack.EmptyStack` | `EMPTY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Stack()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <T extends AbstractValue<T>> Stack<T>` | `emptyStack()`
    `abstract boolean` | `equals(java.lang.Object o)`
    `abstract boolean` | `isEmpty()`
    `abstract boolean` | `leq(Stack<T> that)`
    `abstract T` | `peek()`
    `abstract java.lang.Object` | `peekSource()`
    `abstract Stack<T>` | `pop()`
    `Stack<T>` | `push(T v, java.lang.Object source)`
    `static <T extends AbstractValue<T>> Stack<T>` | `singleton(T v, java.lang.Object source)`
    `abstract int` | `size()`
    `protected abstract void` | `tailString(java.lang.StringBuffer sb)`
    `abstract Stack<T>` | `upperBound(Stack<T> that)`
    `abstract Stack<T>` | `widen(Stack<T> that)`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### EMPTY

          public static final accrue.analysis.interprocvarcontext.Stack.EmptyStack EMPTY

  - ### Constructor Detail

    - #### Stack

          public Stack()

  - ### Method Detail

    - #### emptyStack

          public static final <T extends AbstractValue<T>> Stack<T> emptyStack()

    - #### singleton

          public static final <T extends AbstractValue<T>> Stack<T> singleton(T v,
                                                        java.lang.Object source)

    - #### peek

          public abstract T peek()

    - #### peekSource

          public abstract java.lang.Object peekSource()

    - #### pop

          public abstract Stack<T> pop()

    - #### push

          public Stack<T> push(T v,
                      java.lang.Object source)

    - #### leq

          public abstract boolean leq(Stack<T> that)

    - #### upperBound

          public abstract Stack<T> upperBound(Stack<T> that)

    - #### widen

          public abstract Stack<T> widen(Stack<T> that)

    - #### equals

          public abstract boolean equals(java.lang.Object o)

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

    - #### isEmpty

          public abstract boolean isEmpty()

    - #### size

          public abstract int size()

    - #### tailString

          protected abstract void tailString(java.lang.StringBuffer sb)