Home | History | Annotate | Download | only in xkbcomp
      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 XKBCOMP_PRIV_H
     28 #define XKBCOMP_PRIV_H
     29 
     30 #include "keymap.h"
     31 #include "ast.h"
     32 
     33 struct xkb_component_names {
     34     char *keycodes;
     35     char *types;
     36     char *compat;
     37     char *symbols;
     38 };
     39 
     40 char *
     41 text_v1_keymap_get_as_string(struct xkb_keymap *keymap);
     42 
     43 XkbFile *
     44 XkbParseFile(struct xkb_context *ctx, FILE *file,
     45              const char *file_name, const char *map);
     46 
     47 XkbFile *
     48 XkbParseString(struct xkb_context *ctx,
     49                const char *string, size_t len,
     50                const char *file_name, const char *map);
     51 
     52 void
     53 FreeXkbFile(XkbFile *file);
     54 
     55 XkbFile *
     56 XkbFileFromComponents(struct xkb_context *ctx,
     57                       const struct xkb_component_names *kkctgs);
     58 
     59 bool
     60 CompileKeycodes(XkbFile *file, struct xkb_keymap *keymap,
     61                 enum merge_mode merge);
     62 
     63 bool
     64 CompileKeyTypes(XkbFile *file, struct xkb_keymap *keymap,
     65                 enum merge_mode merge);
     66 
     67 bool
     68 CompileCompatMap(XkbFile *file, struct xkb_keymap *keymap,
     69                  enum merge_mode merge);
     70 
     71 bool
     72 CompileSymbols(XkbFile *file, struct xkb_keymap *keymap,
     73                enum merge_mode merge);
     74 
     75 bool
     76 CompileKeymap(XkbFile *file, struct xkb_keymap *keymap,
     77               enum merge_mode merge);
     78 
     79 /***====================================================================***/
     80 
     81 static inline bool
     82 ReportNotArray(struct xkb_context *ctx, const char *type, const char *field,
     83                const char *name)
     84 {
     85     log_err(ctx,
     86             "The %s %s field is not an array; "
     87             "Ignoring illegal assignment in %s\n",
     88             type, field, name);
     89     return false;
     90 }
     91 
     92 static inline bool
     93 ReportShouldBeArray(struct xkb_context *ctx, const char *type,
     94                     const char *field, const char *name)
     95 {
     96     log_err(ctx,
     97             "Missing subscript for %s %s; "
     98             "Ignoring illegal assignment in %s\n",
     99             type, field, name);
    100     return false;
    101 }
    102 
    103 static inline bool
    104 ReportBadType(struct xkb_context *ctx, const char *type, const char *field,
    105               const char *name, const char *wanted)
    106 {
    107     log_err(ctx, "The %s %s field must be a %s; "
    108             "Ignoring illegal assignment in %s\n",
    109             type, field, wanted, name);
    110     return false;
    111 }
    112 
    113 static inline bool
    114 ReportBadField(struct xkb_context *ctx, const char *type, const char *field,
    115                const char *name)
    116 {
    117     log_err(ctx,
    118             "Unknown %s field %s in %s; "
    119             "Ignoring assignment to unknown field in %s\n",
    120             type, field, name, name);
    121     return false;
    122 }
    123 
    124 #endif
    125