1ecce36beSmrg#ifndef __XCB_ATOM_H__
2ecce36beSmrg#define __XCB_ATOM_H__
3ecce36beSmrg
4ecce36beSmrg#include <xcb/xcb.h>
5ecce36beSmrg
6ecce36beSmrg#ifdef __cplusplus
7ecce36beSmrgextern "C" {
8ecce36beSmrg#endif
9ecce36beSmrg
10ecce36beSmrgenum xcb_atom_fast_tag_t {
11ecce36beSmrg	TAG_COOKIE,
12ecce36beSmrg	TAG_VALUE
13ecce36beSmrg};
14ecce36beSmrgtypedef struct {
15ecce36beSmrg	enum xcb_atom_fast_tag_t tag;
16ecce36beSmrg	union {
17ecce36beSmrg		xcb_intern_atom_cookie_t cookie;
18ecce36beSmrg		xcb_atom_t atom;
19ecce36beSmrg	} u;
20ecce36beSmrg} xcb_atom_fast_cookie_t;
21ecce36beSmrg
22ecce36beSmrg/**
23ecce36beSmrg * @brief Get an atom synchronously.
24ecce36beSmrg * @param connection The connection to the X server.
25ecce36beSmrg * @param atom_name The name of the atom that should be returned.
26ecce36beSmrg * @return The requested atom, or XCB_NONE if there is an error.
27ecce36beSmrg *
28ecce36beSmrg * xcb_atom_get() is essentially a synchronous version of xcb_intern_atom(),
29ecce36beSmrg * use it only on non-performance critical execution paths.
30ecce36beSmrg */
31ecce36beSmrgxcb_atom_t xcb_atom_get(xcb_connection_t *connection, const char *atom_name);
32ecce36beSmrgxcb_atom_t xcb_atom_get_predefined(uint16_t name_len, const char *name);
33ecce36beSmrgxcb_atom_fast_cookie_t xcb_atom_get_fast(xcb_connection_t *c, uint8_t only_if_exists, uint16_t name_len, const char *name);
34ecce36beSmrgxcb_atom_t xcb_atom_get_fast_reply(xcb_connection_t *c, xcb_atom_fast_cookie_t cookie, xcb_generic_error_t **e);
35ecce36beSmrg
36ecce36beSmrgconst char *xcb_atom_get_name_predefined(xcb_atom_t atom);
37ecce36beSmrgint xcb_atom_get_name(xcb_connection_t *c, xcb_atom_t atom, const char **namep, int *lengthp);
38ecce36beSmrg
39ecce36beSmrgchar *xcb_atom_name_by_screen(const char *base, uint8_t screen);
40ecce36beSmrgchar *xcb_atom_name_by_resource(const char *base, uint32_t resource);
41ecce36beSmrgchar *xcb_atom_name_unique(const char *base, uint32_t id);
42ecce36beSmrg
43ecce36beSmrgextern const xcb_atom_t PRIMARY;
44ecce36beSmrgextern const xcb_atom_t SECONDARY;
45ecce36beSmrgextern const xcb_atom_t ARC;
46ecce36beSmrgextern const xcb_atom_t ATOM;
47ecce36beSmrgextern const xcb_atom_t BITMAP;
48ecce36beSmrgextern const xcb_atom_t CARDINAL;
49ecce36beSmrgextern const xcb_atom_t COLORMAP;
50ecce36beSmrgextern const xcb_atom_t CURSOR;
51ecce36beSmrgextern const xcb_atom_t CUT_BUFFER0;
52ecce36beSmrgextern const xcb_atom_t CUT_BUFFER1;
53ecce36beSmrgextern const xcb_atom_t CUT_BUFFER2;
54ecce36beSmrgextern const xcb_atom_t CUT_BUFFER3;
55ecce36beSmrgextern const xcb_atom_t CUT_BUFFER4;
56ecce36beSmrgextern const xcb_atom_t CUT_BUFFER5;
57ecce36beSmrgextern const xcb_atom_t CUT_BUFFER6;
58ecce36beSmrgextern const xcb_atom_t CUT_BUFFER7;
59ecce36beSmrgextern const xcb_atom_t DRAWABLE;
60ecce36beSmrgextern const xcb_atom_t FONT;
61ecce36beSmrgextern const xcb_atom_t INTEGER;
62ecce36beSmrgextern const xcb_atom_t PIXMAP;
63ecce36beSmrgextern const xcb_atom_t POINT;
64ecce36beSmrgextern const xcb_atom_t RECTANGLE;
65ecce36beSmrgextern const xcb_atom_t RESOURCE_MANAGER;
66ecce36beSmrgextern const xcb_atom_t RGB_COLOR_MAP;
67ecce36beSmrgextern const xcb_atom_t RGB_BEST_MAP;
68ecce36beSmrgextern const xcb_atom_t RGB_BLUE_MAP;
69ecce36beSmrgextern const xcb_atom_t RGB_DEFAULT_MAP;
70ecce36beSmrgextern const xcb_atom_t RGB_GRAY_MAP;
71ecce36beSmrgextern const xcb_atom_t RGB_GREEN_MAP;
72ecce36beSmrgextern const xcb_atom_t RGB_RED_MAP;
73ecce36beSmrgextern const xcb_atom_t STRING;
74ecce36beSmrgextern const xcb_atom_t VISUALID;
75ecce36beSmrgextern const xcb_atom_t WINDOW;
76ecce36beSmrgextern const xcb_atom_t WM_COMMAND;
77ecce36beSmrgextern const xcb_atom_t WM_HINTS;
78ecce36beSmrgextern const xcb_atom_t WM_CLIENT_MACHINE;
79ecce36beSmrgextern const xcb_atom_t WM_ICON_NAME;
80ecce36beSmrgextern const xcb_atom_t WM_ICON_SIZE;
81ecce36beSmrgextern const xcb_atom_t WM_NAME;
82ecce36beSmrgextern const xcb_atom_t WM_NORMAL_HINTS;
83ecce36beSmrgextern const xcb_atom_t WM_SIZE_HINTS;
84ecce36beSmrgextern const xcb_atom_t WM_ZOOM_HINTS;
85ecce36beSmrgextern const xcb_atom_t MIN_SPACE;
86ecce36beSmrgextern const xcb_atom_t NORM_SPACE;
87ecce36beSmrgextern const xcb_atom_t MAX_SPACE;
88ecce36beSmrgextern const xcb_atom_t END_SPACE;
89ecce36beSmrgextern const xcb_atom_t SUPERSCRIPT_X;
90ecce36beSmrgextern const xcb_atom_t SUPERSCRIPT_Y;
91ecce36beSmrgextern const xcb_atom_t SUBSCRIPT_X;
92ecce36beSmrgextern const xcb_atom_t SUBSCRIPT_Y;
93ecce36beSmrgextern const xcb_atom_t UNDERLINE_POSITION;
94ecce36beSmrgextern const xcb_atom_t UNDERLINE_THICKNESS;
95ecce36beSmrgextern const xcb_atom_t STRIKEOUT_ASCENT;
96ecce36beSmrgextern const xcb_atom_t STRIKEOUT_DESCENT;
97ecce36beSmrgextern const xcb_atom_t ITALIC_ANGLE;
98ecce36beSmrgextern const xcb_atom_t X_HEIGHT;
99ecce36beSmrgextern const xcb_atom_t QUAD_WIDTH;
100ecce36beSmrgextern const xcb_atom_t WEIGHT;
101ecce36beSmrgextern const xcb_atom_t POINT_SIZE;
102ecce36beSmrgextern const xcb_atom_t RESOLUTION;
103ecce36beSmrgextern const xcb_atom_t COPYRIGHT;
104ecce36beSmrgextern const xcb_atom_t NOTICE;
105ecce36beSmrgextern const xcb_atom_t FONT_NAME;
106ecce36beSmrgextern const xcb_atom_t FAMILY_NAME;
107ecce36beSmrgextern const xcb_atom_t FULL_NAME;
108ecce36beSmrgextern const xcb_atom_t CAP_HEIGHT;
109ecce36beSmrgextern const xcb_atom_t WM_CLASS;
110ecce36beSmrgextern const xcb_atom_t WM_TRANSIENT_FOR;
111ecce36beSmrg
112ecce36beSmrg#ifdef __cplusplus
113ecce36beSmrg}
114ecce36beSmrg#endif
115ecce36beSmrg
116ecce36beSmrg#endif /* __XCB_ATOM_H__ */
117