TVSTACK.H
/////////////////////////////////////////////////////////////////////// 
// 
//  TVSTACK.H 
// 
// 
//  Copyright 1986-1996 Microsoft Corporation. All Rights Reserved. 
/////////////////////////////////////////////////////////////////////// 
 
 
#define StackSize 64 
 
class CTIStack 
{ 
 
public: 
    CTIStack()  { m_ptos = m_ahti; m_pMax = m_ahti + StackSize - 1;} 
    ~CTIStack() {}; 
 
    BOOL Push(HTREEITEM hti); 
    HTREEITEM Pop(void); 
    BOOL IsEmpty(void); 
 
private: 
    HTREEITEM m_ahti[StackSize]; 
    HTREEITEM *m_ptos; 
    HTREEITEM *m_pMax; 
}; 
 
inline BOOL CTIStack::Push(HTREEITEM hti) 
{ 
    Assert(m_ptos >= m_ahti); 
    Assert(m_ptos <= m_pMax); 
 
    if(m_ptos == m_pMax) 
        return FALSE; 
 
    *m_ptos++ = hti; 
    return TRUE; 
} 
 
inline BOOL CTIStack::IsEmpty(void) 
{ 
    Assert(m_ptos >= m_ahti); 
    Assert(m_ptos <= m_pMax); 
     
    return (m_ptos == m_ahti); 
} 
 
inline HTREEITEM CTIStack::Pop(void) 
{ 
    Assert(m_ptos > m_ahti); 
    Assert(m_ptos <= m_pMax); 
 
    if(m_ptos == m_ahti) 
        return NULL; 
         
    return *--m_ptos; 
}