m-pc.h
上传用户:jmzj888
上传日期:2007-01-02
资源大小:220k
文件大小:7k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
  2.    This file is public domain and comes with NO WARRANTY of any kind */
  3. #ifdef M_I286 /* Defined by MSC and __ZTC__ */
  4. #define M_IC80286
  5. #define MACHINE_TYPE "Intel 80286"
  6. #else
  7. #if defined(M_I386) || defined(WIN32) /* Defined by MSC and __ZTC__ */
  8. #define M_IC80386
  9. #define MACHINE_TYPE "Intel 80386 or better"
  10. #else
  11. #define M_IC8086
  12. #define MACHINE_TYPE "Intel 8086"
  13. #endif
  14. #endif
  15. #define LONG_MIN ((long) 0x80000000)
  16. #define LONG_MAX ((long) 0x7FFFFFFF)
  17. #define ULONG_MAX ((ulong) 0xFFFFFFFF)
  18. #ifdef M_IC80386
  19. #define INT_MIN 0x80000000
  20. #define INT_MAX 0x7FFFFFFF
  21. #else
  22. #define INT_MIN 0x8000
  23. #define INT_MAX 32767
  24. #endif
  25. #define INT_MIN32 LONG_MIN
  26. #define INT_MAX32 LONG_MAX
  27. #define INT_MIN24 ((long) 0xff800000L)
  28. #define INT_MAX24 0x007fffffL
  29. #define INT_MIN16 -32768
  30. #define INT_MAX16 32767
  31. #define INT_MIN8 ((char) 0x80)
  32. #define INT_MAX8 ((char) 0x7F)
  33. #if defined(__ZTC__)
  34. #define DBL_MIN 2.2250738585072014e-308 /* min positive value */
  35. #define DBL_MAX 0x1.FFFFFFFFFFFFFp1023
  36. #define FLT_MIN 1.175494351e-38F /* min positive value */
  37. #define FLT_MAX 3.402823466e+38F /* max value */
  38. #else
  39. #if defined(__WATCOMC__)
  40. #define DBL_MIN 2.22507385850720160e-308
  41. #define DBL_MAX 1.79769313486231560e+308
  42. #define FLT_MIN 1.175494351e-38f
  43. #define FLT_MAX 3.402823466e+38f
  44. #else /* MSC */
  45. #define DBL_MIN 2.2250738585072014e-308 /* min positive value */
  46. #define DBL_MAX 1.7976931348623158e+308 /* max value */
  47. #define FLT_MIN 1.175494351e-38F /* min positive value */
  48. #define FLT_MAX 3.402823466e+38F /* max value */
  49. #endif
  50. #endif /* __ZTC__ */
  51. #define NAN_TEST /* must test for NAN-values */
  52. #if defined(__ZTC__) || defined(__WATCOMC__) || defined(WIN32)
  53. #ifndef M_IC80386
  54. #define HUGE_PTR _far /* Compile with virtual or Z model */
  55. #define FAR _far /* In far-segment */
  56. #else
  57. #define HUGE_PTR /* Don't nead huge ptr on 386 */
  58. #ifndef FAR
  59. #define FAR
  60. #endif
  61. #define __huge
  62. #endif /* M_IC80386 */
  63. #else
  64. #ifndef FAR
  65. #define FAR __far /* In far-segment */
  66. #endif
  67. #define HUGE_PTR __huge /* HUGE is used in ansi */
  68. #endif /* __ZTC__ */
  69. #define ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
  70. #define ALIGN_SIZE(A) (((A)+3) & ~3) /* Size to make adressable obj. */
  71. #define ALIGN_PTR(A, t) ((t*) (((ulong) (A) + 3) & ~3)) /* even is better */
  72. #define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f)
  73. #ifdef __ZTC__
  74. #include <hugeptr.h>
  75. #define ADD_TO_PTR(ptr,size,type) (type) hugeptr_add((byte*) (ptr),(size))
  76. #define PTR_BYTE_DIFF(A,B) hugeptr_diff((byte*) (A),(byte*) (B))
  77. #else
  78. #define FIX_PTR(ptr) (void FAR *)(((unsigned long) (ptr) & 0xFFFF0000) + 
  79.       (((unsigned long) (ptr) & 0xFFF0) << 12) + ((unsigned) (ptr) & 15))
  80. #define ADD_TO_PTR(ptr,size,type) (type) FIX_PTR((byte HUGE_PTR *) (ptr)+(size))
  81. #define PTR_BYTE_DIFF(A,B) ((byte __huge *) (A) - (byte HUGE_PTR *) (B))
  82. #endif
  83. #define NullS (char *) 0
  84. #ifndef NEAR
  85. #ifdef WIN32
  86. #define NEAR
  87. #else
  88. #define NEAR _near /* In standar segment */
  89. #endif
  90. #endif
  91. /* Typdefs for easyier portability */
  92. typedef char tchar; /* A character that shall be used for TEXT
  93.    -> may be more than one byte. Use tstrcpy
  94.    ... to copy ... */
  95. typedef void *gptr; /* Generic pointer */
  96. typedef unsigned char uchar; /* Short for unsigned char */
  97. typedef char int8; /* Signed integer >= 8 bits */
  98. typedef short int16; /* Signed integer >= 16 bits */
  99. typedef long int32; /* Signed integer >= 32 bits */
  100. typedef unsigned char uint8; /* Short for unsigned integer >= 8  bits */
  101. typedef unsigned short uint16; /* Short for unsigned integer >= 16 bits */
  102. typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */
  103. typedef unsigned long ulong; /* Short for unsigned integer */
  104. #if defined(WIN32)
  105. typedef unsigned __int64 ulonglong;
  106. typedef __int64 longlong;
  107. #else
  108. typedef unsigned long ulonglong; /* no long long */
  109. typedef long longlong;
  110. #endif
  111. typedef uint8 int7; /* Effektivaste typ 0 <= x <= 127 */
  112. typedef int int15; /* Effektivaste typ 0 <= x <= 32767 */
  113. typedef char *string;/* String of characters */
  114. typedef char *my_string;/* String of characters */
  115. typedef unsigned int size_s; /* Size of strings (argument to stringfunc) */
  116. typedef int myf; /* Type of MyFlags in my_funcs */
  117. #ifdef __ZTC__
  118. typedef char byte; /* Smallest addresable unit */
  119. #else
  120. typedef unsigned char byte; /* Smallest addresable unit */
  121. #endif
  122. typedef unsigned int uint; /* Short for unsigned int */
  123. typedef unsigned short ushort;
  124. /* typedef:s that other programs may define */
  125. typedef char bool; /* Ordinary boolean values 0 1 */
  126. typedef char my_bool;
  127. /* Macros for converting *constants* to the right type */
  128. #define INT8(v) (int8) (v)
  129. #define INT16(v) (int16) (v)
  130. #define INT32(v) (int32) (v)
  131. #define MYF(v) (myf) (v)
  132. /* Defines to make it possible to prioritize register assignments */
  133. #define reg1 register
  134. #define reg2 register
  135. #define reg3
  136. #define reg4
  137. #define reg5
  138. #define reg6
  139. #define reg7
  140. #define reg8
  141. #define reg9
  142. #define reg10
  143. #define reg11
  144. #define reg12
  145. #define reg13
  146. #define reg14
  147. #define reg15
  148. #define reg16
  149. /* defines for time and alarm functions */
  150. #ifdef M_IC80386
  151. #define MY_HOW_OFTEN_TO_WRITE 100 /* How often we want info on screen */
  152. #else
  153. #define MY_HOW_OFTEN_TO_WRITE 10 /* How often we want info on screen */
  154. #endif
  155. /* define-functions for storing in machinge-independent format */
  156. #define sint2korr(A) (*((int16 *) (A)))
  157. #define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? 
  158.   (((uint32) 255L << 24) | 
  159.    (((uint32) (uchar) (A)[2]) << 16) |
  160.    (((uint32) (uchar) (A)[1]) << 8) | 
  161.    ((uint32) (uchar) (A)[0])) : 
  162.   (((uint32) (uchar) (A)[2]) << 16) |
  163.   (((uint32) (uchar) (A)[1]) << 8) | 
  164.   ((uint32) (uchar) (A)[0])))
  165. #define sint4korr(A) (*((long *) (A)))
  166. #define uint2korr(A) (*((uint16 *) (A)))
  167. #define uint3korr(A) (long) (*((unsigned long *) (A)) & 0xFFFFFF)
  168. #define uint4korr(A) (*((unsigned long *) (A)))
  169. #define int2store(T,A) *((uint16*) (T))= (uint16) (A)
  170. #define int3store(T,A) { *(T)=  (uchar) ((A));
  171.   *(T+1)=(uchar) (((uint) (A) >> 8));
  172.   *(T+2)=(uchar) (((A) >> 16)); }
  173. #define int4store(T,A) *((long *) (T))= (long) (A)
  174. /* define-funktio ns for reading and storing in machine format */
  175. /* from/to short/long to/from some place in memory */
  176. /* V should be a (not register) variable, M is a pointer to byte */
  177. #define ushortget(V,M) { V = uint2korr(M); }
  178. #define shortget(V,M) { V = sint2korr(M); }
  179. #define longget(V,M) { V = sint4korr(M); }
  180. #define ulongget(V,M) { V = uint4korr(M); }
  181. #define shortstore(T,V) int2store(T,V)
  182. #define longstore(T,V) int4store(T,V)
  183. #define doubleget(V,M) { *((long *) &V) = *((long*) M); 
  184.   *(((long *) &V)+1) = *(((long*) M)+1); }
  185. #define doublestore(T,V) { *((long *) T) = *((long*) &V); 
  186.    *(((long *) T)+1) = *(((long*) &V)+1); }
  187. #define longlongget(V,M) longget(V,M)
  188. #define longlongstore(T,M) longstore(T,M)
  189. #define BYTE_ORDER FALSE /* TRUE if high-byte first */