~ubuntu-branches/ubuntu/lucid/xcb-util/lucid

« back to all changes in this revision

Viewing changes to atom/atoms.c

  • Committer: Bazaar Package Importer
  • Author(s): Julien Danjou
  • Date: 2009-02-15 12:58:13 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090215125813-fvdfqrch1341t8bd
Tags: 0.3.3-2
Add versioned link to GPL.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* C code produced by gperf version 3.0.3 */
 
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
 
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
#ifdef __GNUC__
 
326
__inline
 
327
#ifdef __GNUC_STDC_INLINE__
 
328
__attribute__ ((__gnu_inline__))
 
329
#endif
 
330
#endif
 
331
const struct atom_map *
 
332
in_word_set (str, len)
 
333
     register const char *str;
 
334
     register unsigned int len;
 
335
{
 
336
  enum
 
337
    {
 
338
      TOTAL_KEYWORDS = 68,
 
339
      MIN_WORD_LENGTH = 3,
 
340
      MAX_WORD_LENGTH = 19,
 
341
      MIN_HASH_VALUE = 4,
 
342
      MAX_HASH_VALUE = 149
 
343
    };
 
344
 
 
345
  static const struct atom_map wordlist[] =
 
346
    {
 
347
      {-1}, {-1}, {-1}, {-1},
 
348
#line 112 "atoms.gperf"
 
349
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str4,18},
 
350
      {-1},
 
351
#line 156 "atoms.gperf"
 
352
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str6,62},
 
353
      {-1}, {-1},
 
354
#line 157 "atoms.gperf"
 
355
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str9,63},
 
356
#line 115 "atoms.gperf"
 
357
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str10,21},
 
358
#line 152 "atoms.gperf"
 
359
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str11,58},
 
360
      {-1}, {-1},
 
361
#line 137 "atoms.gperf"
 
362
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str14,43},
 
363
#line 160 "atoms.gperf"
 
364
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str15,66},
 
365
#line 99 "atoms.gperf"
 
366
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str16,5},
 
367
#line 113 "atoms.gperf"
 
368
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str17,19},
 
369
      {-1},
 
370
#line 155 "atoms.gperf"
 
371
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str19,61},
 
372
      {-1}, {-1}, {-1}, {-1},
 
373
#line 159 "atoms.gperf"
 
374
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str24,65},
 
375
      {-1},
 
376
#line 147 "atoms.gperf"
 
377
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str26,53},
 
378
#line 148 "atoms.gperf"
 
379
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str27,54},
 
380
#line 123 "atoms.gperf"
 
381
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str28,29},
 
382
#line 140 "atoms.gperf"
 
383
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str29,46},
 
384
      {-1}, {-1},
 
385
#line 119 "atoms.gperf"
 
386
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str32,25},
 
387
#line 100 "atoms.gperf"
 
388
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str33,6},
 
389
      {-1}, {-1},
 
390
#line 102 "atoms.gperf"
 
391
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str36,8},
 
392
#line 130 "atoms.gperf"
 
393
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str37,36},
 
394
#line 129 "atoms.gperf"
 
395
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str38,35},
 
396
      {-1}, {-1},
 
397
#line 110 "atoms.gperf"
 
398
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str41,16},
 
399
#line 122 "atoms.gperf"
 
400
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str42,28},
 
401
#line 111 "atoms.gperf"
 
402
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str43,17},
 
403
      {-1},
 
404
#line 121 "atoms.gperf"
 
405
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str45,27},
 
406
#line 127 "atoms.gperf"
 
407
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str46,33},
 
408
#line 120 "atoms.gperf"
 
409
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str47,26},
 
410
#line 145 "atoms.gperf"
 
411
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str48,51},
 
412
      {-1}, {-1},
 
413
#line 124 "atoms.gperf"
 
414
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str51,30},
 
415
      {-1},
 
416
#line 126 "atoms.gperf"
 
417
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str53,32},
 
418
#line 116 "atoms.gperf"
 
419
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str54,22},
 
420
      {-1},
 
421
#line 109 "atoms.gperf"
 
422
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str56,15},
 
423
#line 133 "atoms.gperf"
 
424
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str57,39},
 
425
#line 150 "atoms.gperf"
 
426
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str58,56},
 
427
      {-1}, {-1},
 
428
#line 144 "atoms.gperf"
 
429
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str61,50},
 
430
#line 95 "atoms.gperf"
 
431
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str62,1},
 
432
#line 101 "atoms.gperf"
 
433
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str63,7},
 
434
#line 146 "atoms.gperf"
 
435
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str64,52},
 
436
#line 151 "atoms.gperf"
 
437
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str65,57},
 
438
#line 117 "atoms.gperf"
 
