Convert macros to inline functions

Signed-off-by: Ran Benita <ran234@gmail.com>
master
Ran Benita 2012-07-16 22:15:43 +03:00
parent 3fbf4ce315
commit dfa0929c6d
9 changed files with 139 additions and 114 deletions

View File

@ -48,7 +48,6 @@ libxkbcommon_la_SOURCES = \
src/xkbcomp/indicators.c \
src/xkbcomp/indicators.h \
src/xkbcomp/keycodes.c \
src/xkbcomp/keycodes.h \
src/xkbcomp/keytypes.c \
src/xkbcomp/misc.c \
src/xkbcomp/parser.y \

View File

@ -25,7 +25,6 @@
********************************************************/
#include "action.h"
#include "keycodes.h"
static bool actionsInitialized;
static ExprDef constTrue;
@ -166,7 +165,7 @@ fieldText(unsigned field)
/***====================================================================***/
static bool
static inline bool
ReportMismatch(unsigned action, unsigned field, const char *type)
{
ERROR("Value of %s field must be of type %s\n", fieldText(field), type);
@ -174,7 +173,7 @@ ReportMismatch(unsigned action, unsigned field, const char *type)
return false;
}
static bool
static inline bool
ReportIllegal(unsigned action, unsigned field)
{
ERROR("Field %s is not defined for an action of type %s\n",
@ -183,7 +182,7 @@ ReportIllegal(unsigned action, unsigned field)
return false;
}
static bool
static inline bool
ReportActionNotArray(unsigned action, unsigned field)
{
ERROR("The %s field in the %s action is not an array\n",
@ -192,7 +191,7 @@ ReportActionNotArray(unsigned action, unsigned field)
return false;
}
static bool
static inline bool
ReportNotFound(unsigned action, unsigned field, const char *what,
const char *bad)
{

View File

@ -64,15 +64,6 @@ typedef struct _CompatInfo {
struct xkb_keymap *keymap;
} CompatInfo;
/***====================================================================***/
#define ReportSINotArray(si, f, i) \
ReportNotArray("symbol interpretation", (f), siText((si), (i)))
#define ReportSIBadType(si, f, w, i) \
ReportBadType("symbol interpretation", (f), siText((si), (i)), (w))
/***====================================================================***/
static const char *
siText(SymInterpInfo * si, CompatInfo * info)
{
@ -90,6 +81,20 @@ siText(SymInterpInfo * si, CompatInfo * info)
return buf;
}
static inline bool
ReportSINotArray(SymInterpInfo *si, const char *field, CompatInfo *info)
{
return ReportNotArray("symbol interpretation", field, siText(si, info));
}
static inline bool
ReportSIBadType(SymInterpInfo *si, const char *field, const char *wanted,
CompatInfo *info)
{
return ReportBadType("symbol interpretation", field, siText(si, info),
wanted);
}
static void
InitCompatInfo(CompatInfo *info, struct xkb_keymap *keymap, unsigned file_id)
{

View File

@ -30,12 +30,21 @@
/***====================================================================***/
#define ReportIndicatorBadType(keymap, l, f, w) \
ReportBadType("indicator map", (f), \
xkb_atom_text((keymap)->ctx, (l)->name), (w))
#define ReportIndicatorNotArray(keymap, l, f) \
ReportNotArray("indicator map", (f), \
xkb_atom_text((keymap)->ctx, (l)->name))
static inline bool
ReportIndicatorBadType(struct xkb_keymap *keymap, LEDInfo *led,
const char *field, const char *wanted)
{
return ReportBadType("indicator map", field,
xkb_atom_text(keymap->ctx, led->name), wanted);
}
static inline bool
ReportIndicatorNotArray(struct xkb_keymap *keymap, LEDInfo *led,
const char *field)
{
return ReportNotArray("indicator map", field,
xkb_atom_text(keymap->ctx, led->name));
}
/***====================================================================***/

View File

@ -24,32 +24,10 @@
*
********************************************************/
#include "keycodes.h"
#include "xkbcomp-priv.h"
#include "expr.h"
#include "parseutils.h"
const char *
longText(unsigned long val)
{
char buf[4];
LongToKeyName(val, buf);
return XkbcKeyNameText(buf);
}
/***====================================================================***/
void
LongToKeyName(unsigned long val, char *name)
{
name[0] = ((val >> 24) & 0xff);
name[1] = ((val >> 16) & 0xff);
name[2] = ((val >> 8) & 0xff);
name[3] = (val & 0xff);
}
/***====================================================================***/
typedef struct _AliasInfo {
enum merge_mode merge;
unsigned file_id;

View File

@ -73,23 +73,49 @@ static xkb_atom_t tok_KEYPAD;
/***====================================================================***/
#define ReportTypeShouldBeArray(keymap, t, f) \
ReportShouldBeArray("key type", (f), TypeTxt((keymap), (t)))
#define ReportTypeBadType(keymap, t, f, w) \
ReportBadType("key type", (f), TypeTxt((keymap), (t)), (w))
static inline const char *
MapEntryTxt(struct xkb_keymap *keymap, struct xkb_kt_map_entry *entry)
{
return XkbcVModMaskText(keymap, entry->mods.real_mods, entry->mods.vmods);
}
/***====================================================================***/
static inline const char *
PreserveIndexTxt(struct xkb_keymap *keymap, PreserveInfo *pi)
{
return XkbcVModMaskText(keymap, pi->indexMods, pi->indexVMods);
}
#define MapEntryTxt(x, e) \
XkbcVModMaskText((x), (e)->mods.real_mods, (e)->mods.vmods)
#define PreserveIndexTxt(x, p) \
XkbcVModMaskText((x), (p)->indexMods, (p)->indexVMods)
#define PreserveTxt(x, p) \
XkbcVModMaskText((x), (p)->preMods, (p)->preVMods)
#define TypeTxt(keymap, t) \
xkb_atom_text((keymap)->ctx, (t)->name)
#define TypeMaskTxt(t, x) \
XkbcVModMaskText((x), (t)->mask, (t)->vmask)
static inline const char *
PreserveTxt(struct xkb_keymap *keymap, PreserveInfo *pi)
{
return XkbcVModMaskText(keymap, pi->preMods, pi->preVMods);
}
static inline const char *
TypeTxt(struct xkb_keymap *keymap, KeyTypeInfo *type)
{
return xkb_atom_text(keymap->ctx, type->name);
}
static inline const char *
TypeMaskTxt(struct xkb_keymap *keymap, KeyTypeInfo *type)
{
return XkbcVModMaskText(keymap, type->mask, type->vmask);
}
static inline bool
ReportTypeShouldBeArray(struct xkb_keymap *keymap, KeyTypeInfo *type,
const char *field)
{
return ReportShouldBeArray("key type", field, TypeTxt(keymap, type));
}
static inline bool
ReportTypeBadType(struct xkb_keymap *keymap, KeyTypeInfo *type,
const char *field, const char *wanted)
{
return ReportBadType("key type", field, TypeTxt(keymap, type), wanted);
}
/***====================================================================***/
@ -707,7 +733,7 @@ SetKeyTypeField(KeyTypeInfo *type, struct xkb_keymap *keymap,
if (type->defs.defined & _KT_Mask) {
WARN("Multiple modifier mask definitions for key type %s\n",
xkb_atom_text(keymap->ctx, type->name));
ACTION("Using %s, ", TypeMaskTxt(type, keymap));
ACTION("Using %s, ", TypeMaskTxt(keymap, type));
INFO("ignoring %s\n", XkbcVModMaskText(keymap, mods, vmods));
return false;
}

View File

@ -27,7 +27,6 @@
#include "xkbcomp-priv.h"
#include "path.h"
#include "parseutils.h"
#include "keycodes.h"
/***====================================================================***/
@ -107,43 +106,6 @@ ProcessIncludeFile(struct xkb_context *ctx,
return true;
}
/***====================================================================***/
int
ReportNotArray(const char *type, const char *field, const char *name)
{
ERROR("The %s %s field is not an array\n", type, field);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
int
ReportShouldBeArray(const char *type, const char *field, const char *name)
{
ERROR("Missing subscript for %s %s\n", type, field);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
int
ReportBadType(const char *type, const char *field,
const char *name, const char *wanted)
{
ERROR("The %s %s field must be a %s\n", type, field, wanted);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
int
ReportBadField(const char *type, const char *field, const char *name)
{
ERROR("Unknown %s field %s in %s\n", type, field, name);
ACTION("Ignoring assignment to unknown field in %s\n", name);
return false;
}
/***====================================================================***/
bool
UseNewField(unsigned field,
CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)

View File

@ -29,14 +29,13 @@
#include "xkbcomp-priv.h"
#include "parseutils.h"
#include "action.h"
#include "keycodes.h"
#include "vmod.h"
/***====================================================================***/
/* Needed to work with the typechecker. */
typedef darray (xkb_keysym_t) darray_xkb_keysym_t;
typedef darray (union xkb_action) darray_xkb_action;
typedef darray(xkb_keysym_t) darray_xkb_keysym_t;
typedef darray(union xkb_action) darray_xkb_action;
#define RepeatYes 1
#define RepeatNo 0
@ -51,6 +50,15 @@ typedef darray (union xkb_action) darray_xkb_action;
#define _Key_GroupInfo (1 << 6)
#define _Key_VModMap (1 << 7)
static inline const char *
longText(unsigned long val)
{
char buf[4];
LongToKeyName(val, buf);
return XkbcKeyNameText(buf);
}
typedef struct _KeyInfo {
unsigned short defined;
unsigned file_id;

View File

@ -49,19 +49,6 @@ ClearCommonInfo(CommonInfo *cmn);
extern void *
AddCommonInfo(CommonInfo * old, CommonInfo * new);
extern int
ReportNotArray(const char *type, const char *field, const char *name);
extern int
ReportShouldBeArray(const char *type, const char *field, const char *name);
extern int
ReportBadType(const char *type, const char *field, const char *name,
const char *wanted);
extern int
ReportBadField(const char *type, const char *field, const char *name);
extern bool
ProcessIncludeFile(struct xkb_context *ctx, IncludeStmt *stmt,
enum xkb_file_type file_type, XkbFile **file_rtrn,
@ -81,4 +68,56 @@ UpdateModifiersFromCompat(struct xkb_keymap *keymap);
uint32_t
VModsToReal(struct xkb_keymap *keymap, uint32_t vmodmask);
static inline unsigned long
KeyNameToLong(const char *name)
{
return
(((unsigned long)name[0]) << 24) |
(((unsigned long)name[1]) << 16) |
(((unsigned long)name[2]) << 8) |
(((unsigned long)name[3]) << 0);
}
static inline void
LongToKeyName(unsigned long val, char *name)
{
name[0] = ((val >> 24) & 0xff);
name[1] = ((val >> 16) & 0xff);
name[2] = ((val >> 8) & 0xff);
name[3] = ((val >> 0) & 0xff);
}
static inline bool
ReportNotArray(const char *type, const char *field, const char *name)
{
ERROR("The %s %s field is not an array\n", type, field);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
static inline bool
ReportShouldBeArray(const char *type, const char *field, const char *name)
{
ERROR("Missing subscript for %s %s\n", type, field);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
static inline bool
ReportBadType(const char *type, const char *field,
const char *name, const char *wanted)
{
ERROR("The %s %s field must be a %s\n", type, field, wanted);
ACTION("Ignoring illegal assignment in %s\n", name);
return false;
}
static inline bool
ReportBadField(const char *type, const char *field, const char *name)
{
ERROR("Unknown %s field %s in %s\n", type, field, name);
ACTION("Ignoring assignment to unknown field in %s\n", name);
return false;
}
#endif /* XKBCOMP_PRIV_H */