windows-nt/Source/XPSP1/NT/sdktools/mep/help/inc/helpmake.h
2020-09-26 16:20:57 +08:00

196 lines
6.7 KiB
C

/*************************************************************************
**
** helpmake.h - misc definitions common to helpmake
**
** Copyright <C> 1987, Microsoft Corporation
**
** Revision History:
**
** 31-Jul-1990 ln csVal takes a param.
** 04-Jul-1990 JCK Add F_LOCALCONTEXT to allow escaped @
** 28-Oct-1988 ln Add parameter to rlCompress
** 12-Aug-1988 ln Add COLMAX, local context routines & pass1a
** [] 18-Dec-1987 LN Created
**
*************************************************************************/
/************************************************************************
**
** Includes required for subsequent definitions in this file.
*/
#include "help.h" // structires & constants
#include "helpfile.h" // help file structure
#include "helpsys.h" // misc commn defs
#include "hmmsg.h" // error message numbers
#include "farutil.h" // far memory utils
#include "vm.h" // virtual memory management
/*************************************************************************
**
** definitions
**
*/
#define TRUE 1
#define FALSE 0
#define ASTACKSIZE 50 // size of attribute stack
#define BUFSIZE 512 // size of line buffers
#define CBFBUF 64000 // size of far buffer(s)
#define CBIOBUF 16000 // file buffer size (60k)
#define CBRTFMAX 40 // max length of RTF keyword
#define CBSZCONTEXT 60000 // context string buffer size
#define CCONTEXTMAX 10000 // max number of contexts
#define CTOPICSMAX 10000 // max number of topics
#define COLMAX 250 // max column we can run into
#define FBUFSIZE 2048 // size of buffers used
#define MAXBACKC 128 // max number of back-up characters
#define F_RTF 1 // RTF file type
#define F_QH 2 // QuickHelp format
#define F_MINASCII 3 // minimal ascii
#define F_MAX 3 // maximum
#define F_LOCALCONTEXT 0xff // marker for local context
#define CMP_RUNLENGTH 0x01 // runlength encoding
#define CMP_KEYWORD 0x02 // base keyword encoding
#define CMP_KEYWORD2 0x04 // "agressive" keyword
#define CMP_HUFFMAN 0x08 // huffman encoding
#define CMP_MAX 0x0f // maximum
/*
** formatting tokens. Embedded in non-rtf text, and converter from (longer)
** rtf equivalents by the RTF stripper.
*/
#define FM_ANCHOR 'a' | 0xff00 // anchor cross reference
#define FM_PLAIN 'p' | 0xff00 // plain text
#define FM_BOLD 'b' | 0xff00 // bold text
#define FM_ITALIC 'i' | 0xff00 // italic
#define FM_HIDDEN 'v' | 0xff00 // hidden text
#define FM_UNDERLINE 'u' | 0xff00 // underline
#define FM_DEFAULT 'd' | 0xff00 // paragraph defaults
#define FM_FINDENT 'f' | 0xff00 // first line indent
#define FM_LINDENT 'l' | 0xff00 // paragraph left indent
#define FM_TAB 't' | 0xff00 // tab character
#define FM_LINE 'n' | 0xff00 // exlicit line break
#define FM_BLOCKBEG '{' | 0xff00 // block begin
#define FM_BLOCKEND '}' | 0xff00 // block begin
typedef char buffer[256]; // line buffer
typedef char f; // boolean
struct kwi { // keyword info structure
char far *fpszKw; // pointer to the actual keyword
int cbKw; // length of keyword
ushort cKwInst; // count of keyword instances
ushort cKwSpInst; // count of keyword-space instances
int savings; // computed savings for this word
};
/*
** transitem
** dotcommand translation item
*/
struct transitem {
char *pdotcmd; // original dot command
int cbdotcmd; // length of said dot command
char *pnewcmd; // replacement command
char cbnewcmd; // length of said new cmd
};
// context string
// context string item in a linked list
//
typedef struct _cshdr {
va vaNext; // next item in list or NULL
va vaTopic; // va of topic
uchar cbszCs; // length of context string + null
} cshdr;
typedef struct _cs {
cshdr cshdr; // header info
buffer szCs; // context string + terminating null
} cs;
/*
** verbosity level definitions.
*/
#define V_BANNER (verbose >= 1) // (default) print banner
#define V_PASSES (verbose >= 2) // print pass names
#define V_CONTEXTS (verbose >= 3) // print contexts on 1st pass
#define V_CONTEXTS2 (verbose >= 4) // print contexts on each pass
#define V_STEPS (verbose >= 5) // print intermediate steps
#define V_STATS (verbose >= 6) // print statistics
#define V_DSTATS (verbose >= 10) // print debug statistics
#define V_ARGS (verbose >= 20) // print prog arguments
#define V_KEYWORD (verbose >= 30) // print keyword table
#define V_HUFFMAN (verbose >= 40) // print huffman table
/************************************************************************
**
** HelpMake function forward definitions
*/
void pascal AddContextString (char *);
va pascal AddKw (uchar far *);
void pascal addXref (uchar *, uchar *, ushort, ushort);
void pascal BackUp (int);
void pascal BackUpToken (int);
uchar * pascal basename (uchar *);
void pascal ContextVA (va);
ushort pascal counttab (struct hnode *, int, ulong);
void pascal decode (int, char **, int, f);
int pascal DofarWrite (int, uchar far *, int);
void pascal DumpRtf (uchar far *, nc, int, f);
void pascal encode (int, char **, int);
f pascal fControlLine (void);
va pascal FindKw (uchar far *, f);
int pascal getcProc (void);
int pascal getcQH (void);
int pascal getcRTF (void);
void pascal help ();
void pascal hmerror (ushort, uchar *, ulong);
f pascal hmmsg (ushort);
int hnodecomp (struct hnode **, struct hnode **);
void pascal HuffBuild (void);
void pascal HuffCompress (uchar far *, uchar far *);
ushort pascal HuffDump (void);
void pascal HuffInit (void);
void pascal HuffFreq (uchar far *, ushort);
void pascal HuffStats (void);
uchar * pascal getFarMsg (ushort, uchar *);
void pascal InitOutput (int);
void pascal kwAnal (uchar far *, int);
void pascal kwCompress (uchar far *);
f pascal kwSepar (char);
mh pascal LoadPortion (int, mh);
ushort pascal LocalContext (uchar *, ushort);
void pascal LocalContextFix (uchar far *);
ushort pascal MapLocalContext (ushort);
int pascal NextChar (void);
char * pascal NextContext (f);
uchar * pascal NextLine (void);
long pascal NextNum (void);
void pascal parserefs (uchar *, uchar *);
void pascal pass1 (int, char **);
void pascal pass1a (void);
void pascal pass2 (void);
void pascal pass3 (void);
void pascal passfa (void);
void pascal passfb (int);
uchar pascal PopAttr (void);
f pascal procRTF (char *, char *);
void pascal PushAttr (uchar);
void pascal rlCompress (uchar far *, ushort);
int pascal SkipDest (int,char **);
void pascal SkipSpace (void);
void pascal SkipVal (char **);
void pascal SortKw (void);
void pascal split (int, char **);
uchar * pascal trim (uchar *, f);
#ifdef DEBUG
void pascal csVal (va);
#else
#define csVal(x)
#endif