439
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str66,23},
 
440
#line 131 "atoms.gperf"
 
441
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str67,37},
 
442
#line 118 "atoms.gperf"
 
443
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str68,24},
 
444
      {-1},
 
445
#line 134 "atoms.gperf"
 
446
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str70,40},
 
447
#line 108 "atoms.gperf"
 
448
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str71,14},
 
449
      {-1},
 
450
#line 161 "atoms.gperf"
 
451
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str73,67},
 
452
      {-1},
 
453
#line 128 "atoms.gperf"
 
454
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str75,34},
 
455
#line 107 "atoms.gperf"
 
456
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str76,13},
 
457
      {-1},
 
458
#line 142 "atoms.gperf"
 
459
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str78,48},
 
460
#line 98 "atoms.gperf"
 
461
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str79,4},
 
462
#line 138 "atoms.gperf"
 
463
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str80,44},
 
464
#line 162 "atoms.gperf"
 
465
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str81,68},
 
466
#line 132 "atoms.gperf"
 
467
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str82,38},
 
468
#line 136 "atoms.gperf"
 
469
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str83,42},
 
470
#line 139 "atoms.gperf"
 
471
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str84,45},
 
472
#line 153 "atoms.gperf"
 
473
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str85,59},
 
474
#line 114 "atoms.gperf"
 
475
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str86,20},
 
476
      {-1}, {-1}, {-1},
 
477
#line 154 "atoms.gperf"
 
478
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str90,60},
 
479
#line 143 "atoms.gperf"
 
480
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str91,49},
 
481
#line 149 "atoms.gperf"
 
482
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str92,55},
 
483
#line 97 "atoms.gperf"
 
484
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str93,3},
 
485
      {-1}, {-1},
 
486
#line 106 "atoms.gperf"
 
487
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str96,12},
 
488
      {-1},
 
489
#line 135 "atoms.gperf"
 
490
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str98,41},
 
491
      {-1}, {-1},
 
492
#line 105 "atoms.gperf"
 
493
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str101,11},
 
494
      {-1}, {-1}, {-1}, {-1},
 
495
#line 104 "atoms.gperf"
 
496
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str106,10},
 
497
      {-1},
 
498
#line 141 "atoms.gperf"
 
499
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str108,47},
 
500
      {-1}, {-1},
 
501
#line 103 "atoms.gperf"
 
502
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str111,9},
 
503
      {-1}, {-1}, {-1}, {-1},
 
504
#line 125 "atoms.gperf"
 
505
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str116,31},
 
506
      {-1}, {-1}, {-1}, {-1},
 
507
#line 158 "atoms.gperf"
 
508
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str121,64},
 
509
      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
 
510
      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
 
511
      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
 
512
#line 96 "atoms.gperf"
 
513
      {(int)(long)&((struct stringpool_t *)0)->stringpool_str149,2}
 
514
    };
 
515
 
 
516
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
 
517
    {
 
518
      register int key = hash (str, len);
 
519
 
 
520
      if (key <= MAX_HASH_VALUE && key >= 0)
 
521
        {
 
522
          register int o = wordlist[key].name;
 
523
          if (o >= 0)
 
524
            {
 
525
              register const char *s = o + stringpool;
 
526
 
 
527
              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
 
528
                return &wordlist[key];
 
529
            }
 
530
        }
 
531
    }
 
532
  return 0;
 
533
}
 
534
#line 163 "atoms.gperf"
 
535
 
 
536
 
 
537
static const char atom_names[] =
 
538
        "PRIMARY\0"
 
539
        "SECONDARY\0"
 
540
        "ARC\0"
 
541
        "ATOM\0"
 
542
        "BITMAP\0"
 
543
        "CARDINAL\0"
 
544
        "COLORMAP\0"
 
545
        "CURSOR\0"
 
546
        "CUT_BUFFER0\0"
 
547
        "CUT_BUFFER1\0"
 
548
        "CUT_BUFFER2\0"
 
549
        "CUT_BUFFER3\0"
 
550
        "CUT_BUFFER4\0"
 
551
        "CUT_BUFFER5\0"
 
552
        "CUT_BUFFER6\0"
 
553
        "CUT_BUFFER7\0"
 
554
        "DRAWABLE\0"
 
555
        "FONT\0"
 
556
        "INTEGER\0"
 
557
        "PIXMAP\0"
 
558
        "POINT\0"
 
559
        "RECTANGLE\0"
 
560
        "RESOURCE_MANAGER\0"
 
561
        "RGB_COLOR_MAP\0"
 
562
        "RGB_BEST_MAP\0"
 
563
        "RGB_BLUE_MAP\0"
 
564
        "RGB_DEFAULT_MAP\0"
 
