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