CGDoom/cgdoom/m_swap.h

52 lines
1.5 KiB
C++

// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:
// Endianess handling, swapping 16bit and 32bit.
//
//-----------------------------------------------------------------------------
#ifndef __M_SWAP__
#define __M_SWAP__
#ifdef __GNUG__
#pragma interface
#endif
// Endianess handling.
// WAD files are stored little endian.
unsigned short SwapSHORT(const unsigned short);
unsigned long SwapLONG(const unsigned long);
unsigned short SHORTFromBytes(const unsigned char *pData);
unsigned int INTFromBytes(const unsigned char *pData);
#define SHORT_NORM(x) ((short)SwapSHORT((unsigned short) (x)))
#define LONG(x) ((long)SwapLONG((unsigned long) (x)))
//CGD: when accessing flash (directly) words/longs may not be aligned => crash
// so load all per bytes
#define SHORT(x) ((short)SHORTFromBytes((const unsigned char*)&(x##LE)))
#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------