📄 ut0ut.ic
字号:
/******************************************************************Various utilities(c) 1994, 1995 Innobase OyCreated 5/30/1994 Heikki Tuuri*******************************************************************//**********************************************************Calculates the minimum of two ulints. */UNIV_INLINEulintut_min(/*===*/ /* out: minimum */ ulint n1, /* in: first number */ ulint n2) /* in: second number */{ return((n1 <= n2) ? n1 : n2);}/**********************************************************Calculates the maximum of two ulints. */UNIV_INLINEulintut_max(/*===*/ /* out: maximum */ ulint n1, /* in: first number */ ulint n2) /* in: second number */{ return((n1 <= n2) ? n2 : n1);}/********************************************************************Calculates minimum of two ulint-pairs. */UNIV_INLINEvoidut_pair_min(/*========*/ ulint* a, /* out: more significant part of minimum */ ulint* b, /* out: less significant part of minimum */ ulint a1, /* in: more significant part of first pair */ ulint b1, /* in: less significant part of first pair */ ulint a2, /* in: more significant part of second pair */ ulint b2) /* in: less significant part of second pair */{ if (a1 == a2) { *a = a1; *b = ut_min(b1, b2); } else if (a1 < a2) { *a = a1; *b = b1; } else { *a = a2; *b = b2; }}/**********************************************************Compares two ulints. */UNIV_INLINEintut_ulint_cmp(/*=========*/ /* out: 1 if a > b, 0 if a == b, -1 if a < b */ ulint a, /* in: ulint */ ulint b) /* in: ulint */{ if (a < b) { return(-1); } else if (a == b) { return(0); } else { return(1); }}/***********************************************************Compares two pairs of ulints. */UNIV_INLINEintut_pair_cmp(/*========*/ /* out: -1 if a < b, 0 if a == b, 1 if a > b */ ulint a1, /* in: more significant part of first pair */ ulint a2, /* in: less significant part of first pair */ ulint b1, /* in: more significant part of second pair */ ulint b2) /* in: less significant part of second pair */{ if (a1 > b1) { return(1); } else if (a1 < b1) { return(-1); } else if (a2 > b2) { return(1); } else if (a2 < b2) { return(-1); } else { return(0); }}/*****************************************************************Calculates fast the remainder when divided by a power of two. */UNIV_INLINEulintut_2pow_remainder(/*==============*/ /* out: remainder */ ulint n, /* in: number to be divided */ ulint m) /* in: divisor; power of 2 */{ ut_ad(0x80000000UL % m == 0); return(n & (m - 1));}/*****************************************************************Calculates fast a value rounded to a multiple of a power of 2. */UNIV_INLINEulintut_2pow_round(/*==========*/ /* out: value of n rounded down to nearest multiple of m */ ulint n, /* in: number to be rounded */ ulint m) /* in: divisor; power of 2 */{ ut_ad(0x80000000UL % m == 0); return(n & ~(m - 1));}/*****************************************************************Calculates fast the 2-logarithm of a number, rounded upward to aninteger. */UNIV_INLINEulintut_2_log(/*=====*/ /* out: logarithm in the base 2, rounded upward */ ulint n) /* in: number != 0 */{ ulint res; res = 0; ut_ad(n > 0); n = n - 1; for (;;) { n = n / 2; if (n == 0) { break; } res++; } return(res + 1);}/*****************************************************************Calculates 2 to power n. */UNIV_INLINEulintut_2_exp(/*=====*/ /* out: 2 to power n */ ulint n) /* in: number */{ return(1 << n);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -