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