Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

93 lines
1.8 KiB

/*++
Copyright (C) Microsoft Corporation 1999
Module Name:
buffers
Abstract:
This header file describes the class for a high-efficency buffer management
tool.
Author:
Doug Barlow (dbarlow) 9/2/1999
Remarks:
?Remarks?
Notes:
?Notes?
--*/
#ifndef _BUFFERS_H_
#define _BUFFERS_H_
#ifdef __cplusplus
class CBufferReference;
//
//==============================================================================
//
// CBuffer
//
class CBuffer
{
public:
// Constructors & Destructor
CBuffer(void);
CBuffer(ULONG cbLength);
CBuffer(LPCBYTE pbData, ULONG cbLength);
virtual ~CBuffer();
// Methods
void Empty(void);
void Set(LPCBYTE pbData, ULONG cbLength);
void Copy(LPCBYTE pbData, ULONG cbLength);
void Append(LPCBYTE pbData, ULONG cbLength);
LPBYTE Extend(ULONG cbLength);
ULONG Space(void) const;
LPBYTE Space(ULONG cbLength);
ULONG Length(void) const;
LPCBYTE Length(ULONG cbLength);
LPCBYTE Value(ULONG nOffset = 0) const;
LPBYTE Access(ULONG nOffset = 0) const;
BOOL IsEmpty(void) const
{ return 0 == Length(); };
// Operators
operator LPCBYTE()
{ return Value(); };
operator LPBYTE()
{ return Access(); };
BYTE operator [](ULONG nOffset)
{ return *Value(nOffset); };
CBuffer &operator =(const CBuffer &bf)
{ Set(bf.m_pbfr);
m_cbDataLength = bf.m_cbDataLength;
return *this; };
CBuffer &operator +=(const CBuffer &bf)
{ Append(bf.Value(), bf.Length());
return *this; };
protected:
// Properties
CBufferReference *m_pbfr;
ULONG m_cbDataLength;
// Methods
void Init(void);
void Set(CBufferReference *pbfr);
};
#endif //__cplusplus
#endif // _BUFFERS_H_