xserver/include/extnsionst.h

108 lines
2.7 KiB
C

/* $XFree86: xc/programs/Xserver/include/extnsionst.h,v 3.9 2003/07/16 01:38:52 dawes Exp $ */
#ifndef EXTENSIONSTRUCT_H
#define EXTENSIONSTRUCT_H
#include "misc.h"
#include "screenint.h"
#include "extension.h"
#include "gc.h"
typedef struct _ExtensionEntry {
int index;
void (* CloseDown)( /* called at server shutdown */
struct _ExtensionEntry * /* extension */);
char *name; /* extension name */
int base; /* base request number */
int eventBase;
int eventLast;
int errorBase;
int errorLast;
int num_aliases;
char **aliases;
pointer extPrivate;
unsigned short (* MinorOpcode)( /* called for errors */
ClientPtr /* client */);
#ifdef XCSECURITY
Bool secure; /* extension visible to untrusted clients? */
#endif
} ExtensionEntry;
/*
* The arguments may be different for extension event swapping functions.
* Deal with this by casting when initializing the event's EventSwapVector[]
* entries.
*/
typedef void (*EventSwapPtr) (xEvent *, xEvent *);
extern EventSwapPtr EventSwapVector[128];
extern void NotImplemented ( /* FIXME: this may move to another file... */
xEvent *,
xEvent *);
typedef void (* ExtensionLookupProc)(
#ifdef EXTENSION_PROC_ARGS
EXTENSION_PROC_ARGS
#else
/* args no longer indeterminate */
char *name,
GCPtr pGC
#endif
);
typedef struct _ProcEntry {
char *name;
ExtensionLookupProc proc;
} ProcEntryRec, *ProcEntryPtr;
typedef struct _ScreenProcEntry {
int num;
ProcEntryPtr procList;
} ScreenProcEntry;
#define SetGCVector(pGC, VectorElement, NewRoutineAddress, Atom) \
pGC->VectorElement = NewRoutineAddress;
#define GetGCValue(pGC, GCElement) (pGC->GCElement)
extern ExtensionEntry *AddExtension(
char* /*name*/,
int /*NumEvents*/,
int /*NumErrors*/,
int (* /*MainProc*/)(ClientPtr /*client*/),
int (* /*SwappedMainProc*/)(ClientPtr /*client*/),
void (* /*CloseDownProc*/)(ExtensionEntry * /*extension*/),
unsigned short (* /*MinorOpcodeProc*/)(ClientPtr /*client*/)
);
extern Bool AddExtensionAlias(
char* /*alias*/,
ExtensionEntry * /*extension*/);
extern ExtensionEntry *CheckExtension(const char *extname);
extern ExtensionEntry *CheckExtension(const char *extname);
extern ExtensionLookupProc LookupProc(
char* /*name*/,
GCPtr /*pGC*/);
extern Bool RegisterProc(
char* /*name*/,
GCPtr /*pGC*/,
ExtensionLookupProc /*proc*/);
extern Bool RegisterScreenProc(
char* /*name*/,
ScreenPtr /*pScreen*/,
ExtensionLookupProc /*proc*/);
extern void DeclareExtensionSecurity(
char * /*extname*/,
Bool /*secure*/);
#endif /* EXTENSIONSTRUCT_H */