home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / activedocument / range / recvbuf.hpp < prev   
C/C++ Source or Header  |  1996-05-18  |  2KB  |  63 lines

  1. // ===========================================================================
  2. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. // PARTICULAR PURPOSE.
  6. //
  7. // Copyright 1996 Microsoft Corporation.  All Rights Reserved.
  8. // ===========================================================================
  9. #include <windows.h>
  10.  
  11. // ===========================================================================
  12. //                     RecvBuf utility class
  13. // ===========================================================================
  14. class RecvBuf
  15. {
  16.     DWORD  m_cbBufSize; // size of buffer
  17.     PBYTE  m_pbBufBeg;  // start of buffer
  18.     PBYTE  m_pbBufEnd;  // end of buffer
  19.  
  20. public:
  21.  
  22.     PBYTE  m_pbDataBeg; // start of data
  23.     PBYTE  m_pbDataEnd; // end of data
  24.  
  25.     RecvBuf()
  26.     {
  27.         m_pbBufBeg = NULL;
  28.     }
  29.  
  30.     ~RecvBuf()
  31.     {
  32.         if (m_pbBufBeg)
  33.             LocalFree ((HLOCAL) m_pbBufBeg);
  34.     }
  35.  
  36.     PBYTE BufBeg(void)   { return m_pbBufBeg; }
  37.     DWORD BufSpace(void) { return m_pbBufEnd - m_pbDataEnd; }
  38.     DWORD BufSize(void)  { return m_cbBufSize; }
  39.  
  40.     void  BufReset(void)
  41.     {
  42.         m_pbDataBeg = m_pbBufBeg;
  43.         m_pbDataEnd = m_pbBufBeg;
  44.     }
  45.  
  46.     void BufShift (void)
  47.     {    
  48.         if (m_pbDataBeg > m_pbBufBeg)
  49.         {
  50.             // Shift the data to front of buffer.
  51.             DWORD cbData = m_pbDataEnd - m_pbDataBeg;
  52.             MoveMemory (m_pbBufBeg, m_pbDataBeg, cbData);
  53.             m_pbDataBeg  = m_pbBufBeg;
  54.             m_pbDataEnd  = m_pbBufBeg + cbData;
  55.         }
  56.     }
  57.  
  58.     BOOL BufAlloc (DWORD dwSize);
  59.     BOOL BufScanStr (PSTR pszSearch, DWORD cbSearch);
  60.     BOOL BufScanInt (DWORD *pdwRet, BYTE cDelimit);
  61. };
  62.  
  63.