Remove dependencies on Xmd.h and X.h
[free-sw/xcb/libxcb] / src / xcb.h
1 /*
2  * Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
3  * All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice shall be included in
13  * all copies or substantial portions of the Software.
14  * 
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18  * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  * 
22  * Except as contained in this notice, the names of the authors or their
23  * institutions shall not be used in advertising or otherwise to promote the
24  * sale, use or other dealings in this Software without prior written
25  * authorization from the authors.
26  */
27
28 #ifndef __XCB_H
29 #define __XCB_H
30 #include <sys/types.h>
31
32 /* TODO: check for stdint in config? (HAVE_STDINT) fallback? */
33 #include <stdint.h>
34
35 typedef uint8_t  BYTE;
36 typedef uint8_t  BOOL;
37 typedef uint8_t  CARD8;
38 typedef uint16_t CARD16;
39 typedef uint32_t CARD32;
40 typedef int8_t   INT8;
41 typedef int16_t  INT16;
42 typedef int32_t  INT32;
43
44 #include <X11/X.h>
45 #include <sys/uio.h>
46 #include <pthread.h>
47
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51
52 #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
53 #define deprecated __attribute__((__deprecated__))
54 #else
55 #define deprecated
56 #endif
57
58 /* Pre-defined constants */
59
60 /* current protocol version */
61 #define X_PROTOCOL 11
62
63 /* current minor version */
64 #define X_PROTOCOL_REVISION 0
65
66 /* X_TCP_PORT + display number = server port for TCP transport */
67 #define X_TCP_PORT 6000
68
69 #define XCB_TYPE_PAD(T,I) (-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))
70
71
72 /* Opaque structures */
73
74 typedef struct XCBConnection XCBConnection;
75
76
77 /* Other types */
78
79 typedef struct {
80     void *data;
81     int rem;
82     int index;
83 } XCBGenericIter;
84
85 typedef struct {
86     BYTE response_type;
87     CARD8 pad0;
88     CARD16 sequence;
89     CARD32 length;
90 } XCBGenericRep;
91
92 typedef struct {
93     BYTE response_type;
94     CARD8 pad0;
95     CARD16 sequence;
96     CARD32 pad[7];
97     CARD32 full_sequence;
98 } XCBGenericEvent;
99
100 typedef struct {
101     BYTE response_type;
102     BYTE error_code;
103     CARD16 sequence;
104     CARD32 pad[7];
105     CARD32 full_sequence;
106 } XCBGenericError;
107
108 typedef struct {
109     unsigned int sequence;
110 } XCBVoidCookie;
111
112
113 /* Include the generated xproto and xcb_types headers. */
114 #include "xcb_types.h"
115 #include "xproto.h"
116
117
118 /* xcb_auth.c */
119
120 typedef struct XCBAuthInfo {
121     int namelen;
122     char *name;
123     int datalen;
124     char *data;
125 } XCBAuthInfo;
126
127 int XCBGetAuthInfo(int fd, XCBAuthInfo *info) deprecated;
128
129
130 /* xcb_out.c */
131
132 int XCBFlush(XCBConnection *c);
133 CARD32 XCBGetMaximumRequestLength(XCBConnection *c);
134
135
136 /* xcb_in.c */
137
138 XCBGenericEvent *XCBWaitEvent(XCBConnection *c) deprecated;
139 XCBGenericEvent *XCBWaitForEvent(XCBConnection *c);
140 XCBGenericEvent *XCBPollForEvent(XCBConnection *c, int *error);
141 unsigned int XCBGetRequestRead(XCBConnection *c);
142
143
144 /* xcb_ext.c */
145
146 typedef struct XCBExtension XCBExtension;
147
148 /* Do not free the returned XCBQueryExtensionRep - on return, it's aliased
149  * from the cache. */
150 const XCBQueryExtensionRep *XCBGetExtensionData(XCBConnection *c, XCBExtension *ext);
151
152 void XCBPrefetchExtensionData(XCBConnection *c, XCBExtension *ext);
153
154
155 /* xcb_conn.c */
156
157 XCBConnSetupSuccessRep *XCBGetSetup(XCBConnection *c);
158 int XCBGetFileDescriptor(XCBConnection *c);
159
160 XCBConnection *XCBConnectToFD(int fd, XCBAuthInfo *auth_info);
161 void XCBDisconnect(XCBConnection *c);
162
163
164 /* xcb_util.c */
165
166 int XCBParseDisplay(const char *name, char **host, int *display, int *screen);
167 int XCBOpen(const char *host, int display) deprecated;
168 int XCBOpenTCP(const char *host, unsigned short port) deprecated;
169 int XCBOpenUnix(const char *file) deprecated;
170
171 XCBConnection *XCBConnectBasic(void) deprecated;
172 XCBConnection *XCBConnect(const char *displayname, int *screenp);
173 XCBConnection *XCBConnectToDisplayWithAuthInfo(const char *display, XCBAuthInfo *auth, int *screen);
174
175 int XCBSync(XCBConnection *c, XCBGenericError **e);
176
177
178 #ifdef __cplusplus
179 }
180 #endif
181
182 #endif