Annotation of XNU/EXTERNAL_HEADERS/architecture/byte_order.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  * Copyright (c) 1992 NeXT Computer, Inc.
                     24:  *
                     25:  * Byte ordering conversion.
                     26:  *
                     27:  * HISTORY
                     28:  *
                     29:  * 20 October 1992 ? at NeXT
                     30:  *     Added #ifdef wrapper to prevent multiple inclusions of this file.
                     31:  *
                     32:  * 8 October 1992 ? at NeXT
                     33:  *     Converted to NXxxx versions.  Condensed history.
                     34:  *
                     35:  * 18 May 1992 ? at NeXT
                     36:  *     Created.
                     37:  */
                     38: 
                     39: #ifndef        _ARCHITECTURE_BYTE_ORDER_H_
                     40: #define _ARCHITECTURE_BYTE_ORDER_H_
                     41:  
                     42: typedef unsigned long NXSwappedFloat;
                     43: typedef unsigned long long NXSwappedDouble;
                     44: 
                     45: #if defined (__ppc__)
                     46: #include "architecture/ppc/byte_order.h"
                     47: #elif defined (__i386__)
                     48: #include "architecture/i386/byte_order.h"
                     49: #else
                     50: #error architecture not supported
                     51: #endif
                     52: 
                     53: /*
                     54:  * Identify the byte order
                     55:  * of the current host.
                     56:  */
                     57: 
                     58: enum NXByteOrder {
                     59:     NX_UnknownByteOrder,
                     60:     NX_LittleEndian,
                     61:     NX_BigEndian
                     62: };
                     63: 
                     64: static __inline__
                     65: enum NXByteOrder
                     66: NXHostByteOrder(void)
                     67: {
                     68:     unsigned int       _x;
                     69:     
                     70:     _x = (NX_BigEndian << 24) | NX_LittleEndian;
                     71:         
                     72:     return ((enum NXByteOrder)*((unsigned char *)&_x));
                     73: }
                     74: 
                     75: /*
                     76:  * The predicated versions
                     77:  * are defined here in terms
                     78:  * of the unpredicated ones.
                     79:  */
                     80: 
                     81: #if    __BIG_ENDIAN__
                     82: 
                     83: static __inline__
                     84: unsigned short
                     85: NXSwapBigShortToHost(
                     86:     unsigned short     x
                     87: )
                     88: {
                     89:     return (x);
                     90: }
                     91: 
                     92: static __inline__
                     93: unsigned int
                     94: NXSwapBigIntToHost(
                     95:     unsigned int       x
                     96: )
                     97: {
                     98:     return (x);
                     99: }
                    100: 
                    101: static __inline__
                    102: unsigned long
                    103: NXSwapBigLongToHost(
                    104:     unsigned long      x
                    105: )
                    106: {
                    107:     return (x);
                    108: }
                    109: 
                    110: static __inline__
                    111: unsigned long long
                    112: NXSwapBigLongLongToHost(
                    113:     unsigned long long x
                    114: )
                    115: {
                    116:     return (x);
                    117: }
                    118: 
                    119: #ifndef KERNEL
                    120: 
                    121: static __inline__
                    122: double
                    123: NXSwapBigDoubleToHost(
                    124:     NXSwappedDouble    x
                    125: )
                    126: {
                    127:     return NXConvertSwappedDoubleToHost(x);
                    128: }
                    129: 
                    130: static __inline__
                    131: float
                    132: NXSwapBigFloatToHost(
                    133:     NXSwappedFloat     x
                    134: )
                    135: {
                    136:     return NXConvertSwappedFloatToHost(x);
                    137: }
                    138: 
                    139: #endif /* KERNEL */
                    140: 
                    141: static __inline__
                    142: unsigned short
                    143: NXSwapHostShortToBig(
                    144:     unsigned short     x
                    145: )
                    146: {
                    147:     return (x);
                    148: }
                    149: 
                    150: static __inline__
                    151: unsigned int
                    152: NXSwapHostIntToBig(
                    153:     unsigned int       x
                    154: )
                    155: {
                    156:     return (x);
                    157: }
                    158: 
                    159: static __inline__
                    160: unsigned long
                    161: NXSwapHostLongToBig(
                    162:     unsigned long      x
                    163: )
                    164: {
                    165:     return (x);
                    166: }
                    167: 
                    168: static __inline__
                    169: unsigned long long
                    170: NXSwapHostLongLongToBig(
                    171:     unsigned long long x
                    172: )
                    173: {
                    174:     return (x);
                    175: }
                    176: 
                    177: #ifndef KERNEL
                    178: 
                    179: static __inline__
                    180: NXSwappedDouble
                    181: NXSwapHostDoubleToBig(
                    182:     double             x
                    183: )
                    184: {
                    185:     return NXConvertHostDoubleToSwapped(x);
                    186: }
                    187: 
                    188: static __inline__
                    189: NXSwappedFloat
                    190: NXSwapHostFloatToBig(
                    191:     float              x
                    192: )
                    193: {
                    194:     return NXConvertHostFloatToSwapped(x);
                    195: }
                    196: 
                    197: #endif /* KERNEL */
                    198: 
                    199: static __inline__
                    200: unsigned short
                    201: NXSwapLittleShortToHost(
                    202:     unsigned short     x
                    203: )
                    204: {
                    205:     return (NXSwapShort(x));
                    206: }
                    207: 
                    208: static __inline__
                    209: unsigned int
                    210: NXSwapLittleIntToHost(
                    211:     unsigned int       x
                    212: )
                    213: {
                    214:     return (NXSwapInt(x));
                    215: }
                    216: 
                    217: static __inline__
                    218: unsigned long
                    219: NXSwapLittleLongToHost(
                    220:     unsigned long      x
                    221: )
                    222: {
                    223:     return (NXSwapLong(x));
                    224: }
                    225: 
                    226: static __inline__
                    227: unsigned long long
                    228: NXSwapLittleLongLongToHost(
                    229:     unsigned long long x
                    230: )
                    231: {
                    232:     return (NXSwapLongLong(x));
                    233: }
                    234: 
                    235: #ifndef KERNEL
                    236: 
                    237: static __inline__
                    238: double
                    239: NXSwapLittleDoubleToHost(
                    240:     NXSwappedDouble    x
                    241: )
                    242: {
                    243:     return NXConvertSwappedDoubleToHost(NXSwapDouble(x));
                    244: }
                    245: 
                    246: static __inline__
                    247: float
                    248: NXSwapLittleFloatToHost(
                    249:     NXSwappedFloat     x
                    250: )
                    251: {
                    252:     return NXConvertSwappedFloatToHost(NXSwapFloat(x));
                    253: }
                    254: 
                    255: #endif /* KERNEL */
                    256: 
                    257: static __inline__
                    258: unsigned short
                    259: NXSwapHostShortToLittle(
                    260:     unsigned short     x
                    261: )
                    262: {
                    263:     return (NXSwapShort(x));
                    264: }
                    265: 
                    266: static __inline__
                    267: unsigned int
                    268: NXSwapHostIntToLittle(
                    269:     unsigned int       x
                    270: )
                    271: {
                    272:     return (NXSwapInt(x));
                    273: }
                    274: 
                    275: static __inline__
                    276: unsigned long
                    277: NXSwapHostLongToLittle(
                    278:     unsigned long      x
                    279: )
                    280: {
                    281:     return (NXSwapLong(x));
                    282: }
                    283: 
                    284: static __inline__
                    285: unsigned long long
                    286: NXSwapHostLongLongToLittle(
                    287:     unsigned long long x
                    288: )
                    289: {
                    290:     return (NXSwapLongLong(x));
                    291: }
                    292: 
                    293: #ifndef KERNEL
                    294: 
                    295: static __inline__
                    296: NXSwappedDouble
                    297: NXSwapHostDoubleToLittle(
                    298:     double             x
                    299: )
                    300: {
                    301:     return NXSwapDouble(NXConvertHostDoubleToSwapped(x));
                    302: }
                    303: 
                    304: static __inline__
                    305: NXSwappedFloat
                    306: NXSwapHostFloatToLittle(
                    307:     float              x
                    308: )
                    309: {
                    310:     return NXSwapFloat(NXConvertHostFloatToSwapped(x));
                    311: }
                    312: 
                    313: #endif /* KERNEL */
                    314: #endif /*__BIG_ENDIAN__ */
                    315: 
                    316: #if    __LITTLE_ENDIAN__
                    317: 
                    318: static __inline__
                    319: unsigned short
                    320: NXSwapBigShortToHost(
                    321:     unsigned short     x
                    322: )
                    323: {
                    324:     return (NXSwapShort(x));
                    325: }
                    326: 
                    327: static __inline__
                    328: unsigned int
                    329: NXSwapBigIntToHost(
                    330:     unsigned int       x
                    331: )
                    332: {
                    333:     return (NXSwapInt(x));
                    334: }
                    335: 
                    336: static __inline__
                    337: unsigned long
                    338: NXSwapBigLongToHost(
                    339:     unsigned long      x
                    340: )
                    341: {
                    342:     return (NXSwapLong(x));
                    343: }
                    344: 
                    345: static __inline__
                    346: unsigned long long
                    347: NXSwapBigLongLongToHost(
                    348:     unsigned long long x
                    349: )
                    350: {
                    351:     return (NXSwapLongLong(x));
                    352: }
                    353: 
                    354: static __inline__
                    355: double
                    356: NXSwapBigDoubleToHost(
                    357:     NXSwappedDouble    x
                    358: )
                    359: {
                    360:     return NXConvertSwappedDoubleToHost(NXSwapDouble(x));
                    361: }
                    362: 
                    363: static __inline__
                    364: float
                    365: NXSwapBigFloatToHost(
                    366:     NXSwappedFloat     x
                    367: )
                    368: {
                    369:     return NXConvertSwappedFloatToHost(NXSwapFloat(x));
                    370: }
                    371: 
                    372: static __inline__
                    373: unsigned short
                    374: NXSwapHostShortToBig(
                    375:     unsigned short     x
                    376: )
                    377: {
                    378:     return (NXSwapShort(x));
                    379: }
                    380: 
                    381: static __inline__
                    382: unsigned int
                    383: NXSwapHostIntToBig(
                    384:     unsigned int       x
                    385: )
                    386: {
                    387:     return (NXSwapInt(x));
                    388: }
                    389: 
                    390: static __inline__
                    391: unsigned long
                    392: NXSwapHostLongToBig(
                    393:     unsigned long      x
                    394: )
                    395: {
                    396:     return (NXSwapLong(x));
                    397: }
                    398: 
                    399: static __inline__
                    400: unsigned long long
                    401: NXSwapHostLongLongToBig(
                    402:     unsigned long long x
                    403: )
                    404: {
                    405:     return (NXSwapLongLong(x));
                    406: }
                    407: 
                    408: static __inline__
                    409: NXSwappedDouble
                    410: NXSwapHostDoubleToBig(
                    411:     double             x
                    412: )
                    413: {
                    414:     return (NXSwapDouble(NXConvertHostDoubleToSwapped(x)));
                    415: }
                    416: 
                    417: static __inline__
                    418: NXSwappedFloat
                    419: NXSwapHostFloatToBig(
                    420:     float              x
                    421: )
                    422: {
                    423:     return (NXSwapFloat(NXConvertHostFloatToSwapped(x)));
                    424: }
                    425: 
                    426: static __inline__
                    427: unsigned short
                    428: NXSwapLittleShortToHost(
                    429:     unsigned short     x
                    430: )
                    431: {
                    432:     return (x);
                    433: }
                    434: 
                    435: static __inline__
                    436: unsigned int
                    437: NXSwapLittleIntToHost(
                    438:     unsigned int       x
                    439: )
                    440: {
                    441:     return (x);
                    442: }
                    443: 
                    444: static __inline__
                    445: unsigned long
                    446: NXSwapLittleLongToHost(
                    447:     unsigned long      x
                    448: )
                    449: {
                    450:     return (x);
                    451: }
                    452: 
                    453: static __inline__
                    454: unsigned long long
                    455: NXSwapLittleLongLongToHost(
                    456:     unsigned long long x
                    457: )
                    458: {
                    459:     return (x);
                    460: }
                    461: 
                    462: static __inline__
                    463: double
                    464: NXSwapLittleDoubleToHost(
                    465:     NXSwappedDouble    x
                    466: )
                    467: {
                    468:     return NXConvertSwappedDoubleToHost(x);
                    469: }
                    470: 
                    471: static __inline__
                    472: float
                    473: NXSwapLittleFloatToHost(
                    474:     NXSwappedFloat     x
                    475: )
                    476: {
                    477:     return NXConvertSwappedFloatToHost(x);
                    478: }
                    479: 
                    480: static __inline__
                    481: unsigned short
                    482: NXSwapHostShortToLittle(
                    483:     unsigned short     x
                    484: )
                    485: {
                    486:     return (x);
                    487: }
                    488: 
                    489: static __inline__
                    490: unsigned int
                    491: NXSwapHostIntToLittle(
                    492:     unsigned int       x
                    493: )
                    494: {
                    495:     return (x);
                    496: }
                    497: 
                    498: static __inline__
                    499: unsigned long
                    500: NXSwapHostLongToLittle(
                    501:     unsigned long      x
                    502: )
                    503: {
                    504:     return (x);
                    505: }
                    506: 
                    507: static __inline__
                    508: unsigned long long
                    509: NXSwapHostLongLongToLittle(
                    510:     unsigned long long x
                    511: )
                    512: {
                    513:     return (x);
                    514: }
                    515: 
                    516: static __inline__
                    517: NXSwappedDouble
                    518: NXSwapHostDoubleToLittle(
                    519:     double             x
                    520: )
                    521: {
                    522:     return NXConvertHostDoubleToSwapped(x);
                    523: }
                    524: 
                    525: static __inline__
                    526: NXSwappedFloat
                    527: NXSwapHostFloatToLittle(
                    528:     float              x
                    529: )
                    530: {
                    531:     return NXConvertHostFloatToSwapped(x);
                    532: }
                    533: 
                    534: #endif /* __LITTLE_ENDIAN__ */
                    535: 
                    536: #endif /* _ARCHITECTURE_BYTE_ORDER_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.