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.  */
29 error "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 
47 const xcb_atom_t PRIMARY = 1;
48 const xcb_atom_t SECONDARY = 2;
49 const xcb_atom_t ARC = 3;
50 const xcb_atom_t ATOM = 4;
51 const xcb_atom_t BITMAP = 5;
52 const xcb_atom_t CARDINAL = 6;
53 const xcb_atom_t COLORMAP = 7;
54 const xcb_atom_t CURSOR = 8;
55 const xcb_atom_t CUT_BUFFER0 = 9;
56 const xcb_atom_t CUT_BUFFER1 = 10;
57 const xcb_atom_t CUT_BUFFER2 = 11;
58 const xcb_atom_t CUT_BUFFER3 = 12;
59 const xcb_atom_t CUT_BUFFER4 = 13;
60 const xcb_atom_t CUT_BUFFER5 = 14;
61 const xcb_atom_t CUT_BUFFER6 = 15;
62 const xcb_atom_t CUT_BUFFER7 = 16;
63 const xcb_atom_t DRAWABLE = 17;
64 const xcb_atom_t FONT = 18;
65 const xcb_atom_t INTEGER = 19;
66 const xcb_atom_t PIXMAP = 20;
67 const xcb_atom_t POINT = 21;
68 const xcb_atom_t RECTANGLE = 22;
69 const xcb_atom_t RESOURCE_MANAGER = 23;
70 const xcb_atom_t RGB_COLOR_MAP = 24;
71 const xcb_atom_t RGB_BEST_MAP = 25;
72 const xcb_atom_t RGB_BLUE_MAP = 26;
73 const xcb_atom_t RGB_DEFAULT_MAP = 27;
74 const xcb_atom_t RGB_GRAY_MAP = 28;
75 const xcb_atom_t RGB_GREEN_MAP = 29;
76 const xcb_atom_t RGB_RED_MAP = 30;
77 const xcb_atom_t STRING = 31;
78 const xcb_atom_t VISUALID = 32;
79 const xcb_atom_t WINDOW = 33;
80 const xcb_atom_t WM_COMMAND = 34;
81 const xcb_atom_t WM_HINTS = 35;
82 const xcb_atom_t WM_CLIENT_MACHINE = 36;
83 const xcb_atom_t WM_ICON_NAME = 37;
84 const xcb_atom_t WM_ICON_SIZE = 38;
85 const xcb_atom_t WM_NAME = 39;
86 const xcb_atom_t WM_NORMAL_HINTS = 40;
87 const xcb_atom_t WM_SIZE_HINTS = 41;
88 const xcb_atom_t WM_ZOOM_HINTS = 42;
89 const xcb_atom_t MIN_SPACE = 43;
90 const xcb_atom_t NORM_SPACE = 44;
91 const xcb_atom_t MAX_SPACE = 45;
92 const xcb_atom_t END_SPACE = 46;
93 const xcb_atom_t SUPERSCRIPT_X = 47;
94 const xcb_atom_t SUPERSCRIPT_Y = 48;
95 const xcb_atom_t SUBSCRIPT_X = 49;
96 const xcb_atom_t SUBSCRIPT_Y = 50;
97 const xcb_atom_t UNDERLINE_POSITION = 51;
98 const xcb_atom_t UNDERLINE_THICKNESS = 52;
99 const xcb_atom_t STRIKEOUT_ASCENT = 53;
100 const xcb_atom_t STRIKEOUT_DESCENT = 54;
101 const xcb_atom_t ITALIC_ANGLE = 55;
102 const xcb_atom_t X_HEIGHT = 56;
103 const xcb_atom_t QUAD_WIDTH = 57;
104 const xcb_atom_t WEIGHT = 58;
105 const xcb_atom_t POINT_SIZE = 59;
106 const xcb_atom_t RESOLUTION = 60;
107 const xcb_atom_t COPYRIGHT = 61;
108 const xcb_atom_t NOTICE = 62;
109 const xcb_atom_t FONT_NAME = 63;
110 const xcb_atom_t FAMILY_NAME = 64;
111 const xcb_atom_t FULL_NAME = 65;
112 const xcb_atom_t CAP_HEIGHT = 66;
113 const xcb_atom_t WM_CLASS = 67;
114 const xcb_atom_t WM_TRANSIENT_FOR = 68;
115 #line 93 "atoms.gperf"
116 struct 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
124 inline
125 #endif
126 #endif
127 static unsigned int
hash(str,len)128 hash (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 
182 struct 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   };
253 static 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)
325 static
326 #ifdef __GNUC__
327 __inline
328 #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
329 __attribute__ ((__gnu_inline__))
330 #endif
331 #endif
332 const struct atom_map *
in_word_set(str,len)333 in_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 
538 static 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 
609 static 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 
xcb_atom_get(xcb_connection_t * connection,const char * atom_name)680 xcb_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 
xcb_atom_get_predefined(uint16_t name_len,const char * name)693 xcb_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 
xcb_atom_get_fast(xcb_connection_t * c,uint8_t only_if_exists,uint16_t name_len,const char * name)702 xcb_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 
xcb_atom_get_fast_reply(xcb_connection_t * c,xcb_atom_fast_cookie_t cookie,xcb_generic_error_t ** e)717 xcb_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 
xcb_atom_get_name_predefined(xcb_atom_t atom)740 const 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 
xcb_atom_get_name(xcb_connection_t * c,xcb_atom_t atom,const char ** namep,int * lengthp)747 int 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 
makename(const char * fmt,...)774 static 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 
xcb_atom_name_by_screen(const char * base,uint8_t screen)821 char *xcb_atom_name_by_screen(const char *base, uint8_t screen)
822 {
823           return makename("%s_S%u", base, screen);
824 }
825 
xcb_atom_name_by_resource(const char * base,uint32_t resource)826 char *xcb_atom_name_by_resource(const char *base, uint32_t resource)
827 {
828           return makename("%s_R%08X", base, resource);
829 }
830 
xcb_atom_name_unique(const char * base,uint32_t id)831 char *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