InnoDB Plugin  1.0
Functions
mach0data.h File Reference
#include "univ.i"
#include "ut0byte.h"
#include "mach0data.ic"
Include dependency graph for mach0data.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

UNIV_INLINE void mach_write_to_1 (byte *b, ulint n)
UNIV_INLINE ulint mach_read_from_1 (const byte *b))
UNIV_INLINE void mach_write_to_2 (byte *b, ulint n)
UNIV_INLINE ulint mach_read_from_2 (const byte *b))
UNIV_INLINE uint16 mach_encode_2 (ulint n))
UNIV_INLINE ulint mach_decode_2 (uint16 n))
UNIV_INLINE void mach_write_to_3 (byte *b, ulint n)
UNIV_INLINE ulint mach_read_from_3 (const byte *b))
UNIV_INLINE void mach_write_to_4 (byte *b, ulint n)
UNIV_INLINE ulint mach_read_from_4 (const byte *b))
UNIV_INLINE ulint mach_write_compressed (byte *b, ulint n)
UNIV_INLINE ulint mach_get_compressed_size (ulint n))
UNIV_INLINE ulint mach_read_compressed (const byte *b))
UNIV_INLINE void mach_write_to_6 (byte *b, ib_uint64_t id)
UNIV_INLINE ib_uint64_t mach_read_from_6 (const byte *b))
UNIV_INLINE void mach_write_to_7 (byte *b, ib_uint64_t n)
UNIV_INLINE ib_uint64_t mach_read_from_7 (const byte *b))
UNIV_INLINE void mach_write_to_8 (void *b, ib_uint64_t n)
UNIV_INLINE ib_uint64_t mach_read_from_8 (const byte *b))
UNIV_INLINE ulint mach_ull_write_compressed (byte *b, ib_uint64_t n)
UNIV_INLINE ulint mach_ull_get_compressed_size (ib_uint64_t n)
UNIV_INLINE ib_uint64_t mach_ull_read_compressed (const byte *b))
UNIV_INLINE ulint mach_ull_write_much_compressed (byte *b, ib_uint64_t n)
UNIV_INLINE ulint mach_ull_get_much_compressed_size (ib_uint64_t n))
UNIV_INLINE ib_uint64_t mach_ull_read_much_compressed (const byte *b))
UNIV_INTERN byte * mach_parse_compressed (byte *ptr, byte *end_ptr, ulint *val)
UNIV_INLINE byte * mach_ull_parse_compressed (byte *ptr, byte *end_ptr, ib_uint64_t *val)
UNIV_INLINE double mach_double_read (const byte *b))
UNIV_INLINE void mach_double_write (byte *b, double d)
UNIV_INLINE float mach_float_read (const byte *b))
UNIV_INLINE void mach_float_write (byte *b, float d)
UNIV_INLINE ulint mach_read_from_n_little_endian (const byte *buf, ulint buf_size))
UNIV_INLINE void mach_write_to_n_little_endian (byte *dest, ulint dest_size, ulint n)
UNIV_INLINE ulint mach_read_from_2_little_endian (const byte *buf))
UNIV_INLINE void mach_write_to_2_little_endian (byte *dest, ulint n)
UNIV_INLINE ib_uint64_t mach_read_int_type (const byte *src, ulint len, ibool unsigned_type)
UNIV_INLINE void mach_write_int_type (byte *dest, const byte *src, ulint len, bool usign)
UNIV_INLINE void mach_write_ulonglong (byte *dest, ulonglong src, ulint len, bool usign)
UNIV_INLINE ulint mach_read_ulint (const byte *ptr, ulint type)

Detailed Description

Utilities for converting data from the database file to the machine format.

Created 11/28/1995 Heikki Tuuri

Function Documentation

UNIV_INLINE ulint mach_decode_2 ( uint16  n)

The following function is used to convert a 16-bit data item from the canonical format, for fast bytewise equality test against memory.

