212 lines
3.7 KiB
C++
212 lines
3.7 KiB
C++
/*++
|
||
|
||
Copyright (c) 1991-2000 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
PAGER
|
||
|
||
Abstract:
|
||
|
||
This module contains the definition for the PAGER class, used by
|
||
the "More" utility
|
||
|
||
Author:
|
||
|
||
Ramon Juan San Andres (RamonSA) 15-Apr-1990
|
||
|
||
Notes:
|
||
|
||
|
||
--*/
|
||
|
||
|
||
#if !defined (_PAGER_)
|
||
|
||
#define _PAGER_
|
||
|
||
#include "object.hxx"
|
||
#include "wstring.hxx"
|
||
#include "bstring.hxx"
|
||
#include "stream.hxx"
|
||
|
||
//
|
||
// Forward references
|
||
//
|
||
DECLARE_CLASS( SCREEN );
|
||
DECLARE_CLASS( PROGRAM );
|
||
DECLARE_CLASS( PAGER );
|
||
|
||
class PAGER : public OBJECT {
|
||
|
||
public:
|
||
|
||
DECLARE_CONSTRUCTOR( PAGER );
|
||
|
||
DECLARE_CAST_MEMBER_FUNCTION( PAGER );
|
||
|
||
NONVIRTUAL
|
||
~PAGER (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
Initialize (
|
||
IN PSTREAM Stream,
|
||
IN PPROGRAM Program
|
||
);
|
||
|
||
NONVIRTUAL
|
||
VOID
|
||
ClearLine (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
VOID
|
||
DisplayBlankLine (
|
||
IN ULONG Lines,
|
||
IN BOOLEAN NewLine DEFAULT TRUE
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
DisplayPage (
|
||
IN ULONG LinesInPage,
|
||
IN BOOLEAN ClearScreen,
|
||
IN BOOLEAN SqueezeBlankLines,
|
||
IN BOOLEAN ExpandFormFeed,
|
||
IN ULONG TabExp
|
||
);
|
||
|
||
NONVIRTUAL
|
||
VOID
|
||
DisplayString (
|
||
IN PWSTRING String,
|
||
OUT PCHNUM Position,
|
||
IN CHNUM Length,
|
||
IN BOOLEAN NewLine DEFAULT TRUE
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
ThereIsMoreToPage (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
ULONGLONG
|
||
QueryCurrentByte (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
ULONG
|
||
QueryCurrentLine (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryLinesPerPage (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SkipLines (
|
||
IN ULONG LinesToSkip,
|
||
IN ULONG TabExp
|
||
);
|
||
|
||
#ifdef FE_SB // v-junm - 09/24/93
|
||
|
||
BOOLEAN
|
||
IsLeadByte(
|
||
IN BYTE c
|
||
);
|
||
|
||
#endif
|
||
|
||
private:
|
||
|
||
VOID
|
||
Construct (
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
ReadNextString (
|
||
IN ULONG TabExp
|
||
);
|
||
|
||
PSTREAM _Stream; // Stream to page
|
||
ULONG _CurrentLineNumber; // Current line number
|
||
|
||
ULONG _RowsInPage; // Rows per page
|
||
USHORT _ColumnsInPage; // Columns per page
|
||
USHORT _ColumnsInScreen; // Columns in screen
|
||
|
||
PWSTRING _String; // String with line
|
||
CHNUM _Position; // Position within String
|
||
|
||
PSCREEN _Screen; // Pointer to screen
|
||
PSTREAM _StandardOutput; // Standard output
|
||
PWSTRING _Blanks; // Blank characters
|
||
PWSTRING _BlankLine; // A line of blanks
|
||
|
||
PBSTRING _BString; // Temp ASCII buffer by PAGER::ReadNextString
|
||
};
|
||
|
||
INLINE
|
||
BOOLEAN
|
||
PAGER::ThereIsMoreToPage (
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Finds out if there is more stuff to page
|
||
|
||
Arguments:
|
||
|
||
none
|
||
|
||
Return Value:
|
||
|
||
True if there is more to page
|
||
FALSE otherwise
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return !(_Stream->IsAtEnd());
|
||
|
||
}
|
||
|
||
INLINE
|
||
ULONG
|
||
PAGER::QueryCurrentLine (
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Queries the current line number
|
||
|
||
Arguments:
|
||
|
||
none
|
||
|
||
Return Value:
|
||
|
||
The current line number
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return _CurrentLineNumber;
|
||
|
||
}
|
||
|
||
#endif // __PAGER__
|