home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / DATA.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  4.6 KB  |  154 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. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  22. #define DATA_H
  23.  
  24. #include "brtest.h"
  25. #include "util.h"
  26.  
  27. //==============================================================================
  28. //
  29. //  Class:  CData
  30. //
  31. //------------------------------------------------------------------------------
  32. //  Description:        root class for data.
  33. //
  34. //  Public methods:
  35. //
  36. //  Public properties:
  37. //
  38. //  9/3/1997
  39. //  mgates
  40. //
  41. //==============================================================================
  42. class CData
  43. {
  44.     CRITICAL_SECTION    m_crtCDataLock ;    // critical section lock
  45.     INT                 m_iBufferSize ;     // buffer sizes are always in bytes !
  46.  
  47.     VOID InitCData() ;
  48.     
  49.     // P U B L I C
  50.  
  51.     public :
  52.     
  53.         CData() ;
  54.         virtual ~CData() ;
  55.     
  56.         virtual BYTE    *GetBuffer() { return m_lpbBuffer ; }
  57.         virtual INT     GetBufferSize() { return m_iBufferSize ; }
  58.         
  59.     // P R O T E C T E D
  60.         
  61.     protected :
  62.  
  63.         virtual BOOL    CDataSetBuffer(BYTE *lpbBuffer, INT iBufferSize) ;
  64.         VOID    Lock()      { EnterCriticalSection(&m_crtCDataLock) ; }
  65.         VOID    Unlock()    { LeaveCriticalSection(&m_crtCDataLock) ; }
  66.  
  67.         BYTE *m_lpbBuffer ;
  68. } ;
  69.  
  70. //==============================================================================
  71. //
  72. //  Class:  CDataCountup
  73. //
  74. //------------------------------------------------------------------------------
  75. //  Description:
  76. //
  77. //  Public methods:
  78. //
  79. //  Public properties:
  80. //
  81. //  9/12/1997
  82. //  mgates
  83. //
  84. //==============================================================================
  85. class CDataCountup : public CData
  86. {
  87.     BOOL    m_fFirst ;
  88.     INT     m_cDword ;
  89.     BOOL    m_fFreeze ;
  90.     
  91.     // P U B L I C -------------------------------------------------------------
  92.  
  93.     public :
  94.     
  95.         CDataCountup(INT iBufferSize = DEF_DATABUFFERSIZE) ;
  96.         ~CDataCountup() ;
  97.         
  98.         virtual BYTE    *GetBuffer() ;
  99.         BOOL SetBufferSize(INT iBufferSize) ;
  100.         VOID Reset(INT iBaseNumber = 0) ;
  101.         BOOL FreezeCountup(BOOL fFreeze) { m_fFreeze = fFreeze ; return TRUE ; }
  102.         BOOL IsCountupFrozen()  { return m_fFreeze ; }
  103.         
  104.         enum { DEF_DATABUFFERSIZE   = 1024,
  105.                MIN_BUFFERSIZE       = 100,
  106.                MAX_BUFFERSIZE       = 65504     // max UDP is 65507, aligned on
  107.                                                 //  DWORD boundary is 65504
  108.              } ;
  109. } ;
  110.  
  111. //==============================================================================
  112. //
  113. //  Class:  CDataString
  114. //
  115. //------------------------------------------------------------------------------
  116. //  Description:        CData derivative to hold a regular null-terminated
  117. //                      string.
  118. //
  119. //  Public methods:
  120. //                      Set()           sets the content
  121. //                      GetBuffer()     retrieves the null-terminated string
  122. //                      GetBufferSize() returns the length of the string,
  123. //                                        excluding the null-terminator
  124. //
  125. //  Public properties:
  126. //                      - none -
  127. //
  128. //  9/4/1997
  129. //  mgates
  130. //
  131. //==============================================================================
  132. class CDataString : public CData
  133. {
  134.     CString m_strBuffer ;
  135.     
  136.     // P U B L I C
  137.  
  138.     public :
  139.     
  140.         CDataString() { ; }
  141.         CDataString(CString &strBuffer) : m_strBuffer(strBuffer) { ; }
  142.         CDataString(const char *szBuffer) : m_strBuffer(szBuffer) { ; }
  143.         ~CDataString() ;
  144.         
  145.         BOOL Set(CString &strBuffer) ;
  146.         BOOL Set(const char *szBuffer) ;
  147.         
  148.         BYTE *GetBuffer() { return (BYTE *) m_strBuffer.GetBuffer(0) ; }
  149.         INT GetBufferSize() { return m_strBuffer.GetLength() ; }
  150. } ;
  151.  
  152. #pragma option pop /*P_O_Pop*/
  153. #endif  // DATA_H
  154.