ut0ut.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /**********************************************************************
  2. Various utilities
  3. (c) 1994, 1995 Innobase Oy
  4. Created 1/20/1994 Heikki Tuuri
  5. ***********************************************************************/
  6. #ifndef ut0ut_h
  7. #define ut0ut_h
  8. #include <time.h>
  9. #include <ctype.h>
  10. #include "univ.i"
  11. typedef time_t ib_time_t;
  12. /**********************************************************
  13. Calculates the minimum of two ulints. */
  14. UNIV_INLINE
  15. ulint
  16. ut_min(
  17. /*===*/
  18. /* out: minimum */
  19. ulint    n1,   /* in: first number */
  20. ulint    n2);   /* in: second number */
  21. /**********************************************************
  22. Calculates the maximum of two ulints. */
  23. UNIV_INLINE
  24. ulint
  25. ut_max(
  26. /*===*/
  27. /* out: maximum */
  28. ulint    n1, /* in: first number */
  29. ulint    n2); /* in: second number */
  30. /********************************************************************
  31. Calculates minimum of two ulint-pairs. */
  32. UNIV_INLINE
  33. void
  34. ut_pair_min(
  35. /*========*/
  36. ulint* a, /* out: more significant part of minimum */
  37. ulint* b, /* out: less significant part of minimum */
  38. ulint a1, /* in: more significant part of first pair */
  39. ulint b1, /* in: less significant part of first pair */
  40. ulint a2, /* in: more significant part of second pair */
  41. ulint b2); /* in: less significant part of second pair */
  42. /**********************************************************
  43. Compares two ulints. */
  44. UNIV_INLINE
  45. int
  46. ut_ulint_cmp(
  47. /*=========*/
  48. /* out: 1 if a > b, 0 if a == b, -1 if a < b */
  49. ulint a, /* in: ulint */
  50. ulint b); /* in: ulint */
  51. /***********************************************************
  52. Compares two pairs of ulints. */
  53. UNIV_INLINE
  54. int
  55. ut_pair_cmp(
  56. /*========*/
  57. /* out: -1 if a < b, 0 if a == b,
  58. 1 if a > b */ 
  59. ulint a1, /* in: more significant part of first pair */
  60. ulint a2, /* in: less significant part of first pair */
  61. ulint b1, /* in: more significant part of second pair */
  62. ulint b2); /* in: less significant part of second pair */
  63. /*****************************************************************
  64. Calculates fast the remainder when divided by a power of two. */
  65. UNIV_INLINE
  66. ulint
  67. ut_2pow_remainder(
  68. /*==============*/ /* out: remainder */
  69. ulint n, /* in: number to be divided */
  70. ulint m); /* in: divisor; power of 2 */
  71. /*****************************************************************
  72. Calculates fast value rounded to a multiple of a power of 2. */
  73. UNIV_INLINE
  74. ulint
  75. ut_2pow_round(
  76. /*==========*/ /* out: value of n rounded down to nearest
  77. multiple of m */
  78. ulint n, /* in: number to be rounded */
  79. ulint m); /* in: divisor; power of 2 */
  80. /*****************************************************************
  81. Calculates fast the 2-logarithm of a number, rounded upward to an
  82. integer. */
  83. UNIV_INLINE
  84. ulint
  85. ut_2_log(
  86. /*=====*/
  87. /* out: logarithm in the base 2, rounded upward */
  88. ulint n); /* in: number */
  89. /*****************************************************************
  90. Calculates 2 to power n. */
  91. UNIV_INLINE
  92. ulint
  93. ut_2_exp(
  94. /*=====*/
  95. /* out: 2 to power n */
  96. ulint n); /* in: number */
  97. /*****************************************************************
  98. Calculates fast the number rounded up to the nearest power of 2. */
  99. UNIV_INLINE
  100. ulint
  101. ut_2_power_up(
  102. /*==========*/
  103. /* out: first power of 2 which is >= n */
  104. ulint n); /* in: number != 0 */
  105. /****************************************************************
  106. Sort function for ulint arrays. */
  107. void
  108. ut_ulint_sort(ulint* arr, ulint* aux_arr, ulint low, ulint high);
  109. /*============================================================*/
  110. /************************************************************
  111. The following function returns a clock time in milliseconds. */
  112. ulint
  113. ut_clock(void);
  114. /**************************************************************
  115. Returns system time. We do not specify the format of the time returned:
  116. the only way to manipulate it is to use the function ut_difftime. */
  117. ib_time_t
  118. ut_time(void);
  119. /*=========*/
  120. /**************************************************************
  121. Returns the difference of two times in seconds. */
  122. double
  123. ut_difftime(
  124. /*========*/
  125. /* out: time2 - time1 expressed in seconds */
  126. ib_time_t time2, /* in: time */
  127. ib_time_t time1); /* in: time */
  128. /*****************************************************************
  129. Runs an idle loop on CPU. The argument gives the desired delay
  130. in microseconds on 100 MHz Pentium + Visual C++. */
  131. ulint
  132. ut_delay(
  133. /*=====*/
  134. /* out: dummy value */
  135. ulint delay); /* in: delay in microseconds on 100 MHz Pentium */
  136. /*****************************************************************
  137. Prints the contents of a memory buffer in hex and ascii. */
  138. void
  139. ut_print_buf(
  140. /*=========*/
  141. byte* buf,    /* in: memory buffer */
  142. ulint len);   /* in: length of the buffer */
  143. /*****************************************************************
  144. Prints the contents of a memory buffer in hex and ascii. */
  145. ulint
  146. ut_sprintf_buf(
  147. /*===========*/
  148. /* out: printed length in bytes */
  149. char* str, /* in: buffer to print to */
  150. byte* buf, /* in: memory buffer */
  151. ulint  len); /* in: length of the buffer */
  152. #ifndef UNIV_NONINL
  153. #include "ut0ut.ic"
  154. #endif
  155. #endif