565
        "RGB_GRAY_MAP\0"
 
566
        "RGB_GREEN_MAP\0"
 
567
        "RGB_RED_MAP\0"
 
568
        "STRING\0"
 
569
        "VISUALID\0"
 
570
        "WINDOW\0"
 
571
        "WM_COMMAND\0"
 
572
        "WM_HINTS\0"
 
573
        "WM_CLIENT_MACHINE\0"
 
574
        "WM_ICON_NAME\0"
 
575
        "WM_ICON_SIZE\0"
 
576
        "WM_NAME\0"
 
577
        "WM_NORMAL_HINTS\0"
 
578
        "WM_SIZE_HINTS\0"
 
579
        "WM_ZOOM_HINTS\0"
 
580
        "MIN_SPACE\0"
 
581
        "NORM_SPACE\0"
 
582
        "MAX_SPACE\0"
 
583
        "END_SPACE\0"
 
584
        "SUPERSCRIPT_X\0"
 
585
        "SUPERSCRIPT_Y\0"
 
586
        "SUBSCRIPT_X\0"
 
587
        "SUBSCRIPT_Y\0"
 
588
        "UNDERLINE_POSITION\0"
 
589
        "UNDERLINE_THICKNESS\0"
 
590
        "STRIKEOUT_ASCENT\0"
 
591
        "STRIKEOUT_DESCENT\0"
 
592
        "ITALIC_ANGLE\0"
 
593
        "X_HEIGHT\0"
 
594
        "QUAD_WIDTH\0"
 
595
        "WEIGHT\0"
 
596
        "POINT_SIZE\0"
 
597
        "RESOLUTION\0"
 
598
        "COPYRIGHT\0"
 
599
        "NOTICE\0"
 
600
        "FONT_NAME\0"
 
601
        "FAMILY_NAME\0"
 
602
        "FULL_NAME\0"
 
603
        "CAP_HEIGHT\0"
 
604
        "WM_CLASS\0"
 
605
        "WM_TRANSIENT_FOR\0"
 
606
;
 
607
 
 
608
static const uint16_t atom_name_offsets[] = {
 
609
        0,
 
610
        8,
 
611
        18,
 
612
        22,
 
613
        27,
 
614
        34,
 
615
        43,
 
616
        52,
 
617
        59,
 
618
        71,
 
619
        83,
 
620
        95,
 
621
        107,
 
622
        119,
 
623
        131,
 
624
        143,
 
625
        155,
 
626
        164,
 
627
        169,
 
628
        177,
 
629
        184,
 
630
        190,
 
631
        200,
 
632
        217,
 
633
        231,
 
634
        244,
 
635
        257,
 
636
        273,
 
637
        286,
 
638
        300,
 
639
        312,
 
640
        319,
 
641
        328,
 
642
        335,
 
643
        346,
 
644
        355,
 
645
        373,
 
646
        386,
 
647
        399,
 
648
        407,
 
649
        423,
 
650
        437,
 
651
        451,
 
652
        461,
 
653
        472,
 
654
        482,
 
655
        492,
 
656
        506,
 
657
        520,
 
658
        532,
 
659
        544,
 
660
        563,
 
661
        583,
 
662
        600,
 
663
        618,
 
664
        631,
 
665
        640,
 
666
        651,
 
667
        658,
 
668
        669,
 
669
        680,
 
670
        690,
 
671
        697,
 
672
        707,
 
673
        719,
 
674
        729,
 
675
        740,
 
676
        749,
 
677
};
 
678
 
 
679
xcb_atom_t xcb_atom_get(xcb_connection_t *connection, const char *atom_name)
 
680
{
 
681
        if(atom_name == NULL)
 
682
                return XCB_NONE;
 
683
        xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection,
 
684
                xcb_intern_atom(connection, 0, strlen(atom_name), atom_name), NULL);
 
685
        if(!reply)
 
686
                return XCB_NONE;
 
687
        xcb_atom_t atom = reply->atom;
 
688
        free(reply);
 
689
        return atom;
 
690
}
 
691
 
 
692
xcb_atom_t xcb_atom_get_predefined(uint16_t name_len, const char *name)
 
693
{
 
694
        const struct atom_map *value = in_word_set(name, name_len);
 
695
        xcb_atom_t ret = XCB_NONE;
 
696
        if(value)
 
697
                ret = value->value;
 
698
        return ret;
 
699
}
 
700
 
 
701
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)
 
702
{
 
703
        xcb_atom_fast_cookie_t cookie;
 
704
 
 
705
        if((cookie.u.atom = xcb_atom_get_predefined(name_len, name)) != XCB_NONE)
 
706
        {
 
707
                cookie.tag = TAG_VALUE;
 
708
                return cookie;
 
709
        }
 
710
 
 
711
        cookie.tag = TAG_COOKIE;
 
712
        cookie.u.cookie = xcb_intern_atom(c, only_if_exists, name_len, name);
 
713
        return cookie;
 
714
}
 
