Update ooo320-m1
[ooovba.git] / binfilter / inc / bf_sfx2 / swap.hxx
blob0b417735339c16d0e931c498a659bc73951718dc
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: swap.hxx,v $
10 * $Revision: 1.4 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef _SWAP_HXX
31 #define _SWAP_HXX
33 #include <solar.h>
34 namespace binfilter {
36 inline BOOL SwapShort()
38 short aLoHiTst = 0x55AA;
39 return (*((char*)&aLoHiTst) == 0x55 );
42 inline BOOL SwapLong()
44 long aLoHiTst = 0x5555AAAA;
45 return (*((short*)&aLoHiTst) == 0x5555 );
48 union LoHi
50 BYTE nBytes[2];
51 short nShort;
54 #define SWAP( n ) (( ((LoHi&)n).nBytes[1] << 8 ) + ((LoHi&)n).nBytes[0] )
56 inline short Swap(short nV)
58 return SwapShort()? SWAP(nV): nV;
61 inline unsigned short Swap(unsigned short nV)
63 return SwapShort()? SWAP(nV): nV;
67 union LL
69 USHORT nBytes[2];
70 long l;
73 #define SWAPL(n) (( ((LL&)n).nBytes[1] << 16 ) + ((LL&)n).nBytes[0] )
75 inline long SwapL(long l)
77 LL aL;
78 aL.l = l;
79 aL.nBytes[0] = SWAP(aL.nBytes[0]);
80 aL.nBytes[1] = SWAP(aL.nBytes[1]);
81 aL.l = SWAPL(aL.l);
82 return aL.l;
85 inline long Swap(long lV)
87 return SwapLong()? SwapL(lV): lV;
90 inline unsigned long Swap(unsigned long lV)
92 return SwapLong()? SwapL(lV): lV;
95 }//end of namespace binfilter
96 #endif