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