Doxygen Source Code Documentation
byteorder.h
Go to the documentation of this file.00001 /*===========================================================================* 00002 * byteorder.h * 00003 * * 00004 * stuff to handle different byte order * 00005 * * 00006 *===========================================================================*/ 00007 00008 /* 00009 * Copyright (c) 1995 The Regents of the University of California. 00010 * All rights reserved. 00011 * 00012 * Permission to use, copy, modify, and distribute this software and its 00013 * documentation for any purpose, without fee, and without written agreement is 00014 * hereby granted, provided that the above copyright notice and the following 00015 * two paragraphs appear in all copies of this software. 00016 * 00017 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR 00018 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT 00019 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF 00020 * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00021 * 00022 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 00023 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 00024 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 00025 * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO 00026 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 00027 */ 00028 00029 /* 00030 * $Header: /misc/elrond0/share/cvs/AFNI/src/mpeg_encodedir/headers/byteorder.h,v 1.5 2004/04/02 15:12:41 rwcox Exp $ 00031 * $Log: byteorder.h,v $ 00032 * Revision 1.5 2004/04/02 15:12:41 rwcox 00033 * Cput 00034 * 00035 * Revision 1.4 2004/02/05 21:32:23 rwcox 00036 * Cput 00037 * 00038 * Revision 1.3 2003/12/23 13:50:08 rwcox 00039 * Cput 00040 * 00041 * Revision 1.2 2003/12/03 14:46:15 rwcox 00042 * Cput 00043 * 00044 * Revision 1.1 2001/12/17 18:25:44 rwcox 00045 * Cadd 00046 * 00047 * Revision 1.3 1995/01/19 23:54:39 eyhung 00048 * Changed copyrights 00049 * 00050 * Revision 1.3 1995/01/19 23:54:39 eyhung 00051 * Changed copyrights 00052 * 00053 * Revision 1.2 1994/11/12 02:12:15 keving 00054 * nothing 00055 * 00056 * Revision 1.1 1993/07/22 22:24:23 keving 00057 * nothing 00058 * 00059 */ 00060 00061 00062 #include "general.h" 00063 00064 00065 #ifdef FORCE_BIG_ENDIAN 00066 /* leave byte order as it is */ 00067 #define htonl(x) (x) 00068 #define ntohl(x) (x) 00069 #define htons(x) (x) 00070 #define ntohs(x) (x) 00071 #else 00072 #ifdef FORCE_LITTLE_ENDIAN 00073 /* need to reverse byte order */ 00074 /* note -- we assume here that htonl is called on a variable, not a 00075 * constant; thus, this is not for general use, but works with bitio.c 00076 */ 00077 #define htonl(x) \ 00078 ((((unsigned char *)(&x))[0] << 24) | \ 00079 (((unsigned char *)(&x))[1] << 16) | \ 00080 (((unsigned char *)(&x))[2] << 8) | \ 00081 (((unsigned char *)(&x))[3])) 00082 #define ntohl(x) htonl(x) 00083 #define htons(x) \ 00084 ((((unsigned char *)(&x))[0] << 8) | \ 00085 ((unsigned char *)(&x))[1]) 00086 #define ntohs(x) htons(x) 00087 #else 00088 /* let in.h handle it, if possible */ 00089 #include <sys/types.h> 00090 #include <netinet/in.h> 00091 #endif /* FORCE_LITTLE_ENDIAN */ 00092 #endif /* FORCE_BIG_ENDIAN */