#include <stdio.h>
#include "misc.h"
#include "assert.h"
#include "lbx.h"
#include "swap.h"
void
SwapConnSetup(pConnSetup, pConnSetupT)
xConnSetup *pConnSetup,
*pConnSetupT;
{
cpswapl(pConnSetup->release, pConnSetupT->release);
cpswapl(pConnSetup->ridBase, pConnSetupT->ridBase);
cpswapl(pConnSetup->ridMask, pConnSetupT->ridMask);
cpswapl(pConnSetup->motionBufferSize, pConnSetupT->motionBufferSize);
cpswaps(pConnSetup->nbytesVendor, pConnSetupT->nbytesVendor);
cpswaps(pConnSetup->maxRequestSize, pConnSetupT->maxRequestSize);
pConnSetupT->minKeyCode = pConnSetup->minKeyCode;
pConnSetupT->maxKeyCode = pConnSetup->maxKeyCode;
pConnSetupT->numRoots = pConnSetup->numRoots;
pConnSetupT->numFormats = pConnSetup->numFormats;
pConnSetupT->imageByteOrder = pConnSetup->imageByteOrder;
pConnSetupT->bitmapBitOrder = pConnSetup->bitmapBitOrder;
pConnSetupT->bitmapScanlineUnit = pConnSetup->bitmapScanlineUnit;
pConnSetupT->bitmapScanlinePad = pConnSetup->bitmapScanlinePad;
}
void
SwapWinRoot(pRoot, pRootT)
xWindowRoot *pRoot,
*pRootT;
{
cpswapl(pRoot->windowId, pRootT->windowId);
cpswapl(pRoot->defaultColormap, pRootT->defaultColormap);
cpswapl(pRoot->whitePixel, pRootT->whitePixel);
cpswapl(pRoot->blackPixel, pRootT->blackPixel);
cpswapl(pRoot->currentInputMask, pRootT->currentInputMask);
cpswaps(pRoot->pixWidth, pRootT->pixWidth);
cpswaps(pRoot->pixHeight, pRootT->pixHeight);
cpswaps(pRoot->mmWidth, pRootT->mmWidth);
cpswaps(pRoot->mmHeight, pRootT->mmHeight);
cpswaps(pRoot->minInstalledMaps, pRootT->minInstalledMaps);
cpswaps(pRoot->maxInstalledMaps, pRootT->maxInstalledMaps);
cpswapl(pRoot->rootVisualID, pRootT->rootVisualID);
pRootT->backingStore = pRoot->backingStore;
pRootT->saveUnders = pRoot->saveUnders;
pRootT->rootDepth = pRoot->rootDepth;
pRootT->nDepths = pRoot->nDepths;
}
void
SwapVisual(pVis, pVisT)
xVisualType *pVis,
*pVisT;
{
cpswapl(pVis->visualID, pVisT->visualID);
pVisT->class = pVis->class;
pVisT->bitsPerRGB = pVis->bitsPerRGB;
cpswaps(pVis->colormapEntries, pVisT->colormapEntries);
cpswapl(pVis->redMask, pVisT->redMask);
cpswapl(pVis->greenMask, pVisT->greenMask);
cpswapl(pVis->blueMask, pVisT->blueMask);
}
void
WriteSConnSetupPrefix(pClient, pcsp)
ClientPtr pClient;
xConnSetupPrefix *pcsp;
{
xConnSetupPrefix cspT;
cspT.success = pcsp->success;
cspT.lengthReason = pcsp->lengthReason;
cpswaps(pcsp->majorVersion, cspT.majorVersion);
cpswaps(pcsp->minorVersion, cspT.minorVersion);
cpswaps(pcsp->length, cspT.length);
(void)WriteToClient(pClient, sizeof(cspT), (char *) &cspT);
}
void
WriteSConnectionInfo(pClient, size, pInfo)
ClientPtr pClient;
unsigned long size;
char *pInfo;
{
int i,
j,
k;
xDepth *pDepth;
int numDepths;
char *pInfoT,
*pInfoTBase;
xConnSetup *pConnSetup = (xConnSetup *) pInfo;
pInfoT = pInfoTBase = (char *) ALLOCATE_LOCAL(size);
if (!pInfoTBase) {
pClient->noClientException = -1;
return;
}
SwapConnSetup(pConnSetup, (xConnSetup *) pInfoT);
pInfo += sizeof(xConnSetup);
pInfoT += sizeof(xConnSetup);
i = (pConnSetup->nbytesVendor + 3) & ~3;
memmove(pInfoT, pInfo, i);
pInfo += i;
pInfoT += i;
i = sizeof(xPixmapFormat) * pConnSetup->numFormats;
memmove(pInfoT, pInfo, i);
pInfo += i;
pInfoT += i;
for (i = 0; i < pConnSetup->numRoots; i++) {
SwapWinRoot((xWindowRoot *) pInfo, (xWindowRoot *) pInfoT);
numDepths = ((xWindowRoot *) pInfo)->nDepths;
pInfo += sizeof(xWindowRoot);
pInfoT += sizeof(xWindowRoot);
pDepth = (xDepth *) pInfo;
for (j = 0; j < numDepths; j++, pDepth = (xDepth *) pInfo) {
((xDepth *) pInfoT)->depth = ((xDepth *) pInfo)->depth;
cpswaps(((xDepth *) pInfo)->nVisuals, ((xDepth *) pInfoT)->nVisuals);
pInfo += sizeof(xDepth);
pInfoT += sizeof(xDepth);
for (k = 0; k < pDepth->nVisuals; k++) {
SwapVisual((xVisualType *) pInfo, (xVisualType *) pInfoT);
pInfo += sizeof(xVisualType);
pInfoT += sizeof(xVisualType);
}
}
}
(void) WriteToClient(pClient, (int) size, (char *) pInfoTBase);
DEALLOCATE_LOCAL(pInfoTBase);
}
void
SwapGetPropertyReply(rep)
xGetPropertyReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swapl(&rep->propertyType, n);
swapl(&rep->bytesAfter, n);
swapl(&rep->nItems, n);
}
void
SwapInternAtomReply(rep)
xInternAtomReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swapl(&rep->atom, n);
}
void
SwapGetAtomNameReply(rep)
xGetAtomNameReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swaps(&rep->nameLength, n);
}
void
SwapLookupColorReply(rep)
xLookupColorReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swaps(&rep->exactRed, n);
swaps(&rep->exactGreen, n);
swaps(&rep->exactBlue, n);
swaps(&rep->screenRed, n);
swaps(&rep->screenGreen, n);
swaps(&rep->screenBlue, n);
}
void
SwapAllocColorReply(rep)
xAllocColorReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swaps(&rep->red, n);
swaps(&rep->green, n);
swaps(&rep->blue, n);
swapl(&rep->pixel, n);
}
void
SwapAllocNamedColorReply(rep)
xAllocNamedColorReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swaps(&rep->exactRed, n);
swaps(&rep->exactGreen, n);
swaps(&rep->exactBlue, n);
swaps(&rep->screenRed, n);
swaps(&rep->screenGreen, n);
swaps(&rep->screenBlue, n);
swapl(&rep->pixel, n);
}
void
SwapModmapReply(rep)
xGetModifierMappingReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
}
void
SwapKeymapReply(rep)
xGetKeyboardMappingReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
}
void
SwapGetImageReply(rep)
xGetImageReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
swapl(&rep->visual, n);
}
void
SwapQueryExtensionReply(rep)
xQueryExtensionReply *rep;
{
char n;
swaps(&rep->sequenceNumber, n);
swapl(&rep->length, n);
}
static void
SwapCharInfo(pInfo)
xCharInfo *pInfo;
{
register char n;
swaps(&pInfo->leftSideBearing, n);
swaps(&pInfo->rightSideBearing, n);
swaps(&pInfo->characterWidth, n);
swaps(&pInfo->ascent, n);
swaps(&pInfo->descent, n);
swaps(&pInfo->attributes, n);
}
static void
SwapFontInfo(pr)
xQueryFontReply *pr;
{
register char n;
swaps(&pr->minCharOrByte2, n);
swaps(&pr->maxCharOrByte2, n);
swaps(&pr->defaultChar, n);
swaps(&pr->nFontProps, n);
swaps(&pr->fontAscent, n);
swaps(&pr->fontDescent, n);
SwapCharInfo(&pr->minBounds);
SwapCharInfo(&pr->maxBounds);
swapl(&pr->nCharInfos, n);
}
static void
SwapLbxFontInfo(pr)
xLbxFontInfo *pr;
{
register char n;
swaps(&pr->minCharOrByte2, n);
swaps(&pr->maxCharOrByte2, n);
swaps(&pr->defaultChar, n);
swaps(&pr->nFontProps, n);
swaps(&pr->fontAscent, n);
swaps(&pr->fontDescent, n);
SwapCharInfo(&pr->minBounds);
SwapCharInfo(&pr->maxBounds);
swapl(&pr->nCharInfos, n);
}
void
SwapFont(pr, native)
xQueryFontReply *pr;
Bool native;
{
unsigned i;
xCharInfo *pxci;
unsigned nchars,
nprops;
char *pby;
register char n;
swaps(&pr->sequenceNumber, n);
swapl(&pr->length, n);
if (!native)
SwapFontInfo(pr);
nchars = pr->nCharInfos;
nprops = pr->nFontProps;
if (native)
SwapFontInfo(pr);
pby = (char *) &pr[1];
for (i = 0; i < nprops; i++) {
swapl(pby, n);
pby += 4;
swapl(pby, n);
pby += 4;
}
pxci = (xCharInfo *) pby;
for (i = 0; i < nchars; i++, pxci++)
SwapCharInfo(pxci);
}
void
LbxSwapFontInfo(pr, compressed)
xLbxFontInfo *pr;
Bool compressed;
{
unsigned i;
xCharInfo *pxci;
unsigned nchars,
nprops;
char *pby;
register char n;
SwapLbxFontInfo(pr);
nchars = pr->nCharInfos;
nprops = pr->nFontProps;
pby = (char *) &pr[1];
for (i = 0; i < nprops; i++) {
swapl(pby, n);
pby += 4;
swapl(pby, n);
pby += 4;
}
pxci = (xCharInfo *) pby;
if (!compressed) {
for (i = 0; i < nchars; i++, pxci++)
SwapCharInfo(pxci);
} else {
SwapLongs((CARD32 *) pxci, nchars);
}
}