mirror of https://github.com/tongzx/nt5src
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.
211 lines
3.7 KiB
211 lines
3.7 KiB
/*++
|
|
|
|
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__
|