00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef GCC_HWINT_H
00036 #define GCC_HWINT_H
00037
00038
00039 #define HOST_BITS_PER_CHAR CHAR_BIT
00040 #define HOST_BITS_PER_SHORT (CHAR_BIT * SIZEOF_SHORT)
00041 #define HOST_BITS_PER_INT (CHAR_BIT * SIZEOF_INT)
00042 #define HOST_BITS_PER_LONG (CHAR_BIT * SIZEOF_LONG)
00043
00044 #ifdef HAVE_LONG_LONG
00045 # define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
00046 #else
00047 #ifdef HAVE___INT64
00048 # define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF___INT64)
00049 #else
00050
00051
00052 #ifndef SGI_MONGOOSE
00053 # if GCC_VERSION > 3000
00054 # define HOST_BITS_PER_LONGLONG LONG_LONG_TYPE_SIZE
00055 # endif
00056 #endif
00057 #endif
00058 #endif
00059
00060
00061
00062
00063
00064
00065 #if ! defined HOST_BITS_PER_WIDE_INT \
00066 && defined HOST_BITS_PER_LONGLONG \
00067 && (HOST_BITS_PER_LONGLONG > HOST_BITS_PER_LONG) \
00068 && (defined (LONG_LONG_MAX) || defined (LONGLONG_MAX) \
00069 || defined (LLONG_MAX) || defined (__GNUC__))
00070
00071 # ifdef MAX_LONG_TYPE_SIZE
00072 # if MAX_LONG_TYPE_SIZE > HOST_BITS_PER_LONG
00073 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
00074 # define HOST_WIDE_INT long long
00075 # endif
00076 # else
00077 # if LONG_TYPE_SIZE > HOST_BITS_PER_LONG
00078 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG
00079 # define HOST_WIDE_INT long long
00080 # endif
00081 # endif
00082
00083 #endif
00084
00085 #ifndef HOST_BITS_PER_WIDE_INT
00086
00087 # if HOST_BITS_PER_LONG > HOST_BITS_PER_INT
00088 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
00089 # define HOST_WIDE_INT long
00090 # else
00091 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_INT
00092 # define HOST_WIDE_INT int
00093 # endif
00094
00095 #endif
00096
00097
00098
00099
00100 #ifndef HOST_WIDE_INT_PRINT_DEC
00101 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
00102 # define HOST_WIDE_INT_PRINT_DEC "%d"
00103 # define HOST_WIDE_INT_PRINT_DEC_C "%d"
00104 # define HOST_WIDE_INT_PRINT_DEC_SPACE "% *d"
00105 # else
00106 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
00107 # define HOST_WIDE_INT_PRINT_DEC "%ld"
00108 # define HOST_WIDE_INT_PRINT_DEC_C "%ldL"
00109 # define HOST_WIDE_INT_PRINT_DEC_SPACE "% *ld"
00110 # else
00111 # define HOST_WIDE_INT_PRINT_DEC "%lld"
00112 # define HOST_WIDE_INT_PRINT_DEC_C "%lldLL"
00113 # define HOST_WIDE_INT_PRINT_DEC_SPACE "% *lld"
00114 # endif
00115 # endif
00116 #endif
00117
00118 #ifndef HOST_WIDE_INT_PRINT_UNSIGNED
00119 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
00120 # define HOST_WIDE_INT_PRINT_UNSIGNED "%u"
00121 # define HOST_WIDE_INT_PRINT_UNSIGNED_SPACE "% *u"
00122 # else
00123 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
00124 # define HOST_WIDE_INT_PRINT_UNSIGNED "%lu"
00125 # define HOST_WIDE_INT_PRINT_UNSIGNED_SPACE "% *lu"
00126 # else
00127 # define HOST_WIDE_INT_PRINT_UNSIGNED "%llu"
00128 # define HOST_WIDE_INT_PRINT_UNSIGNED_SPACE "% *llu"
00129 # endif
00130 # endif
00131 #endif
00132
00133 #ifndef HOST_WIDE_INT_PRINT_HEX
00134 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
00135 # define HOST_WIDE_INT_PRINT_HEX "0x%x"
00136 # else
00137 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
00138 # define HOST_WIDE_INT_PRINT_HEX "0x%lx"
00139 # else
00140 # define HOST_WIDE_INT_PRINT_HEX "0x%llx"
00141 # endif
00142 # endif
00143 #endif
00144
00145 #ifndef HOST_WIDE_INT_PRINT_DOUBLE_HEX
00146 # if HOST_BITS_PER_WIDE_INT == 64
00147 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
00148 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%016x"
00149 # else
00150 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
00151 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%016lx"
00152 # else
00153 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%016llx"
00154 # endif
00155 # endif
00156 # else
00157 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
00158 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%08x"
00159 # else
00160 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
00161 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%08lx"
00162 # else
00163 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%08llx"
00164 # endif
00165 # endif
00166 # endif
00167 #endif
00168
00169
00170
00171
00172
00173 #ifndef HOST_WIDEST_INT
00174 #if defined HOST_BITS_PER_LONGLONG \
00175 && HOST_BITS_PER_LONGLONG > HOST_BITS_PER_LONG
00176 # define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONGLONG
00177 # define HOST_WIDEST_INT long long
00178 # define HOST_WIDEST_INT_PRINT_DEC "%lld"
00179 # define HOST_WIDEST_INT_PRINT_DEC_SPACE "% *lld"
00180 # define HOST_WIDEST_INT_PRINT_UNSIGNED "%llu"
00181 # define HOST_WIDEST_INT_PRINT_UNSIGNED_SPACE "% *llu"
00182 # define HOST_WIDEST_INT_PRINT_HEX "0x%llx"
00183 # else
00184 # define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONG
00185 # define HOST_WIDEST_INT long
00186 # define HOST_WIDEST_INT_PRINT_DEC "%ld"
00187 # define HOST_WIDEST_INT_PRINT_DEC_SPACE "% *ld"
00188 # define HOST_WIDEST_INT_PRINT_UNSIGNED "%lu"
00189 # define HOST_WIDEST_INT_PRINT_UNSIGNED_SPACE "% *lu"
00190 # define HOST_WIDEST_INT_PRINT_HEX "0x%lx"
00191 # endif
00192 #endif
00193
00194 #endif