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