xref: /illumos-gate/usr/src/lib/libeti/menu/inc/private.h (revision 7c478bd9)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*	Copyright (c) 1988 AT&T	*/
23*7c478bd9Sstevel@tonic-gate /*	  All Rights Reserved  	*/
24*7c478bd9Sstevel@tonic-gate 
25*7c478bd9Sstevel@tonic-gate 
26*7c478bd9Sstevel@tonic-gate /*
27*7c478bd9Sstevel@tonic-gate  * Copyright (c) 1997, by Sun Mircrosystems, Inc.
28*7c478bd9Sstevel@tonic-gate  * All rights reserved.
29*7c478bd9Sstevel@tonic-gate  */
30*7c478bd9Sstevel@tonic-gate 
31*7c478bd9Sstevel@tonic-gate #ifndef _MENU_PRIVATE_H
32*7c478bd9Sstevel@tonic-gate #define	_MENU_PRIVATE_H
33*7c478bd9Sstevel@tonic-gate 
34*7c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.9	*/
35*7c478bd9Sstevel@tonic-gate 
36*7c478bd9Sstevel@tonic-gate #include <menu.h>
37*7c478bd9Sstevel@tonic-gate 
38*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
39*7c478bd9Sstevel@tonic-gate extern "C" {
40*7c478bd9Sstevel@tonic-gate #endif
41*7c478bd9Sstevel@tonic-gate 
42*7c478bd9Sstevel@tonic-gate /* Menu macros to access menu structure */
43*7c478bd9Sstevel@tonic-gate 
44*7c478bd9Sstevel@tonic-gate #define	Height(m)	(m)->height
45*7c478bd9Sstevel@tonic-gate #define	Width(m)	(m)->width
46*7c478bd9Sstevel@tonic-gate #define	Rows(m)		(m)->rows
47*7c478bd9Sstevel@tonic-gate #define	Cols(m)		(m)->cols
48*7c478bd9Sstevel@tonic-gate #define	FRows(m)	(m)->frows
49*7c478bd9Sstevel@tonic-gate #define	FCols(m)	(m)->fcols
50*7c478bd9Sstevel@tonic-gate #define	MaxName(m)	(m)->namelen
51*7c478bd9Sstevel@tonic-gate #define	MaxDesc(m)	(m)->desclen
52*7c478bd9Sstevel@tonic-gate #define	Marklen(m)	(m)->marklen
53*7c478bd9Sstevel@tonic-gate #define	Itemlen(m)	(m)->itemlen
54*7c478bd9Sstevel@tonic-gate #define	Pattern(m)	(m)->pattern
55*7c478bd9Sstevel@tonic-gate #define	Pindex(m)	(m)->pindex
56*7c478bd9Sstevel@tonic-gate #define	IthPattern(m, i)	(m)->pattern[i]
57*7c478bd9Sstevel@tonic-gate #define	Win(m)		(m)->win
58*7c478bd9Sstevel@tonic-gate #define	Sub(m)		(m)->sub
59*7c478bd9Sstevel@tonic-gate #define	UserWin(m)	(m)->userwin
60*7c478bd9Sstevel@tonic-gate #define	UserSub(m)	(m)->usersub
61*7c478bd9Sstevel@tonic-gate #define	UW(m)		(UserWin(m) ? UserWin(m) : stdscr)
62*7c478bd9Sstevel@tonic-gate #define	US(m)		(UserSub(m) ? UserSub(m) : UW(m))
63*7c478bd9Sstevel@tonic-gate #define	Items(m)	(m)->items
64*7c478bd9Sstevel@tonic-gate #define	IthItem(m, i)	(m)->items[i]
65*7c478bd9Sstevel@tonic-gate #define	Nitems(m)	(m)->nitems
66*7c478bd9Sstevel@tonic-gate #define	Current(m)	(m)->curitem
67*7c478bd9Sstevel@tonic-gate #define	Top(m)		(m)->toprow
68*7c478bd9Sstevel@tonic-gate #define	Pad(m)		(m)->pad
69*7c478bd9Sstevel@tonic-gate #define	Fore(m)		(m)->fore
70*7c478bd9Sstevel@tonic-gate #define	Back(m)		(m)->back
71*7c478bd9Sstevel@tonic-gate #define	Grey(m)		(m)->grey
72*7c478bd9Sstevel@tonic-gate #define	InvalidAttr(a)	(((a) & (chtype) A_ATTRIBUTES) != (a))
73*7c478bd9Sstevel@tonic-gate #define	Mhelp(m)	(m)->help
74*7c478bd9Sstevel@tonic-gate #define	Muserptr(m)	(m)->userptr
75*7c478bd9Sstevel@tonic-gate #define	Mopt(m)		(m)->opt
76*7c478bd9Sstevel@tonic-gate #define	Mark(m)		(m)->mark
77*7c478bd9Sstevel@tonic-gate #define	Mstatus(m)	(m)->status
78*7c478bd9Sstevel@tonic-gate #define	Posted(m)	(Mstatus(m) & _POSTED)
79*7c478bd9Sstevel@tonic-gate #define	Indriver(m)	(Mstatus(m) & _IN_DRIVER)
80*7c478bd9Sstevel@tonic-gate #define	LinkNeeded(m)	(Mstatus(m) & _LINK_NEEDED)
81*7c478bd9Sstevel@tonic-gate #define	SetPost(m)	(Mstatus(m) |= _POSTED)
82*7c478bd9Sstevel@tonic-gate #define	SetDriver(m)	(Mstatus(m) |= _IN_DRIVER)
83*7c478bd9Sstevel@tonic-gate #define	SetLink(m)	(Mstatus(m) |= _LINK_NEEDED)
84*7c478bd9Sstevel@tonic-gate #define	ResetPost(m)	(Mstatus(m) &= ~_POSTED)
85*7c478bd9Sstevel@tonic-gate #define	ResetDriver(m)	(Mstatus(m) &= ~_IN_DRIVER)
86*7c478bd9Sstevel@tonic-gate #define	ResetLink(m)	(Mstatus(m) &= ~_LINK_NEEDED)
87*7c478bd9Sstevel@tonic-gate #define	SMinit(m)	(m)->menuinit
88*7c478bd9Sstevel@tonic-gate #define	SMterm(m)	(m)->menuterm
89*7c478bd9Sstevel@tonic-gate #define	SIinit(m)	(m)->iteminit
90*7c478bd9Sstevel@tonic-gate #define	SIterm(m)	(m)->itemterm
91*7c478bd9Sstevel@tonic-gate #define	Minit(m)	if (m->menuinit) { \
92*7c478bd9Sstevel@tonic-gate 			    SetDriver(m); \
93*7c478bd9Sstevel@tonic-gate 			    (m)->menuinit(m); \
94*7c478bd9Sstevel@tonic-gate 			    ResetDriver(m); \
95*7c478bd9Sstevel@tonic-gate 			}
96*7c478bd9Sstevel@tonic-gate #define	Mterm(m)	if (m->menuterm) { \
97*7c478bd9Sstevel@tonic-gate 			    SetDriver(m); \
98*7c478bd9Sstevel@tonic-gate 			    (m)->menuterm(m); \
99*7c478bd9Sstevel@tonic-gate 			    ResetDriver(m); \
100*7c478bd9Sstevel@tonic-gate 			}
101*7c478bd9Sstevel@tonic-gate #define	Iinit(m)	if (m->iteminit) { \
102*7c478bd9Sstevel@tonic-gate 			    SetDriver(m); \
103*7c478bd9Sstevel@tonic-gate 			    (m)->iteminit(m); \
104*7c478bd9Sstevel@tonic-gate 			    ResetDriver(m); \
105*7c478bd9Sstevel@tonic-gate 			}
106*7c478bd9Sstevel@tonic-gate #define	Iterm(m)	if (m->itemterm) { \
107*7c478bd9Sstevel@tonic-gate 			    SetDriver(m); \
108*7c478bd9Sstevel@tonic-gate 			    (m)->itemterm(m); \
109*7c478bd9Sstevel@tonic-gate 			    ResetDriver(m); \
110*7c478bd9Sstevel@tonic-gate 			}
111*7c478bd9Sstevel@tonic-gate 
112*7c478bd9Sstevel@tonic-gate /* Define access to Mopt */
113*7c478bd9Sstevel@tonic-gate 
114*7c478bd9Sstevel@tonic-gate #define	OneValue(m)	(Mopt(m) & O_ONEVALUE)
115*7c478bd9Sstevel@tonic-gate #define	ShowDesc(m)	(Mopt(m) & O_SHOWDESC)
116*7c478bd9Sstevel@tonic-gate #define	RowMajor(m)	(Mopt(m) & O_ROWMAJOR)
117*7c478bd9Sstevel@tonic-gate #define	IgnoreCase(m)	(Mopt(m) & O_IGNORECASE)
118*7c478bd9Sstevel@tonic-gate #define	ShowMatch(m)	(Mopt(m) & O_SHOWMATCH)
119*7c478bd9Sstevel@tonic-gate #define	Cyclic(m)	(!(Mopt(m) & O_NONCYCLIC))
120*7c478bd9Sstevel@tonic-gate 
121*7c478bd9Sstevel@tonic-gate /* Item macros to access item structure */
122*7c478bd9Sstevel@tonic-gate 
123*7c478bd9Sstevel@tonic-gate #define	Name(i)		(i)->name.str
124*7c478bd9Sstevel@tonic-gate #define	NameLen(i)	(i)->name.length
125*7c478bd9Sstevel@tonic-gate #define	Description(i)	(i)->description.str
126*7c478bd9Sstevel@tonic-gate #define	DescriptionLen(i)	(i)->description.length
127*7c478bd9Sstevel@tonic-gate #define	Index(i)	(i)->index
128*7c478bd9Sstevel@tonic-gate #define	Y(i)		(i)->y
129*7c478bd9Sstevel@tonic-gate #define	X(i)		(i)->x
130*7c478bd9Sstevel@tonic-gate #define	Imenu(i)	(i)->imenu
131*7c478bd9Sstevel@tonic-gate #define	Value(i)	(i)->value
132*7c478bd9Sstevel@tonic-gate #define	Ihelp(i)	(i)->help
133*7c478bd9Sstevel@tonic-gate #define	Iuserptr(i)	(i)->userptr
134*7c478bd9Sstevel@tonic-gate #define	Iopt(i)		(i)->opt
135*7c478bd9Sstevel@tonic-gate #define	Istatus(i)	(i)->status
136*7c478bd9Sstevel@tonic-gate #define	Up(i)		(i)->up
137*7c478bd9Sstevel@tonic-gate #define	Down(i)		(i)->down
138*7c478bd9Sstevel@tonic-gate #define	Left(i)		(i)->left
139*7c478bd9Sstevel@tonic-gate #define	Right(i)	(i)->right
140*7c478bd9Sstevel@tonic-gate #define	Selectable(i)	(Iopt(i) & O_SELECTABLE)
141*7c478bd9Sstevel@tonic-gate 
142*7c478bd9Sstevel@tonic-gate /* Default menu macros */
143*7c478bd9Sstevel@tonic-gate 
144*7c478bd9Sstevel@tonic-gate #define	Dfl_Menu	(&_Default_Menu)
145*7c478bd9Sstevel@tonic-gate #define	Dfl_Item	(&_Default_Item)
146*7c478bd9Sstevel@tonic-gate 
147*7c478bd9Sstevel@tonic-gate #define	max(a, b)	((a) > (b)) ? (a) : (b)
148*7c478bd9Sstevel@tonic-gate #define	min(a, b)	((a) < (b)) ? (a) : (b)
149*7c478bd9Sstevel@tonic-gate 
150*7c478bd9Sstevel@tonic-gate extern MENU		_Default_Menu;
151*7c478bd9Sstevel@tonic-gate extern ITEM		_Default_Item;
152*7c478bd9Sstevel@tonic-gate 
153*7c478bd9Sstevel@tonic-gate extern void		_affect_change(MENU *, int, ITEM *);
154*7c478bd9Sstevel@tonic-gate extern void		_chk_current(MENU *, int *, ITEM *);
155*7c478bd9Sstevel@tonic-gate extern void		_chk_top(MENU *, int *, ITEM *);
156*7c478bd9Sstevel@tonic-gate extern void		_disconnect(MENU *);
157*7c478bd9Sstevel@tonic-gate extern void		_draw(MENU *);
158*7c478bd9Sstevel@tonic-gate extern void		_link_items(MENU *);
159*7c478bd9Sstevel@tonic-gate extern void		_move_post_item(MENU *, ITEM *);
160*7c478bd9Sstevel@tonic-gate extern void		_movecurrent(MENU *, ITEM *);
161*7c478bd9Sstevel@tonic-gate extern void		_position_cursor(MENU *);
162*7c478bd9Sstevel@tonic-gate extern void		_scale(MENU *);
163*7c478bd9Sstevel@tonic-gate extern void		_show(MENU *);
164*7c478bd9Sstevel@tonic-gate extern int		_match(MENU *, char, ITEM **);
165*7c478bd9Sstevel@tonic-gate extern int		_connect(MENU *, ITEM **);
166*7c478bd9Sstevel@tonic-gate 
167*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus
168*7c478bd9Sstevel@tonic-gate }
169*7c478bd9Sstevel@tonic-gate #endif
170*7c478bd9Sstevel@tonic-gate 
171*7c478bd9Sstevel@tonic-gate #endif	/* _MENU_PRIVATE_H */
172