1/* 2 * CDDL HEADER START 3 * 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 7 * with the License. 8 * 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. 13 * 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] 19 * 20 * CDDL HEADER END 21 */ 22/* Copyright (c) 1988 AT&T */ 23/* All Rights Reserved */ 24 25 26/* 27 * Copyright (c) 1997, by Sun Mircrosystems, Inc. 28 * All rights reserved. 29 */ 30 31#ifndef _MENU_PRIVATE_H 32#define _MENU_PRIVATE_H 33 34#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.9 */ 35 36#include <menu.h> 37 38#ifdef __cplusplus 39extern "C" { 40#endif 41 42/* Menu macros to access menu structure */ 43 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) { \ 92 SetDriver(m); \ 93 (m)->menuinit(m); \ 94 ResetDriver(m); \ 95 } 96#define Mterm(m) if (m->menuterm) { \ 97 SetDriver(m); \ 98 (m)->menuterm(m); \ 99 ResetDriver(m); \ 100 } 101#define Iinit(m) if (m->iteminit) { \ 102 SetDriver(m); \ 103 (m)->iteminit(m); \ 104 ResetDriver(m); \ 105 } 106#define Iterm(m) if (m->itemterm) { \ 107 SetDriver(m); \ 108 (m)->itemterm(m); \ 109 ResetDriver(m); \ 110 } 111 112/* Define access to Mopt */ 113 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)) 120 121/* Item macros to access item structure */ 122 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 128#define Y(i) (i)->y 129#define X(i) (i)->x 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) 141 142/* Default menu macros */ 143 144#define Dfl_Menu (&_Default_Menu) 145#define Dfl_Item (&_Default_Item) 146 147#define max(a, b) ((a) > (b)) ? (a) : (b) 148#define min(a, b) ((a) < (b)) ? (a) : (b) 149 150extern MENU _Default_Menu; 151extern ITEM _Default_Item; 152 153extern void _affect_change(MENU *, int, ITEM *); 154extern void _chk_current(MENU *, int *, ITEM *); 155extern void _chk_top(MENU *, int *, ITEM *); 156extern void _disconnect(MENU *); 157extern void _draw(MENU *); 158extern void _link_items(MENU *); 159extern void _move_post_item(MENU *, ITEM *); 160extern void _movecurrent(MENU *, ITEM *); 161extern void _position_cursor(MENU *); 162extern void _scale(MENU *); 163extern void _show(MENU *); 164extern int _match(MENU *, char, ITEM **); 165extern int _connect(MENU *, ITEM **); 166 167#ifdef __cplusplus 168} 169#endif 170 171#endif /* _MENU_PRIVATE_H */ 172