Tue, 31 Jul 2001 01:00:39 +0000
[gaim-migrate @ 2096]
moving protocols from plugins/ to src/protocols. making it so that you can select which protocols are compiled statically.
| 2086 | 1 | /* |
| 2 | * $Id: icqbyteorder.h 2096 2001-07-31 01:00:39Z warmenhoven $ | |
| 3 | * | |
| 4 | * This header defines macros to handle ICQ protocol byte order conversion. | |
| 5 | * | |
| 6 | * Vadim Zaliva <lord@crocodile.org> | |
| 7 | * http://www.crocodile.org/ | |
| 8 | * | |
| 9 | * Copyright (C) 1999 Vadim Zaliva | |
| 10 | * | |
| 11 | * This program is free software; you can redistribute it and/or modify | |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
| 24 | * | |
| 25 | */ | |
| 26 | ||
| 27 | /* | |
| 28 | * From ICQ protocol description: | |
| 29 | * "Integers consisting of more than one byte is stored | |
| 30 | * with the least significant byte first, and the most significant byte last | |
| 31 | * (as is usual on the PC/Intel architecture)". | |
| 32 | * | |
| 33 | * whereas the network byte order, as used on the | |
| 34 | * Internet, is Most Significant Byte first. (aka. Big Endian) | |
| 35 | */ | |
| 36 | ||
| 37 | #ifndef ICQ_BYTEORDER_H_FLAG | |
| 38 | #define ICQ_BYTEORDER_H_FLAG | |
| 39 | ||
| 40 | #ifdef HAVE_CONFIG_H | |
| 41 | #include <config.h> | |
| 42 | #endif | |
| 43 | ||
| 44 | /* | |
| 45 | * I am really trying to use builtin optimized byte swap routines. | |
| 46 | * they are highly optimised on some platforms. | |
| 47 | * But as last resort this simple code is used. | |
| 48 | */ | |
| 49 | #ifndef HAVE_BYTESWAP_H | |
| 50 | # ifndef bswap_32 | |
| 51 | extern unsigned long bswap_32(unsigned long v); | |
| 52 | # endif | |
| 53 | # ifndef bswap_16 | |
| 54 | extern unsigned short bswap_16(unsigned short v); | |
| 55 | # endif | |
| 56 | #endif | |
| 57 | ||
| 58 | #ifdef WORDS_BIGENDIAN | |
| 59 | # define htoicql(x) bswap_32(x) | |
| 60 | # define icqtohl(x) bswap_32(x) | |
| 61 | # define htoicqs(x) bswap_16(x) | |
| 62 | # define icqtohs(x) bswap_16(x) | |
| 63 | #else | |
| 64 | # define htoicql(x) (x) | |
| 65 | # define icqtohl(x) (x) | |
| 66 | # define htoicqs(x) (x) | |
| 67 | # define icqtohs(x) (x) | |
| 68 | #endif | |
| 69 | ||
| 70 | #endif |