ut0ut.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:7k
源码类别:

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 "univ.i"
  9. #include <time.h>
  10. #ifndef MYSQL_SERVER
  11. #include <ctype.h>
  12. #endif
  13. typedef time_t ib_time_t;
  14. /************************************************************
  15. Gets the high 32 bits in a ulint. That is makes a shift >> 32,
  16. but since there seem to be compiler bugs in both gcc and Visual C++,
  17. we do this by a special conversion. */
  18. ulint
  19. ut_get_high32(
  20. /*==========*/
  21. /* out: a >> 32 */
  22. ulint a); /* in: ulint */
  23. /**********************************************************
  24. Calculates the minimum of two ulints. */
  25. UNIV_INLINE
  26. ulint
  27. ut_min(
  28. /*===*/
  29. /* out: minimum */
  30. ulint    n1,   /* in: first number */
  31. ulint    n2);   /* in: second number */
  32. /**********************************************************
  33. Calculates the maximum of two ulints. */
  34. UNIV_INLINE
  35. ulint
  36. ut_max(
  37. /*===*/
  38. /* out: maximum */
  39. ulint    n1, /* in: first number */
  40. ulint    n2); /* in: second number */
  41. /********************************************************************
  42. Calculates minimum of two ulint-pairs. */
  43. UNIV_INLINE
  44. void
  45. ut_pair_min(
  46. /*========*/
  47. ulint* a, /* out: more significant part of minimum */
  48. ulint* b, /* out: less significant part of minimum */
  49. ulint a1, /* in: more significant part of first pair */
  50. ulint b1, /* in: less significant part of first pair */
  51. ulint a2, /* in: more significant part of second pair */
  52. ulint b2); /* in: less significant part of second pair */
  53. /**********************************************************
  54. Compares two ulints. */
  55. UNIV_INLINE
  56. int
  57. ut_ulint_cmp(
  58. /*=========*/
  59. /* out: 1 if a > b, 0 if a == b, -1 if a < b */
  60. ulint a, /* in: ulint */
  61. ulint b); /* in: ulint */
  62. /***********************************************************
  63. Compares two pairs of ulints. */
  64. UNIV_INLINE
  65. int
  66. ut_pair_cmp(
  67. /*========*/
  68. /* out: -1 if a < b, 0 if a == b,
  69. 1 if a > b */ 
  70. ulint a1, /* in: more significant part of first pair */
  71. ulint a2, /* in: less significant part of first pair */
  72. ulint b1, /* in: more significant part of second pair */
  73. ulint b2); /* in: less significant part of second pair */
  74. /*****************************************************************
  75. Calculates fast the remainder when divided by a power of two. */
  76. UNIV_INLINE
  77. ulint
  78. ut_2pow_remainder(
  79. /*==============*/ /* out: remainder */
  80. ulint n, /* in: number to be divided */
  81. ulint m); /* in: divisor; power of 2 */
  82. /*****************************************************************
  83. Calculates fast value rounded to a multiple of a power of 2. */
  84. UNIV_INLINE
  85. ulint
  86. ut_2pow_round(
  87. /*==========*/ /* out: value of n rounded down to nearest
  88. multiple of m */
  89. ulint n, /* in: number to be rounded */
  90. ulint m); /* in: divisor; power of 2 */
  91. /*****************************************************************
  92. Calculates fast the 2-logarithm of a number, rounded upward to an
  93. integer. */
  94. UNIV_INLINE
  95. ulint
  96. ut_2_log(
  97. /*=====*/
  98. /* out: logarithm in the base 2, rounded upward */
  99. ulint n); /* in: number */
  100. /*****************************************************************
  101. Calculates 2 to power n. */
  102. UNIV_INLINE
  103. ulint
  104. ut_2_exp(
  105. /*=====*/
  106. /* out: 2 to power n */
  107. ulint n); /* in: number */
  108. /*****************************************************************
  109. Calculates fast the number rounded up to the nearest power of 2. */
  110. ulint
  111. ut_2_power_up(
  112. /*==========*/
  113. /* out: first power of 2 which is >= n */
  114. ulint n); /* in: number != 0 */
  115. /****************************************************************
  116. Sort function for ulint arrays. */
  117. void
  118. ut_ulint_sort(ulint* arr, ulint* aux_arr, ulint low, ulint high);
  119. /*============================================================*/
  120. /************************************************************
  121. The following function returns elapsed CPU time in milliseconds. */
  122. ulint
  123. ut_clock(void);
  124. /**************************************************************
  125. Returns system time. We do not specify the format of the time returned:
  126. the only way to manipulate it is to use the function ut_difftime. */
  127. ib_time_t
  128. ut_time(void);
  129. /*=========*/
  130. /**************************************************************
  131. Returns the difference of two times in seconds. */
  132. double
  133. ut_difftime(
  134. /*========*/
  135. /* out: time2 - time1 expressed in seconds */
  136. ib_time_t time2, /* in: time */
  137. ib_time_t time1); /* in: time */
  138. /**************************************************************
  139. Prints a timestamp to a file. */
  140. void
  141. ut_print_timestamp(
  142. /*===============*/
  143. FILE*  file); /* in: file where to print */
  144. /**************************************************************
  145. Sprintfs a timestamp to a buffer, 13..14 chars plus terminating NUL. */
  146. void
  147. ut_sprintf_timestamp(
  148. /*=================*/
  149. char* buf); /* in: buffer where to sprintf */
  150. /**************************************************************
  151. Sprintfs a timestamp to a buffer with no spaces and with ':' characters
  152. replaced by '_'. */
  153. void
  154. ut_sprintf_timestamp_without_extra_chars(
  155. /*=====================================*/
  156. char* buf); /* in: buffer where to sprintf */
  157. /**************************************************************
  158. Returns current year, month, day. */
  159. void
  160. ut_get_year_month_day(
  161. /*==================*/
  162. ulint* year, /* out: current year */
  163. ulint* month, /* out: month */
  164. ulint* day); /* out: day */
  165. /*****************************************************************
  166. Runs an idle loop on CPU. The argument gives the desired delay
  167. in microseconds on 100 MHz Pentium + Visual C++. */
  168. ulint
  169. ut_delay(
  170. /*=====*/
  171. /* out: dummy value */
  172. ulint delay); /* in: delay in microseconds on 100 MHz Pentium */
  173. /*****************************************************************
  174. Prints the contents of a memory buffer in hex and ascii. */
  175. void
  176. ut_print_buf(
  177. /*=========*/
  178. FILE* file, /* in: file where to print */
  179. const byte* buf, /* in: memory buffer */
  180. ulint len); /* in: length of the buffer */
  181. /**************************************************************************
  182. Outputs a NUL-terminated file name, quoted with apostrophes. */
  183. void
  184. ut_print_filename(
  185. /*==============*/
  186. FILE* f, /* in: output stream */
  187. const char* name); /* in: name to print */
  188. /**************************************************************************
  189. Outputs a NUL-terminated string, quoted as an SQL identifier. */
  190. struct trx_struct;
  191. void
  192. ut_print_name(
  193. /*==========*/
  194. FILE* f, /* in: output stream */
  195. struct trx_struct*trx, /* in: transaction */
  196. const char* name); /* in: name to print */
  197. /**************************************************************************
  198. Outputs a fixed-length string, quoted as an SQL identifier. */
  199. void
  200. ut_print_namel(
  201. /*==========*/
  202. FILE* f, /* in: output stream */
  203. struct trx_struct*trx, /* in: transaction (NULL=no quotes) */
  204. const char* name, /* in: name to print */
  205. ulint namelen);/* in: length of name */
  206. /**************************************************************************
  207. Catenate files. */
  208. void
  209. ut_copy_file(
  210. /*=========*/
  211. FILE* dest, /* in: output file */
  212. FILE* src); /* in: input file to be appended to output */
  213. #ifndef UNIV_NONINL
  214. #include "ut0ut.ic"
  215. #endif
  216. #endif