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