1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: swap.hxx,v $
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 ************************************************************************/
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 );
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
;
73 #define SWAPL(n) (( ((LL&)n).nBytes[1] << 16 ) + ((LL&)n).nBytes[0] )
75 inline long SwapL(long l
)
79 aL
.nBytes
[0] = SWAP(aL
.nBytes
[0]);
80 aL
.nBytes
[1] = SWAP(aL
.nBytes
[1]);
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