218 lines
4.3 KiB
C++
218 lines
4.3 KiB
C++
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1991 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
bufstrm.hxx
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains the declaration for the BUFFER_STREAM class.
|
|||
|
The BUFFER_STREAM is an abstract class derived from STREAM, that
|
|||
|
provides a buffer for read operations in STREAM.
|
|||
|
Buffer for read operations is needed in order to read
|
|||
|
STRINGs from streams.
|
|||
|
|
|||
|
Buffer for write operation is not currently implemented. It should
|
|||
|
be implemented if we notice that write operations are slow.
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Jaime Sasson (jaimes) 12-Apr-1991
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
ULIB, User Mode
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
#if !defined( _BUFFER_STREAM_ )
|
|||
|
|
|||
|
#define _BUFFER_STREAM_
|
|||
|
|
|||
|
#include "stream.hxx"
|
|||
|
#include "wstring.hxx"
|
|||
|
|
|||
|
DECLARE_CLASS( STREAM );
|
|||
|
|
|||
|
|
|||
|
class BUFFER_STREAM : public STREAM {
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
~BUFFER_STREAM(
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
IsAtEnd(
|
|||
|
) CONST;
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
STREAMACCESS
|
|||
|
QueryAccess(
|
|||
|
) CONST PURE;
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
VOID
|
|||
|
SetStreamTypeANSI(
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
DetermineStreamType(
|
|||
|
IN OUT PBYTE *Buffer,
|
|||
|
IN ULONG BufferSize
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
Read(
|
|||
|
OUT PBYTE Buffer,
|
|||
|
IN ULONG BytesToRead,
|
|||
|
OUT PULONG BytesRead
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
ReadChar(
|
|||
|
OUT PWCHAR Char,
|
|||
|
IN BOOLEAN Unicode DEFAULT FALSE
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
ReadMbString(
|
|||
|
IN PSTR String,
|
|||
|
IN DWORD BufferSize,
|
|||
|
INOUT PDWORD StringSize,
|
|||
|
IN PSTR Delimiters,
|
|||
|
IN BOOLEAN ExpandTabs DEFAULT FALSE,
|
|||
|
IN DWORD TabExp DEFAULT 8
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
ReadWString(
|
|||
|
IN PWSTR String,
|
|||
|
IN DWORD BufferSize,
|
|||
|
INOUT PDWORD StringSize,
|
|||
|
IN PWSTR Delimiters,
|
|||
|
IN BOOLEAN ExpandTabs DEFAULT FALSE,
|
|||
|
IN DWORD TabExp DEFAULT 8
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
ReadString(
|
|||
|
OUT PWSTRING String,
|
|||
|
IN PWSTRING Delimiters,
|
|||
|
IN BOOLEAN Unicode DEFAULT FALSE
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
protected:
|
|||
|
|
|||
|
DECLARE_CONSTRUCTOR( BUFFER_STREAM );
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
BOOLEAN
|
|||
|
Initialize(
|
|||
|
IN ULONG BufferSize
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
VOID
|
|||
|
Construct(
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
AdvanceBufferPointer(
|
|||
|
IN ULONG NumberOfBytes
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
EndOfFile(
|
|||
|
) CONST PURE;
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
BOOLEAN
|
|||
|
FillBuffer(
|
|||
|
IN PBYTE Buffer,
|
|||
|
IN ULONG BufferSize,
|
|||
|
OUT PULONG BytesRead
|
|||
|
) PURE;
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
ULONG
|
|||
|
FlushBuffer(
|
|||
|
);
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
PCBYTE
|
|||
|
GetBuffer(
|
|||
|
PULONG BytesInBuffer
|
|||
|
);
|
|||
|
|
|||
|
NONVIRTUAL
|
|||
|
ULONG
|
|||
|
QueryBytesInBuffer(
|
|||
|
) CONST;
|
|||
|
|
|||
|
VIRTUAL
|
|||
|
HANDLE
|
|||
|
QueryHandle(
|
|||
|
) CONST PURE;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
|
|||
|
PBYTE _Buffer;
|
|||
|
ULONG _BufferSize;
|
|||
|
PBYTE _CurrentByte;
|
|||
|
ULONG _BytesInBuffer;
|
|||
|
INT _BufferStreamType;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
INLINE
|
|||
|
ULONG
|
|||
|
BUFFER_STREAM::QueryBytesInBuffer(
|
|||
|
) CONST
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Returns the number of bytes in the buffer.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
None.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
ULONG - Number of bytes in the buffer.
|
|||
|
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
|
|||
|
{
|
|||
|
return( _BytesInBuffer );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#endif // _BUFFER_STREAM_
|