Edit

kc3-lang/libxkbcommon/src/xkbcomp/keywords.gperf

Branch :

  • Show log

    Commit

  • Author : Ran Benita
    Date : 2025-02-01 16:34:00
    Hash : 43f6036d
    Message : xkbcomp/keywords: don't require C string for keyword lookup Needed for next commit, but good regardless. No noticeable effect on performance. Signed-off-by: Ran Benita <ran@unusedvar.com>

  • src/xkbcomp/keywords.gperf
  • %{
    #include "config.h"
    
    #include "xkbcomp-priv.h"
    #include "parser-priv.h"
    
    static const struct keyword_tok *
    keyword_gperf_lookup (register const char *str, register size_t len);
    %}
    
    struct keyword_tok { int name; int tok; };
    %language=ANSI-C
    %define hash-function-name keyword_gperf_hash
    %define lookup-function-name keyword_gperf_lookup
    %readonly-tables
    %enum
    %includes
    %struct-type
    %pic
    %ignore-case
    %compare-lengths
    
    %%
    action,                 ACTION_TOK
    alias,                  ALIAS
    alphanumeric_keys,      ALPHANUMERIC_KEYS
    alternate_group,        ALTERNATE_GROUP
    alternate,              ALTERNATE
    augment,                AUGMENT
    default,                DEFAULT
    function_keys,          FUNCTION_KEYS
    group,                  GROUP
    hidden,                 HIDDEN
    include,                INCLUDE
    indicator,              INDICATOR
    interpret,              INTERPRET
    keypad_keys,            KEYPAD_KEYS
    key,                    KEY
    keys,                   KEYS
    logo,                   LOGO
    modifier_keys,          MODIFIER_KEYS
    modifier_map,           MODIFIER_MAP
    mod_map,                MODIFIER_MAP
    modmap,                 MODIFIER_MAP
    outline,                OUTLINE
    overlay,                OVERLAY
    override,               OVERRIDE
    partial,                PARTIAL
    replace,                REPLACE
    row,                    ROW
    section,                SECTION
    shape,                  SHAPE
    solid,                  SOLID
    text,                   TEXT
    type,                   TYPE
    virtual_modifiers,      VIRTUAL_MODS
    virtual,                VIRTUAL
    xkb_compatibility_map,  XKB_COMPATMAP
    xkb_compatibility,      XKB_COMPATMAP
    xkb_compat_map,         XKB_COMPATMAP
    xkb_compat,             XKB_COMPATMAP
    xkb_geometry,           XKB_GEOMETRY
    xkb_keycodes,           XKB_KEYCODES
    xkb_keymap,             XKB_KEYMAP
    xkb_layout,             XKB_LAYOUT
    xkb_semantics,          XKB_SEMANTICS
    xkb_symbols,            XKB_SYMBOLS
    xkb_types,              XKB_TYPES
    %%
    
    int
    keyword_to_token(const char *string, size_t len)
    {
        const struct keyword_tok *kt = keyword_gperf_lookup(string, len);
        if (!kt)
            return -1;
        return kt->tok;
    }