windows-nt/Source/XPSP1/NT/base/efiutil/efilib/inc/buffer.hxx

180 lines
2 KiB
C++
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
buffer.hxx
Abstract:
This contains all buffer class definition.
No reallocing of buffers is done. A buffer must be big enough
to hold both buffer for a cat.
Environment:
ULIB, User Mode
Notes:
Revision History:
--*/
//
// This class is no longer supported.
//
#define _BUFFER_
#if !defined (_BUFFER_)
#define _BUFFER_
#include "error.hxx"
DECLARE_CLASS( BUFFER );
class BUFFER : public OBJECT {
friend WSTRING;
public:
VIRTUAL
~BUFFER (
);
NONVIRTUAL
BOOLEAN
BuffCat (
IN PCBUFFER BufferToCat
);
NONVIRTUAL
PCVOID
GetBufferPtr (
) CONST;
NONVIRTUAL
BOOLEAN
PutBuffer (
IN PCBUFFER BufferToCopy
);
NONVIRTUAL
ULONG
QueryBytesInBuffer (
) CONST;
NONVIRTUAL
BOOLEAN
SetBuffer (
IN PVOID InitialBuffer,
IN ULONG SizeOfBuffer
);
protected:
DECLARE_CONSTRUCTOR( BUFFER );
NONVIRTUAL
BOOLEAN
BufferCopyAt (
IN PCVOID BufferToCopy,
IN ULONG BytesToCopy,
IN ULONG StartingByte DEFAULT 0
);
NONVIRTUAL
BOOLEAN
DeleteAt (
IN ULONG cbToDelete,
IN ULONG oStartDelete
);
NONVIRTUAL
BOOLEAN
InsertAt (
IN PCVOID BufferToCopy,
IN ULONG cbToCopy,
IN ULONG oStartCopy
);
NONVIRTUAL
PVOID
ReAllocate (
IN ULONG NewCount
);
private:
NONVIRTUAL
VOID
Construct (
);
PVOID pBuffer; // pointer to the data byffer
ULONG cb; // count of bytes used
ULONG _BufSize; // count of bytes in buffer
STATIC
ULONG _ThresHold;
};
INLINE
PCVOID
BUFFER::GetBufferPtr (
) CONST
/*++
Routine Description:
Fetch pointer to internal buffer
Arguments:
None
Return Value:
PCVOID - pointer to internal buffer
--*/
{
return ( pBuffer );
}
INLINE
ULONG
BUFFER::QueryBytesInBuffer (
) CONST
/*++
Routine Description:
Fetch size in bytes of internal buffer
Arguments:
None
Return Value:
ULONG - size of internal buffer in bytes
--*/
{
return ( cb );
}
#endif // _BUFFER_