1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * Copyright by The HDF Group. * 3 * Copyright by the Board of Trustees of the University of Illinois. * 4 * All rights reserved. * 5 * * 6 * This file is part of HDF. The full HDF copyright notice, including * 7 * terms governing use, modification, and redistribution, is contained in * 8 * the COPYING file, which can be found at the root of the source code * 9 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/. * 10 * If you do not have access to either file, you may request a copy from * 11 * help@hdfgroup.org. * 12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 14 /* $Id$ */ 15 16 /*----------------------------------------------------------------------------- 17 * File: hconv.h 18 * Purpose: header file for data conversion information & structures 19 * Invokes: 20 * Contents: 21 * Structure definitions: 22 * Constant definitions: lots... 23 *---------------------------------------------------------------------------*/ 24 25 /* avoid re-inclusion */ 26 #ifndef _HCONV_H 27 #define _HCONV_H 28 29 /* This looks redundant because previously, VMS platform would undefine DUFF. */ 30 /* Don't know why. -AKC 2014/1/18 */ 31 #define DUFF 32 #ifdef DUFF 33 #define DUFF_sb4b 34 35 #define DUFF_ui2i 36 #define DUFF_ui2s 37 #define DUFF_uo2i 38 #define DUFF_ui4i 39 #define DUFF_ui4s 40 #define DUFF_uo4i 41 #define DUFF_ui4f 42 #define DUFF_uo4f 43 #define DUFF_ui8f 44 #define DUFF_uo8f 45 46 #define DUFF_lui2i 47 #define DUFF_lui2s 48 #define DUFF_luo2i 49 #define DUFF_lui4i 50 #define DUFF_lui4s 51 #define DUFF_luo4i 52 #define DUFF_lui4f 53 #define DUFF_luo4f 54 #define DUFF_lui8f 55 #define DUFF_luo8f 56 #endif 57 58 /*****************************************************************************/ 59 /* CONSTANT DEFINITIONS */ 60 /*****************************************************************************/ 61 /* Generally Big-Endian machines */ 62 #if !defined(INTEL86) && !defined(MIPSEL) && !defined(DEC_ALPHA) && !defined(I860) && !defined(SUN386) && !(defined(__ia64) && !(defined(hpux) || defined(__hpux))) && !defined(__x86_64__) 63 # define UI8_IN DFKnb1b /* Unsigned Integer, 8 bits */ 64 # define UI8_OUT DFKnb1b 65 # define SI16_IN DFKnb2b /* S = Signed */ 66 # define SI16_OUT DFKnb2b 67 # define UI16_IN DFKnb2b 68 # define UI16_OUT DFKnb2b 69 # define SI32_IN DFKnb4b 70 # define SI32_OUT DFKnb4b 71 # define UI32_IN DFKnb4b 72 # define UI32_OUT DFKnb4b 73 # define F32_IN DFKnb4b /* Float, 32 bits */ 74 # define F32_OUT DFKnb4b 75 # define F64_IN DFKnb8b 76 # define F64_OUT DFKnb8b 77 78 # define LUI8_IN DFKnb1b /* Little Endian Unsigned Integer, 8 bits */ 79 # define LUI8_OUT DFKnb1b 80 # define LSI16_IN DFKsb2b 81 # define LSI16_OUT DFKsb2b 82 # define LUI16_IN DFKsb2b 83 # define LUI16_OUT DFKsb2b 84 # define LSI32_IN DFKsb4b 85 # define LSI32_OUT DFKsb4b 86 # define LUI32_IN DFKsb4b 87 # define LUI32_OUT DFKsb4b 88 # define LF32_IN DFKsb4b 89 # define LF32_OUT DFKsb4b 90 # define LF64_IN DFKsb8b 91 # define LF64_OUT DFKsb8b 92 93 #else /* must be INTEL86 || MIPSEL || DEC_ALPHA || I860 || SUN386 || IA64 || Linux64 (Generally, little-endian machines */ 94 # define UI8_IN DFKnb1b /* Big-Endian IEEE support */ 95 # define UI8_OUT DFKnb1b /* The s in DFKsb2b is for swap */ 96 # define SI16_IN DFKsb2b 97 # define SI16_OUT DFKsb2b 98 # define UI16_IN DFKsb2b 99 # define UI16_OUT DFKsb2b 100 # define SI32_IN DFKsb4b 101 # define SI32_OUT DFKsb4b 102 # define UI32_IN DFKsb4b 103 # define UI32_OUT DFKsb4b 104 # define F32_IN DFKsb4b 105 # define F32_OUT DFKsb4b 106 # define F64_IN DFKsb8b 107 # define F64_OUT DFKsb8b 108 109 # define LUI8_IN DFKnb1b /* Little-Endian IEEE support */ 110 # define LUI8_OUT DFKnb1b 111 # define LSI16_IN DFKnb2b 112 # define LSI16_OUT DFKnb2b 113 # define LUI16_IN DFKnb2b 114 # define LUI16_OUT DFKnb2b 115 # define LSI32_IN DFKnb4b 116 # define LSI32_OUT DFKnb4b 117 # define LUI32_IN DFKnb4b 118 # define LUI32_OUT DFKnb4b 119 # define LF32_IN DFKnb4b 120 # define LF32_OUT DFKnb4b 121 # define LF64_IN DFKnb8b 122 # define LF64_OUT DFKnb8b 123 124 #endif /* !INTEL86 && !MIPS && !DEC_ALPHA && !I860 && !SUN386 && !IA64 && !Linux64*/ 125 126 /* All Machines currently use the same routines */ 127 /* for Native mode "conversions" */ 128 # define NUI8_IN DFKnb1b 129 # define NUI8_OUT DFKnb1b 130 # define NSI16_IN DFKnb2b 131 # define NSI16_OUT DFKnb2b 132 # define NUI16_IN DFKnb2b 133 # define NUI16_OUT DFKnb2b 134 # define NSI32_IN DFKnb4b 135 # define NSI32_OUT DFKnb4b 136 # define NUI32_IN DFKnb4b 137 # define NUI32_OUT DFKnb4b 138 # define NF32_IN DFKnb4b 139 # define NF32_OUT DFKnb4b 140 # define NF64_IN DFKnb8b 141 # define NF64_OUT DFKnb8b 142 143 /*****************************************************************************/ 144 /* STRUCTURE DEFINTIONS */ 145 /*****************************************************************************/ 146 union fpx 147 { 148 float f; 149 long l; 150 }; 151 152 union float_uint_uchar 153 { 154 float32 f; 155 int32 i; 156 unsigned char c[4]; 157 }; 158 159 #endif /* _HCONV_H */ 160