1/************************************************************ 2 Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. 3 4 Permission to use, copy, modify, and distribute this 5 software and its documentation for any purpose and without 6 fee is hereby granted, provided that the above copyright 7 notice appear in all copies and that both that copyright 8 notice and this permission notice appear in supporting 9 documentation, and that the name of Silicon Graphics not be 10 used in advertising or publicity pertaining to distribution 11 of the software without specific prior written permission. 12 Silicon Graphics makes no representation about the suitability 13 of this software for any purpose. It is provided "as is" 14 without any express or implied warranty. 15 16 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 17 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 19 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 20 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 21 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 22 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 23 THE USE OR PERFORMANCE OF THIS SOFTWARE. 24 25 ********************************************************/ 26 27#ifndef EXPR_H 28#define EXPR_H 1 29 30typedef union _ExprResult 31{ 32 char *str; 33 int ival; 34 unsigned uval; 35 XkbKeyNameRec keyName; 36} ExprResult; 37 38typedef Bool(*IdentLookupFunc) (const XPointer /* priv */ , 39 Atom /* elem */ , 40 Atom /* field */ , 41 unsigned /* type */ , 42 ExprResult * /* val_rtrn */ 43 ); 44 45extern int ExprResolveLhs(const ExprDef * /* expr */ , 46 ExprResult * /* elem_rtrn */ , 47 ExprResult * /* field_rtrn */ , 48 ExprDef ** /* index_rtrn */ 49 ); 50 51typedef struct _LookupPriv 52{ 53 XPointer priv; 54 IdentLookupFunc chain; 55 XPointer chainPriv; 56} LookupPriv; 57 58typedef struct _LookupEntry 59{ 60 const char *name; 61 unsigned result; 62} LookupEntry; 63 64typedef struct _LookupTable 65{ 66 char *element; 67 LookupEntry *entries; 68 struct _LookupTable *nextElement; 69} LookupTable; 70 71 72extern char *exprOpText(unsigned /* type */ 73 ); 74 75extern Bool RadioLookup(const XPointer /* priv */ , 76 Atom /* elem */ , 77 Atom /* field */ , 78 unsigned /* type */ , 79 ExprResult * /* val_rtrn */ 80 ); 81 82extern Bool SimpleLookup(const XPointer /* priv */ , 83 Atom /* elem */ , 84 Atom /* field */ , 85 unsigned /* type */ , 86 ExprResult * /* val_rtrn */ 87 ); 88 89extern Bool LookupModIndex(const XPointer /* priv */ , 90 Atom /* elem */ , 91 Atom /* field */ , 92 unsigned /* type */ , 93 ExprResult * /* val_rtrn */ 94 ); 95 96extern int ExprResolveModIndex(const ExprDef * /* expr */ , 97 ExprResult * /* val_rtrn */ , 98 IdentLookupFunc /* lookup */ , 99 XPointer /* lookupPriv */ 100 ); 101 102extern int ExprResolveModMask(const ExprDef * /* expr */ , 103 ExprResult * /* val_rtrn */ , 104 IdentLookupFunc /* lookup */ , 105 XPointer /* priv */ 106 ); 107 108extern int ExprResolveBoolean(const ExprDef * /* expr */ , 109 ExprResult * /* val_rtrn */ , 110 IdentLookupFunc /* lookup */ , 111 XPointer /* lookupPriv */ 112 ); 113 114extern int ExprResolveInteger(const ExprDef * /* expr */ , 115 ExprResult * /* val_rtrn */ , 116 IdentLookupFunc /* lookup */ , 117 XPointer /* lookupPriv */ 118 ); 119 120extern int ExprResolveFloat(const ExprDef * /* expr */ , 121 ExprResult * /* val_rtrn */ , 122 IdentLookupFunc /* lookup */ , 123 XPointer /* lookupPriv */ 124 ); 125 126extern int ExprResolveString(const ExprDef * /* expr */ , 127 ExprResult * /* val_rtrn */ , 128 IdentLookupFunc /* lookup */ , 129 XPointer /* lookupPriv */ 130 ); 131 132extern int ExprResolveKeyName(const ExprDef * /* expr */ , 133 ExprResult * /* val_rtrn */ , 134 IdentLookupFunc /* lookup */ , 135 XPointer /* lookupPriv */ 136 ); 137 138extern int ExprResolveEnum(const ExprDef * /* expr */ , 139 ExprResult * /* val_rtrn */ , 140 const LookupEntry * /* values */ 141 ); 142 143extern int ExprResolveMask(const ExprDef * /* expr */ , 144 ExprResult * /* val_rtrn */ , 145 IdentLookupFunc /* lookup */ , 146 XPointer /* lookupPriv */ 147 ); 148 149extern int ExprResolveKeySym(const ExprDef * /* expr */ , 150 ExprResult * /* val_rtrn */ , 151 IdentLookupFunc /* lookup */ , 152 XPointer /* lookupPriv */ 153 ); 154 155#endif /* EXPR_H */ 156