Returns
integer in machine-dependent format
Parameters
nin: 16-bit integer in canonical format
UNIV_INLINE double mach_double_read ( const byte *  b)

Reads a double. It is stored in a little-endian format.

Returns
double read
Parameters
bin: pointer to memory from where to read
UNIV_INLINE void mach_double_write ( byte *  b,
double  d 
)

Writes a double. It is stored in a little-endian format. in: double

Writes a double. It is stored in a little-endian format.

Parameters
bin: pointer to memory where to write
din: double
UNIV_INLINE uint16 mach_encode_2 ( ulint  n)

The following function is used to convert a 16-bit data item to the canonical format, for fast bytewise equality test against memory.

Returns
16-bit integer in canonical format
Parameters
nin: integer in machine-dependent format
UNIV_INLINE float mach_float_read ( const byte *  b)

Reads a float. It is stored in a little-endian format.

Returns
float read
Parameters
bin: pointer to memory from where to read
UNIV_INLINE void mach_float_write ( byte *  b,
float  d 
)

Writes a float. It is stored in a little-endian format. in: float

Writes a float. It is stored in a little-endian format.

Parameters
bin: pointer to memory where to write
din: float
UNIV_INLINE ulint mach_get_compressed_size ( ulint  n)

Returns the size of an ulint when written in the compressed form.

Returns
compressed size in bytes

Returns the size of a ulint when written in the compressed form.

Returns
compressed size in bytes
Parameters
nin: ulint integer (< 2^32) to be stored
UNIV_INTERN byte* mach_parse_compressed ( byte *  ptr,
byte *  end_ptr,
ulint *  val 
)

Reads a ulint in a compressed form if the log record fully contains it.

Returns
pointer to end of the stored field, NULL if not complete out: read value
Parameters
ptrin: pointer to buffer from where to read
end_ptrin: pointer to end of the buffer
UNIV_INLINE ulint mach_read_compressed ( const byte *  b)

Reads a ulint in a compressed form.

Returns
read integer

Reads a ulint in a compressed form.

Returns
read integer (< 2^32)
Parameters
bin: pointer to memory from where to read
UNIV_INLINE ulint mach_read_from_1 ( const byte *  b)

The following function is used to fetch data from one byte.

Returns
ulint integer, >= 0, < 256
Parameters
bin: pointer to byte
UNIV_INLINE ulint mach_read_from_2 ( const byte *  b)

The following function is used to fetch data from two consecutive bytes. The most significant byte is at the lowest address.

Returns
ulint integer, >= 0, < 64k

The following function is used to fetch data from 2 consecutive bytes. The most significant byte is at the lowest address.

Returns
ulint integer
Parameters
bin: pointer to 2 bytes
UNIV_INLINE ulint mach_read_from_2_little_endian ( const byte *  buf)

Reads a ulint stored in the little-endian format.

Returns
unsigned long int
Parameters
bufin: from where to read
UNIV_INLINE ulint mach_read_from_3 ( const byte *  b)

The following function is used to fetch data from 3 consecutive bytes. The most significant byte is at the lowest address.

Returns
ulint integer
Parameters
bin: pointer to 3 bytes
UNIV_INLINE ulint mach_read_from_4 ( const byte *  b)

The following function is used to fetch data from 4 consecutive bytes. The most significant byte is at the lowest address.

Returns
ulint integer
Parameters
bin: pointer to four bytes
UNIV_INLINE ib_uint64_t mach_read_from_6 ( const byte *  b)

The following function is used to fetch data from 6 consecutive bytes. The most significant byte is at the lowest address.

Returns
48-bit integer
Parameters
bin: pointer to 6 bytes
UNIV_INLINE ib_uint64_t mach_read_from_7 ( const byte *  b)

The following function is used to fetch data from 7 consecutive bytes. The most significant byte is at the lowest address.

Returns
56-bit integer
Parameters
bin: pointer to 7 bytes
UNIV_INLINE ib_uint64_t mach_read_from_8 ( const byte *  b)

