メモ〜

これもメモって置こう。

typedef	struct dulint_struct	dulint;
struct dulint_struct{
	ulint	high;	/* most significant 32 bits */
	ulint	low;	/* least significant 32 bits */
};

こんな感じのユーティリティ関数があったり。

ulint
ut_dulint_get_high(
/*===============*/
			/* out: 32 bits in ulint */
	dulint	d)	/* in: dulint */
{
	return(d.high);
}

でもって、こういうのとか

void 
mach_write_to_8(
/*============*/
	byte*   b,      /* in: pointer to 8 bytes where to store */
	dulint	n)      /* in: dulint integer to be stored */ 
{
	ut_ad(b);

	mach_write_to_4(b, ut_dulint_get_high(n));
	mach_write_to_4(b + 4, ut_dulint_get_low(n));
}

こういうのを使って書き込み。

void 
mach_write_to_2(
/*============*/
	byte*   b,      /* in: pointer to two bytes where to store */
	ulint	n)      /* in: ulint integer to be stored */ 
{
	b[0] = (byte)(n >> 8);
	b[1] = (byte)(n);
}

mach_write_to_1〜8まで。これと対になるmach_read_from_1〜8もあり。

おまけ。

#define byte			unsigned char
typedef unsigned long int	ulint;