diff options
author | Holger Zickner <[email protected]> | 2004-07-07 19:59:59 +0000 |
---|---|---|
committer | Holger Zickner <[email protected]> | 2004-07-07 19:59:59 +0000 |
commit | 6e23fc1074d1f0c2c2812f4c2e663f5a21a43c20 (patch) | |
tree | 46ecc6d0255c874ba4cd26dc3d0733f785019896 /src/jake2/game/EndianHandler.java |
import of Jake2 version sunrisesunrise
Diffstat (limited to 'src/jake2/game/EndianHandler.java')
-rw-r--r-- | src/jake2/game/EndianHandler.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/jake2/game/EndianHandler.java b/src/jake2/game/EndianHandler.java new file mode 100644 index 0000000..510541d --- /dev/null +++ b/src/jake2/game/EndianHandler.java @@ -0,0 +1,77 @@ +/* + * AbstractEndianHandler.java + * Copyright (C) 2003 + * + * $Id: EndianHandler.java,v 1.1 2004-07-07 19:58:52 hzi Exp $ + */ +/* +Copyright (C) 1997-2001 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. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +package jake2.game; + + +/** + * AbstractEndianHandler</code> + */ +public abstract class EndianHandler{ + + private static final int mask = 0xFF; + + abstract public float BigFloat(float f); + abstract public short BigShort(short s); + abstract public int BigLong(int i); + abstract public float LittleFloat(float f); + abstract public short LittleShort(short s); + abstract public int LittleLong(int i); + + public static float swapFloat(float f) { + int i = Float.floatToRawIntBits(f); + i = swapInt(i); + f = Float.intBitsToFloat(i); + + return f; + } + + public static int swapInt(int i) { + + int a = i & mask; + i >>>= 8; + + a <<= 24; + + int b = i & mask; + + i >>>= 8; + b <<= 16; + + int c = i & mask; + i >>>= 8; + c <<= 8; + + return i | c | b | a; + } + + public static short swapShort(short s) { + int a = s & mask; + a <<= 8; + int b = (s >>> 8) & mask; + + return (short)(b | a); + } +} |