NetBSD/lib/libterminfo/hash.c

706 lines
14 KiB
C

/* $NetBSD: hash.c,v 1.4 2010/02/12 10:18:56 roy Exp $ */
/* DO NOT EDIT
* Automatically generated from term.h */
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
#include <sys/cdefs.h>
__RCSID("$NetBSD: hash.c,v 1.4 2010/02/12 10:18:56 roy Exp $");
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <term_private.h>
#include <term.h>
static const char _ti_flagids[][6] = {
"bw",
"am",
"bce",
"ccc",
"xhp",
"xhpa",
"cpix",
"crxm",
"xt",
"xenl",
"eo",
"gn",
"hc",
"chts",
"km",
"daisy",
"hs",
"hls",
"in",
"lpix",
"da",
"db",
"mir",
"msgr",
"nxon",
"xsb",
"npc",
"ndscr",
"nrrmc",
"os",
"mc5i",
"xvpa",
"sam",
"eslok",
"hz",
"ul",
"xon",
};
#include <stdlib.h>
static uint32_t
_ti_flaghash(const void * __restrict key, size_t keylen)
{
static const uint8_t g[75] = {
0x19, 0x08, 0x16, 0x00, 0x00, 0x1e, 0x07, 0x00, 0x1d, 0x00,
0x17, 0x00, 0x0a, 0x17, 0x08, 0x09, 0x11, 0x00, 0x00, 0x0a,
0x00, 0x13, 0x1a, 0x0f, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00,
0x12, 0x0a, 0x00, 0x11, 0x10, 0x09, 0x00, 0x00, 0x00, 0x1b,
0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00,
0x00, 0x0d, 0x00, 0x00, 0x04, 0x16, 0x09, 0x00, 0x1a, 0x00,
0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x1c, 0x05, 0x00, 0x00,
};
uint32_t h[3];
mi_vector_hash(key, keylen, 0xd36b2625U, h);
return (g[h[0] % 75] + g[h[1] % 75]) % 37;
}
const char *
_ti_flagid(ssize_t idx)
{
if ((size_t)idx > __arraycount(_ti_flagids))
return NULL;
return _ti_flagids[idx];
}
ssize_t
_ti_flagindex(const char *key)
{
uint32_t idx;
idx = _ti_flaghash((const unsigned char *)key, strlen(key));
if (idx > __arraycount(_ti_flagids) ||
strcmp(key, _ti_flagids[idx]) != 0)
return -1;
return idx;
}
static const char _ti_numids[][7] = {
"bitwin",
"bitype",
"bufsz",
"btns",
"cols",
"spinh",
"spinv",
"it",
"lh",
"lw",
"lines",
"lm",
"ma",
"xmc",
"colors",
"maddr",
"mjump",
"pairs",
"wnum",
"mcs",
"mls",
"ncv",
"nlab",
"npins",
"orc",
"orl",
"orhi",
"orvi",
"pb",
"cps",
"vt",
"widcs",
"wsl",
};
#include <stdlib.h>
static uint32_t
_ti_numhash(const void * __restrict key, size_t keylen)
{
static const uint8_t g[67] = {
0x04, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
0x19, 0x00, 0x0d, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00,
0x0b, 0x15, 0x1d, 0x14, 0x00, 0x01, 0x13, 0x1b, 0x14, 0x00,
0x19, 0x00, 0x00, 0x02, 0x14, 0x1a, 0x12, 0x00, 0x00, 0x00,
0x16, 0x05, 0x00, 0x12, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00,
0x19, 0x00, 0x20, 0x00, 0x00, 0x10, 0x17, 0x00, 0x00, 0x0f,
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
};
uint32_t h[3];
mi_vector_hash(key, keylen, 0x50a11f58U, h);
return (g[h[0] % 67] + g[h[1] % 67]) % 33;
}
const char *
_ti_numid(ssize_t idx)
{
if ((size_t)idx > __arraycount(_ti_numids))
return NULL;
return _ti_numids[idx];
}
ssize_t
_ti_numindex(const char *key)
{
uint32_t idx;
idx = _ti_numhash((const unsigned char *)key, strlen(key));
if (idx > __arraycount(_ti_numids) ||
strcmp(key, _ti_numids[idx]) != 0)
return -1;
return idx;
}
static const char _ti_strids[][9] = {
"acsc",
"scesa",
"cbt",
"bel",
"bicr",
"binel",
"birep",
"cr",
"cpi",
"lpi",
"chr",
"cvr",
"csr",
"rmp",
"csnm",
"tbc",
"mgc",
"clear",
"el1",
"el",
"ed",
"csin",
"colornm",
"hpa",
"cmdch",
"cwin",
"cup",
"cud1",
"home",
"civis",
"cub1",
"mrcup",
"cnorm",
"cuf1",
"ll",
"cuu1",
"cvvis",
"defbi",
"defc",
"dch1",
"dl1",
"devt",
"dial",
"dsl",
"dclk",
"dispc",
"hd",
"enacs",
"endbi",
"smacs",
"smam",
"blink",
"bold",
"smcup",
"smdc",
"dim",
"swidm",
"sdrfq",
"ehhlm",
"smir",
"sitm",
"elhlm",
"slm",
"elohlm",
"smicm",
"snlq",
"snrmq",
"smpch",
"prot",
"rev",
"erhlm",
"smsc",
"invis",
"sshm",
"smso",
"ssubm",
"ssupm",
"ethlm",
"smul",
"sum",
"evhlm",
"smxon",
"ech",
"rmacs",
"rmam",
"sgr0",
"rmcup",
"rmdc",
"rwidm",
"rmir",
"ritm",
"rlm",
"rmicm",
"rmpch",
"rmsc",
"rshm",
"rmso",
"rsubm",
"rsupm",
"rmul",
"rum",
"rmxon",
"pause",
"hook",
"flash",
"ff",
"fsl",
"getm",
"wingo",
"hup",
"is1",
"is2",
"is3",
"if",
"iprog",
"initc",
"initp",
"ich1",
"il1",
"ip",
"ka1",
"ka3",
"kb2",
"kbs",
"kbeg",
"kcbt",
"kc1",
"kc3",
"kcan",
"ktbc",
"kclr",
"kclo",
"kcmd",
"kcpy",
"kcrt",
"kctab",
"kdch1",
"kdl1",
"kcud1",
"krmir",
"kend",
"kent",
"kel",
"ked",
"kext",
"kf0",
"kf1",
"kf2",
"kf3",
"kf4",
"kf5",
"kf6",
"kf7",
"kf8",
"kf9",
"kf10",
"kf11",
"kf12",
"kf13",
"kf14",
"kf15",
"kf16",
"kf17",
"kf18",
"kf19",
"kf20",
"kf21",
"kf22",
"kf23",
"kf24",
"kf25",
"kf26",
"kf27",
"kf28",
"kf29",
"kf30",
"kf31",
"kf32",
"kf33",
"kf34",
"kf35",
"kf36",
"kf37",
"kf38",
"kf39",
"kf40",
"kf41",
"kf42",
"kf43",
"kf44",
"kf45",
"kf46",
"kf47",
"kf48",
"kf49",
"kf50",
"kf51",
"kf52",
"kf53",
"kf54",
"kf55",
"kf56",
"kf57",
"kf58",
"kf59",
"kf60",
"kf61",
"kf62",
"kf63",
"kfnd",
"khlp",
"khome",
"kich1",
"kil1",
"kcub1",
"kll",
"kmrk",
"kmsg",
"kmous",
"kmov",
"knxt",
"knp",
"kopn",
"kopt",
"kpp",
"kprv",
"kprt",
"krdo",
"kref",
"krfr",
"krpl",
"krst",
"kres",
"kcuf1",
"ksav",
"kBEG",
"kCAN",
"kCMD",
"kCPY",
"kCRT",
"kDC",
"kDL",
"kslt",
"kEND",
"kEOL",
"kEXT",
"kind",
"kFND",
"kHLP",
"kHOM",
"kIC",
"kLFT",
"kMSG",
"kMOV",
"kNXT",
"kOPT",
"kPRV",
"kPRT",
"kri",
"kRDO",
"kRPL",
"kRIT",
"kRES",
"kSAV",
"kSPD",
"khts",
"kUND",
"kspd",
"kund",
"kcuu1",
"rmkx",
"smkx",
"lf0",
"lf1",
"lf2",
"lf3",
"lf4",
"lf5",
"lf6",
"lf7",
"lf8",
"lf9",
"lf10",
"fln",
"rmln",
"smln",
"rmm",
"smm",
"mhpa",
"mcud1",
"mcub1",
"mcuf1",
"mvpa",
"mcuu1",
"minfo",
"nel",
"porder",
"oc",
"op",
"pad",
"dch",
"dl",
"cud",
"mcud",
"ich",
"indn",
"il",
"cub",
"mcub",
"cuf",
"mcuf",
"rin",
"cuu",
"mcuu",
"pctrm",
"pfkey",
"pfloc",
"pfxl",
"pfx",
"pln",
"mc0",
"mc5p",
"mc4",
"mc5",
"pulse",
"qdial",
"rmclk",
"rep",
"rfi",
"reqmp",
"rs1",
"rs2",
"rs3",
"rf",
"rc",
"vpa",
"sc",
"scesc",
"ind",
"ri",
"scs",
"s0ds",
"s1ds",
"s2ds",
"s3ds",
"sgr1",
"setab",
"setaf",
"sgr",
"setb",
"smgb",
"smgbp",
"sclk",
"setcolor",
"scp",
"setf",
"smgl",
"smglp",
"smglr",
"slines",
"slength",
"smgr",
"smgrp",
"hts",
"smgtb",
"smgt",
"smgtp",
"wind",
"sbim",
"scsd",
"rbim",
"rcsd",
"subcs",
"supcs",
"ht",
"docr",
"tsl",
"tone",
"u0",
"u1",
"u2",
"u3",
"u4",
"u5",
"u6",
"u7",
"u8",
"u9",
"uc",
"hu",
"wait",
"xoffc",
"xonc",
"zerom",
};
#include <stdlib.h>
static uint32_t
_ti_strhash(const void * __restrict key, size_t keylen)
{
static const uint16_t g[789] = {
0x0000, 0x00cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0094,
0x0000, 0x011b, 0x00a0, 0x0094, 0x002f, 0x00aa, 0x0026, 0x004b,
0x0000, 0x0163, 0x0171, 0x0000, 0x0000, 0x0064, 0x0019, 0x0000,
0x009b, 0x0113, 0x00ed, 0x007e, 0x0000, 0x0000, 0x0000, 0x002d,
0x0000, 0x00f4, 0x0000, 0x00cc, 0x00df, 0x0170, 0x0000, 0x0000,
0x0179, 0x0018, 0x0000, 0x013b, 0x0000, 0x0028, 0x0000, 0x0000,
0x00ef, 0x0000, 0x0137, 0x0061, 0x0000, 0x0000, 0x00ce, 0x00df,
0x00f0, 0x001f, 0x0074, 0x0000, 0x0000, 0x008f, 0x0069, 0x0000,
0x0134, 0x0000, 0x00ac, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000,
0x0012, 0x0027, 0x0000, 0x0110, 0x0000, 0x0000, 0x0000, 0x0061,
0x00a7, 0x0000, 0x0061, 0x0000, 0x0000, 0x0096, 0x0000, 0x00e5,
0x0000, 0x00d1, 0x0017, 0x0000, 0x0000, 0x00bc, 0x00d6, 0x0000,
0x0182, 0x00d7, 0x012d, 0x0000, 0x00e2, 0x00b9, 0x0159, 0x0000,
0x001c, 0x00cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0031, 0x0106, 0x0087, 0x0157, 0x001d, 0x011a, 0x0119,
0x0000, 0x0000, 0x0000, 0x012b, 0x0000, 0x011b, 0x0000, 0x0154,
0x0000, 0x00ee, 0x00ad, 0x00f8, 0x0066, 0x0000, 0x0010, 0x0000,
0x0064, 0x000e, 0x0052, 0x0000, 0x016a, 0x0000, 0x0148, 0x0000,
0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x016d, 0x000b, 0x0000,
0x0000, 0x0000, 0x0000, 0x0058, 0x0091, 0x0000, 0x0022, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0026, 0x011a, 0x00a4, 0x013a,
0x0000, 0x0000, 0x0000, 0x0000, 0x0086, 0x0000, 0x00c0, 0x011f,
0x0000, 0x0093, 0x0000, 0x0000, 0x0042, 0x0174, 0x0101, 0x0000,
0x0065, 0x0086, 0x0000, 0x0000, 0x00e8, 0x0022, 0x000d, 0x0000,
0x008e, 0x000d, 0x0000, 0x008b, 0x0000, 0x0000, 0x0000, 0x0000,
0x0022, 0x0000, 0x011d, 0x0000, 0x0000, 0x0000, 0x010e, 0x0000,
0x0000, 0x0000, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0014, 0x00b3, 0x0000, 0x002e, 0x0051, 0x0000, 0x0102, 0x008e,
0x012b, 0x0145, 0x004c, 0x0000, 0x001e, 0x00fa, 0x0000, 0x0000,
0x0000, 0x0000, 0x00aa, 0x0000, 0x0000, 0x0000, 0x0103, 0x00a4,
0x003e, 0x0000, 0x0114, 0x0028, 0x005e, 0x015d, 0x00e7, 0x0044,
0x0000, 0x0000, 0x00c6, 0x008f, 0x0000, 0x00eb, 0x0000, 0x0000,
0x0000, 0x0169, 0x0000, 0x0110, 0x0093, 0x0000, 0x012c, 0x0178,
0x0000, 0x0000, 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0158,
0x004d, 0x009c, 0x0186, 0x009b, 0x0000, 0x0163, 0x007c, 0x0078,
0x0000, 0x0000, 0x0172, 0x00d2, 0x0000, 0x0000, 0x00fc, 0x0000,
0x0000, 0x0000, 0x0133, 0x0104, 0x017e, 0x0162, 0x0050, 0x0000,
0x0023, 0x00c0, 0x0070, 0x0000, 0x0000, 0x0000, 0x0025, 0x0001,
0x0184, 0x0053, 0x0133, 0x0000, 0x0000, 0x0000, 0x0048, 0x0075,
0x0000, 0x00b2, 0x0056, 0x002c, 0x0000, 0x011c, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0166, 0x011b, 0x0000, 0x0039, 0x0020,
0x0000, 0x0000, 0x0000, 0x00dc, 0x0048, 0x0000, 0x0076, 0x0169,
0x00d7, 0x002a, 0x0032, 0x0013, 0x0153, 0x012f, 0x009c, 0x0041,
0x002f, 0x0000, 0x0000, 0x012e, 0x0000, 0x0000, 0x00dd, 0x0000,
0x0138, 0x000b, 0x0030, 0x008d, 0x0000, 0x0000, 0x0000, 0x0000,
0x0039, 0x017a, 0x00c5, 0x0100, 0x0000, 0x0000, 0x005c, 0x001f,
0x0000, 0x0000, 0x0000, 0x0000, 0x0110, 0x003e, 0x00a1, 0x0000,
0x0081, 0x0000, 0x0000, 0x0000, 0x00dd, 0x0142, 0x00c1, 0x0000,
0x0035, 0x0123, 0x0178, 0x00be, 0x015e, 0x0161, 0x0188, 0x0000,
0x0000, 0x0149, 0x0123, 0x0000, 0x0000, 0x0185, 0x0000, 0x0000,
0x0000, 0x004e, 0x0163, 0x0077, 0x00fa, 0x0000, 0x007b, 0x0006,
0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0158, 0x00d6,
0x00b0, 0x0180, 0x0003, 0x0000, 0x0000, 0x0000, 0x0136, 0x0045,
0x017e, 0x0000, 0x0000, 0x0000, 0x0126, 0x0090, 0x011b, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x017b, 0x0000, 0x0053, 0x0000,
0x005c, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x007e, 0x014e,
0x0035, 0x00ed, 0x0000, 0x00d1, 0x00d8, 0x0142, 0x0168, 0x000a,
0x00d0, 0x0000, 0x0000, 0x0000, 0x00d9, 0x0000, 0x0000, 0x0087,
0x0000, 0x008a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, 0x006c,
0x011d, 0x0177, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x001e,
0x0177, 0x00c4, 0x0000, 0x0000, 0x0000, 0x0014, 0x00c7, 0x00ae,
0x0042, 0x0180, 0x0075, 0x0000, 0x011c, 0x0064, 0x00a3, 0x00bc,
0x0001, 0x0000, 0x0000, 0x0016, 0x00c3, 0x00e4, 0x0009, 0x0000,
0x0000, 0x006b, 0x013c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x00fa, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x007c, 0x0060,
0x0149, 0x0059, 0x00d4, 0x014e, 0x000a, 0x014f, 0x0000, 0x0000,
0x0000, 0x00b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121,
0x0000, 0x0000, 0x0000, 0x007d, 0x0000, 0x0000, 0x001c, 0x0000,
0x0000, 0x00f9, 0x0000, 0x003b, 0x00ea, 0x0000, 0x00ad, 0x0000,
0x0000, 0x0000, 0x0155, 0x0000, 0x0141, 0x0000, 0x0000, 0x0000,
0x0187, 0x004b, 0x009f, 0x0000, 0x0114, 0x0000, 0x00dd, 0x0000,
0x0066, 0x0000, 0x0136, 0x0135, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x001e, 0x0000, 0x0062, 0x0146, 0x0033, 0x0071, 0x0000,
0x0000, 0x010d, 0x004a, 0x0133, 0x0000, 0x0000, 0x0076, 0x0111,
0x0000, 0x00ba, 0x0000, 0x0000, 0x0000, 0x0038, 0x001d, 0x0158,
0x0072, 0x00a3, 0x0000, 0x008c, 0x0008, 0x0000, 0x0000, 0x0000,
0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x00ea, 0x0000, 0x003f,
0x0000, 0x0000, 0x0000, 0x004c, 0x0000, 0x00f9, 0x0000, 0x0000,
0x0000, 0x0147, 0x0182, 0x008f, 0x0156, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0011, 0x0000, 0x0102, 0x0040, 0x0000, 0x0000,
0x0130, 0x0000, 0x0000, 0x0000, 0x0126, 0x0026, 0x0145, 0x0000,
0x0000, 0x00ab, 0x0000, 0x0175, 0x0113, 0x0117, 0x010f, 0x000f,
0x0000, 0x00e3, 0x012e, 0x0000, 0x0000, 0x00f5, 0x0020, 0x0000,
0x0000, 0x00a8, 0x0000, 0x0000, 0x012a, 0x009f, 0x0085, 0x0000,
0x00b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0108,
0x00cb, 0x0000, 0x0000, 0x0000, 0x0053, 0x0000, 0x007f, 0x0000,
0x008c, 0x0113, 0x0000, 0x0000, 0x0156, 0x0169, 0x0000, 0x0009,
0x0000, 0x0073, 0x0000, 0x007e, 0x0000, 0x0000, 0x0000, 0x00eb,
0x0000, 0x0153, 0x0084, 0x0000, 0x0000, 0x0148, 0x0000, 0x0000,
0x011c, 0x0000, 0x00ec, 0x0000, 0x0000, 0x015a, 0x0000, 0x0000,
0x0000, 0x0000, 0x012a, 0x0000, 0x0000, 0x015d, 0x0000, 0x00ae,
0x0000, 0x0000, 0x00db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0101,
0x0067, 0x0000, 0x010c, 0x0000, 0x0032, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0167, 0x0000, 0x00e4, 0x0000, 0x00a2, 0x0000,
0x0067, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0181, 0x0000,
0x015b, 0x0046, 0x0000, 0x0000, 0x0000, 0x00fd, 0x0000, 0x0000,
0x00a8, 0x0000, 0x0008, 0x00a6, 0x00b5, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x006b, 0x0000, 0x0000, 0x00b1, 0x00a2,
0x0000, 0x0000, 0x0000, 0x0166, 0x0000,
};
uint32_t h[3];
mi_vector_hash(key, keylen, 0x8e1051e9U, h);
return (g[h[0] % 789] + g[h[1] % 789]) % 394;
}
const char *
_ti_strid(ssize_t idx)
{
if ((size_t)idx > __arraycount(_ti_strids))
return NULL;
return _ti_strids[idx];
}
ssize_t
_ti_strindex(const char *key)
{
uint32_t idx;
idx = _ti_strhash((const unsigned char *)key, strlen(key));
if (idx > __arraycount(_ti_strids) ||
strcmp(key, _ti_strids[idx]) != 0)
return -1;
return idx;
}