#ifndef _XlibFriends_h_
#define _XlibFriends_h_

#ifndef _XLIB_H_
#include "Xlib.h"
#endif

#ifndef XPROTO_H
#define NEED_EVENTS
#define NEED_REPLIES
#include "Xproto.h"
#endif

#ifndef _PSEUDOROOT_H_
#include "PseudoRoot.h"
#endif

#ifndef _Xresource_h
#include "Xresource.h"
#endif

#ifndef FILE
#include <stdio.h>
#endif

/* Friends */

extern void _XAddPixel(XImage *ximage, long value);

extern XID _XAllocID(Display *dpy);

extern char *_XAllocScratch(Display *dpy, unsigned long nbytes);

extern int _XConnectDisplay(
    char *display_name, char *expanded_name, char *prop_name, 
    int *screen_num);

extern int _XDefaultError(Display *dpy, XErrorEvent *event);

extern int _XDestroyImage(XImage *ximage);

extern int _XDisconnectDisplay(int server);

extern void _XEnq(Display *dpy, xEvent *event);

extern int _XError(Display *dpy, xError *rep);

extern int (*_XErrorFunction)(Display *, XErrorEvent *);

extern Status _XEventToWire(Display *dpy, XEvent *re, xEvent *event);

extern int _XEventsQueued(Display *dpy, int mode);

extern void _XFlush(Display *dpy);

extern void _XFlushGCCache(Display *dpy, GC gc);

extern void _XFreeDisplayStructure(Display *dpy);

extern void _XFreeExtData(XExtData *extension);

extern void _XFreeKeyBindings(Display *dpy);

extern void _XFreeQ();

extern void _XGenerateGCList (Display *dpy,  GC gc, xReq *req);

extern void _XGetBitsPerPixel(Display *dpy, int depth);

extern unsigned long _XGetPixel(XImage *ximage, int x, int y);

extern Status _XGetPseudoRoot(Display *dpy, char *propName);

extern Status _XGetPseudoRootData(
    Display *dpy, Window w, char *propName, PseudoScreen *ps, 
    PseudoDepth **depthsPtr, PseudoVisual ***visualsListPtr, 
    int *ndepthsPtr);

extern void _XGetScanlinePad(Display *dpy, int depth);

extern int _XIOError(Display *dpy);

extern int (*_XIOErrorFunction)(Display *);

extern void _XInitErrorHandling(XrmDatabase *db);

extern void _XInitImageFuncPtrs(XImage *image);

extern int _XPrintDefaultError(Display *dpy, XErrorEvent *event, FILE *fp);

extern void _XProcessWindowAttributes (
    Display *dpy, xChangeWindowAttributesReq *req, unsigned long valuemask, 
    XSetWindowAttributes *attributes);

extern int _XPutPixel(XImage *ximage, int x, int y, unsigned long pixel);

extern XFontStruct *_XQueryFont(Display *dpy, Font fid);

extern void _XRead(Display *dpy, char *data, long size);

extern void _XRead16 ( Display *dpy, short *data, long len);

extern void _XRead16Pad (Display *dpy, short *data, long size);

extern void _XRead32 (Display *dpy, long *data, long len);

extern void _XReadEvents(Display *dpy);

extern void _XReadPad(Display *dpy, char *data, long size);

extern Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard);

extern int _XReportBadImage(char errtype[], int error, char routine[]);

extern void _XSend(Display *dpy, char *data, long size);

extern void _XSendClientPrefix(Display *dpy, xConnClientPrefix *client);

extern void _XSetClipRectangles(
    Display *dpy, GC gc, int clip_x_origin, int clip_y_origin, 
    XRectangle *rectangles, int n, int ordering);

extern int _XSetImage(XImage *srcimg, XImage *dstimg, int x, int y);

extern XImage *_XSubImage(
    XImage *ximage, int x, int y, unsigned int width, unsigned int height);

extern int _XSyncFunction(Display *dpy);

extern Status _XUnknownNativeEvent(Display *dpy, XEvent *re, xEvent *event);

extern Bool _XUnknownWireEvent(Display *dpy, XEvent *re, xEvent *event);

extern void _XUpdateGCCache (GC gc, unsigned long mask, XGCValues *att);

extern Visual *_XVIDtoVisual(Display *dpy, VisualID id);

extern void _XWaitForReadable(Display *dpy);

extern void _XWaitForWritable(Display *dpy);

extern Bool _XWireToEvent(Display *dpy, XEvent *re, xEvent *event);

/* don't add anything after this endif! */
#endif
