4c221b0da1816acf2ca302b10092df059484468dvboxsync/***********************************************************
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1987, 1998 The Open Group
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncthe above copyright notice appear in all copies and that both that
4c221b0da1816acf2ca302b10092df059484468dvboxsynccopyright notice and this permission notice appear in supporting
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncThe above copyright notice and this permission notice shall be included in
4c221b0da1816acf2ca302b10092df059484468dvboxsyncall copies or substantial portions of the Software.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4c221b0da1816acf2ca302b10092df059484468dvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4c221b0da1816acf2ca302b10092df059484468dvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
4c221b0da1816acf2ca302b10092df059484468dvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
4c221b0da1816acf2ca302b10092df059484468dvboxsyncin this Software without prior written authorization from The Open Group.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync All Rights Reserved
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncPermission to use, copy, modify, and distribute this software and its
4c221b0da1816acf2ca302b10092df059484468dvboxsyncdocumentation for any purpose and without fee is hereby granted,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncprovided that the above copyright notice appear in all copies and that
4c221b0da1816acf2ca302b10092df059484468dvboxsyncboth that copyright notice and this permission notice appear in
4c221b0da1816acf2ca302b10092df059484468dvboxsyncsupporting documentation, and that the name of Digital not be
4c221b0da1816acf2ca302b10092df059484468dvboxsyncused in advertising or publicity pertaining to distribution of the
4c221b0da1816acf2ca302b10092df059484468dvboxsyncsoftware without specific, written prior permission.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
4c221b0da1816acf2ca302b10092df059484468dvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
4c221b0da1816acf2ca302b10092df059484468dvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
4c221b0da1816acf2ca302b10092df059484468dvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
4c221b0da1816acf2ca302b10092df059484468dvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
4c221b0da1816acf2ca302b10092df059484468dvboxsyncSOFTWARE.
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync******************************************************************/
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#ifndef EXTENSIONSTRUCT_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define EXTENSIONSTRUCT_H
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "dix.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "misc.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "screenint.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "extension.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "gc.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync#include "privates.h"
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef struct _ExtensionEntry {
4c221b0da1816acf2ca302b10092df059484468dvboxsync int index;
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (* CloseDown)( /* called at server shutdown */
4c221b0da1816acf2ca302b10092df059484468dvboxsync struct _ExtensionEntry * /* extension */);
4c221b0da1816acf2ca302b10092df059484468dvboxsync char *name; /* extension name */
4c221b0da1816acf2ca302b10092df059484468dvboxsync int base; /* base request number */
4c221b0da1816acf2ca302b10092df059484468dvboxsync int eventBase;
4c221b0da1816acf2ca302b10092df059484468dvboxsync int eventLast;
4c221b0da1816acf2ca302b10092df059484468dvboxsync int errorBase;
4c221b0da1816acf2ca302b10092df059484468dvboxsync int errorLast;
4c221b0da1816acf2ca302b10092df059484468dvboxsync int num_aliases;
4c221b0da1816acf2ca302b10092df059484468dvboxsync char **aliases;
4c221b0da1816acf2ca302b10092df059484468dvboxsync pointer extPrivate;
4c221b0da1816acf2ca302b10092df059484468dvboxsync unsigned short (* MinorOpcode)( /* called for errors */
4c221b0da1816acf2ca302b10092df059484468dvboxsync ClientPtr /* client */);
4c221b0da1816acf2ca302b10092df059484468dvboxsync PrivateRec *devPrivates;
4c221b0da1816acf2ca302b10092df059484468dvboxsync} ExtensionEntry;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync/*
4c221b0da1816acf2ca302b10092df059484468dvboxsync * The arguments may be different for extension event swapping functions.
4c221b0da1816acf2ca302b10092df059484468dvboxsync * Deal with this by casting when initializing the event's EventSwapVector[]
4c221b0da1816acf2ca302b10092df059484468dvboxsync * entries.
4c221b0da1816acf2ca302b10092df059484468dvboxsync */
4c221b0da1816acf2ca302b10092df059484468dvboxsynctypedef void (*EventSwapPtr) (xEvent *, xEvent *);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT EventSwapPtr EventSwapVector[128];
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT void NotImplemented ( /* FIXME: this may move to another file... */
4c221b0da1816acf2ca302b10092df059484468dvboxsync xEvent *,
4c221b0da1816acf2ca302b10092df059484468dvboxsync xEvent *) _X_NORETURN;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define SetGCVector(pGC, VectorElement, NewRoutineAddress, Atom) \
4c221b0da1816acf2ca302b10092df059484468dvboxsync pGC->VectorElement = NewRoutineAddress;
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#define GetGCValue(pGC, GCElement) (pGC->GCElement)
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT ExtensionEntry *AddExtension(
4c221b0da1816acf2ca302b10092df059484468dvboxsync char* /*name*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /*NumEvents*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int /*NumErrors*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync int (* /*MainProc*/)(ClientPtr /*client*/),
4c221b0da1816acf2ca302b10092df059484468dvboxsync int (* /*SwappedMainProc*/)(ClientPtr /*client*/),
4c221b0da1816acf2ca302b10092df059484468dvboxsync void (* /*CloseDownProc*/)(ExtensionEntry * /*extension*/),
4c221b0da1816acf2ca302b10092df059484468dvboxsync unsigned short (* /*MinorOpcodeProc*/)(ClientPtr /*client*/)
4c221b0da1816acf2ca302b10092df059484468dvboxsync);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT Bool AddExtensionAlias(
4c221b0da1816acf2ca302b10092df059484468dvboxsync char* /*alias*/,
4c221b0da1816acf2ca302b10092df059484468dvboxsync ExtensionEntry * /*extension*/);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT ExtensionEntry *CheckExtension(const char *extname);
4c221b0da1816acf2ca302b10092df059484468dvboxsyncextern _X_EXPORT ExtensionEntry *GetExtensionEntry(int major);
4c221b0da1816acf2ca302b10092df059484468dvboxsync
4c221b0da1816acf2ca302b10092df059484468dvboxsync#endif /* EXTENSIONSTRUCT_H */
4c221b0da1816acf2ca302b10092df059484468dvboxsync