option.h revision 294286
1/*
2 * Copyright (C) 1984-2015  Mark Nudelman
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Less License, as specified in the README file.
6 *
7 * For more information, see the README file.
8 */
9
10
11#define	END_OPTION_STRING	('$')
12
13/*
14 * Types of options.
15 */
16#define	BOOL		01	/* Boolean option: 0 or 1 */
17#define	TRIPLE		02	/* Triple-valued option: 0, 1 or 2 */
18#define	NUMBER		04	/* Numeric option */
19#define	STRING		010	/* String-valued option */
20#define	NOVAR		020	/* No associated variable */
21#define	REPAINT		040	/* Repaint screen after toggling option */
22#define	NO_TOGGLE	0100	/* Option cannot be toggled with "-" cmd */
23#define	HL_REPAINT	0200	/* Repaint hilites after toggling option */
24#define	NO_QUERY	0400	/* Option cannot be queried with "_" cmd */
25#define	INIT_HANDLER	01000	/* Call option handler function at startup */
26
27#define	OTYPE		(BOOL|TRIPLE|NUMBER|STRING|NOVAR)
28
29#define OLETTER_NONE    '\1'     /* Invalid option letter */
30
31/*
32 * Argument to a handling function tells what type of activity:
33 */
34#define	INIT	0	/* Initialization (from command line) */
35#define	QUERY	1	/* Query (from _ or - command) */
36#define	TOGGLE	2	/* Change value (from - command) */
37
38/* Flag to toggle_option to specify how to "toggle" */
39#define	OPT_NO_TOGGLE	0
40#define	OPT_TOGGLE	1
41#define	OPT_UNSET	2
42#define	OPT_SET		3
43#define OPT_NO_PROMPT	0100
44
45/* Error code from findopt_name */
46#define OPT_AMBIG       1
47
48struct optname
49{
50	char *oname;            /* Long (GNU-style) option name */
51	struct optname *onext;  /* List of synonymous option names */
52};
53
54#define OPTNAME_MAX	32	/* Max length of long option name */
55
56struct loption
57{
58	char oletter;		/* The controlling letter (a-z) */
59	struct optname *onames; /* Long (GNU-style) option name */
60	int otype;		/* Type of the option */
61	int odefault;		/* Default value */
62	int *ovar;		/* Pointer to the associated variable */
63	void (*ofunc)();	/* Pointer to special handling function */
64	char *odesc[3];		/* Description of each value */
65};
66
67