/* $Id: output.h,v 2.0.1.13 2000/02/25 02:20:43 greyham Exp greyham $
* format-independant output interface.
*/
#ifndef OUTPUT_H
#define OUTPUT_H
/* To add a new output format:
* 1. Add the new -Tx suboption to the manual page.
* 2. Add handling for the new suboption to c2man.c, including the default
* output file extension.
* 3. Copy nroff.c to xxx.c and change the xxx_... output functions and the
* pointers in the xxx_output structure so the new xxx_output object
* generates the correct output constructs. Try to do this without modifying
* manpage.c if possible; add new output functions only if necessary.
* 4. Add the new xxx_output structure to the declaration of output structures
* at the end of this file.
*/
/* Output object defines what type of output is being generated.
* This contains pointers to functions that generate each type of output
* construct.
*/
struct Output
{
/* comment until the end of the line */
void (*comment) _((void));
/* header and introduction to the file */
void (*header) _((ManualPage *firstpage, int input_files, boolean grouped,
const char *name, const char *terse, const char *section));
/* a dash */
void (*dash) _((void));
/* start of a main section */
void (*section) _((const char *name));
/* start of a sub section */
void (*sub_section) _((const char * name));
/* break the current line here */
void (*break_line) _((void));
/* a blank line */
void (*blank_line) _((void));
/* switch into the mode to include declarations like in program code */
void (*code_start) _((void));
/* switch back from code mode to normal */
void (*code_end) _((void));
/* output a single string in code font */
void (*code) _((const char *text));
/* start a list of tagged paragraphs */
void (*tag_list_start) _((void));
/* end a list of tagged paragraph */
void (*tag_list_end) _((void));
/* start a tagged paragraph: the tag should go straight after this */
void (*tag_entry_start) _((void));
/* start a tagged paragraph that has an extra non-code bit at the end
* of the tag: the tag should go straight after this
*/
void (*tag_entry_start_extra) _((void));
/* end the tag on a tagged paragraph */
void (*tag_entry_end) _((void));
/* end the tag on a tagged paragraph with an extra non-code bit at the end
* of the tag.
*/
void (*tag_entry_end_extra) _((const char *text));
/* start a name/value pair table */
void (*table_start) _((const char *longestag));
/* an entry in the name/value pair table */
void (*table_entry) _((const char *name, const char * description));
/* end the name/value pair table */
void (*table_end) _((void));
/* an indented paragraph */
void (*indent) _((void));
/* start a list */
void (*list_start) _((void));
/* an entry in the list */
void (*list_entry) _((const char *name));
/* the seperator between one entry in a list and the next */
void (*list_separator) _((void));
/* end the list */
void (*list_end) _((void));
/* include another file in the output */
void (*include) _((const char *filename));
/* end the file */
void (*file_end) _((void));
/* output string, quoted to protect against formatter controls */
void (*text) _((const char *text));
/* output char, quoted to protect against formatter controls */
void (*character) _((const int c));
/* parse formatter specific option. set to NULL if not available */
int (*parse_option) _((const char *option));
/* print formatter specific options to stderr. */
void (*print_options) _((void));
/* output NAME section header and section names */
void (*name) _((const char *name));
/* output separators between section name and terse description */
void (*terse_sep) _((void));
/* output string, making it a hypertext reference */
void (*reference) _((const char *text));
/* output string, displaying it emphasized (usually italic) */
void (*emphasized) _((const char *text));
/* output description, fixing punctuation but leaving formatter commands */
void (*description) _((const char *text));
/* output returns text, fixing punct. but leaving formatter commands */
void (*returns) _((const char *text));
};
/* pointer to the relevant output structure */
extern struct Output *output;
/* output structures for all formats we support */
extern struct Output nroff_output, texinfo_output, latex_output, html_output,
autodoc_output, ascii_output;
/* dummy routine which does nothing */
void dummy _((void));
#endif
syntax highlighted by Code2HTML, v. 0.9.1