summaryrefslogtreecommitdiff
path: root/src/m_swap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/m_swap.c')
-rw-r--r--src/m_swap.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/m_swap.c b/src/m_swap.c
new file mode 100644
index 00000000..9c9ef0f5
--- /dev/null
+++ b/src/m_swap.c
@@ -0,0 +1,60 @@
+// Emacs style mode select -*- C++ -*-
+//-----------------------------------------------------------------------------
+//
+// $Id: m_swap.c 4 2005-07-23 16:19:41Z fraggle $
+//
+// 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.
+//
+// $Log$
+// Revision 1.1 2005/07/23 16:19:58 fraggle
+// Initial revision
+//
+//
+// DESCRIPTION:
+// Endianess handling, swapping 16bit and 32bit.
+//
+//-----------------------------------------------------------------------------
+
+static const char
+rcsid[] = "$Id: m_swap.c 4 2005-07-23 16:19:41Z fraggle $";
+
+
+#ifdef __GNUG__
+#pragma implementation "m_swap.h"
+#endif
+#include "m_swap.h"
+
+
+// Not needed with big endian.
+#ifndef __BIG_ENDIAN__
+
+// Swap 16bit, that is, MSB and LSB byte.
+unsigned short SwapSHORT(unsigned short x)
+{
+ // No masking with 0xFF should be necessary.
+ return (x>>8) | (x<<8);
+}
+
+// Swapping 32bit.
+unsigned long SwapLONG( unsigned long x)
+{
+ return
+ (x>>24)
+ | ((x>>8) & 0xff00)
+ | ((x<<8) & 0xff0000)
+ | (x<<24);
+}
+
+
+#endif
+
+