/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
+ * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this
+ * software and its documentation for any purpose and without
+ * fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting
+ * documentation, and that the name of Silicon Graphics not be
+ * used in advertising or publicity pertaining to distribution
+ * of the software without specific prior written permission.
+ * Silicon Graphics makes no representation about the suitability
+ * of this software for any purpose. It is provided "as is"
+ * without any express or implied warranty.
+ *
+ * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ * THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
********************************************************/
-#ifndef EXPR_H
-#define EXPR_H 1
-
-typedef union _ExprResult
-{
- char *str;
- int ival;
- unsigned uval;
- struct xkb_key_name keyName;
-} ExprResult;
-
-extern int
-ExprResolveLhs(ExprDef *expr, ExprResult *elem_rtrn, ExprResult *field_rtrn,
- ExprDef **index_rtrn);
+#ifndef XKBCOMP_EXPR_H
+#define XKBCOMP_EXPR_H
-typedef struct _LookupEntry
-{
+typedef struct _LookupEntry {
const char *name;
- unsigned result;
+ unsigned int value;
} LookupEntry;
+bool
+ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr,
+ const char **elem_rtrn, const char **field_rtrn,
+ ExprDef **index_rtrn);
-extern const char *
-exprOpText(unsigned type);
-
-extern int
-LookupModMask(const void *priv, xkb_atom_t field, unsigned type,
- ExprResult *val_rtrn);
-
-extern int
-LookupVModMask(const void *priv, xkb_atom_t field, unsigned type,
- ExprResult *val_rtrn);
+bool
+LookupModMask(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
+ enum expr_value_type type, xkb_mod_mask_t *val_rtrn);
-extern int
-LookupModIndex(const void *priv, xkb_atom_t field, unsigned type,
- ExprResult *val_rtrn);
+bool
+LookupVModMask(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
+ enum expr_value_type type, xkb_mod_mask_t *val_rtrn);
-extern int
-ExprResolveModMask(ExprDef *expr, ExprResult *val_rtrn);
+bool
+LookupModIndex(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
+ enum expr_value_type type, xkb_mod_index_t *val_rtrn);
-extern int
-ExprResolveVModMask(ExprDef *expr, ExprResult *val_rtrn,
- struct xkb_keymap *xkb);
+bool
+ExprResolveModMask(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_mod_mask_t *mask_rtrn);
-extern int
-ExprResolveBoolean(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveVModMask(struct xkb_keymap *keymap, const ExprDef *expr,
+ xkb_mod_mask_t *mask_rtrn);
-extern int
-ExprResolveKeyCode(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveBoolean(struct xkb_context *ctx, const ExprDef *expr,
+ bool *set_rtrn);
-extern int
-ExprResolveInteger(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveKeyCode(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_keycode_t *kc);
-extern int
-ExprResolveLevel(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveInteger(struct xkb_context *ctx, const ExprDef *expr,
+ int *val_rtrn);
-extern int
-ExprResolveGroup(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveLevel(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_level_index_t *level_rtrn);
-extern int
-ExprResolveButton(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveGroup(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_group_index_t *group_rtrn);
-extern int
-ExprResolveFloat(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveButton(struct xkb_context *ctx, const ExprDef *expr,
+ int *btn_rtrn);
-extern int
-ExprResolveString(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveString(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_atom_t *val_rtrn);
-extern int
-ExprResolveKeyName(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveKeyName(struct xkb_context *ctx, const ExprDef *expr,
+ char name[XkbKeyNameLength]);
-extern int
-ExprResolveEnum(ExprDef *expr, ExprResult *val_rtrn,
- const LookupEntry *values);
+bool
+ExprResolveEnum(struct xkb_context *ctx, const ExprDef *expr,
+ unsigned int *val_rtrn, const LookupEntry *values);
-extern int
-ExprResolveMask(ExprDef *expr, ExprResult *val_rtrn,
- const LookupEntry *values);
+bool
+ExprResolveMask(struct xkb_context *ctx, const ExprDef *expr,
+ unsigned int *mask_rtrn, const LookupEntry *values);
-extern int ExprResolveKeySym(ExprDef *expr, ExprResult *val_rtrn);
+bool
+ExprResolveKeySym(struct xkb_context *ctx, const ExprDef *expr,
+ xkb_keysym_t *sym_rtrn);
-#endif /* EXPR_H */
+#endif