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