home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 9 / CD_ASCQ_09_1193.iso / news / 4441 / mpegcode / src / headers / byteorde.h < prev    next >
C/C++ Source or Header  |  1993-09-27  |  3KB  |  69 lines

  1. /*===========================================================================*
  2.  * byteorder.h                                     *
  3.  *                                         *
  4.  *    stuff to handle different byte order                     *
  5.  *                                         *
  6.  *===========================================================================*/
  7.  
  8. /*
  9.  * Copyright (c) 1993 The Regents of the University of California.
  10.  * All rights reserved.
  11.  *
  12.  * Permission to use, copy, modify, and distribute this software and its
  13.  * documentation for any purpose, without fee, and without written agreement is
  14.  * hereby granted, provided that the above copyright notice and the following
  15.  * two paragraphs appear in all copies of this software.
  16.  *
  17.  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
  18.  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  19.  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
  20.  * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  21.  *
  22.  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  23.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  24.  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  25.  * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
  26.  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  27.  */
  28.  
  29. /*  
  30.  *  $Header: /n/picasso/users/keving/encode/src/headers/RCS/byteorder.h,v 1.1 1993/07/22 22:24:23 keving Exp keving $
  31.  *  $Log: byteorder.h,v $
  32.  * Revision 1.1  1993/07/22  22:24:23  keving
  33.  * nothing
  34.  *
  35.  */
  36.  
  37.  
  38. #include "general.h"
  39.  
  40.  
  41. #ifdef FORCE_BIG_ENDIAN
  42.     /* leave byte order as it is */
  43. #define htonl(x) (x)
  44. #define ntohl(x) (x)
  45. #define htons(x) (x)
  46. #define ntohs(x) (x)
  47. #else
  48. #ifdef FORCE_LITTLE_ENDIAN
  49.     /* need to reverse byte order */
  50.     /* note -- we assume here that htonl is called on a variable, not a
  51.      * constant; thus, this is not for general use, but works with bitio.c
  52.      */
  53. #define htonl(x)    \
  54.     ((((unsigned char *)(&x))[0] << 24) |    \
  55.      (((unsigned char *)(&x))[1] << 16) |    \
  56.      (((unsigned char *)(&x))[2] << 8) |    \
  57.      (((unsigned char *)(&x))[3]))
  58. #define ntohl(x)    htonl(x)
  59. #define htons(x)    \
  60.     ((((unsigned char *)(&x))[0] << 8) |    \
  61.      ((unsigned char *)(&x))[1])
  62. #define ntohs(x)    htons(x)
  63. #else
  64.     /* let in.h handle it, if possible */           
  65. #include <sys/types.h>
  66. #include <netinet/in.h>
  67. #endif FORCE_LITTLE_ENDIAN
  68. #endif FORCE_BIG_ENDIAN
  69.