⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ut0byte.h

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 H
字号:
/**********************************************************************Utilities for byte operations(c) 1994, 1995 Innobase OyCreated 1/20/1994 Heikki Tuuri***********************************************************************/#ifndef ut0byte_h#define ut0byte_h#include "univ.i"/* Type definition for a 64-bit unsigned integer, which works alsoin 32-bit machines. NOTE! Access the fields only with the accessorfunctions. This definition appears here only for the compiler toknow the size of a dulint. */typedef	struct dulint_struct	dulint;struct dulint_struct{	ulint	high;	/* most significant 32 bits */	ulint	low;	/* least significant 32 bits */};/* Zero value for a dulint */extern dulint	ut_dulint_zero;/* Maximum value for a dulint */extern dulint	ut_dulint_max;/***********************************************************Creates a 64-bit dulint out of two ulints. */UNIV_INLINEdulintut_dulint_create(/*=============*/			/* out: created dulint */	ulint	high,	/* in: high-order 32 bits */	ulint	low);	/* in: low-order 32 bits *//***********************************************************Gets the high-order 32 bits of a dulint. */UNIV_INLINEulintut_dulint_get_high(/*===============*/			/* out: 32 bits in ulint */	dulint	d);	/* in: dulint *//***********************************************************Gets the low-order 32 bits of a dulint. */UNIV_INLINEulintut_dulint_get_low(/*==============*/			/* out: 32 bits in ulint */	dulint	d);	/* in: dulint *//***********************************************************Converts a dulint (a struct of 2 ulints) to ib_longlong, which is a 64-bitinteger type. */UNIV_INLINEib_longlongut_conv_dulint_to_longlong(/*=======================*/			/* out: value in ib_longlong type */	dulint	d);	/* in: dulint *//***********************************************************Tests if a dulint is zero. */UNIV_INLINEiboolut_dulint_is_zero(/*==============*/			/* out: TRUE if zero */	dulint	a);	/* in: dulint *//***********************************************************Compares two dulints. */UNIV_INLINEintut_dulint_cmp(/*==========*/			/* out: -1 if a < b, 0 if a == b,			1 if a > b */ 	dulint	a,	/* in: dulint */	dulint	b);	/* in: dulint *//***********************************************************Calculates the max of two dulints. */UNIV_INLINEdulintut_dulint_get_max(/*==============*/			/* out: max(a, b) */	dulint	a,	/* in: dulint */	dulint	b);	/* in: dulint *//***********************************************************Calculates the min of two dulints. */UNIV_INLINEdulintut_dulint_get_min(/*==============*/			/* out: min(a, b) */	dulint	a,	/* in: dulint */	dulint	b);	/* in: dulint *//***********************************************************Adds a ulint to a dulint. */UNIV_INLINEdulintut_dulint_add(/*==========*/			/* out: sum a + b */	dulint	a,	/* in: dulint */	ulint	b);	/* in: ulint *//***********************************************************Subtracts a ulint from a dulint. */UNIV_INLINEdulintut_dulint_subtract(/*===============*/			/* out: a - b */	dulint	a,	/* in: dulint */	ulint	b);	/* in: ulint, b <= a *//***********************************************************Subtracts a dulint from another. NOTE that the difference must be positiveand smaller that 4G. */UNIV_INLINEulintut_dulint_minus(/*============*/			/* out: a - b */	dulint	a,	/* in: dulint; NOTE a must be >= b and at most			2 to power 32 - 1 greater */	dulint	b);	/* in: dulint *//************************************************************Rounds a dulint downward to a multiple of a power of 2. */UNIV_INLINEdulintut_dulint_align_down(/*=================*/				/* out: rounded value */	dulint   n,        	/* in: number to be rounded */	ulint    align_no);  	/* in: align by this number which must be a				power of 2 *//************************************************************Rounds a dulint upward to a multiple of a power of 2. */UNIV_INLINEdulintut_dulint_align_up(/*===============*/				/* out: rounded value */	dulint   n,        	/* in: number to be rounded */	ulint    align_no);  	/* in: align by this number which must be a				power of 2 *//***********************************************************Increments a dulint variable by 1. */#define UT_DULINT_INC(D)\{\	if ((D).low == 0xFFFFFFFFUL) {\		(D).high = (D).high + 1;\		(D).low = 0;\	} else {\		(D).low = (D).low + 1;\	}\}/***********************************************************Tests if two dulints are equal. */#define UT_DULINT_EQ(D1, D2)	(((D1).low == (D2).low)\						&& ((D1).high == (D2).high))/****************************************************************Sort function for dulint arrays. */voidut_dulint_sort(dulint* arr, dulint* aux_arr, ulint low, ulint high);/*===============================================================*//************************************************************The following function calculates the value of an integer n roundedto the least product of align_no which is >= n. align_no has to be apower of 2. */UNIV_INLINEulintut_calc_align(/*==========*/				/* out: rounded value */	ulint    n,             /* in: number to be rounded */	ulint    align_no);     /* in: align by this number *//************************************************************The following function calculates the value of an integer n roundedto the biggest product of align_no which is <= n. align_no has to be apower of 2. */UNIV_INLINEulintut_calc_align_down(/*===============*/				/* out: rounded value */	ulint    n,          	/* in: number to be rounded */	ulint    align_no);	/* in: align by this number *//*************************************************************The following function rounds up a pointer to the nearest aligned address. */UNIV_INLINEvoid*ut_align(/*=====*/				/* out: aligned pointer */	void*   ptr,            /* in: pointer */	ulint   align_no);     	/* in: align by this number *//*************************************************************The following function rounds down a pointer to the nearestaligned address. */UNIV_INLINEvoid*ut_align_down(/*==========*/				/* out: aligned pointer */	void*   ptr,            /* in: pointer */	ulint   align_no)      /* in: align by this number */		__attribute__((const));/*************************************************************The following function computes the offset of a pointer from the nearestaligned address. */UNIV_INLINEulintut_align_offset(/*==========*/					/* out: distance from aligned					pointer */	const void*	ptr,		/* in: pointer */	ulint		align_no)	/* in: align by this number */			__attribute__((const));/*********************************************************************Gets the nth bit of a ulint. */UNIV_INLINEiboolut_bit_get_nth(/*===========*/			/* out: TRUE if nth bit is 1; 0th bit is defined to			be the least significant */	ulint	a,	/* in: ulint */	ulint	n);	/* in: nth bit requested *//*********************************************************************Sets the nth bit of a ulint. */UNIV_INLINEulintut_bit_set_nth(/*===========*/			/* out: the ulint with the bit set as requested */	ulint	a,	/* in: ulint */	ulint	n,	/* in: nth bit requested */	ibool	val);	/* in: value for the bit to set */#ifndef UNIV_NONINL#include "ut0byte.ic"#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -