1/* C code produced by gperf version 3.0.4 */ 2/* Command-line: gperf --output-file atoms.c atoms.gperf */ 3/* Computed positions: -k'3,6,9,$' */ 4 5#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ 6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ 7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ 8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ 9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ 10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ 11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ 12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ 13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ 14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ 15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ 16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ 17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ 18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ 19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ 20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ 21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ 22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ 23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ 24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ 25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ 26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ 27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) 28/* The character set is not based on ISO-646. */ 29error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." 30#endif 31 32#line 1 "atoms.gperf" 33 34 35/* Rely on vasprintf (GNU extension) instead of vsnprintf if 36 possible... */ 37#ifdef HAVE_VASPRINTF 38#define _GNU_SOURCE 39#include <stdio.h> 40#endif 41 42#include <xcb/xcb.h> 43#include <stdlib.h> 44#include <stdarg.h> 45#include "xcb_atom.h" 46 47const xcb_atom_t PRIMARY = 1; 48const xcb_atom_t SECONDARY = 2; 49const xcb_atom_t ARC = 3; 50const xcb_atom_t ATOM = 4; 51const xcb_atom_t BITMAP = 5; 52const xcb_atom_t CARDINAL = 6; 53const xcb_atom_t COLORMAP = 7; 54const xcb_atom_t CURSOR = 8; 55const xcb_atom_t CUT_BUFFER0 = 9; 56const xcb_atom_t CUT_BUFFER1 = 10; 57const xcb_atom_t CUT_BUFFER2 = 11; 58const xcb_atom_t CUT_BUFFER3 = 12; 59const xcb_atom_t CUT_BUFFER4 = 13; 60const xcb_atom_t CUT_BUFFER5 = 14; 61const xcb_atom_t CUT_BUFFER6 = 15; 62const xcb_atom_t CUT_BUFFER7 = 16; 63const xcb_atom_t DRAWABLE = 17; 64const xcb_atom_t FONT = 18; 65const xcb_atom_t INTEGER = 19; 66const xcb_atom_t PIXMAP = 20; 67const xcb_atom_t POINT = 21; 68const xcb_atom_t RECTANGLE = 22; 69const xcb_atom_t RESOURCE_MANAGER = 23; 70const xcb_atom_t RGB_COLOR_MAP = 24; 71const xcb_atom_t RGB_BEST_MAP = 25; 72const xcb_atom_t RGB_BLUE_MAP = 26; 73const xcb_atom_t RGB_DEFAULT_MAP = 27; 74const xcb_atom_t RGB_GRAY_MAP = 28; 75const xcb_atom_t RGB_GREEN_MAP = 29; 76const xcb_atom_t RGB_RED_MAP = 30; 77const xcb_atom_t STRING = 31; 78const xcb_atom_t VISUALID = 32; 79const xcb_atom_t WINDOW = 33; 80const xcb_atom_t WM_COMMAND = 34; 81const xcb_atom_t WM_HINTS = 35; 82const xcb_atom_t WM_CLIENT_MACHINE = 36; 83const xcb_atom_t WM_ICON_NAME = 37; 84const xcb_atom_t WM_ICON_SIZE = 38; 85const xcb_atom_t WM_NAME = 39; 86const xcb_atom_t WM_NORMAL_HINTS = 40; 87const xcb_atom_t WM_SIZE_HINTS = 41; 88const xcb_atom_t WM_ZOOM_HINTS = 42; 89const xcb_atom_t MIN_SPACE = 43; 90const xcb_atom_t NORM_SPACE = 44; 91const xcb_atom_t MAX_SPACE = 45; 92const xcb_atom_t END_SPACE = 46; 93const xcb_atom_t SUPERSCRIPT_X = 47; 94const xcb_atom_t SUPERSCRIPT_Y = 48; 95const xcb_atom_t SUBSCRIPT_X = 49; 96const xcb_atom_t SUBSCRIPT_Y = 50; 97const xcb_atom_t UNDERLINE_POSITION = 51; 98const xcb_atom_t UNDERLINE_THICKNESS = 52; 99const xcb_atom_t STRIKEOUT_ASCENT = 53; 100const xcb_atom_t STRIKEOUT_DESCENT = 54; 101const xcb_atom_t ITALIC_ANGLE = 55; 102const xcb_atom_t X_HEIGHT = 56; 103const xcb_atom_t QUAD_WIDTH = 57; 104const xcb_atom_t WEIGHT = 58; 105const xcb_atom_t POINT_SIZE = 59; 106const xcb_atom_t RESOLUTION = 60; 107const xcb_atom_t COPYRIGHT = 61; 108const xcb_atom_t NOTICE = 62; 109const xcb_atom_t FONT_NAME = 63; 110const xcb_atom_t FAMILY_NAME = 64; 111const xcb_atom_t FULL_NAME = 65; 112const xcb_atom_t CAP_HEIGHT = 66; 113const xcb_atom_t WM_CLASS = 67; 114const xcb_atom_t WM_TRANSIENT_FOR = 68; 115#line 93 "atoms.gperf" 116struct atom_map { int name; xcb_atom_t value; }; 117#include <string.h> 118/* maximum key range = 146, duplicates = 0 */ 119 120#ifdef __GNUC__ 121__inline 122#else 123#ifdef __cplusplus 124inline 125#endif 126#endif 127static unsigned int 128hash (str, len) 129 register const char *str; 130 register unsigned int len; 131{ 132 static const unsigned char asso_values[] = 133 { 134 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 135 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 136 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 137 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 138 150, 150, 150, 150, 150, 150, 150, 150, 75, 70, 139 65, 60, 40, 35, 20, 5, 150, 150, 150, 150, 140 150, 150, 150, 150, 150, 35, 0, 45, 15, 0, 141 150, 50, 0, 5, 150, 150, 15, 35, 0, 40, 142 5, 150, 10, 15, 0, 25, 150, 20, 70, 40, 143 55, 150, 150, 150, 150, 15, 150, 150, 150, 150, 144 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 145 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 146 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 147 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 148 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 149 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 151 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 152 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 153 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 154 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 155 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 156 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 157 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 158 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 159 150, 150, 150, 150, 150, 150 160 }; 161 register int hval = len; 162 163 switch (hval) 164 { 165 default: 166 hval += asso_values[(unsigned char)str[8]]; 167 /*FALLTHROUGH*/ 168 case 8: 169 case 7: 170 case 6: 171 hval += asso_values[(unsigned char)str[5]]; 172 /*FALLTHROUGH*/ 173 case 5: 174 case 4: 175 case 3: 176 hval += asso_values[(unsigned char)str[2]]; 177 break; 178 } 179 return hval + asso_values[(unsigned char)str[len - 1]]; 180} 181 182struct stringpool_t 183 { 184 char stringpool_str4[sizeof("FONT")]; 185 char stringpool_str6[sizeof("NOTICE")]; 186 char stringpool_str9[sizeof("FONT_NAME")]; 187 char stringpool_str10[sizeof("POINT")]; 188 char stringpool_str11[sizeof("WEIGHT")]; 189 char stringpool_str14[sizeof("MIN_SPACE")]; 190 char stringpool_str15[sizeof("CAP_HEIGHT")]; 191 char stringpool_str16[sizeof("BITMAP")]; 192 char stringpool_str17[sizeof("INTEGER")]; 193 char stringpool_str19[sizeof("COPYRIGHT")]; 194 char stringpool_str24[sizeof("FULL_NAME")]; 195 char stringpool_str26[sizeof("STRIKEOUT_ASCENT")]; 196 char stringpool_str27[sizeof("STRIKEOUT_DESCENT")]; 197 char stringpool_str28[sizeof("RGB_GREEN_MAP")]; 198 char stringpool_str29[sizeof("END_SPACE")]; 199 char stringpool_str32[sizeof("RGB_BEST_MAP")]; 200 char stringpool_str33[sizeof("CARDINAL")]; 201 char stringpool_str36[sizeof("CURSOR")]; 202 char stringpool_str37[sizeof("WM_CLIENT_MACHINE")]; 203 char stringpool_str38[sizeof("WM_HINTS")]; 204 char stringpool_str41[sizeof("CUT_BUFFER7")]; 205 char stringpool_str42[sizeof("RGB_GRAY_MAP")]; 206 char stringpool_str43[sizeof("DRAWABLE")]; 207 char stringpool_str45[sizeof("RGB_DEFAULT_MAP")]; 208 char stringpool_str46[sizeof("WINDOW")]; 209 char stringpool_str47[sizeof("RGB_BLUE_MAP")]; 210 char stringpool_str48[sizeof("UNDERLINE_POSITION")]; 211 char stringpool_str51[sizeof("RGB_RED_MAP")]; 212 char stringpool_str53[sizeof("VISUALID")]; 213 char stringpool_str54[sizeof("RECTANGLE")]; 214 char stringpool_str56[sizeof("CUT_BUFFER6")]; 215 char stringpool_str57[sizeof("WM_NAME")]; 216 char stringpool_str58[sizeof("X_HEIGHT")]; 217 char stringpool_str61[sizeof("SUBSCRIPT_Y")]; 218 char stringpool_str62[sizeof("PRIMARY")]; 219 char stringpool_str63[sizeof("COLORMAP")]; 220 char stringpool_str64[sizeof("UNDERLINE_THICKNESS")]; 221 char stringpool_str65[sizeof("QUAD_WIDTH")]; 222 char stringpool_str66[sizeof("RESOURCE_MANAGER")]; 223 char stringpool_str67[sizeof("WM_ICON_NAME")]; 224 char stringpool_str68[sizeof("RGB_COLOR_MAP")]; 225 char stringpool_str70[sizeof("WM_NORMAL_HINTS")]; 226 char stringpool_str71[sizeof("CUT_BUFFER5")]; 227 char stringpool_str73[sizeof("WM_CLASS")]; 228 char stringpool_str75[sizeof("WM_COMMAND")]; 229 char stringpool_str76[sizeof("CUT_BUFFER4")]; 230 char stringpool_str78[sizeof("SUPERSCRIPT_Y")]; 231 char stringpool_str79[sizeof("ATOM")]; 232 char stringpool_str80[sizeof("NORM_SPACE")]; 233 char stringpool_str81[sizeof("WM_TRANSIENT_FOR")]; 234 char stringpool_str82[sizeof("WM_ICON_SIZE")]; 235 char stringpool_str83[sizeof("WM_ZOOM_HINTS")]; 236 char stringpool_str84[sizeof("MAX_SPACE")]; 237 char stringpool_str85[sizeof("POINT_SIZE")]; 238 char stringpool_str86[sizeof("PIXMAP")]; 239 char stringpool_str90[sizeof("RESOLUTION")]; 240 char stringpool_str91[sizeof("SUBSCRIPT_X")]; 241 char stringpool_str92[sizeof("ITALIC_ANGLE")]; 242 char stringpool_str93[sizeof("ARC")]; 243 char stringpool_str96[sizeof("CUT_BUFFER3")]; 244 char stringpool_str98[sizeof("WM_SIZE_HINTS")]; 245 char stringpool_str101[sizeof("CUT_BUFFER2")]; 246 char stringpool_str106[sizeof("CUT_BUFFER1")]; 247 char stringpool_str108[sizeof("SUPERSCRIPT_X")]; 248 char stringpool_str111[sizeof("CUT_BUFFER0")]; 249 char stringpool_str116[sizeof("STRING")]; 250 char stringpool_str121[sizeof("FAMILY_NAME")]; 251 char stringpool_str149[sizeof("SECONDARY")]; 252 }; 253static const struct stringpool_t stringpool_contents = 254 { 255 "FONT", 256 "NOTICE", 257 "FONT_NAME", 258 "POINT", 259 "WEIGHT", 260 "MIN_SPACE", 261 "CAP_HEIGHT", 262 "BITMAP", 263 "INTEGER", 264 "COPYRIGHT", 265 "FULL_NAME", 266 "STRIKEOUT_ASCENT", 267 "STRIKEOUT_DESCENT", 268 "RGB_GREEN_MAP", 269 "END_SPACE", 270 "RGB_BEST_MAP", 271 "CARDINAL", 272 "CURSOR", 273 "WM_CLIENT_MACHINE", 274 "WM_HINTS", 275 "CUT_BUFFER7", 276 "RGB_GRAY_MAP", 277 "DRAWABLE", 278 "RGB_DEFAULT_MAP", 279 "WINDOW", 280 "RGB_BLUE_MAP", 281 "UNDERLINE_POSITION", 282 "RGB_RED_MAP", 283 "VISUALID", 284 "RECTANGLE", 285 "CUT_BUFFER6", 286 "WM_NAME", 287 "X_HEIGHT", 288 "SUBSCRIPT_Y", 289 "PRIMARY", 290 "COLORMAP", 291 "UNDERLINE_THICKNESS", 292 "QUAD_WIDTH", 293 "RESOURCE_MANAGER", 294 "WM_ICON_NAME", 295 "RGB_COLOR_MAP", 296 "WM_NORMAL_HINTS", 297 "CUT_BUFFER5", 298 "WM_CLASS", 299 "WM_COMMAND", 300 "CUT_BUFFER4", 301 "SUPERSCRIPT_Y", 302 "ATOM", 303 "NORM_SPACE", 304 "WM_TRANSIENT_FOR", 305 "WM_ICON_SIZE", 306 "WM_ZOOM_HINTS", 307 "MAX_SPACE", 308 "POINT_SIZE", 309 "PIXMAP", 310 "RESOLUTION", 311 "SUBSCRIPT_X", 312 "ITALIC_ANGLE", 313 "ARC", 314 "CUT_BUFFER3", 315 "WM_SIZE_HINTS", 316 "CUT_BUFFER2", 317 "CUT_BUFFER1", 318 "SUPERSCRIPT_X", 319 "CUT_BUFFER0", 320 "STRING", 321 "FAMILY_NAME", 322 "SECONDARY" 323 }; 324#define stringpool ((const char *) &stringpool_contents) 325static 326#ifdef __GNUC__ 327__inline 328#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ 329__attribute__ ((__gnu_inline__)) 330#endif 331#endif 332const struct atom_map * 333in_word_set (str, len) 334 register const char *str; 335 register unsigned int len; 336{ 337 enum 338 { 339 TOTAL_KEYWORDS = 68, 340 MIN_WORD_LENGTH = 3, 341 MAX_WORD_LENGTH = 19, 342 MIN_HASH_VALUE = 4, 343 MAX_HASH_VALUE = 149 344 }; 345 346 static const struct atom_map wordlist[] = 347 { 348 {-1}, {-1}, {-1}, {-1}, 349#line 112 "atoms.gperf" 350 {(int)(long)&((struct stringpool_t *)0)->stringpool_str4,18}, 351 {-1}, 352#line 156 "atoms.gperf" 353 {(int)(long)&((struct stringpool_t *)0)->stringpool_str6,62}, 354 {-1}, {-1}, 355#line 157 "atoms.gperf" 356 {(int)(long)&((struct stringpool_t *)0)->stringpool_str9,63}, 357#line 115 "atoms.gperf" 358 {(int)(long)&((struct stringpool_t *)0)->stringpool_str10,21}, 359#line 152 "atoms.gperf" 360 {(int)(long)&((struct stringpool_t *)0)->stringpool_str11,58}, 361 {-1}, {-1}, 362#line 137 "atoms.gperf" 363 {(int)(long)&((struct stringpool_t *)0)->stringpool_str14,43}, 364#line 160 "atoms.gperf" 365 {(int)(long)&((struct stringpool_t *)0)->stringpool_str15,66}, 366#line 99 "atoms.gperf" 367 {(int)(long)&((struct stringpool_t *)0)->stringpool_str16,5}, 368#line 113 "atoms.gperf" 369 {(int)(long)&((struct stringpool_t *)0)->stringpool_str17,19}, 370 {-1}, 371#line 155 "atoms.gperf" 372 {(int)(long)&((struct stringpool_t *)0)->stringpool_str19,61}, 373 {-1}, {-1}, {-1}, {-1}, 374#line 159 "atoms.gperf" 375 {(int)(long)&((struct stringpool_t *)0)->stringpool_str24,65}, 376 {-1}, 377#line 147 "atoms.gperf" 378 {(int)(long)&((struct stringpool_t *)0)->stringpool_str26,53}, 379#line 148 "atoms.gperf" 380 {(int)(long)&((struct stringpool_t *)0)->stringpool_str27,54}, 381#line 123 "atoms.gperf" 382 {(int)(long)&((struct stringpool_t *)0)->stringpool_str28,29}, 383#line 140 "atoms.gperf" 384 {(int)(long)&((struct stringpool_t *)0)->stringpool_str29,46}, 385 {-1}, {-1}, 386#line 119 "atoms.gperf" 387 {(int)(long)&((struct stringpool_t *)0)->stringpool_str32,25}, 388#line 100 "atoms.gperf" 389 {(int)(long)&((struct stringpool_t *)0)->stringpool_str33,6}, 390 {-1}, {-1}, 391#line 102 "atoms.gperf" 392 {(int)(long)&((struct stringpool_t *)0)->stringpool_str36,8}, 393#line 130 "atoms.gperf" 394 {(int)(long)&((struct stringpool_t *)0)->stringpool_str37,36}, 395#line 129 "atoms.gperf" 396 {(int)(long)&((struct stringpool_t *)0)->stringpool_str38,35}, 397 {-1}, {-1}, 398#line 110 "atoms.gperf" 399 {(int)(long)&((struct stringpool_t *)0)->stringpool_str41,16}, 400#line 122 "atoms.gperf" 401 {(int)(long)&((struct stringpool_t *)0)->stringpool_str42,28}, 402#line 111 "atoms.gperf" 403 {(int)(long)&((struct stringpool_t *)0)->stringpool_str43,17}, 404 {-1}, 405#line 121 "atoms.gperf" 406 {(int)(long)&((struct stringpool_t *)0)->stringpool_str45,27}, 407#line 127 "atoms.gperf" 408 {(int)(long)&((struct stringpool_t *)0)->stringpool_str46,33}, 409#line 120 "atoms.gperf" 410 {(int)(long)&((struct stringpool_t *)0)->stringpool_str47,26}, 411#line 145 "atoms.gperf" 412 {(int)(long)&((struct stringpool_t *)0)->stringpool_str48,51}, 413 {-1}, {-1}, 414#line 124 "atoms.gperf" 415 {(int)(long)&((struct stringpool_t *)0)->stringpool_str51,30}, 416 {-1}, 417#line 126 "atoms.gperf" 418 {(int)(long)&((struct stringpool_t *)0)->stringpool_str53,32}, 419#line 116 "atoms.gperf" 420 {(int)(long)&((struct stringpool_t *)0)->stringpool_str54,22}, 421 {-1}, 422#line 109 "atoms.gperf" 423 {(int)(long)&((struct stringpool_t *)0)->stringpool_str56,15}, 424#line 133 "atoms.gperf" 425 {(int)(long)&((struct stringpool_t *)0)->stringpool_str57,39}, 426#line 150 "atoms.gperf" 427 {(int)(long)&((struct stringpool_t *)0)->stringpool_str58,56}, 428 {-1}, {-1}, 429#line 144 "atoms.gperf" 430 {(int)(long)&((struct stringpool_t *)0)->stringpool_str61,50}, 431#line 95 "atoms.gperf" 432 {(int)(long)&((struct stringpool_t *)0)->stringpool_str62,1}, 433#line 101 "atoms.gperf" 434 {(int)(long)&((struct stringpool_t *)0)->stringpool_str63,7}, 435#line 146 "atoms.gperf" 436 {(int)(long)&((struct stringpool_t *)0)->stringpool_str64,52}, 437#line 151 "atoms.gperf" 438 {(int)(long)&((struct stringpool_t *)0)->stringpool_str65,57}, 439#line 117 "atoms.gperf" 440 {(int)(long)&((struct stringpool_t *)0)->stringpool_str66,23}, 441#line 131 "atoms.gperf" 442 {(int)(long)&((struct stringpool_t *)0)->stringpool_str67,37}, 443#line 118 "atoms.gperf" 444 {(int)(long)&((struct stringpool_t *)0)->stringpool_str68,24}, 445 {-1}, 446#line 134 "atoms.gperf" 447 {(int)(long)&((struct stringpool_t *)0)->stringpool_str70,40}, 448#line 108 "atoms.gperf" 449 {(int)(long)&((struct stringpool_t *)0)->stringpool_str71,14}, 450 {-1}, 451#line 161 "atoms.gperf" 452 {(int)(long)&((struct stringpool_t *)0)->stringpool_str73,67}, 453 {-1}, 454#line 128 "atoms.gperf" 455 {(int)(long)&((struct stringpool_t *)0)->stringpool_str75,34}, 456#line 107 "atoms.gperf" 457 {(int)(long)&((struct stringpool_t *)0)->stringpool_str76,13}, 458 {-1}, 459#line 142 "atoms.gperf" 460 {(int)(long)&((struct stringpool_t *)0)->stringpool_str78,48}, 461#line 98 "atoms.gperf" 462 {(int)(long)&((struct stringpool_t *)0)->stringpool_str79,4}, 463#line 138 "atoms.gperf" 464 {(int)(long)&((struct stringpool_t *)0)->stringpool_str80,44}, 465#line 162 "atoms.gperf" 466 {(int)(long)&((struct stringpool_t *)0)->stringpool_str81,68}, 467#line 132 "atoms.gperf" 468 {(int)(long)&((struct stringpool_t *)0)->stringpool_str82,38}, 469#line 136 "atoms.gperf" 470 {(int)(long)&((struct stringpool_t *)0)->stringpool_str83,42}, 471#line 139 "atoms.gperf" 472 {(int)(long)&((struct stringpool_t *)0)->stringpool_str84,45}, 473#line 153 "atoms.gperf" 474 {(int)(long)&((struct stringpool_t *)0)->stringpool_str85,59}, 475#line 114 "atoms.gperf" 476 {(int)(long)&((struct stringpool_t *)0)->stringpool_str86,20}, 477 {-1}, {-1}, {-1}, 478#line 154 "atoms.gperf" 479 {(int)(long)&((struct stringpool_t *)0)->stringpool_str90,60}, 480#line 143 "atoms.gperf" 481 {(int)(long)&((struct stringpool_t *)0)->stringpool_str91,49}, 482#line 149 "atoms.gperf" 483 {(int)(long)&((struct stringpool_t *)0)->stringpool_str92,55}, 484#line 97 "atoms.gperf" 485 {(int)(long)&((struct stringpool_t *)0)->stringpool_str93,3}, 486 {-1}, {-1}, 487#line 106 "atoms.gperf" 488 {(int)(long)&((struct stringpool_t *)0)->stringpool_str96,12}, 489 {-1}, 490#line 135 "atoms.gperf" 491 {(int)(long)&((struct stringpool_t *)0)->stringpool_str98,41}, 492 {-1}, {-1}, 493#line 105 "atoms.gperf" 494 {(int)(long)&((struct stringpool_t *)0)->stringpool_str101,11}, 495 {-1}, {-1}, {-1}, {-1}, 496#line 104 "atoms.gperf" 497 {(int)(long)&((struct stringpool_t *)0)->stringpool_str106,10}, 498 {-1}, 499#line 141 "atoms.gperf" 500 {(int)(long)&((struct stringpool_t *)0)->stringpool_str108,47}, 501 {-1}, {-1}, 502#line 103 "atoms.gperf" 503 {(int)(long)&((struct stringpool_t *)0)->stringpool_str111,9}, 504 {-1}, {-1}, {-1}, {-1}, 505#line 125 "atoms.gperf" 506 {(int)(long)&((struct stringpool_t *)0)->stringpool_str116,31}, 507 {-1}, {-1}, {-1}, {-1}, 508#line 158 "atoms.gperf" 509 {(int)(long)&((struct stringpool_t *)0)->stringpool_str121,64}, 510 {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, 511 {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, 512 {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, 513#line 96 "atoms.gperf" 514 {(int)(long)&((struct stringpool_t *)0)->stringpool_str149,2} 515 }; 516 517 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) 518 { 519 register int key = hash (str, len); 520 521 if (key <= MAX_HASH_VALUE && key >= 0) 522 { 523 register int o = wordlist[key].name; 524 if (o >= 0) 525 { 526 register const char *s = o + stringpool; 527 528 if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0') 529 return &wordlist[key]; 530 } 531 } 532 } 533 return 0; 534} 535#line 163 "atoms.gperf" 536 537 538static const char atom_names[] = 539 "PRIMARY\0" 540 "SECONDARY\0" 541 "ARC\0" 542 "ATOM\0" 543 "BITMAP\0" 544 "CARDINAL\0" 545 "COLORMAP\0" 546 "CURSOR\0" 547 "CUT_BUFFER0\0" 548 "CUT_BUFFER1\0" 549 "CUT_BUFFER2\0" 550 "CUT_BUFFER3\0" 551 "CUT_BUFFER4\0" 552 "CUT_BUFFER5\0" 553 "CUT_BUFFER6\0" 554 "CUT_BUFFER7\0" 555 "DRAWABLE\0" 556 "FONT\0" 557 "INTEGER\0" 558 "PIXMAP\0" 559 "POINT\0" 560 "RECTANGLE\0" 561 "RESOURCE_MANAGER\0" 562 "RGB_COLOR_MAP\0" 563 "RGB_BEST_MAP\0" 564 "RGB_BLUE_MAP\0" 565 "RGB_DEFAULT_MAP\0" 566 "RGB_GRAY_MAP\0" 567 "RGB_GREEN_MAP\0" 568 "RGB_RED_MAP\0" 569 "STRING\0" 570 "VISUALID\0" 571 "WINDOW\0" 572 "WM_COMMAND\0" 573 "WM_HINTS\0" 574 "WM_CLIENT_MACHINE\0" 575 "WM_ICON_NAME\0" 576 "WM_ICON_SIZE\0" 577 "WM_NAME\0" 578 "WM_NORMAL_HINTS\0" 579 "WM_SIZE_HINTS\0" 580 "WM_ZOOM_HINTS\0" 581 "MIN_SPACE\0" 582 "NORM_SPACE\0" 583 "MAX_SPACE\0" 584 "END_SPACE\0" 585 "SUPERSCRIPT_X\0" 586 "SUPERSCRIPT_Y\0" 587 "SUBSCRIPT_X\0" 588 "SUBSCRIPT_Y\0" 589 "UNDERLINE_POSITION\0" 590 "UNDERLINE_THICKNESS\0" 591 "STRIKEOUT_ASCENT\0" 592 "STRIKEOUT_DESCENT\0" 593 "ITALIC_ANGLE\0" 594 "X_HEIGHT\0" 595 "QUAD_WIDTH\0" 596 "WEIGHT\0" 597 "POINT_SIZE\0" 598 "RESOLUTION\0" 599 "COPYRIGHT\0" 600 "NOTICE\0" 601 "FONT_NAME\0" 602 "FAMILY_NAME\0" 603 "FULL_NAME\0" 604 "CAP_HEIGHT\0" 605 "WM_CLASS\0" 606 "WM_TRANSIENT_FOR\0" 607; 608 609static const uint16_t atom_name_offsets[] = { 610 0, 611 8, 612 18, 613 22, 614 27, 615 34, 616 43, 617 52, 618 59, 619 71, 620 83, 621 95, 622 107, 623 119, 624 131, 625 143, 626 155, 627 164, 628 169, 629 177, 630 184, 631 190, 632 200, 633 217, 634 231, 635 244, 636 257, 637 273, 638 286, 639 300, 640 312, 641 319, 642 328, 643 335, 644 346, 645 355, 646 373, 647 386, 648 399, 649 407, 650 423, 651 437, 652 451, 653 461, 654 472, 655 482, 656 492, 657 506, 658 520, 659 532, 660 544, 661 563, 662 583, 663 600, 664 618, 665 631, 666 640, 667 651, 668 658, 669 669, 670 680, 671 690, 672 697, 673 707, 674 719, 675 729, 676 740, 677 749, 678}; 679 680xcb_atom_t xcb_atom_get(xcb_connection_t *connection, const char *atom_name) 681{ 682 if(atom_name == NULL) 683 return XCB_NONE; 684 xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection, 685 xcb_intern_atom(connection, 0, strlen(atom_name), atom_name), NULL); 686 if(!reply) 687 return XCB_NONE; 688 xcb_atom_t atom = reply->atom; 689 free(reply); 690 return atom; 691} 692 693xcb_atom_t xcb_atom_get_predefined(uint16_t name_len, const char *name) 694{ 695 const struct atom_map *value = in_word_set(name, name_len); 696 xcb_atom_t ret = XCB_NONE; 697 if(value) 698 ret = value->value; 699 return ret; 700} 701 702xcb_atom_fast_cookie_t xcb_atom_get_fast(xcb_connection_t *c, uint8_t only_if_exists, uint16_t name_len, const char *name) 703{ 704 xcb_atom_fast_cookie_t cookie; 705 706 if((cookie.u.atom = xcb_atom_get_predefined(name_len, name)) != XCB_NONE) 707 { 708 cookie.tag = TAG_VALUE; 709 return cookie; 710 } 711 712 cookie.tag = TAG_COOKIE; 713 cookie.u.cookie = xcb_intern_atom(c, only_if_exists, name_len, name); 714 return cookie; 715} 716 717xcb_atom_t xcb_atom_get_fast_reply(xcb_connection_t *c, xcb_atom_fast_cookie_t cookie, xcb_generic_error_t **e) 718{ 719 switch(cookie.tag) 720 { 721 xcb_intern_atom_reply_t *reply; 722 case TAG_VALUE: 723 if(e) 724 *e = 0; 725 break; 726 case TAG_COOKIE: 727 reply = xcb_intern_atom_reply(c, cookie.u.cookie, e); 728 if(reply) 729 { 730 cookie.u.atom = reply->atom; 731 free(reply); 732 } 733 else 734 cookie.u.atom = XCB_NONE; 735 break; 736 } 737 return cookie.u.atom; 738} 739 740const char *xcb_atom_get_name_predefined(xcb_atom_t atom) 741{ 742 if(atom <= 0 || atom > (sizeof(atom_name_offsets) / sizeof(*atom_name_offsets))) 743 return 0; 744 return atom_names + atom_name_offsets[atom - 1]; 745} 746 747int xcb_atom_get_name(xcb_connection_t *c, xcb_atom_t atom, const char **namep, int *lengthp) 748{ 749 static char buf[100]; 750 const char *name = xcb_atom_get_name_predefined(atom); 751 int namelen; 752 xcb_get_atom_name_cookie_t atomc; 753 xcb_get_atom_name_reply_t *atomr; 754 if(name) 755 { 756 *namep = name; 757 *lengthp = strlen(name); 758 return 1; 759 } 760 atomc = xcb_get_atom_name(c, atom); 761 atomr = xcb_get_atom_name_reply(c, atomc, 0); 762 if(!atomr) 763 return 0; 764 namelen = xcb_get_atom_name_name_length(atomr); 765 if(namelen > sizeof(buf)) 766 namelen = sizeof(buf); 767 *lengthp = namelen; 768 memcpy(buf, xcb_get_atom_name_name(atomr), namelen); 769 *namep = buf; 770 free(atomr); 771 return 1; 772} 773 774static char *makename(const char *fmt, ...) 775{ 776 char *ret; 777 int n; 778 va_list ap; 779 780#ifndef HAVE_VASPRINTF 781 char *np; 782 int size = 64; 783 784 /* First allocate 'size' bytes, should be enough usually */ 785 if((ret = malloc(size)) == NULL) 786 return NULL; 787 788 while(1) 789 { 790 va_start(ap, fmt); 791 n = vsnprintf(ret, size, fmt, ap); 792 va_end(ap); 793 794 if(n < 0) 795 return NULL; 796 797 if(n < size) 798 return ret; 799 800 size = n + 1; 801 if((np = realloc(ret, size)) == NULL) 802 { 803 free(ret); 804 return NULL; 805 } 806 807 ret = np; 808 } 809#else 810 va_start(ap, fmt); 811 n = vasprintf(&ret, fmt, ap); 812 va_end(ap); 813 814 if(n < 0) 815 return NULL; 816 817 return ret; 818#endif 819} 820 821char *xcb_atom_name_by_screen(const char *base, uint8_t screen) 822{ 823 return makename("%s_S%u", base, screen); 824} 825 826char *xcb_atom_name_by_resource(const char *base, uint32_t resource) 827{ 828 return makename("%s_R%08X", base, resource); 829} 830 831char *xcb_atom_name_unique(const char *base, uint32_t id) 832{ 833 if(base) 834 return makename("%s_U%lu", base, id); 835 else 836 return makename("U%lu", id); 837} 838