120 lines
2.7 KiB
C++
120 lines
2.7 KiB
C++
/*****************************************************************/
|
|
/** Microsoft Windows for Workgroups **/
|
|
/** Copyright (C) Microsoft Corp., 1991-1992 **/
|
|
/*****************************************************************/
|
|
|
|
/* BUFFER.H -- Definition of BUFFER class.
|
|
*
|
|
* History:
|
|
* 03/22/93 gregj Created
|
|
* 03/24/93 gregj Created base class, GLOBAL_BUFFER
|
|
* 10/06/93 gregj Removed LOCAL_BUFFER and GLOBAL_BUFFER because
|
|
* they're incompatible with Win32.
|
|
*/
|
|
|
|
#ifndef _INC_BUFFER
|
|
#define _INC_BUFFER
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: BUFFER_BASE
|
|
|
|
SYNOPSIS: Base class for transient buffer classes
|
|
|
|
INTERFACE: BUFFER_BASE()
|
|
Construct with optional size of buffer to allocate.
|
|
|
|
Resize()
|
|
Resize buffer to specified size. Returns TRUE if
|
|
successful.
|
|
|
|
QuerySize()
|
|
Return the current size of the buffer in bytes.
|
|
|
|
QueryPtr()
|
|
Return a pointer to the buffer.
|
|
|
|
PARENT: None
|
|
|
|
USES: None
|
|
|
|
CAVEATS: This is an abstract class, which unifies the interface
|
|
of BUFFER, GLOBAL_BUFFER, etc.
|
|
|
|
NOTES: In standard OOP fashion, the buffer is deallocated in
|
|
the destructor.
|
|
|
|
HISTORY:
|
|
03/24/93 gregj Created base class
|
|
|
|
**************************************************************************/
|
|
|
|
class BUFFER_BASE
|
|
{
|
|
protected:
|
|
UINT _cb;
|
|
|
|
virtual BOOL Alloc( UINT cbBuffer ) = 0;
|
|
virtual BOOL Realloc( UINT cbBuffer ) = 0;
|
|
|
|
public:
|
|
BUFFER_BASE()
|
|
{ _cb = 0; } // buffer not allocated yet
|
|
~BUFFER_BASE()
|
|
{ _cb = 0; } // buffer size no longer valid
|
|
BOOL Resize( UINT cbNew );
|
|
UINT QuerySize() const { return _cb; };
|
|
};
|
|
|
|
#define GLOBAL_BUFFER BUFFER
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: BUFFER
|
|
|
|
SYNOPSIS: Wrapper class for new and delete
|
|
|
|
INTERFACE: BUFFER()
|
|
Construct with optional size of buffer to allocate.
|
|
|
|
Resize()
|
|
Resize buffer to specified size. Only works if the
|
|
buffer hasn't been allocated yet.
|
|
|
|
QuerySize()
|
|
Return the current size of the buffer in bytes.
|
|
|
|
QueryPtr()
|
|
Return a pointer to the buffer.
|
|
|
|
PARENT: BUFFER_BASE
|
|
|
|
CAVEATS:
|
|
|
|
NOTES: In standard OOP fashion, the buffer is deallocated in
|
|
the destructor.
|
|
|
|
HISTORY:
|
|
03/24/93 gregj Created
|
|
|
|
**************************************************************************/
|
|
|
|
class BUFFER : public BUFFER_BASE
|
|
{
|
|
protected:
|
|
CHAR *_lpBuffer;
|
|
|
|
virtual BOOL Alloc( UINT cbBuffer );
|
|
virtual BOOL Realloc( UINT cbBuffer );
|
|
|
|
public:
|
|
BUFFER( UINT cbInitial=0 );
|
|
~BUFFER();
|
|
LPVOID QueryPtr() const { return (LPVOID)_lpBuffer; }
|
|
operator void*() const { return (void *)_lpBuffer; }
|
|
};
|
|
|
|
#define LOCAL_BUFFER BUFFER
|
|
|
|
#endif /* _INC_BUFFER */
|