The following function is used to fetch data from 8 consecutive bytes. The most significant byte is at the lowest address.

Returns
64-bit integer
Parameters
bin: pointer to 8 bytes
UNIV_INLINE ulint mach_read_from_n_little_endian ( const byte *  buf,
ulint  buf_size 
)

Reads a ulint stored in the little-endian format.

Returns
unsigned long int
Parameters
bufin: from where to read
buf_sizein: from how many bytes to read
UNIV_INLINE ib_uint64_t mach_read_int_type ( const byte *  src,
ulint  len,
ibool  unsigned_type 
)

Convert integral type from storage byte order (big endian) to host byte order.

Returns
integer value in: signed or unsigned flag

Convert integral type from storage byte order (big endian) to host byte order.

Returns
integer value
Parameters
srcin: where to read from
lenin: length of src
unsigned_typein: signed or unsigned flag
UNIV_INLINE ulint mach_read_ulint ( const byte *  ptr,
ulint  type 
)

Reads 1 - 4 bytes from a file page buffered in the buffer pool.

Returns
value read in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES

Reads 1 - 4 bytes from a file page buffered in the buffer pool.

Returns
value read
Parameters
ptrin: pointer from where to read
typein: 1,2 or 4 bytes
UNIV_INLINE ulint mach_ull_get_compressed_size ( ib_uint64_t  n)

Returns the size of a 64-bit integer when written in the compressed form.

Returns
compressed size in bytes in: 64-bit integer to be stored

Returns the size of a 64-bit integer when written in the compressed form.

Returns
compressed size in bytes
Parameters
nin: 64-bit integer to be stored
UNIV_INLINE ulint mach_ull_get_much_compressed_size ( ib_uint64_t  n)

Returns the size of a 64-bit integer when written in the compressed form.

Returns
compressed size in bytes
Parameters
nin: 64-bit integer to be stored
UNIV_INLINE byte* mach_ull_parse_compressed ( byte *  ptr,
byte *  end_ptr,
ib_uint64_t *  val 
)

Reads a 64-bit integer in a compressed form if the log record fully contains it.

Returns
pointer to end of the stored field, NULL if not complete out: read value

Reads a 64-bit integer in a compressed form if the log record fully contains it.

Returns
pointer to end of the stored field, NULL if not complete
Parameters
ptrin: pointer to buffer from where to read
end_ptrin: pointer to end of the buffer
UNIV_INLINE ib_uint64_t mach_ull_read_compressed ( const byte *  b)

Reads a 64-bit integer in a compressed form.

Returns
the value read
Parameters
bin: pointer to memory from where to read
UNIV_INLINE ib_uint64_t mach_ull_read_much_compressed ( const byte *  b)

Reads a 64-bit integer in a compressed form.

Returns
the value read
Parameters
bin: pointer to memory from where to read
UNIV_INLINE ulint mach_ull_write_compressed ( byte *  b,
ib_uint64_t  n 
)

Writes a 64-bit integer in a compressed form (5..9 bytes).

Returns
size in bytes in: 64-bit integer to be stored

Writes a 64-bit integer in a compressed form (5..9 bytes).

Returns
size in bytes
Parameters
bin: pointer to memory where to store
nin: 64-bit integer to be stored
UNIV_INLINE ulint mach_ull_write_much_compressed ( byte *  b,
ib_uint64_t  n 
)

Writes a 64-bit integer in a compressed form (1..11 bytes).

Returns
size in bytes in: 64-bit integer to be stored

Writes a 64-bit integer in a compressed form (1..11 bytes).

Returns
size in bytes
Parameters
bin: pointer to memory where to store
nin: 64-bit integer to be stored
UNIV_INLINE ulint mach_write_compressed ( byte *  b,
ulint  n 
)

Writes a ulint in a compressed form (1..5 bytes).

Returns
stored size in bytes in: ulint integer to be stored

