diff options
author | Mihai Moldovan <ionic@ionic.de> | 2018-02-27 02:14:07 +0100 |
---|---|---|
committer | Mihai Moldovan <ionic@ionic.de> | 2018-02-27 02:14:07 +0100 |
commit | eaae96101dfb2b341c61060e7cf280bf3b9084e0 (patch) | |
tree | fa415c32c4a51177635fa818798facd2bc784db8 | |
parent | 92d806399c69fda03275dcc23758498f9321434c (diff) | |
parent | e5833a6a1fcb6a2201c519a65958c6165f7dd018 (diff) | |
download | nx-libs-eaae96101dfb2b341c61060e7cf280bf3b9084e0.tar.gz nx-libs-eaae96101dfb2b341c61060e7cf280bf3b9084e0.tar.bz2 nx-libs-eaae96101dfb2b341c61060e7cf280bf3b9084e0.zip |
Merge branch 'uli42-pr/update_record' into 3.6.x
Attributes GH PR #649: https://github.com/ArcticaProject/nx-libs/pull/649
-rw-r--r-- | nx-X11/programs/Xserver/record/record.c | 174 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/record/set.c | 305 |
2 files changed, 76 insertions, 403 deletions
diff --git a/nx-X11/programs/Xserver/record/record.c b/nx-X11/programs/Xserver/record/record.c index 48b1964e6..c18b96e46 100644 --- a/nx-X11/programs/Xserver/record/record.c +++ b/nx-X11/programs/Xserver/record/record.c @@ -41,6 +41,7 @@ and Jim Haggerty of Metheus. #define _XRECORD_SERVER_ #include <nx-X11/extensions/recordstr.h> #include "set.h" +#include "swaprep.h" #include <stdio.h> #include <assert.h> @@ -201,8 +202,7 @@ static int numEnabledContexts; * Side Effects: none. */ static int -RecordFindContextOnAllContexts(pContext) - RecordContextPtr pContext; +RecordFindContextOnAllContexts(RecordContextPtr pContext) { int i; @@ -465,10 +465,7 @@ RecordFindClientOnContext( * Note: this function exists mainly to make RecordARequest smaller. */ static void -RecordABigRequest(pContext, client, stuff) - RecordContextPtr pContext; - ClientPtr client; - xReq *stuff; +RecordABigRequest(RecordContextPtr pContext, ClientPtr client, xReq *stuff) { CARD32 bigLength; int bytesLeft; @@ -516,8 +513,7 @@ RecordABigRequest(pContext, client, stuff) * request for this client. The real Proc function is called. */ static int -RecordARequest(client) - ClientPtr client; +RecordARequest(ClientPtr client) { RecordContextPtr pContext; RecordClientsAndProtocolPtr pRCAP; @@ -600,10 +596,7 @@ RecordARequest(client) * the word skip in ddx.tbl.ms (the porting layer document). */ static void -RecordASkippedRequest(pcbl , nulldata, calldata) - CallbackListPtr *pcbl; - void * nulldata; - void * calldata; +RecordASkippedRequest(CallbackListPtr *pcbl, void * nulldata, void * calldata) { SkippedRequestInfoRec *psi = (SkippedRequestInfoRec *)calldata; RecordContextPtr pContext; @@ -690,10 +683,7 @@ RecordASkippedRequest(pcbl , nulldata, calldata) * chunk of data belonging to this reply, it is set to 0. */ static void -RecordAReply(pcbl, nulldata, calldata) - CallbackListPtr *pcbl; - void * nulldata; - void * calldata; +RecordAReply(CallbackListPtr *pcbl, void * nulldata, void * calldata) { RecordContextPtr pContext; RecordClientsAndProtocolPtr pRCAP; @@ -775,10 +765,7 @@ RecordAReply(pcbl, nulldata, calldata) * it for this client. */ static void -RecordADeliveredEventOrError(pcbl, nulldata, calldata) - CallbackListPtr *pcbl; - void * nulldata; - void * calldata; +RecordADeliveredEventOrError(CallbackListPtr *pcbl, void * nulldata, void * calldata) { EventInfoRec *pei = (EventInfoRec *)calldata; RecordContextPtr pContext; @@ -797,13 +784,13 @@ RecordADeliveredEventOrError(pcbl, nulldata, calldata) xEvent *pev = pei->events; for (ev = 0; ev < pei->count; ev++, pev++) { - int recordit; - if (pev->u.u.type == X_Error) + int recordit = 0; + if (pRCAP->pErrorSet) { recordit = RecordIsMemberOfSet(pRCAP->pErrorSet, ((xError *)(pev))->errorCode); } - else + else if (pRCAP->pDeliveredEventSet) { recordit = RecordIsMemberOfSet(pRCAP->pDeliveredEventSet, pev->u.u.type & 0177); @@ -844,10 +831,7 @@ RecordADeliveredEventOrError(pcbl, nulldata, calldata) * it for this client. */ static void -RecordADeviceEvent(pcbl, nulldata, calldata) - CallbackListPtr *pcbl; - void * nulldata; - void * calldata; +RecordADeviceEvent(CallbackListPtr *pcbl, void * nulldata, void * calldata) { DeviceEventInfoRec *pei = (DeviceEventInfoRec *)calldata; RecordContextPtr pContext; @@ -968,9 +952,7 @@ RecordFlushAllContexts( * various callback lists. */ static int -RecordInstallHooks(pRCAP, oneclient) - RecordClientsAndProtocolPtr pRCAP; - XID oneclient; +RecordInstallHooks(RecordClientsAndProtocolPtr pRCAP, XID oneclient) { int i = 0; XID client; @@ -1063,9 +1045,7 @@ RecordInstallHooks(pRCAP, oneclient) * various callback lists. */ static void -RecordUninstallHooks(pRCAP, oneclient) - RecordClientsAndProtocolPtr pRCAP; - XID oneclient; +RecordUninstallHooks(RecordClientsAndProtocolPtr pRCAP, XID oneclient) { int i = 0; XID client; @@ -1164,9 +1144,7 @@ RecordUninstallHooks(pRCAP, oneclient) * have at least one client.) */ static void -RecordDeleteClientFromRCAP(pRCAP, position) - RecordClientsAndProtocolPtr pRCAP; - int position; +RecordDeleteClientFromRCAP(RecordClientsAndProtocolPtr pRCAP, int position) { if (pRCAP->pContext->pRecordingClient) RecordUninstallHooks(pRCAP, pRCAP->pClientIDs[position]); @@ -1213,9 +1191,7 @@ RecordDeleteClientFromRCAP(pRCAP, position) * is no more room to hold clients internal to the RCAP. */ static void -RecordAddClientToRCAP(pRCAP, clientspec) - RecordClientsAndProtocolPtr pRCAP; - XID clientspec; +RecordAddClientToRCAP(RecordClientsAndProtocolPtr pRCAP, XID clientspec) { if (pRCAP->numClients == pRCAP->sizeClients) { @@ -1261,9 +1237,7 @@ RecordAddClientToRCAP(pRCAP, clientspec) * RCAP. (A given clientspec can only be on one RCAP of a context.) */ static void -RecordDeleteClientFromContext(pContext, clientspec) - RecordContextPtr pContext; - XID clientspec; +RecordDeleteClientFromContext(RecordContextPtr pContext, XID clientspec) { RecordClientsAndProtocolPtr pRCAP; int position; @@ -1286,10 +1260,7 @@ RecordDeleteClientFromContext(pContext, clientspec) * Side Effects: none. */ static int -RecordSanityCheckClientSpecifiers(clientspecs, nspecs, errorspec) - XID *clientspecs; - int nspecs; - XID errorspec; +RecordSanityCheckClientSpecifiers(XID *clientspecs, int nspecs, XID errorspec) { int i; int clientIndex; @@ -1348,10 +1319,7 @@ RecordSanityCheckClientSpecifiers(clientspecs, nspecs, errorspec) * pClientspecs may be modified in place. */ static XID * -RecordCanonicalizeClientSpecifiers(pClientspecs, pNumClientspecs, excludespec) - XID *pClientspecs; - int *pNumClientspecs; - XID excludespec; +RecordCanonicalizeClientSpecifiers(XID *pClientspecs, int *pNumClientspecs, XID excludespec) { int i; int numClients = *pNumClientspecs; @@ -1448,10 +1416,7 @@ RecordPadAlign(int size, int align) * Side Effects: none. */ static int -RecordSanityCheckRegisterClients(pContext, client, stuff) - RecordContextPtr pContext; - ClientPtr client; - xRecordRegisterClientsReq *stuff; +RecordSanityCheckRegisterClients(RecordContextPtr pContext, ClientPtr client, xRecordRegisterClientsReq *stuff) { int err; xRecordRange *pRange; @@ -1586,9 +1551,7 @@ enum {REQ, /* set info for requests */ * RecordSetIntervals, all zeroed, and psi->size is set to size. */ static int -RecordAllocIntervals(psi, nIntervals) - SetInfoPtr psi; - int nIntervals; +RecordAllocIntervals(SetInfoPtr psi, int nIntervals) { assert(!psi->intervals); psi->intervals = (RecordSetInterval *) @@ -1710,10 +1673,7 @@ RecordConvertRangesToIntervals( * to record the new clients and protocol. */ static int -RecordRegisterClients(pContext, client, stuff) - RecordContextPtr pContext; - ClientPtr client; - xRecordRegisterClientsReq *stuff; +RecordRegisterClients(RecordContextPtr pContext, ClientPtr client, xRecordRegisterClientsReq *stuff) { int err; int i; @@ -1986,8 +1946,7 @@ bailout: */ static int -ProcRecordQueryVersion(client) - ClientPtr client; +ProcRecordQueryVersion(ClientPtr client) { /* REQUEST(xRecordQueryVersionReq); */ xRecordQueryVersionReply rep; @@ -2011,8 +1970,7 @@ ProcRecordQueryVersion(client) static int -ProcRecordCreateContext(client) - ClientPtr client; +ProcRecordCreateContext(ClientPtr client) { REQUEST(xRecordCreateContextReq); RecordContextPtr pContext; @@ -2067,8 +2025,7 @@ bailout: static int -ProcRecordRegisterClients(client) - ClientPtr client; +ProcRecordRegisterClients(ClientPtr client) { RecordContextPtr pContext; REQUEST(xRecordRegisterClientsReq); @@ -2081,8 +2038,7 @@ ProcRecordRegisterClients(client) static int -ProcRecordUnregisterClients(client) - ClientPtr client; +ProcRecordUnregisterClients(ClientPtr client) { RecordContextPtr pContext; int err; @@ -2146,9 +2102,7 @@ typedef struct { * number of ranges. Newly allocated ranges are zeroed. */ static int -RecordAllocRanges(pri, nRanges) - GetContextRangeInfoPtr pri; - int nRanges; +RecordAllocRanges(GetContextRangeInfoPtr pri, int nRanges) { int newsize; xRecordRange *pNewRange; @@ -2308,9 +2262,7 @@ RecordConvertMinorOpInfoToRanges( * The 16 bit fields of each xRecordRange are byte swapped. */ static void -RecordSwapRanges(pRanges, nRanges) - xRecordRange *pRanges; - int nRanges; +RecordSwapRanges(xRecordRange *pRanges, int nRanges) { int i; for (i = 0; i < nRanges; i++, pRanges++) @@ -2324,8 +2276,7 @@ RecordSwapRanges(pRanges, nRanges) static int -ProcRecordGetContext(client) - ClientPtr client; +ProcRecordGetContext(ClientPtr client) { RecordContextPtr pContext; REQUEST(xRecordGetContextReq); @@ -2470,8 +2421,7 @@ bailout: static int -ProcRecordEnableContext(client) - ClientPtr client; +ProcRecordEnableContext(ClientPtr client) { RecordContextPtr pContext; REQUEST(xRecordEnableContextReq); @@ -2549,8 +2499,7 @@ ProcRecordEnableContext(client) * is resumed. */ static void -RecordDisableContext(pContext) - RecordContextPtr pContext; +RecordDisableContext(RecordContextPtr pContext) { RecordClientsAndProtocolPtr pRCAP; int i; @@ -2587,8 +2536,7 @@ RecordDisableContext(pContext) static int -ProcRecordDisableContext(client) - ClientPtr client; +ProcRecordDisableContext(ClientPtr client) { RecordContextPtr pContext; REQUEST(xRecordDisableContextReq); @@ -2613,9 +2561,7 @@ ProcRecordDisableContext(client) * it from the ppAllContexts array. */ static int -RecordDeleteContext(value, id) - void * value; - XID id; +RecordDeleteContext(void * value, XID id) { int i; RecordContextPtr pContext = (RecordContextPtr)value; @@ -2655,8 +2601,7 @@ RecordDeleteContext(value, id) static int -ProcRecordFreeContext(client) - ClientPtr client; +ProcRecordFreeContext(ClientPtr client) { RecordContextPtr pContext; REQUEST(xRecordFreeContextReq); @@ -2669,8 +2614,7 @@ ProcRecordFreeContext(client) static int -ProcRecordDispatch(client) - ClientPtr client; +ProcRecordDispatch(ClientPtr client) { REQUEST(xReq); @@ -2699,8 +2643,7 @@ ProcRecordDispatch(client) static int -SProcRecordQueryVersion(client) - ClientPtr client; +SProcRecordQueryVersion(ClientPtr client) { REQUEST(xRecordQueryVersionReq); @@ -2737,8 +2680,7 @@ SwapCreateRegister(xRecordRegisterClientsReq *stuff) static int -SProcRecordCreateContext(client) - ClientPtr client; +SProcRecordCreateContext(ClientPtr client) { REQUEST(xRecordCreateContextReq); int status; @@ -2752,8 +2694,7 @@ SProcRecordCreateContext(client) static int -SProcRecordRegisterClients(client) - ClientPtr client; +SProcRecordRegisterClients(ClientPtr client) { REQUEST(xRecordRegisterClientsReq); int status; @@ -2767,8 +2708,7 @@ SProcRecordRegisterClients(client) static int -SProcRecordUnregisterClients(client) - ClientPtr client; +SProcRecordUnregisterClients(ClientPtr client) { REQUEST(xRecordUnregisterClientsReq); @@ -2782,8 +2722,7 @@ SProcRecordUnregisterClients(client) static int -SProcRecordGetContext(client) - ClientPtr client; +SProcRecordGetContext(ClientPtr client) { REQUEST(xRecordGetContextReq); @@ -2794,8 +2733,7 @@ SProcRecordGetContext(client) } /* SProcRecordGetContext */ static int -SProcRecordEnableContext(client) - ClientPtr client; +SProcRecordEnableContext(ClientPtr client) { REQUEST(xRecordEnableContextReq); @@ -2807,8 +2745,7 @@ SProcRecordEnableContext(client) static int -SProcRecordDisableContext(client) - ClientPtr client; +SProcRecordDisableContext(ClientPtr client) { REQUEST(xRecordDisableContextReq); @@ -2820,8 +2757,7 @@ SProcRecordDisableContext(client) static int -SProcRecordFreeContext(client) - ClientPtr client; +SProcRecordFreeContext(ClientPtr client) { REQUEST(xRecordFreeContextReq); @@ -2833,8 +2769,7 @@ SProcRecordFreeContext(client) static int -SProcRecordDispatch(client) - ClientPtr client; +SProcRecordDispatch(ClientPtr client) { REQUEST(xReq); @@ -2861,9 +2796,6 @@ SProcRecordDispatch(client) } } /* SProcRecordDispatch */ -/* XXX goes in header file */ -extern void SwapConnSetupInfo(), SwapConnSetupPrefix(); - /* RecordConnectionSetupInfo * * Arguments: @@ -2877,20 +2809,18 @@ extern void SwapConnSetupInfo(), SwapConnSetupPrefix(); * The connection setup info is sent to the recording client. */ static void -RecordConnectionSetupInfo(pContext, pci) - RecordContextPtr pContext; - NewClientInfoRec *pci; +RecordConnectionSetupInfo(RecordContextPtr pContext, NewClientInfoRec *pci) { int prefixsize = SIZEOF(xConnSetupPrefix); int restsize = pci->prefix->length * 4; if (pci->client->swapped) { - char * pConnSetup = (char *)malloc(prefixsize + restsize); + char *pConnSetup = (char *)malloc(prefixsize + restsize); if (!pConnSetup) return; - SwapConnSetupPrefix(pci->prefix, pConnSetup); - SwapConnSetupInfo(pci->setup, pConnSetup + prefixsize); + SwapConnSetupPrefix(pci->prefix, (xConnSetupPrefix*)pConnSetup); + SwapConnSetupInfo((char *)pci->setup, (char *)(pConnSetup + prefixsize)); RecordAProtocolElement(pContext, pci->client, XRecordClientStarted, (void *)pConnSetup, prefixsize + restsize, 0); free(pConnSetup); @@ -2932,10 +2862,7 @@ RecordConnectionSetupInfo(pContext, pci) */ static void -RecordAClientStateChange(pcbl, nulldata, calldata) - CallbackListPtr *pcbl; - void * nulldata; - void * calldata; +RecordAClientStateChange(CallbackListPtr *pcbl, void * nulldata, void * calldata) { NewClientInfoRec *pci = (NewClientInfoRec *)calldata; int i; @@ -2998,8 +2925,7 @@ RecordAClientStateChange(pcbl, nulldata, calldata) * */ static void -RecordCloseDown(extEntry) - ExtensionEntry *extEntry; +RecordCloseDown(ExtensionEntry *extEntry) { DeleteCallback(&ClientStateCallback, RecordAClientStateChange, NULL); } /* RecordCloseDown */ @@ -3015,7 +2941,7 @@ RecordCloseDown(extEntry) * Enables the RECORD extension if possible. */ void -RecordExtensionInit() +RecordExtensionInit(void) { ExtensionEntry *extentry; diff --git a/nx-X11/programs/Xserver/record/set.c b/nx-X11/programs/Xserver/record/set.c index afb1024dd..c3085c54d 100644 --- a/nx-X11/programs/Xserver/record/set.c +++ b/nx-X11/programs/Xserver/record/set.c @@ -1,4 +1,3 @@ - /* Copyright 1995, 1998 The Open Group @@ -44,9 +43,6 @@ from The Open Group. implemented, and RecordCreateSet will decide heuristically which one to use based on the set members. - Note: When compiling for use in the server, do not use -DTESTING. - When compiling for stand-alone testing of the set ADT, use -DTESTING. - */ #ifdef HAVE_DIX_CONFIG_H @@ -55,34 +51,11 @@ from The Open Group. #include <string.h> -#ifndef TESTING #include "misc.h" -#else -#include <stdio.h> -#include <stdlib.h> - -/* stuff that you normally get from the X Server's environment */ - -typedef int Bool; -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -typedef unsigned short CARD16; - -#ifndef max -#define max(_a, _b) ( ((_a) > (_b)) ? (_a) : (_b) ) -#endif - -#endif /* TESTING */ - #include "set.h" static int -maxMemberInInterval(pIntervals, nIntervals) - RecordSetInterval *pIntervals; - int nIntervals; +maxMemberInInterval(RecordSetInterval *pIntervals, int nIntervals) { int i; int maxMember = -1; @@ -95,8 +68,7 @@ maxMemberInInterval(pIntervals, nIntervals) } static void -NoopDestroySet(pSet) - RecordSetPtr pSet; +NoopDestroySet(RecordSetPtr pSet) { } @@ -113,16 +85,13 @@ typedef struct { #define BITS_PER_LONG (sizeof(unsigned long) * 8) static void -BitVectorDestroySet(pSet) - RecordSetPtr pSet; +BitVectorDestroySet(RecordSetPtr pSet) { free(pSet); } static unsigned long -BitVectorIsMemberOfSet(pSet, pm) - RecordSetPtr pSet; - int pm; +BitVectorIsMemberOfSet(RecordSetPtr pSet, int pm) { BitVectorSetPtr pbvs = (BitVectorSetPtr)pSet; unsigned long *pbitvec; @@ -134,10 +103,7 @@ BitVectorIsMemberOfSet(pSet, pm) static int -BitVectorFindBit(pSet, iterbit, bitval) - RecordSetPtr pSet; - int iterbit; - Bool bitval; +BitVectorFindBit(RecordSetPtr pSet, int iterbit, Bool bitval) { BitVectorSetPtr pbvs = (BitVectorSetPtr)pSet; unsigned long *pbitvec = (unsigned long *)(&pbvs[1]); @@ -183,10 +149,8 @@ BitVectorFindBit(pSet, iterbit, bitval) static RecordSetIteratePtr -BitVectorIterateSet(pSet, pIter, pInterval) - RecordSetPtr pSet; - RecordSetIteratePtr pIter; - RecordSetInterval *pInterval; +BitVectorIterateSet(RecordSetPtr pSet, RecordSetIteratePtr pIter, + RecordSetInterval *pInterval) { int iterbit = (int)(long)pIter; int b; @@ -200,18 +164,15 @@ BitVectorIterateSet(pSet, pIter, pInterval) return (RecordSetIteratePtr)(long)(pInterval->last + 1); } -RecordSetOperations BitVectorSetOperations = { +static RecordSetOperations BitVectorSetOperations = { BitVectorDestroySet, BitVectorIsMemberOfSet, BitVectorIterateSet }; -RecordSetOperations BitVectorNoFreeOperations = { +static RecordSetOperations BitVectorNoFreeOperations = { NoopDestroySet, BitVectorIsMemberOfSet, BitVectorIterateSet }; static int -BitVectorSetMemoryRequirements(pIntervals, nIntervals, maxMember, alignment) - RecordSetInterval *pIntervals; - int nIntervals; - int maxMember; - int *alignment; +BitVectorSetMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals, + int maxMember, int *alignment) { int nlongs; @@ -221,11 +182,8 @@ BitVectorSetMemoryRequirements(pIntervals, nIntervals, maxMember, alignment) } static RecordSetPtr -BitVectorCreateSet(pIntervals, nIntervals, pMem, memsize) - RecordSetInterval *pIntervals; - int nIntervals; - void *pMem; - int memsize; +BitVectorCreateSet(RecordSetInterval *pIntervals, int nIntervals, + void *pMem, int memsize) { BitVectorSetPtr pbvs; int i, j; @@ -273,16 +231,13 @@ typedef struct { } IntervalListSet, *IntervalListSetPtr; static void -IntervalListDestroySet(pSet) - RecordSetPtr pSet; +IntervalListDestroySet(RecordSetPtr pSet) { free(pSet); } static unsigned long -IntervalListIsMemberOfSet(pSet, pm) - RecordSetPtr pSet; - int pm; +IntervalListIsMemberOfSet(RecordSetPtr pSet, int pm) { IntervalListSetPtr prls = (IntervalListSetPtr)pSet; RecordSetInterval *pInterval = (RecordSetInterval *)(&prls[1]); @@ -302,10 +257,8 @@ IntervalListIsMemberOfSet(pSet, pm) static RecordSetIteratePtr -IntervalListIterateSet(pSet, pIter, pIntervalReturn) - RecordSetPtr pSet; - RecordSetIteratePtr pIter; - RecordSetInterval *pIntervalReturn; +IntervalListIterateSet(RecordSetPtr pSet, RecordSetIteratePtr pIter, + RecordSetInterval *pIntervalReturn) { RecordSetInterval *pInterval = (RecordSetInterval *)pIter; IntervalListSetPtr prls = (IntervalListSetPtr)pSet; @@ -324,29 +277,23 @@ IntervalListIterateSet(pSet, pIter, pIntervalReturn) return (RecordSetIteratePtr)NULL; } -RecordSetOperations IntervalListSetOperations = { +static RecordSetOperations IntervalListSetOperations = { IntervalListDestroySet, IntervalListIsMemberOfSet, IntervalListIterateSet }; -RecordSetOperations IntervalListNoFreeOperations = { +static RecordSetOperations IntervalListNoFreeOperations = { NoopDestroySet, IntervalListIsMemberOfSet, IntervalListIterateSet }; static int -IntervalListMemoryRequirements(pIntervals, nIntervals, maxMember, alignment) - RecordSetInterval *pIntervals; - int nIntervals; - int maxMember; - int *alignment; +IntervalListMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals, + int maxMember, int *alignment) { *alignment = sizeof(unsigned long); return sizeof(IntervalListSet) + nIntervals * sizeof(RecordSetInterval); } static RecordSetPtr -IntervalListCreateSet(pIntervals, nIntervals, pMem, memsize) - RecordSetInterval *pIntervals; - int nIntervals; - void *pMem; - int memsize; +IntervalListCreateSet(RecordSetInterval *pIntervals, int nIntervals, + void *pMem, int memsize) { IntervalListSetPtr prls; int i, j, k; @@ -417,20 +364,6 @@ bailout: return (RecordSetPtr)prls; } -#ifdef TESTING -typedef enum { - BitVectorImplementation, IntervalListImplementation} RecordSetImplementation; - -RecordSetImplementation _RecordSetImpl; - -static void -_RecordForceSetImplementation(setimpl) - RecordSetImplementation setimpl; -{ - _RecordSetImpl = setimpl; -} -#endif - typedef RecordSetPtr (*RecordCreateSetProcPtr)( RecordSetInterval *pIntervals, int nIntervals, @@ -439,11 +372,9 @@ typedef RecordSetPtr (*RecordCreateSetProcPtr)( ); static int -_RecordSetMemoryRequirements(pIntervals, nIntervals, alignment, ppCreateSet) - RecordSetInterval *pIntervals; - int nIntervals; - int *alignment; - RecordCreateSetProcPtr *ppCreateSet; +_RecordSetMemoryRequirements(RecordSetInterval *pIntervals, int nIntervals, + int *alignment, + RecordCreateSetProcPtr *ppCreateSet) { int bmsize, rlsize, bma, rla; int maxMember; @@ -455,12 +386,8 @@ _RecordSetMemoryRequirements(pIntervals, nIntervals, alignment, ppCreateSet) &bma); rlsize = IntervalListMemoryRequirements(pIntervals, nIntervals, maxMember, &rla); -#ifdef TESTING - if (_RecordSetImpl == BitVectorImplementation) -#else if ( ( (nIntervals > 1) && (maxMember <= 255) ) || (bmsize < rlsize) ) -#endif { *alignment = bma; *ppCreateSet = BitVectorCreateSet; @@ -509,183 +436,3 @@ RecordCreateSet(pIntervals, nIntervals, pMem, memsize) } return (*pCreateSet)(pIntervals, nIntervals, pMem, size); } - -/***************************************************************************/ - -#ifdef TESTING - -/* - -Test Strategy - -Having two set representations is convenient for testing because we -can play them against each other. The test code will be able to -specify which implementation to use. This breaks the encapsulation, -but that seems acceptable for testing. The crux of the test loop -looks like this: - -loop: - generate random list of Intervals - - create set A using bit vector implementation - create set B using Interval list implementation - - for each possible set member - if set A and set B disagree on whether this is a member error; - - iterate over both sets, comparing the intervals returned by each. - if intervals or number of intervals are different error; - - iterate over intervals of set A - for i = interval.first to interval.last - if i is not a member of set B error; - - iterate over intervals of set B - for i = interval.first to interval.last - if i is not a member of set A error; - - destroy sets A, B - -*/ - -int GenerateRandomIntervals(pIntervals, maxintervals) - RecordSetInterval *pIntervals; - int maxintervals; -{ - int i, nIntervals; - - nIntervals = rand() % maxintervals; - - for (i = 0; i < nIntervals; i++) - { - pIntervals[i].first = rand(); - pIntervals[i].last = pIntervals[i].first + rand(); - } - return nIntervals; -} - -#define MAXINTERVALS 100 - -int main(argc, argv) - int argc; - char **argv; -{ - RecordSetPtr bs, rs; - RecordSetInterval br, rr; - RecordSetIteratePtr bi, ri; - CARD16 i; - int testcount; - RecordSetInterval intervals[MAXINTERVALS]; - int nIntervals; - int bsize, rsize; - int balign, ralign; - int pad; - - for (testcount = 0; 1; testcount++) - { - nIntervals = GenerateRandomIntervals(intervals, MAXINTERVALS); - printf("%d nIntervals %d\n", testcount, nIntervals); - - if (testcount & 1) - { - _RecordForceSetImplementation(BitVectorImplementation); - bsize = RecordSetMemoryRequirements(intervals, nIntervals, &balign); - _RecordForceSetImplementation(IntervalListImplementation); - rsize = RecordSetMemoryRequirements(intervals, nIntervals, &ralign); - pad = (ralign - (bsize & (ralign - 1))) & (ralign - 1); - bs = (RecordSetPtr)malloc(bsize + pad + rsize ); - if (!bs) - { - fprintf(stderr, "%d: failed to alloc memory for sets\n", - testcount); - continue; - } - rs = (RecordSetPtr)(((char *)bs) + bsize + pad); - } - else - { - bs = rs = NULL; - bsize = rsize = 0; - } - - _RecordForceSetImplementation(BitVectorImplementation); - bs = RecordCreateSet(intervals, nIntervals, bs, bsize); - _RecordForceSetImplementation(IntervalListImplementation); - rs = RecordCreateSet(intervals, nIntervals, rs, rsize); - - if (!bs || !rs) - { - fprintf(stderr, "%d: failed to create sets\n", testcount); - continue; - } - - for (i = 0; i < 65535; i++) - { - unsigned long b, r; - - b = RecordIsMemberOfSet(bs, i); - r = RecordIsMemberOfSet(rs, i); - if ( (b && !r) || (!b && r) ) - { - fprintf(stderr, "%d: isMemberOfSet %d\n", - testcount, (int)i); - } - } - - bi = RecordIterateSet(bs, NULL, &br); - ri = RecordIterateSet(rs, NULL, &rr); - - while (bi && ri) - { - if ( (rr.first != br.first) || (rr.last != br.last) ) - { - fprintf(stderr, "%d: iterateSet interval value mismatch\n", - testcount); - } - bi = RecordIterateSet(bs, bi, &br); - ri = RecordIterateSet(rs, ri, &rr); - } - if (bi != ri) - { - fprintf(stderr, "%d: iterateSet interval count mismatch\n", - testcount); - } - - - bi = NULL; - while (bi = RecordIterateSet(bs, bi, &br)) - { - for (i = br.first; i <= br.last; i++) - { - if (!RecordIsMemberOfSet(rs, i)) - { - fprintf(stderr, "%d: iterateSet b / isMemberOfSet r %d\n", - testcount, (int)i); - } - } - } - - ri = NULL; - while (ri = RecordIterateSet(rs, ri, &rr)) - { - for (i = rr.first; i <= rr.last; i++) - { - if (!RecordIsMemberOfSet(bs, i) ) - { - fprintf(stderr, "%d: iterateSet r / isMemberOfSet b %d\n", - testcount, (int)i); - } - } - } - - RecordDestroySet(bs); - RecordDestroySet(rs); - - if (testcount & 1) - { - free(bs); - } - } -} - -#endif /* TESTING */ |