home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / mapi / chsfld.cli / tvstack.h < prev   
Encoding:
C/C++ Source or Header  |  1996-04-11  |  1.1 KB  |  60 lines

  1. ///////////////////////////////////////////////////////////////////////
  2. //
  3. //  TVSTACK.H
  4. //
  5. //
  6. //  Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
  7. ///////////////////////////////////////////////////////////////////////
  8.  
  9.  
  10. #define StackSize 64
  11.  
  12. class CTIStack
  13. {
  14.  
  15. public:
  16.     CTIStack()  { m_ptos = m_ahti; m_pMax = m_ahti + StackSize - 1;}
  17.     ~CTIStack() {};
  18.  
  19.     BOOL Push(HTREEITEM hti);
  20.     HTREEITEM Pop(void);
  21.     BOOL IsEmpty(void);
  22.  
  23. private:
  24.     HTREEITEM m_ahti[StackSize];
  25.     HTREEITEM *m_ptos;
  26.     HTREEITEM *m_pMax;
  27. };
  28.  
  29. inline BOOL CTIStack::Push(HTREEITEM hti)
  30. {
  31.     Assert(m_ptos >= m_ahti);
  32.     Assert(m_ptos <= m_pMax);
  33.  
  34.     if(m_ptos == m_pMax)
  35.         return FALSE;
  36.  
  37.     *m_ptos++ = hti;
  38.     return TRUE;
  39. }
  40.  
  41. inline BOOL CTIStack::IsEmpty(void)
  42. {
  43.     Assert(m_ptos >= m_ahti);
  44.     Assert(m_ptos <= m_pMax);
  45.     
  46.     return (m_ptos == m_ahti);
  47. }
  48.  
  49. inline HTREEITEM CTIStack::Pop(void)
  50. {
  51.     Assert(m_ptos > m_ahti);
  52.     Assert(m_ptos <= m_pMax);
  53.  
  54.     if(m_ptos == m_ahti)
  55.         return NULL;
  56.         
  57.     return *--m_ptos;
  58. }
  59.  
  60.