- Main Page
- Modules
- Data Structures
- Files
- Related Pages

# xcb.h

Go to the documentation of this file.

    00001 /*
    00002  * Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
    00003  * All Rights Reserved.
    00004  *
    00005  * Permission is hereby granted, free of charge, to any person obtaining a
    00006  * copy of this software and associated documentation files (the "Software"),
    00007  * to deal in the Software without restriction, including without limitation
    00008  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
    00009  * and/or sell copies of the Software, and to permit persons to whom the
    00010  * Software is furnished to do so, subject to the following conditions:
    00011  *
    00012  * The above copyright notice and this permission notice shall be included in
    00013  * all copies or substantial portions of the Software.
    00014  *
    00015  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    00016  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    00017  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    00018  * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    00019  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    00020  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    00021  *
    00022  * Except as contained in this notice, the names of the authors or their
    00023  * institutions shall not be used in advertising or otherwise to promote the
    00024  * sale, use or other dealings in this Software without prior written
    00025  * authorization from the authors.
    00026  */
    00027
    00028 #ifndef __XCB_H__
    00029 #define __XCB_H__
    00030 #include <sys/types.h>
    00031
    00032 #if defined(__solaris__)
    00033 #include <inttypes.h>
    00034 #else
    00035 #include <stdint.h>
    00036 #endif
    00037
    00038 #include <sys/uio.h>
    00039 #include <pthread.h>
    00040
    00041
    00042 #ifdef __cplusplus
    00043 extern "C" {
    00044 #endif
    00045
    00057 /* Pre-defined constants */
    00058
    00060 #define X_PROTOCOL 11
    00061
    00063 #define X_PROTOCOL_REVISION 0
    00064
    00066 #define X_TCP_PORT 6000
    00067
    00068 #define XCB_TYPE_PAD(T,I) (-(I) & (sizeof(T) > 4 ? 3 : sizeof(T) - 1))
    00069
    00070 /* Opaque structures */
    00071
    00077 typedef struct xcb_connection_t xcb_connection_t;
    00080 /* Other types */
    00081
    00087 typedef struct {
    00088     void *data;
    00089     int rem;
    00090     int index;
    00091 } xcb_generic_iterator_t;
    00092
    00098 typedef struct {
    00099     uint8_t   response_type;
    00100     uint8_t  pad0;
    00101     uint16_t sequence;
    00102     uint32_t length;
    00103 } xcb_generic_reply_t;
    00104
    00110 typedef struct {
    00111     uint8_t   response_type;
    00112     uint8_t  pad0;
    00113     uint16_t sequence;
    00114     uint32_t pad[7];
    00115     uint32_t full_sequence;
    00116 } xcb_generic_event_t;
    00117
    00123 typedef struct {
    00124     uint8_t   response_type;
    00125     uint8_t   error_code;
    00126     uint16_t sequence;
    00127     uint32_t pad[7];
    00128     uint32_t full_sequence;
    00129 } xcb_generic_error_t;
    00130
    00136 typedef struct {
    00137     unsigned int sequence;
    00138 } xcb_void_cookie_t;
    00139
    00140
    00141 /* Include the generated xproto header. */
    00142 #include "xproto.h"
    00143
    00144
    00146 #define XCB_NONE 0L
    00147
    00149 #define XCB_COPY_FROM_PARENT 0L
    00150
    00152 #define XCB_CURRENT_TIME 0L
    00153
    00155 #define XCB_NO_SYMBOL 0L
    00156
    00157
    00158 /* xcb_auth.c */
    00159
    00165 typedef struct xcb_auth_info_t {
    00166     int   namelen;
    00167     char *name;
    00168     int   datalen;
    00169     char *data;
    00170 } xcb_auth_info_t;
    00171
    00172
    00173 /* xcb_out.c */
    00174
    00183 int xcb_flush(xcb_connection_t *c);
    00184
    00200 uint32_t xcb_get_maximum_request_length(xcb_connection_t *c);
    00201
    00219 void xcb_prefetch_maximum_request_length(xcb_connection_t *c);
    00220
    00221
    00222 /* xcb_in.c */
    00223
    00233 xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c);
    00234
    00247 xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c);
    00248
    00265 xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie);
    00266
    00267
    00268 /* xcb_ext.c */
    00269
    00273 typedef struct xcb_extension_t xcb_extension_t;
    00291 const xcb_query_extension_reply_t *xcb_get_extension_data(xcb_connection_t *c, xcb_extension_t *ext);
    00292
    00304 void xcb_prefetch_extension_data(xcb_connection_t *c, xcb_extension_t *ext);
    00305
    00306
    00307 /* xcb_conn.c */
    00308
    00327 const xcb_setup_t *xcb_get_setup(xcb_connection_t *c);
    00328
    00337 int xcb_get_file_descriptor(xcb_connection_t *c);
    00338
    00352 int xcb_connection_has_error(xcb_connection_t *c);
    00353
    00366 xcb_connection_t *xcb_connect_to_fd(int fd, xcb_auth_info_t *auth_info);
    00367
    00375 void xcb_disconnect(xcb_connection_t *c);
    00376
    00377
    00378 /* xcb_util.c */
    00379
    00397 int xcb_parse_display(const char *name, char **host, int *display, int *screen);
    00398
    00411 xcb_connection_t *xcb_connect(const char *displayname, int *screenp);
    00412
    00425 xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *display, xcb_auth_info_t *auth, int *screen);
    00426
    00427
    00428 /* xcb_xid.c */
    00429
    00438 uint32_t xcb_generate_id(xcb_connection_t *c);
    00439
    00440
    00445 #ifdef __cplusplus
    00446 }
    00447 #endif
    00448
    00449
    00450 #endif /* __XCB_H__ */