715
 
 
716
xcb_atom_t xcb_atom_get_fast_reply(xcb_connection_t *c, xcb_atom_fast_cookie_t cookie, xcb_generic_error_t **e)
 
717
{
 
718
        switch(cookie.tag)
 
719
        {
 
720
                xcb_intern_atom_reply_t *reply;
 
721
        case TAG_VALUE:
 
722
                if(e)
 
723
                        *e = 0;
 
724
                break;
 
725
        case TAG_COOKIE:
 
726
                reply = xcb_intern_atom_reply(c, cookie.u.cookie, e);
 
727
                if(reply)
 
728
                {
 
729
                        cookie.u.atom = reply->atom;
 
730
                        free(reply);
 
731
                }
 
732
                else
 
733
                        cookie.u.atom = XCB_NONE;
 
734
                break;
 
735
        }
 
736
        return cookie.u.atom;
 
737
}
 
738
 
 
739
const char *xcb_atom_get_name_predefined(xcb_atom_t atom)
 
740
{
 
741
        if(atom <= 0 || atom > (sizeof(atom_name_offsets) / sizeof(*atom_name_offsets)))
 
742
                return 0;
 
743
        return atom_names + atom_name_offsets[atom - 1];
 
744
}
 
745
 
 
746
int xcb_atom_get_name(xcb_connection_t *c, xcb_atom_t atom, const char **namep, int *lengthp)
 
747
{
 
748
        static char buf[100];
 
749
        const char *name = xcb_atom_get_name_predefined(atom);
 
750
        int namelen;
 
751
        xcb_get_atom_name_cookie_t atomc;
 
752
        xcb_get_atom_name_reply_t *atomr;
 
753
        if(name)
 
754
        {
 
755
                *namep = name;
 
756
                *lengthp = strlen(name);
 
757
                return 1;
 
758
        }
 
759
        atomc = xcb_get_atom_name(c, atom);
 
760
        atomr = xcb_get_atom_name_reply(c, atomc, 0);
 
761
        if(!atomr)
 
762
                return 0;
 
763
        namelen = xcb_get_atom_name_name_length(atomr);
 
764
        if(namelen > sizeof(buf))
 
765
                namelen = sizeof(buf);
 
766
        *lengthp = namelen;
 
767
        memcpy(buf, xcb_get_atom_name_name(atomr), namelen);
 
768
        *namep = buf;
 
769
        free(atomr);
 
770
        return 1;
 
771
}
 
772
 
 
773
static char *makename(const char *fmt, ...)
 
774
{
 
775
        char *ret;
 
776
        int n;
 
777
        va_list ap;
 
778
 
 
779
#ifndef HAVE_VASPRINTF
 
780
        char *np;
 
781
        int size = 64;
 
782
 
 
783
        /* First allocate 'size' bytes, should be enough usually */
 
784
        if((ret = malloc(size)) == NULL)
 
785
                return NULL;
 
786
 
 
787
        while(1)
 
788
        {
 
789
                va_start(ap, fmt);
 
790
                n = vsnprintf(ret, size, fmt, ap);
 
791
                va_end(ap);
 
792
 
 
793
                if(n < 0)
 
794
                        return NULL;
 
795
 
 
796
                if(n < size)
 
797
                        return ret;
 
798
 
 
799
                size = n + 1;
 
800
                if((np = realloc(ret, size)) == NULL)
 
801
                {
 
802
                        free(ret);
 
803
                        return NULL;
 
804
                }
 
805
 
 
806
                ret = np;
 
807
        }
 
808
#else
 
809
        va_start(ap, fmt);
 
810
        n = vasprintf(&ret, fmt, ap);
 
811
        va_end(ap);
 
812
 
 
813
        if(n < 0)
 
814
                return NULL;
 
815
 
 
816
        return ret;
 
817
#endif
 
818
}
 
819
 
 
820
char *xcb_atom_name_by_screen(const char *base, uint8_t screen)
 
821
{
 
822
        return makename("%s_S%u", base, screen);
 
823
}
 
824
 
 
825
char *xcb_atom_name_by_resource(const char *base, uint32_t resource)
 
826
{
 
827
        return makename("%s_R%08X", base, resource);
 
828
}
 
829
 
 
830
char *xcb_atom_name_unique(const char *base, uint32_t id)
 
831
{
 
832
        if(base)
 
833
                return makename("%s_U%lu", base, id);
 
834
        else
 
835
                return makename("U%lu", id);
 
836
}