Class SparseStack


  • public class SparseStack
    extends java.lang.Object
    Stack for values that depend on the level of nesting, where only some of the levels change the current value.
    Author:
    Dennis M. Sosnoski
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.Object m_current
      Current item.
      private ObjectStack m_items
      Stack of different items (paired with m_levels stack).
      private int m_level
      Current nesting level.
      private IntStack m_levels
      Levels with different items (paired with m_items stack).
    • Constructor Summary

      Constructors 
      Constructor Description
      SparseStack()
      Constructor with no initial value.
      SparseStack​(java.lang.Object current)
      Constructor with initial value.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void enter()
      Enter a level of nesting.
      java.lang.Object exit()
      Exit a level of nesting with changed item returned.
      java.lang.Object getCurrent()
      Get current object.
      void setCurrent​(java.lang.Object obj)
      Set current object.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • m_current

        private java.lang.Object m_current
        Current item.
      • m_level

        private int m_level
        Current nesting level.
      • m_levels

        private IntStack m_levels
        Levels with different items (paired with m_items stack).
      • m_items

        private ObjectStack m_items
        Stack of different items (paired with m_levels stack).
    • Constructor Detail

      • SparseStack

        public SparseStack​(java.lang.Object current)
        Constructor with initial value.
        Parameters:
        current - initial value
      • SparseStack

        public SparseStack()
        Constructor with no initial value.
    • Method Detail

      • getCurrent

        public java.lang.Object getCurrent()
        Get current object.
        Returns:
        current
      • setCurrent

        public void setCurrent​(java.lang.Object obj)
        Set current object.
        Parameters:
        obj - set the current object
      • enter

        public void enter()
        Enter a level of nesting.
      • exit

        public java.lang.Object exit()
        Exit a level of nesting with changed item returned.
        Returns:
        item that was active until this exit, or null if same item still active