home *** CD-ROM | disk | FTP | other *** search
- /*##############################################################################
-
- FUNNNELWEB COPYRIGHT
- ====================
- FunnelWeb is a literate-programming macro preprocessor.
-
- Copyright (C) 1992 Ross N. Williams.
-
- Ross N. Williams
- ross@spam.adelaide.edu.au
- 16 Lerwick Avenue, Hazelwood Park 5066, Australia.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of Version 2 of the GNU General Public License as
- published by the Free Software Foundation.
-
- This program is distributed WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See Version 2 of the GNU General Public License for more details.
-
- You should have received a copy of Version 2 of the GNU General Public
- License along with this program. If not, you can FTP the license from
- prep.ai.mit.edu/pub/gnu/COPYING-2 or write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Section 2a of the license requires that all changes to this file be
- recorded prominently in this file. Please record all changes here.
-
- Programmers:
- RNW Ross N. Williams ross@spam.adelaide.edu.au
-
- Changes:
- 07-May-1992 RNW Program prepared for release under GNU GPL V2.
-
- ##############################################################################*/
-
-
- /******************************************************************************/
- /* HELP.H */
- /******************************************************************************/
- /* */
- /* HELP PACKAGE */
- /* ============ */
- /* As I came closer and closer to completing the release version of */
- /* FunnelWeb, I noticed that the online help was a bit of a mess. I had */
- /* random commands and command line options here and there to provide bits of */
- /* information. After a close look and some thought, I decided to centralize */
- /* all of FunnelWeb's help messages into one module, and provide a clean and */
- /* consistent interface to the help messages, both in the command line, and */
- /* in interactive mode. */
- /* */
- /* The result is that all of the help messages have been moved to */
- /* this module. Each help message has a name consisting of a string. One */
- /* particular message has the name "MENU" and is the root help message (the */
- /* "menu message"). It contains a list of all the help messages available and */
- /* their names. */
- /* */
- /* The command line connects to help by providing a single command line */
- /* option called +Hx which has the effect of displaying the help message */
- /* called x. The default is -Hmenu. The "-" means that help is not invoked by */
- /* default, but that if the user specifies +H, the menu message will be */
- /* printed. If the user specifies (say) +Hsloth, message SLOTH will be */
- /* displayed. The menu message is printed if the user invokes FunnelWeb with */
- /* no actions. The +H option is classified as an action option. */
- /* */
- /* Interactive mode connects to help through the HELP command. In the spirit */
- /* of the command line interface, if no argument is given, the menu message */
- /* is displayed. If an argument is given, the specified message is written */
- /* out. */
- /* */
- /* This module contributes two things to this process: */
- /* 1) Provides a mapping from message names to messages. */
- /* 2) Acts as a repository for the messages themselves. */
- /* */
- /******************************************************************************/
-
- /* Ensure that the body of this header file is included at most once. */
- #ifndef DONE_HELP
- #define DONE_HELP
-
- /******************************************************************************/
-
- #include "style.h"
-
- /******************************************************************************/
-
- /* Place a bound on help name length, and define an array type to hold them. */
- #define HL_NMLEN 20
- typedef char hn_t[HL_NMLEN+1];
-
- /******************************************************************************/
-
- /* Each of the messages has a unique symbol and number. The reason for */
- /* defining these symbols instead of just using the message names in the code */
- /* is that doing it this way allows us to change the exact message names */
- /* without having to track down all their occurences in the code, or getting */
- /* nasty surprises later down the track at run time (the compiler will tell */
- /* you in a call containing HL_SLT that the symbol doesn't exist, but it */
- /* won't complain about a string argument that just happens not to be the */
- /* name of a message anymore). */
-
- /* HL_ERR is the non-existent message. */
- #define HL_ERR 0
-
- /* HL_MEN - Help messages. */
- /* HL_INT - Introduction to FunnelWeb. */
- /* HL_OPT - Command line options. */
- /* HL_DOP - Option defaults. */
- /* HL_COM - Interactive commands. */
- /* HL_DOC - Documentation. */
- /* HL_REG - Registration. */
- /* HL_LIC - The GNU License. */
- /* HL_COP - Copyright notice. */
- /* HL_NOW - No Warranty notice. */
- /* HL_DIS - Distribution notice. */
- /* HL_ACK - Acknowledgements. */
- /* HL_VER - Versions. */
- /* HL_SUP - Support. */
- /* HL_MOD - Modifications. */
- #define HL_MEN 1
- #define HL_INT 2
- #define HL_OPT 3
- #define HL_DOP 4
- #define HL_COM 5
- #define HL_DOC 6
- #define HL_REG 7
- #define HL_GNU 8
- #define HL_COP 9
- #define HL_NOW 10
- #define HL_DIS 11
- #define HL_ACK 12
- #define HL_VER 13
- #define HL_SUP 14
- #define HL_MOD 15
-
- /* The following symbol does not represent a message. It is the number of */
- /* messages. This is useful for range checking and possibly in for loops. */
- #define HL_MAX 15
-
- /******************************************************************************/
-
- EXPORT uword hel_num P_((char *));
- /* Accepts a character string that is supposed to be the name of a message */
- /* and returns the number of the message, or HL_ERR if the string does not */
- /* correspond to any defined message. A match will occur if the argument */
- /* string is the same (with case independent matching) as the prefix (of */
- /* corresponding length) of exactly one message name. */
-
- EXPORT void hel_wri P_((void (*)(char *),uword));
- /* Accepts a message number and writes the message using the function */
- /* provided in the first argument. Bombs the program if the message number in */
- /* the second argument is not in the range [1,HL_MAX]. */
-
- /******************************************************************************/
-
- /* For #ifndef preventing multiple inclusion of the body of this header file. */
- #endif
-
- /******************************************************************************/
- /* End of HELP.H */
- /******************************************************************************/
-