Writes a ulint in a compressed form where the first byte codes the length of the stored ulint. We look at the most significant bits of the byte. If the most significant bit is zero, it means 1-byte storage, else if the 2nd bit is 0, it means 2-byte storage, else if 3rd is 0, it means 3-byte storage, else if 4th is 0, it means 4-byte storage, else the storage is 5-byte.

Returns
compressed size in bytes
Parameters
bin: pointer to memory where to store
nin: ulint integer (< 2^32) to be stored
UNIV_INLINE void mach_write_int_type ( byte *  dest,
const byte *  src,
ulint  len,
bool  usign 
)

Convert integral type from host byte order to (big-endian) storage byte order. in: signed or unsigned flag

Parameters
destin: where to write
srcin: where to read from
lenin: length of src
usignin: signed or unsigned flag
UNIV_INLINE void mach_write_to_1 ( byte *  b,
ulint  n 
)

The following function is used to store data in one byte. in: ulint integer to be stored, >= 0, < 256

The following function is used to store data in one byte.

Parameters
bin: pointer to byte where to store
nin: ulint integer to be stored, >= 0, < 256
UNIV_INLINE void mach_write_to_2 ( byte *  b,
ulint  n 
)

The following function is used to store data in two consecutive bytes. We store the most significant byte to the lower address. in: ulint integer to be stored, >= 0, < 64k

The following function is used to store data in two consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to two bytes where to store
nin: ulint integer to be stored
UNIV_INLINE void mach_write_to_2_little_endian ( byte *  dest,
ulint  n 
)

Writes a ulint in the little-endian format. in: unsigned long int to write

Writes a ulint in the little-endian format.

Parameters
destin: where to write
nin: unsigned long int to write
UNIV_INLINE void mach_write_to_3 ( byte *  b,
ulint  n 
)

The following function is used to store data in 3 consecutive bytes. We store the most significant byte to the lowest address. in: ulint integer to be stored

The following function is used to store data in 3 consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to 3 bytes where to store
nin: ulint integer to be stored
UNIV_INLINE void mach_write_to_4 ( byte *  b,
ulint  n 
)

The following function is used to store data in four consecutive bytes. We store the most significant byte to the lowest address. in: ulint integer to be stored

The following function is used to store data in four consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to four bytes where to store
nin: ulint integer to be stored
UNIV_INLINE void mach_write_to_6 ( byte *  b,
ib_uint64_t  n 
)

The following function is used to store data in 6 consecutive bytes. We store the most significant byte to the lowest address. in: 48-bit integer

The following function is used to store data in 6 consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to 6 bytes where to store
nin: 48-bit integer
UNIV_INLINE void mach_write_to_7 ( byte *  b,
ib_uint64_t  n 
)

The following function is used to store data in 7 consecutive bytes. We store the most significant byte to the lowest address. in: 56-bit integer

The following function is used to store data in 7 consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to 7 bytes where to store
nin: 56-bit integer
UNIV_INLINE void mach_write_to_8 ( void *  b,
ib_uint64_t  n 
)

The following function is used to store data in 8 consecutive bytes. We store the most significant byte to the lowest address. in: 64-bit integer to be stored

The following function is used to store data in 8 consecutive bytes. We store the most significant byte to the lowest address.

Parameters
bin: pointer to 8 bytes where to store
nin: 64-bit integer to be stored
UNIV_INLINE void mach_write_to_n_little_endian ( byte *  dest,
ulint  dest_size,
ulint  n 
)

Writes a ulint in the little-endian format. in: unsigned long int to write

Writes a ulint in the little-endian format.

Parameters
destin: where to write
dest_sizein: into how many bytes to write
nin: unsigned long int to write
UNIV_INLINE void mach_write_ulonglong ( byte *  dest,
ulonglong  src,
ulint  len,
bool  usign 
)

in: signed or unsigned flag

Parameters
destin: where to write
srcin: where to read from
lenin: length of dest
usignin: signed or unsigned flag