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

MySQL数据库

开发平台:

Visual C++

  1. /**********************************************************************
  2. Random numbers and hashing
  3. (c) 1994, 1995 Innobase Oy
  4. Created 1/20/1994 Heikki Tuuri
  5. ***********************************************************************/
  6. #ifndef ut0rnd_h
  7. #define ut0rnd_h
  8. #include "univ.i"
  9. #include "ut0byte.h"
  10. /* The 'character code' for end of field or string (used
  11. in folding records */
  12. #define UT_END_OF_FIELD         257
  13. /************************************************************
  14. This is used to set the random number seed. */
  15. UNIV_INLINE
  16. void
  17. ut_rnd_set_seed(
  18. /*============*/
  19. ulint    seed);          /* in: seed */
  20. /************************************************************
  21. The following function generates a series of 'random' ulint integers. */
  22. UNIV_INLINE
  23. ulint
  24. ut_rnd_gen_next_ulint(
  25. /*==================*/
  26. /* out: the next 'random' number */
  27. ulint rnd); /* in: the previous random number value */
  28. /*************************************************************
  29. The following function generates 'random' ulint integers which
  30. enumerate the value space (let there be N of them) of ulint integers
  31. in a pseudo random fashion. Note that the same integer is repeated
  32. always after N calls to the generator. */
  33. UNIV_INLINE
  34. ulint
  35. ut_rnd_gen_ulint(void);
  36. /*==================*/
  37. /* out: the 'random' number */
  38. /************************************************************
  39. Generates a random integer from a given interval. */
  40. UNIV_INLINE
  41. ulint
  42. ut_rnd_interval(
  43. /*============*/
  44. /* out: the 'random' number */
  45. ulint low, /* in: low limit; can generate also this value */
  46. ulint high); /* in: high limit; can generate also this value */
  47. /*************************************************************
  48. Generates a random iboolean value. */
  49. UNIV_INLINE
  50. ibool
  51. ut_rnd_gen_ibool(void);
  52. /*=================*/
  53. /* out: the random value */
  54. /***********************************************************
  55. The following function generates a hash value for a ulint integer
  56. to a hash table of size table_size, which should be a prime or some
  57. random number to work reliably. */
  58. UNIV_INLINE
  59. ulint
  60. ut_hash_ulint(
  61. /*=========*/
  62. /* out: hash value */
  63. ulint    key,           /* in: value to be hashed */
  64. ulint    table_size);   /* in: hash table size */
  65. /*****************************************************************
  66. Folds a pair of ulints. */
  67. UNIV_INLINE
  68. ulint
  69. ut_fold_ulint_pair(
  70. /*===============*/
  71. /* out: folded value */
  72. ulint n1, /* in: ulint */
  73. ulint n2); /* in: ulint */
  74. /*****************************************************************
  75. Folds a dulint. */
  76. UNIV_INLINE
  77. ulint
  78. ut_fold_dulint(
  79. /*===========*/
  80. /* out: folded value */
  81. dulint d); /* in: dulint */
  82. /*****************************************************************
  83. Folds a character string ending in the null character. */
  84. UNIV_INLINE
  85. ulint
  86. ut_fold_string(
  87. /*===========*/
  88. /* out: folded value */
  89. char* str); /* in: null-terminated string */
  90. /*****************************************************************
  91. Folds a binary string. */
  92. UNIV_INLINE
  93. ulint
  94. ut_fold_binary(
  95. /*===========*/
  96. /* out: folded value */
  97. byte* str, /* in: string of bytes */
  98. ulint len); /* in: length */
  99. /***************************************************************
  100. Looks for a prime number slightly greater than the given argument.
  101. The prime is chosen so that it is not near any power of 2. */
  102. ulint
  103. ut_find_prime(
  104. /*==========*/
  105. /* out: prime */
  106. ulint    n);     /* in: positive number > 100 */
  107. #ifndef UNIV_NONINL
  108. #include "ut0rnd.ic"
  109. #endif
  110. #endif