home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / data.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  5KB  |  152 lines

  1.  
  2. /*
  3. ================================================================================
  4.     ========================================================================
  5.     ========================================================================
  6.  
  7.     File:           cdata.h
  8.     Description:    headers for CData and child classes
  9.     Created:        9/3/1997
  10.     Author:         Matthijs Gates
  11.     Mail:           mgates@microsoft.com
  12.  
  13.     Copyright (C) 1997  Microsoft Corporation.  All Rights Reserved.
  14.  
  15.     ========================================================================
  16.     ========================================================================
  17. ================================================================================
  18. */
  19.  
  20. #if !defined(DATA_H)
  21. #define DATA_H
  22.  
  23. #include "brtest.h"
  24. #include "util.h"
  25.  
  26. //==============================================================================
  27. //
  28. //  Class:  CData
  29. //
  30. //------------------------------------------------------------------------------
  31. //  Description:        root class for data.
  32. //
  33. //  Public methods:
  34. //
  35. //  Public properties:
  36. //
  37. //  9/3/1997
  38. //  mgates
  39. //
  40. //==============================================================================
  41. class CData
  42. {
  43.     CRITICAL_SECTION    m_crtCDataLock ;    // critical section lock
  44.     INT                 m_iBufferSize ;     // buffer sizes are always in bytes !
  45.  
  46.     VOID InitCData() ;
  47.     
  48.     // P U B L I C
  49.  
  50.     public :
  51.     
  52.         CData() ;
  53.         virtual ~CData() ;
  54.     
  55.         virtual BYTE    *GetBuffer() { return m_lpbBuffer ; }
  56.         virtual INT     GetBufferSize() { return m_iBufferSize ; }
  57.         
  58.     // P R O T E C T E D
  59.         
  60.     protected :
  61.  
  62.         virtual BOOL    CDataSetBuffer(BYTE *lpbBuffer, INT iBufferSize) ;
  63.         VOID    Lock()      { EnterCriticalSection(&m_crtCDataLock) ; }
  64.         VOID    Unlock()    { LeaveCriticalSection(&m_crtCDataLock) ; }
  65.  
  66.         BYTE *m_lpbBuffer ;
  67. } ;
  68.  
  69. //==============================================================================
  70. //
  71. //  Class:  CDataCountup
  72. //
  73. //------------------------------------------------------------------------------
  74. //  Description:
  75. //
  76. //  Public methods:
  77. //
  78. //  Public properties:
  79. //
  80. //  9/12/1997
  81. //  mgates
  82. //
  83. //==============================================================================
  84. class CDataCountup : public CData
  85. {
  86.     BOOL    m_fFirst ;
  87.     INT     m_cDword ;
  88.     BOOL    m_fFreeze ;
  89.     
  90.     // P U B L I C -------------------------------------------------------------
  91.  
  92.     public :
  93.     
  94.         CDataCountup(INT iBufferSize = DEF_DATABUFFERSIZE) ;
  95.         ~CDataCountup() ;
  96.         
  97.         virtual BYTE    *GetBuffer() ;
  98.         BOOL SetBufferSize(INT iBufferSize) ;
  99.         VOID Reset(INT iBaseNumber = 0) ;
  100.         BOOL FreezeCountup(BOOL fFreeze) { m_fFreeze = fFreeze ; return TRUE ; }
  101.         BOOL IsCountupFrozen()  { return m_fFreeze ; }
  102.         
  103.         enum { DEF_DATABUFFERSIZE   = 1024,
  104.                MIN_BUFFERSIZE       = 100,
  105.                MAX_BUFFERSIZE       = 65504     // max UDP is 65507, aligned on
  106.                                                 //  DWORD boundary is 65504
  107.              } ;
  108. } ;
  109.  
  110. //==============================================================================
  111. //
  112. //  Class:  CDataString
  113. //
  114. //------------------------------------------------------------------------------
  115. //  Description:        CData derivative to hold a regular null-terminated
  116. //                      string.
  117. //
  118. //  Public methods:
  119. //                      Set()           sets the content
  120. //                      GetBuffer()     retrieves the null-terminated string
  121. //                      GetBufferSize() returns the length of the string,
  122. //                                        excluding the null-terminator
  123. //
  124. //  Public properties:
  125. //                      - none -
  126. //
  127. //  9/4/1997
  128. //  mgates
  129. //
  130. //==============================================================================
  131. class CDataString : public CData
  132. {
  133.     CString m_strBuffer ;
  134.     
  135.     // P U B L I C
  136.  
  137.     public :
  138.     
  139.         CDataString() { ; }
  140.         CDataString(CString &strBuffer) : m_strBuffer(strBuffer) { ; }
  141.         CDataString(const char *szBuffer) : m_strBuffer(szBuffer) { ; }
  142.         ~CDataString() ;
  143.         
  144.         BOOL Set(CString &strBuffer) ;
  145.         BOOL Set(const char *szBuffer) ;
  146.         
  147.         BYTE *GetBuffer() { return (BYTE *) m_strBuffer.GetBuffer(0) ; }
  148.         INT GetBufferSize() { return m_strBuffer.GetLength() ; }
  149. } ;
  150.  
  151. #endif  // DATA_H
  152.