-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathm_swap.c
64 lines (55 loc) · 1.59 KB
/
m_swap.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* Emacs style mode select -*- C++ -*- */
/*----------------------------------------------------------------------------- */
/* */
/* $Id:$ */
/* */
/* Copyright (C) 1993-1996 by id Software, Inc. */
/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version 2 */
/* of the License, or (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* $Log:$ */
/* */
/* DESCRIPTION: */
/* Endianess handling, swapping 16bit and 32bit. */
/* */
/*----------------------------------------------------------------------------- */
/*
static const char
rcsid[] = "$Id: m_bbox.c,v 1.1 1997/02/03 22:45:10 b1 Exp $";
*/
#ifdef __GNUG__
#pragma implementation "m_swap.h"
#endif
#include "m_swap.h"
/* Not needed with big endian. */
#ifdef __BIG_ENDIAN__
/* Swap 16bit, that is, MSB and LSB byte. */
short SwapSHORT(short x)
{
return (((x>>16)&0xFF)<<8) | (((x>>24)&0xFF)<<0);
#if 0
/* No masking with 0xFF should be necessary. */
return (x>>8) | (x<<8);
#endif
}
/* Swapping 32bit. */
long SwapLONG( long x)
{
return ((x&0xFF)<<24) | (((x>>8)&0xFF)<<16) | (((x>>16)&0xFF)<<8) | (((x>>24)&0xFF)<<0);
#if 0
return
(x>>24)
| ((x>>8) & 0xff00)
| ((x<<8) & 0xff0000)
| (x<<24);
#endif
}
#endif