Source code of Windows XP (NT5)
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.

195 lines
6.7 KiB

  1. /*************************************************************************
  2. **
  3. ** helpmake.h - misc definitions common to helpmake
  4. **
  5. ** Copyright <C> 1987, Microsoft Corporation
  6. **
  7. ** Revision History:
  8. **
  9. ** 31-Jul-1990 ln csVal takes a param.
  10. ** 04-Jul-1990 JCK Add F_LOCALCONTEXT to allow escaped @
  11. ** 28-Oct-1988 ln Add parameter to rlCompress
  12. ** 12-Aug-1988 ln Add COLMAX, local context routines & pass1a
  13. ** [] 18-Dec-1987 LN Created
  14. **
  15. *************************************************************************/
  16. /************************************************************************
  17. **
  18. ** Includes required for subsequent definitions in this file.
  19. */
  20. #include "help.h" // structires & constants
  21. #include "helpfile.h" // help file structure
  22. #include "helpsys.h" // misc commn defs
  23. #include "hmmsg.h" // error message numbers
  24. #include "farutil.h" // far memory utils
  25. #include "vm.h" // virtual memory management
  26. /*************************************************************************
  27. **
  28. ** definitions
  29. **
  30. */
  31. #define TRUE 1
  32. #define FALSE 0
  33. #define ASTACKSIZE 50 // size of attribute stack
  34. #define BUFSIZE 512 // size of line buffers
  35. #define CBFBUF 64000 // size of far buffer(s)
  36. #define CBIOBUF 16000 // file buffer size (60k)
  37. #define CBRTFMAX 40 // max length of RTF keyword
  38. #define CBSZCONTEXT 60000 // context string buffer size
  39. #define CCONTEXTMAX 10000 // max number of contexts
  40. #define CTOPICSMAX 10000 // max number of topics
  41. #define COLMAX 250 // max column we can run into
  42. #define FBUFSIZE 2048 // size of buffers used
  43. #define MAXBACKC 128 // max number of back-up characters
  44. #define F_RTF 1 // RTF file type
  45. #define F_QH 2 // QuickHelp format
  46. #define F_MINASCII 3 // minimal ascii
  47. #define F_MAX 3 // maximum
  48. #define F_LOCALCONTEXT 0xff // marker for local context
  49. #define CMP_RUNLENGTH 0x01 // runlength encoding
  50. #define CMP_KEYWORD 0x02 // base keyword encoding
  51. #define CMP_KEYWORD2 0x04 // "agressive" keyword
  52. #define CMP_HUFFMAN 0x08 // huffman encoding
  53. #define CMP_MAX 0x0f // maximum
  54. /*
  55. ** formatting tokens. Embedded in non-rtf text, and converter from (longer)
  56. ** rtf equivalents by the RTF stripper.
  57. */
  58. #define FM_ANCHOR 'a' | 0xff00 // anchor cross reference
  59. #define FM_PLAIN 'p' | 0xff00 // plain text
  60. #define FM_BOLD 'b' | 0xff00 // bold text
  61. #define FM_ITALIC 'i' | 0xff00 // italic
  62. #define FM_HIDDEN 'v' | 0xff00 // hidden text
  63. #define FM_UNDERLINE 'u' | 0xff00 // underline
  64. #define FM_DEFAULT 'd' | 0xff00 // paragraph defaults
  65. #define FM_FINDENT 'f' | 0xff00 // first line indent
  66. #define FM_LINDENT 'l' | 0xff00 // paragraph left indent
  67. #define FM_TAB 't' | 0xff00 // tab character
  68. #define FM_LINE 'n' | 0xff00 // exlicit line break
  69. #define FM_BLOCKBEG '{' | 0xff00 // block begin
  70. #define FM_BLOCKEND '}' | 0xff00 // block begin
  71. typedef char buffer[256]; // line buffer
  72. typedef char f; // boolean
  73. struct kwi { // keyword info structure
  74. char far *fpszKw; // pointer to the actual keyword
  75. int cbKw; // length of keyword
  76. ushort cKwInst; // count of keyword instances
  77. ushort cKwSpInst; // count of keyword-space instances
  78. int savings; // computed savings for this word
  79. };
  80. /*
  81. ** transitem
  82. ** dotcommand translation item
  83. */
  84. struct transitem {
  85. char *pdotcmd; // original dot command
  86. int cbdotcmd; // length of said dot command
  87. char *pnewcmd; // replacement command
  88. char cbnewcmd; // length of said new cmd
  89. };
  90. // context string
  91. // context string item in a linked list
  92. //
  93. typedef struct _cshdr {
  94. va vaNext; // next item in list or NULL
  95. va vaTopic; // va of topic
  96. uchar cbszCs; // length of context string + null
  97. } cshdr;
  98. typedef struct _cs {
  99. cshdr cshdr; // header info
  100. buffer szCs; // context string + terminating null
  101. } cs;
  102. /*
  103. ** verbosity level definitions.
  104. */
  105. #define V_BANNER (verbose >= 1) // (default) print banner
  106. #define V_PASSES (verbose >= 2) // print pass names
  107. #define V_CONTEXTS (verbose >= 3) // print contexts on 1st pass
  108. #define V_CONTEXTS2 (verbose >= 4) // print contexts on each pass
  109. #define V_STEPS (verbose >= 5) // print intermediate steps
  110. #define V_STATS (verbose >= 6) // print statistics
  111. #define V_DSTATS (verbose >= 10) // print debug statistics
  112. #define V_ARGS (verbose >= 20) // print prog arguments
  113. #define V_KEYWORD (verbose >= 30) // print keyword table
  114. #define V_HUFFMAN (verbose >= 40) // print huffman table
  115. /************************************************************************
  116. **
  117. ** HelpMake function forward definitions
  118. */
  119. void pascal AddContextString (char *);
  120. va pascal AddKw (uchar far *);
  121. void pascal addXref (uchar *, uchar *, ushort, ushort);
  122. void pascal BackUp (int);
  123. void pascal BackUpToken (int);
  124. uchar * pascal basename (uchar *);
  125. void pascal ContextVA (va);
  126. ushort pascal counttab (struct hnode *, int, ulong);
  127. void pascal decode (int, char **, int, f);
  128. int pascal DofarWrite (int, uchar far *, int);
  129. void pascal DumpRtf (uchar far *, nc, int, f);
  130. void pascal encode (int, char **, int);
  131. f pascal fControlLine (void);
  132. va pascal FindKw (uchar far *, f);
  133. int pascal getcProc (void);
  134. int pascal getcQH (void);
  135. int pascal getcRTF (void);
  136. void pascal help ();
  137. void pascal hmerror (ushort, uchar *, ulong);
  138. f pascal hmmsg (ushort);
  139. int hnodecomp (struct hnode **, struct hnode **);
  140. void pascal HuffBuild (void);
  141. void pascal HuffCompress (uchar far *, uchar far *);
  142. ushort pascal HuffDump (void);
  143. void pascal HuffInit (void);
  144. void pascal HuffFreq (uchar far *, ushort);
  145. void pascal HuffStats (void);
  146. uchar * pascal getFarMsg (ushort, uchar *);
  147. void pascal InitOutput (int);
  148. void pascal kwAnal (uchar far *, int);
  149. void pascal kwCompress (uchar far *);
  150. f pascal kwSepar (char);
  151. mh pascal LoadPortion (int, mh);
  152. ushort pascal LocalContext (uchar *, ushort);
  153. void pascal LocalContextFix (uchar far *);
  154. ushort pascal MapLocalContext (ushort);
  155. int pascal NextChar (void);
  156. char * pascal NextContext (f);
  157. uchar * pascal NextLine (void);
  158. long pascal NextNum (void);
  159. void pascal parserefs (uchar *, uchar *);
  160. void pascal pass1 (int, char **);
  161. void pascal pass1a (void);
  162. void pascal pass2 (void);
  163. void pascal pass3 (void);
  164. void pascal passfa (void);
  165. void pascal passfb (int);
  166. uchar pascal PopAttr (void);
  167. f pascal procRTF (char *, char *);
  168. void pascal PushAttr (uchar);
  169. void pascal rlCompress (uchar far *, ushort);
  170. int pascal SkipDest (int,char **);
  171. void pascal SkipSpace (void);
  172. void pascal SkipVal (char **);
  173. void pascal SortKw (void);
  174. void pascal split (int, char **);
  175. uchar * pascal trim (uchar *, f);
  176. #ifdef DEBUG
  177. void pascal csVal (va);
  178. #else
  179. #define csVal(x)
  180. #endif