expr: make ResolveString return an atom
[platform/upstream/libxkbcommon.git] / src / xkbcomp / expr.h
index 5b0c732..3d8f5c1 100644 (file)
  *
  ********************************************************/
 
-#ifndef EXPR_H
-#define EXPR_H 1
-
-#include "xkbcomp-priv.h"
-
-typedef union _ExprResult {
-    int ival;
-    unsigned uval;
-} ExprResult;
+#ifndef XKBCOMP_EXPR_H
+#define XKBCOMP_EXPR_H
 
 typedef struct _LookupEntry {
     const char *name;
-    unsigned result;
+    unsigned int value;
 } LookupEntry;
 
-extern const char *
-exprOpText(enum expr_op_type op);
-
 bool
-ExprResolveLhs(struct xkb_context *ctx, ExprDef *expr, const char **elem_rtrn,
-               const char **field_rtrn, ExprDef **index_rtrn);
+ExprResolveLhs(struct xkb_context *ctx, const ExprDef *expr,
+               const char **elem_rtrn, const char **field_rtrn,
+               ExprDef **index_rtrn);
 
-extern bool
+bool
 LookupModMask(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
-              enum expr_value_type type, ExprResult *val_rtrn);
+              enum expr_value_type type, xkb_mod_mask_t *val_rtrn);
 
-extern bool
+bool
 LookupVModMask(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
-               enum expr_value_type type, ExprResult *val_rtrn);
+               enum expr_value_type type, xkb_mod_mask_t *val_rtrn);
 
-extern bool
+bool
 LookupModIndex(struct xkb_context *ctx, const void *priv, xkb_atom_t field,
-               enum expr_value_type type, ExprResult *val_rtrn);
+               enum expr_value_type type, xkb_mod_index_t *val_rtrn);
 
 bool
-ExprResolveModMask(struct xkb_context *ctx, ExprDef *expr,
+ExprResolveModMask(struct xkb_context *ctx, const ExprDef *expr,
                    xkb_mod_mask_t *mask_rtrn);
 
 bool
-ExprResolveVModMask(struct xkb_keymap *keymap, ExprDef *expr,
+ExprResolveVModMask(struct xkb_keymap *keymap, const ExprDef *expr,
                     xkb_mod_mask_t *mask_rtrn);
 
 bool
-ExprResolveBoolean(struct xkb_context *ctx, ExprDef *expr, bool *set_rtrn);
+ExprResolveBoolean(struct xkb_context *ctx, const ExprDef *expr,
+                   bool *set_rtrn);
 
 bool
-ExprResolveKeyCode(struct xkb_context *ctx, ExprDef *expr, xkb_keycode_t *kc);
+ExprResolveKeyCode(struct xkb_context *ctx, const ExprDef *expr,
+                   xkb_keycode_t *kc);
 
 bool
-ExprResolveInteger(struct xkb_context *ctx, ExprDef *expr, int *val_rtrn);
+ExprResolveInteger(struct xkb_context *ctx, const ExprDef *expr,
+                   int *val_rtrn);
 
 bool
-ExprResolveLevel(struct xkb_context *ctx, ExprDef *expr,
-                 unsigned int *level_rtrn);
+ExprResolveLevel(struct xkb_context *ctx, const ExprDef *expr,
+                 xkb_level_index_t *level_rtrn);
 
 bool
-ExprResolveGroup(struct xkb_context *ctx, ExprDef *expr,
+ExprResolveGroup(struct xkb_context *ctx, const ExprDef *expr,
                  xkb_group_index_t *group_rtrn);
 
 bool
-ExprResolveButton(struct xkb_context *ctx, ExprDef *expr, int *btn_rtrn);
+ExprResolveButton(struct xkb_context *ctx, const ExprDef *expr,
+                  int *btn_rtrn);
 
 bool
-ExprResolveString(struct xkb_context *ctx, ExprDef *expr,
-                  const char **val_rtrn);
+ExprResolveString(struct xkb_context *ctx, const ExprDef *expr,
+                  xkb_atom_t *val_rtrn);
 
 bool
-ExprResolveKeyName(struct xkb_context *ctx, ExprDef *expr,
+ExprResolveKeyName(struct xkb_context *ctx, const ExprDef *expr,
                    char name[XkbKeyNameLength]);
 
-extern int
-ExprResolveEnum(struct xkb_context *ctx, ExprDef *expr, ExprResult *val_rtrn,
-                const LookupEntry *values);
+bool
+ExprResolveEnum(struct xkb_context *ctx, const ExprDef *expr,
+                unsigned int *val_rtrn, const LookupEntry *values);
 
 bool
-ExprResolveMask(struct xkb_context *ctx, ExprDef *expr,
+ExprResolveMask(struct xkb_context *ctx, const ExprDef *expr,
                 unsigned int *mask_rtrn, const LookupEntry *values);
 
 bool
-ExprResolveKeySym(struct xkb_context *ctx, ExprDef *expr,
+ExprResolveKeySym(struct xkb_context *ctx, const ExprDef *expr,
                   xkb_keysym_t *sym_rtrn);
 
-#endif /* EXPR_H */
+#endif