2 * generated by ./tinfo/MKuserdefs.sh
6 * comp_userdefs.c -- The names of widely used user-defined capabilities
7 * indexed via a hash table for the compiler.
11 #include <curses.priv.h>
16 /* 10 collisions out of 90 entries */
17 static const char user_names_text[] = \
18 "E3\0" "RGB\0" "TS\0" "U8\0" "XM\0" "grbom\0" "gsbom\0" "xm\0" "AN\0" \
19 "AX\0" "C0\0" "C8\0" "CE\0" "CS\0" "E0\0" "G0\0" "KJ\0" "OL\0" "S0\0" \
20 "TF\0" "WS\0" "XC\0" "XT\0" "Z0\0" "Z1\0" "Cr\0" "Cs\0" "Csr\0" "Ms\0" \
21 "Se\0" "Smulx\0" "Ss\0" "rmxx\0" "smxx\0" "kDC3\0" "kDC4\0" "kDC5\0" \
22 "kDC6\0" "kDC7\0" "kDN\0" "kDN3\0" "kDN4\0" "kDN5\0" "kDN6\0" "kDN7\0" \
23 "kEND3\0" "kEND4\0" "kEND5\0" "kEND6\0" "kEND7\0" "kHOM3\0" "kHOM4\0" \
24 "kHOM5\0" "kHOM6\0" "kHOM7\0" "kIC3\0" "kIC4\0" "kIC5\0" "kIC6\0" \
25 "kIC7\0" "kLFT3\0" "kLFT4\0" "kLFT5\0" "kLFT6\0" "kLFT7\0" "kNXT3\0" \
26 "kNXT4\0" "kNXT5\0" "kNXT6\0" "kNXT7\0" "kPRV3\0" "kPRV4\0" "kPRV5\0" \
27 "kPRV6\0" "kPRV7\0" "kRIT3\0" "kRIT4\0" "kRIT5\0" "kRIT6\0" "kRIT7\0" \
28 "kUP\0" "kUP3\0" "kUP4\0" "kUP5\0" "kUP6\0" "kUP7\0" "ka2\0" "kb1\0" \
31 static user_table_data const user_names_data[] =
33 { 0, (1<<STRING), 0,0, 0, -1 },
34 { 3, (1<<BOOLEAN|1<<NUMBER|1<<STRING), 0,0, 1, -1 },
35 { 7, (1<<STRING), 0,0, 2, -1 },
36 { 10, (1<<NUMBER), 0,0, 1, -1 },
37 { 13, (1<<STRING), 1,0, 3, -1 },
38 { 16, (1<<STRING), 0,0, 4, -1 },
39 { 22, (1<<STRING), 0,0, 5, -1 },
40 { 28, (1<<STRING), 8,8, 14, -1 },
41 { 31, (1<<BOOLEAN), 0,0, 1, -1 },
42 { 34, (1<<BOOLEAN), 0,0, 2, -1 },
43 { 37, (1<<STRING), 0,0, 15, -1 },
44 { 40, (1<<BOOLEAN), 0,0, 3, -1 },
45 { 43, (1<<STRING), 0,0, 16, -1 },
46 { 46, (1<<STRING), 0,0, 17, -1 },
47 { 49, (1<<STRING), 0,0, 18, -1 },
48 { 52, (1<<BOOLEAN), 0,0, 4, -1 },
49 { 55, (1<<STRING), 1,1, 19, -1 },
50 { 58, (1<<NUMBER), 0,0, 2, -1 },
51 { 61, (1<<STRING), 1,1, 20, -1 },
52 { 64, (1<<BOOLEAN), 0,0, 5, -1 },
53 { 67, (1<<STRING), 2,0, 21, -1 },
54 { 70, (1<<STRING), 1,1, 22, -1 },
55 { 73, (1<<BOOLEAN), 0,0, 6, -1 },
56 { 76, (1<<STRING), 0,0, 23, -1 },
57 { 79, (1<<STRING), 0,0, 24, -1 },
58 { 82, (1<<STRING), 0,0, 25, -1 },
59 { 85, (1<<STRING), 1,1, 26, -1 },
60 { 88, (1<<STRING), 1,0, 27, -1 },
61 { 92, (1<<STRING), 2,3, 28, -1 },
62 { 95, (1<<STRING), 0,0, 29, -1 },
63 { 98, (1<<STRING), 1,0, 30, -1 },
64 { 104, (1<<STRING), 1,0, 31, -1 },
65 { 107, (1<<STRING), 0,0, 32, -1 },
66 { 112, (1<<STRING), 0,0, 33, -1 },
67 { 117, (1<<STRING), 0,0, 34, -1 },
68 { 122, (1<<STRING), 0,0, 35, -1 },
69 { 127, (1<<STRING), 0,0, 36, -1 },
70 { 132, (1<<STRING), 0,0, 37, -1 },
71 { 137, (1<<STRING), 0,0, 38, 8 },
72 { 142, (1<<STRING), 0,0, 39, -1 },
73 { 146, (1<<STRING), 0,0, 40, -1 },
74 { 151, (1<<STRING), 0,0, 41, -1 },
75 { 156, (1<<STRING), 0,0, 42, -1 },
76 { 161, (1<<STRING), 0,0, 43, 9 },
77 { 166, (1<<STRING), 0,0, 44, -1 },
78 { 171, (1<<STRING), 0,0, 45, -1 },
79 { 177, (1<<STRING), 0,0, 46, -1 },
80 { 183, (1<<STRING), 0,0, 47, -1 },
81 { 189, (1<<STRING), 0,0, 48, -1 },
82 { 195, (1<<STRING), 0,0, 49, -1 },
83 { 201, (1<<STRING), 0,0, 50, -1 },
84 { 207, (1<<STRING), 0,0, 51, -1 },
85 { 213, (1<<STRING), 0,0, 52, -1 },
86 { 219, (1<<STRING), 0,0, 53, -1 },
87 { 225, (1<<STRING), 0,0, 54, -1 },
88 { 231, (1<<STRING), 0,0, 55, -1 },
89 { 236, (1<<STRING), 0,0, 56, -1 },
90 { 241, (1<<STRING), 0,0, 57, -1 },
91 { 246, (1<<STRING), 0,0, 58, -1 },
92 { 251, (1<<STRING), 0,0, 59, -1 },
93 { 256, (1<<STRING), 0,0, 60, 52 },
94 { 262, (1<<STRING), 0,0, 61, 53 },
95 { 268, (1<<STRING), 0,0, 62, 54 },
96 { 274, (1<<STRING), 0,0, 63, -1 },
97 { 280, (1<<STRING), 0,0, 64, -1 },
98 { 286, (1<<STRING), 0,0, 65, -1 },
99 { 292, (1<<STRING), 0,0, 66, -1 },
100 { 298, (1<<STRING), 0,0, 67, -1 },
101 { 304, (1<<STRING), 0,0, 68, -1 },
102 { 310, (1<<STRING), 0,0, 69, -1 },
103 { 316, (1<<STRING), 0,0, 70, -1 },
104 { 322, (1<<STRING), 0,0, 71, -1 },
105 { 328, (1<<STRING), 0,0, 72, 65 },
106 { 334, (1<<STRING), 0,0, 73, 66 },
107 { 340, (1<<STRING), 0,0, 74, 67 },
108 { 346, (1<<STRING), 0,0, 75, -1 },
109 { 352, (1<<STRING), 0,0, 76, -1 },
110 { 358, (1<<STRING), 0,0, 77, -1 },
111 { 364, (1<<STRING), 0,0, 78, -1 },
112 { 370, (1<<STRING), 0,0, 79, -1 },
113 { 376, (1<<STRING), 0,0, 80, -1 },
114 { 380, (1<<STRING), 0,0, 81, -1 },
115 { 385, (1<<STRING), 0,0, 82, -1 },
116 { 390, (1<<STRING), 0,0, 83, -1 },
117 { 395, (1<<STRING), 0,0, 84, -1 },
118 { 400, (1<<STRING), 0,0, 85, -1 },
119 { 405, (1<<STRING), 0,0, 86, -1 },
120 { 409, (1<<STRING), 0,0, 87, 86 },
121 { 413, (1<<STRING), 0,0, 88, -1 },
122 { 417, (1<<STRING), 0,0, 89, 88 }
125 static struct user_table_entry *_nc_user_table = 0;
127 static const HashValue _nc_user_hash_table[995] =
1123 0 /* base-of-table */
1127 #define USERTABSIZE SIZEOF(user_names_data)
1131 next_string(const char *strings, unsigned *offset)
1133 *offset += (unsigned) strlen(strings + *offset) + 1;
1136 static const struct user_table_entry *
1137 _nc_build_names(struct user_table_entry **actual,
1138 const user_table_data *source,
1139 const char *strings)
1142 *actual = typeCalloc(struct user_table_entry, USERTABSIZE);
1146 for (n = 0; n < USERTABSIZE; ++n) {
1147 (*actual)[n].ute_name = strings + len;
1148 (*actual)[n].ute_type = (int) source[n].ute_type;
1149 (*actual)[n].ute_argc = source[n].ute_argc;
1150 (*actual)[n].ute_args = source[n].ute_args;
1151 (*actual)[n].ute_index = source[n].ute_index;
1152 (*actual)[n].ute_link = source[n].ute_link;
1153 next_string(strings, &len);
1160 #define build_names(root) _nc_build_names(&_nc_##root##_table, \
1161 root##_names_data, \
1164 #define build_names(root) _nc_ ## root ## _table
1167 NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void)
1169 return build_names(user) ;
1173 info_hash(const char *string)
1177 DEBUG(9, ("hashing %s", string));
1179 sum += (long) (*string + (*(string + 1) << 8));
1183 DEBUG(9, ("sum is %ld", sum));
1184 return (HashValue) (sum % HASHTABSIZE);
1188 compare_info_names(const char *a, const char *b)
1190 return !strcmp(a, b);
1193 static const HashData hash_data[] = {
1194 { HASHTABSIZE, _nc_user_hash_table, info_hash, compare_info_names }
1197 NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void)
1203 NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void)
1206 FreeIfNeeded(_nc_user_table);
1209 #endif /* NO_LEAKS */
1211 #else /*! NCURSES_XNAMES */
1212 NCURSES_EXPORT(void) _nc_comp_userdefs(void);
1213 NCURSES_EXPORT(void) _nc_comp_userdefs(void) { }
1214 #endif /* NCURSES_XNAMES */