bittypes.h
上传用户:gzdtt123
上传日期:2022-01-26
资源大小:88k
文件大小:4k
开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 1999 WIDE Project.
  3.  * All rights reserved.
  4.  * 
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. Neither the name of the project nor the names of its contributors
  14.  *    may be used to endorse or promote products derived from this software
  15.  *    without specific prior written permission.
  16.  * 
  17.  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
  18.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
  21.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27.  * SUCH DAMAGE.
  28.  */
  29. #ifndef _BITTYPES_H
  30. #define _BITTYPES_H
  31. #ifndef HAVE_U_INT8_T
  32. #if SIZEOF_CHAR == 1
  33. typedef unsigned char u_int8_t;
  34. typedef signed char int8_t;
  35. #elif SIZEOF_INT == 1
  36. typedef unsigned int u_int8_t;
  37. typedef signed int int8_t;
  38. #else  /* XXX */
  39. #error "there's no appropriate type for u_int8_t"
  40. #endif
  41. #define HAVE_U_INT8_T 1
  42. #define HAVE_INT8_T 1
  43. #endif /* HAVE_U_INT8_T */
  44. #ifndef HAVE_U_INT16_T 
  45. #if SIZEOF_SHORT == 2
  46. typedef unsigned short u_int16_t;
  47. typedef signed short int16_t;
  48. #elif SIZEOF_INT == 2
  49. typedef unsigned int u_int16_t;
  50. typedef signed int int16_t;
  51. #elif SIZEOF_CHAR == 2
  52. typedef unsigned char u_int16_t;
  53. typedef signed char int16_t;
  54. #else  /* XXX */
  55. #error "there's no appropriate type for u_int16_t"
  56. #endif
  57. #define HAVE_U_INT16_T 1
  58. #define HAVE_INT16_T 1
  59. #endif /* HAVE_U_INT16_T */
  60. #ifndef HAVE_U_INT32_T
  61. #if SIZEOF_INT == 4
  62. typedef unsigned int u_int32_t;
  63. typedef signed int int32_t;
  64. #elif SIZEOF_LONG == 4
  65. typedef unsigned long u_int32_t;
  66. typedef signed long int32_t;
  67. #elif SIZEOF_SHORT == 4
  68. typedef unsigned short u_int32_t;
  69. typedef signed short int32_t;
  70. #else  /* XXX */
  71. #error "there's no appropriate type for u_int32_t"
  72. #endif
  73. #define HAVE_U_INT32_T 1
  74. #define HAVE_INT32_T 1
  75. #endif /* HAVE_U_INT32_T */
  76. #ifndef HAVE_U_INT64_T
  77. #if SIZEOF_LONG_LONG == 8
  78. typedef unsigned long long u_int64_t;
  79. #elif defined(_MSC_EXTENSIONS)
  80. typedef unsigned _int64 u_int64_t;
  81. #elif SIZEOF_INT == 8
  82. typedef unsigned int u_int64_t;
  83. #elif SIZEOF_LONG == 8
  84. typedef unsigned long u_int64_t;
  85. #elif SIZEOF_SHORT == 8
  86. typedef unsigned short u_int64_t;
  87. #else  /* XXX */
  88. #error "there's no appropriate type for u_int64_t"
  89. #endif
  90. #endif /* HAVE_U_INT64_T */
  91. #ifndef PRId64
  92. #ifdef _MSC_EXTENSIONS
  93. #define PRId64 "I64d"
  94. #else /* _MSC_EXTENSIONS */
  95. #define PRId64 "lld"
  96. #endif /* _MSC_EXTENSIONS */
  97. #endif /* PRId64 */
  98. #ifndef PRIo64
  99. #ifdef _MSC_EXTENSIONS
  100. #define PRIo64 "I64o"
  101. #else /* _MSC_EXTENSIONS */
  102. #define PRIo64 "llo"
  103. #endif /* _MSC_EXTENSIONS */
  104. #endif /* PRIo64 */
  105. #ifndef PRIx64
  106. #ifdef _MSC_EXTENSIONS
  107. #define PRIx64 "I64x"
  108. #else /* _MSC_EXTENSIONS */
  109. #define PRIx64 "llx"
  110. #endif /* _MSC_EXTENSIONS */
  111. #endif /* PRIx64 */
  112. #ifndef PRIu64
  113. #ifdef _MSC_EXTENSIONS
  114. #define PRIu64 "I64u"
  115. #else /* _MSC_EXTENSIONS */
  116. #define PRIu64 "llu"
  117. #endif /* _MSC_EXTENSIONS */
  118. #endif /* PRIu64 */
  119. #endif /* _BITTYPES_H */