InnoDB Plugin  1.0
Data Structures | Macros | Typedefs | Functions
dyn0dyn.h File Reference
#include "univ.i"
#include "ut0lst.h"
#include "mem0mem.h"
#include "dyn0dyn.ic"
Include dependency graph for dyn0dyn.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dyn_block_t
 A block in a dynamically allocated array. NOTE! Do not access the fields of the struct directly: the definition appears here only for the compiler to know its size! More...

Macros

#define DYN_ARRAY_DATA_SIZE   512
#define dyn_array_get_first_block(arr)   (arr)
#define dyn_array_get_last_block(arr)   ((arr)->heap ? UT_LIST_GET_LAST((arr)->base) : (arr))
#define dyn_array_get_next_block(arr, block)   ((arr)->heap ? UT_LIST_GET_NEXT(list, block) : NULL)
#define dyn_array_get_prev_block(arr, block)   ((arr)->heap ? UT_LIST_GET_PREV(list, block) : NULL)

Typedefs

typedef dyn_block_t dyn_array_t

Functions

UNIV_INLINE dyn_array_tdyn_array_create (dyn_array_t *arr))
UNIV_INLINE void dyn_array_free (dyn_array_t *arr))
UNIV_INLINE byte * dyn_array_open (dyn_array_t *arr, ulint size))
UNIV_INLINE void dyn_array_close (dyn_array_t *arr, const byte *ptr))
UNIV_INLINE void * dyn_array_push (dyn_array_t *arr, ulint size))
UNIV_INLINE void * dyn_array_get_element (const dyn_array_t *arr, ulint pos))
UNIV_INLINE ulint dyn_array_get_data_size (const dyn_array_t *arr))
UNIV_INLINE ulint dyn_block_get_used (const dyn_block_t *block))
UNIV_INLINE byte * dyn_block_get_data (const dyn_block_t *block))
UNIV_INLINE void dyn_push_string (dyn_array_t *arr, const byte *str, ulint len))

Detailed Description

The dynamically allocated array

Created 2/5/1996 Heikki Tuuri

Macro Definition Documentation

#define DYN_ARRAY_DATA_SIZE   512
This is the initial 'payload' size of a dynamic array;

this must be > MLOG_BUF_MARGIN + 30!

#define dyn_array_get_first_block (   arr)    (arr)

Gets the first block in a dyn array.

Parameters
arrdyn array
Returns
first block
#define dyn_array_get_last_block (   arr)    ((arr)->heap ? UT_LIST_GET_LAST((arr)->base) : (arr))

Gets the last block in a dyn array.

Parameters
arrdyn array
Returns
last block
#define dyn_array_get_next_block (   arr,
  block 
)    ((arr)->heap ? UT_LIST_GET_NEXT(list, block) : NULL)

Gets the next block in a dyn array.

Parameters
arrdyn array
blockdyn array block
Returns
pointer to next, NULL if end of list
#define dyn_array_get_prev_block (   arr,
  block 
)    ((arr)->heap ? UT_LIST_GET_PREV(list, block) : NULL)

Gets the previous block in a dyn array.

Parameters
arrdyn array
blockdyn array block
Returns
pointer to previous, NULL if end of list

Typedef Documentation

Dynamically allocated array

Function Documentation

UNIV_INLINE void dyn_array_close ( dyn_array_t arr,
const byte *  ptr 
)

Closes the buffer returned by dyn_array_open.

Parameters
arrin/out: dynamic array
ptrin: end of used space
UNIV_INLINE dyn_array_t* dyn_array_create ( dyn_array_t arr)

Initializes a dynamic array.

Returns
initialized dyn array
Parameters
arrin/out: memory buffer of size sizeof(dyn_array_t)
UNIV_INLINE void dyn_array_free ( dyn_array_t arr)

Frees a dynamic array.

Parameters
arrin: dyn array
UNIV_INLINE ulint dyn_array_get_data_size ( const dyn_array_t arr)

Returns the size of stored data in a dyn array.

Returns
data size in bytes
Parameters
arrin: dyn array
UNIV_INLINE void* dyn_array_get_element ( const dyn_array_t arr,
ulint  pos 
)

Returns pointer to an element in dyn array.

Returns
pointer to element
Parameters
arrin: dyn array
posin: position of element in bytes from array start
UNIV_INLINE byte* dyn_array_open ( dyn_array_t arr,
ulint  size 
)

Makes room on top of a dyn array and returns a pointer to a buffer in it. After copying the elements, the caller must close the buffer using dyn_array_close.

Returns
pointer to the buffer
Parameters
arrin: dynamic array
sizein: size in bytes of the buffer; MUST be smaller than DYN_ARRAY_DATA_SIZE!
UNIV_INLINE void* dyn_array_push ( dyn_array_t arr,
ulint  size 
)

Makes room on top of a dyn array and returns a pointer to the added element. The caller must copy the element to the pointer returned.

Returns
pointer to the element
Parameters
arrin/out: dynamic array
sizein: size in bytes of the element
UNIV_INLINE byte* dyn_block_get_data ( const dyn_block_t block)

Gets pointer to the start of data in a dyn array block.

Returns
pointer to data
Parameters
blockin: dyn array block
UNIV_INLINE ulint dyn_block_get_used ( const dyn_block_t block)

Gets the number of used bytes in a dyn array block.

Returns
number of bytes used
Parameters
blockin: dyn array block
UNIV_INLINE void dyn_push_string ( dyn_array_t arr,
const byte *  str,
ulint  len 
)

Pushes n bytes to a dyn array.

Parameters
arrin/out: dyn array
strin: string to write
lenin: string length