LibreOffice
LibreOffice 5.3 SDK C/C++ API Reference
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Macros | Typedefs | Functions
alloc.h File Reference
#include <sal/config.h>
#include <sal/saldllapi.h>
#include <sal/types.h>

Go to the source code of this file.

Macros

#define RTL_ARENA_NAME_LENGTH   31
 
#define RTL_CACHE_NAME_LENGTH   31
 
#define RTL_CACHE_FLAG_BULKDESTROY   1
 

Typedefs

typedef struct
SAL_DLLPUBLIC_RTTI
rtl_arena_st 
rtl_arena_type
 Opaque rtl_arena_type. More...
 
typedef struct rtl_cache_st rtl_cache_type
 Opaque rtl_cache_type. More...
 

Functions

SAL_DLLPUBLIC void * rtl_allocateMemory (sal_Size Bytes) SAL_THROW_EXTERN_C()
 Allocate memory. More...
 
SAL_DLLPUBLIC void * rtl_reallocateMemory (void *Ptr, sal_Size Bytes) SAL_THROW_EXTERN_C()
 Reallocate memory. More...
 
SAL_DLLPUBLIC void rtl_freeMemory (void *Ptr) SAL_THROW_EXTERN_C()
 Free memory. More...
 
SAL_DLLPUBLIC void * rtl_allocateZeroMemory (sal_Size Bytes) SAL_THROW_EXTERN_C()
 Allocate and zero memory. More...
 
SAL_DLLPUBLIC void rtl_secureZeroMemory (void *Ptr, sal_Size Bytes) SAL_THROW_EXTERN_C()
 Zero memory. More...
 
SAL_DLLPUBLIC void rtl_freeZeroMemory (void *Ptr, sal_Size Bytes) SAL_THROW_EXTERN_C()
 Zero and free memory. More...
 
SAL_DLLPUBLIC void * rtl_allocateAlignedMemory (sal_Size Alignment, sal_Size Bytes) SAL_THROW_EXTERN_C()
 Allocate aligned memory. More...
 
SAL_DLLPUBLIC void rtl_freeAlignedMemory (void *Ptr) SAL_THROW_EXTERN_C()
 Free memory allocated with rtl_allocateAlignedMemory. More...
 
SAL_DLLPUBLIC rtl_arena_typertl_arena_create (const char *pName, sal_Size quantum, sal_Size quantum_cache_max, rtl_arena_type *source_arena, void *(*source_alloc)(rtl_arena_type *, sal_Size *), void(*source_free)(rtl_arena_type *, void *, sal_Size), int nFlags) SAL_THROW_EXTERN_C()
 rtl_arena_create() More...
 
SAL_DLLPUBLIC void rtl_arena_destroy (rtl_arena_type *pArena) SAL_THROW_EXTERN_C()
 rtl_arena_destroy() More...
 
SAL_DLLPUBLIC void * rtl_arena_alloc (rtl_arena_type *pArena, sal_Size *pBytes) SAL_THROW_EXTERN_C()
 rtl_arena_alloc() More...
 
SAL_DLLPUBLIC void rtl_arena_free (rtl_arena_type *pArena, void *pAddr, sal_Size nBytes) SAL_THROW_EXTERN_C()
 rtl_arena_free() More...
 
SAL_DLLPUBLIC rtl_cache_typertl_cache_create (const char *pName, sal_Size nObjSize, sal_Size nObjAlign, int(*constructor)(void *pObj, void *pUserArg), void(*destructor)(void *pObj, void *pUserArg), void(*reclaim)(void *pUserArg), void *pUserArg, rtl_arena_type *pSource, int nFlags) SAL_THROW_EXTERN_C()
 rtl_cache_create() More...
 
SAL_DLLPUBLIC void rtl_cache_destroy (rtl_cache_type *pCache) SAL_THROW_EXTERN_C()
 rtl_cache_destroy() More...
 
SAL_DLLPUBLIC void * rtl_cache_alloc (rtl_cache_type *pCache) SAL_THROW_EXTERN_C()
 rtl_cache_alloc() More...
 
SAL_DLLPUBLIC void rtl_cache_free (rtl_cache_type *pCache, void *pObj) SAL_THROW_EXTERN_C()
 rtl_cache_free() More...
 

Macro Definition Documentation

#define RTL_ARENA_NAME_LENGTH   31
#define RTL_CACHE_FLAG_BULKDESTROY   1
#define RTL_CACHE_NAME_LENGTH   31

Typedef Documentation

typedef struct SAL_DLLPUBLIC_RTTI rtl_arena_st rtl_arena_type

Opaque rtl_arena_type.

typedef struct rtl_cache_st rtl_cache_type

Opaque rtl_cache_type.

Function Documentation

SAL_DLLPUBLIC void* rtl_allocateAlignedMemory ( sal_Size  Alignment,
sal_Size  Bytes 
)

Allocate aligned memory.

A call to this function will return NULL upon the requested memory size being either zero or larger than currently allocatable.

Memory obtained through this function must be freed with rtl_freeAlignedMemory.

Parameters
Alignment[in] alignment in bytes, must be a power of two multiple of sizeof(void*).
Bytes[in] memory size.
Returns
pointer to allocated memory.
Since
LibreOffice 4.3
SAL_DLLPUBLIC void* rtl_allocateMemory ( sal_Size  Bytes)

Allocate memory.

A call to this function will return NULL upon the requested memory size being either zero or larger than currently allocatable.

Parameters
Bytes[in] memory size.
Returns
pointer to allocated memory.
SAL_DLLPUBLIC void* rtl_allocateZeroMemory ( sal_Size  Bytes)

Allocate and zero memory.

A call to this function will return NULL upon the requested memory size being either zero or larger than currently allocatable.

Parameters
Bytes[in] memory size.
Returns
pointer to allocated and zero'ed memory.
SAL_DLLPUBLIC void* rtl_arena_alloc ( rtl_arena_type pArena,
sal_Size *  pBytes 
)

rtl_arena_alloc()

Parameters
pArena[in] arena from which resource is allocated.
pBytes[inout] size of resource to allocate.
Returns
allocated resource, or NULL upon failure.
See Also
rtl_arena_free()
SAL_DLLPUBLIC rtl_arena_type* rtl_arena_create ( const char *  pName,
sal_Size  quantum,
sal_Size  quantum_cache_max,
rtl_arena_type source_arena,
void *(*)(rtl_arena_type *, sal_Size *)  source_alloc,
void(*)(rtl_arena_type *, void *, sal_Size)  source_free,
int  nFlags 
)

rtl_arena_create()

Parameters
pName[in] descriptive name; for debugging purposes.
quantum[in] resource allocation unit / granularity; rounded up to next power of 2.
quantum_cache_max[in] max resources to cache; rounded up to next multiple of quantum; usually 0.
source_arena[in] passed as argument to source_alloc, source_free; usually NULL.
source_alloc[in] function to allocate resources; usually rtl_arena_alloc.
source_free[in] function to free resources; usually rtl_arena_free.
nFlags[in] flags; usually 0.
Returns
pointer to rtl_arena_type, or NULL upon failure.
See Also
rtl_arena_destroy()
SAL_DLLPUBLIC void rtl_arena_destroy ( rtl_arena_type pArena)

rtl_arena_destroy()

Parameters
pArena[in] the arena to destroy.
Returns
None
See Also
rtl_arena_create()
SAL_DLLPUBLIC void rtl_arena_free ( rtl_arena_type pArena,
void *  pAddr,
sal_Size  nBytes 
)

rtl_arena_free()

Parameters
pArena[in] arena from which resource was allocated.
pAddr[in] resource to free.
nBytes[in] size of resource.
Returns
None.
See Also
rtl_arena_alloc()
SAL_DLLPUBLIC void* rtl_cache_alloc ( rtl_cache_type pCache)

rtl_cache_alloc()

Parameters
pCache[in] cache from which object is allocated.
Returns
pointer to allocated object, or NULL upon failure.
SAL_DLLPUBLIC rtl_cache_type* rtl_cache_create ( const char *  pName,
sal_Size  nObjSize,
sal_Size  nObjAlign,
int(*)(void *pObj, void *pUserArg)  constructor,
void(*)(void *pObj, void *pUserArg)  destructor,
void(*)(void *pUserArg)  reclaim,
void *  pUserArg,
rtl_arena_type pSource,
int  nFlags 
)

rtl_cache_create()

Parameters
pName[in] descriptive name; for debugging purposes.
nObjSize[in] object size.
nObjAlign[in] object alignment; usually 0 for suitable default.
constructor[in] object constructor callback function; returning 1 for success or 0 for failure.
destructor[in] object destructor callback function.
reclaim[in] reclaim callback function.
pUserArg[in] opaque argument passed to callback functions.
pSource[in] opaque argument passed to callback functions.
nFlags[in] flags.
Returns
pointer to rtl_cache_type, or NULL upon failure.
See Also
rtl_cache_destroy()
SAL_DLLPUBLIC void rtl_cache_destroy ( rtl_cache_type pCache)

rtl_cache_destroy()

Parameters
pCache[in] the cache to destroy.
Returns
None.
See Also
rtl_cache_create()
SAL_DLLPUBLIC void rtl_cache_free ( rtl_cache_type pCache,
void *  pObj 
)

rtl_cache_free()

Parameters
pCache[in] cache from which object was allocated.
pObj[in] object to free.
Returns
None.
See Also
rtl_cache_alloc()
SAL_DLLPUBLIC void rtl_freeAlignedMemory ( void *  Ptr)

Free memory allocated with rtl_allocateAlignedMemory.

Parameters
Ptr[in] pointer to previously allocated memory.
Returns
none. Memory is released. Ptr is invalid.
Since
LibreOffice 4.3
SAL_DLLPUBLIC void rtl_freeMemory ( void *  Ptr)

Free memory.

Parameters
Ptr[in] pointer to previously allocated memory.
Returns
none. Memory is released. Ptr is invalid.
SAL_DLLPUBLIC void rtl_freeZeroMemory ( void *  Ptr,
sal_Size  Bytes 
)

Zero and free memory.

Parameters
Ptr[in] pointer to previously allocated memory.
Bytes[in] memory size.
Returns
none. Memory is zero'ed with rtl_secureZeroMemory and released. Ptr is invalid.
SAL_DLLPUBLIC void* rtl_reallocateMemory ( void *  Ptr,
sal_Size  Bytes 
)

Reallocate memory.

A call to this function with parameter 'Ptr' being NULL is equivalent to a rtl_allocateMemory() call. A call to this function with parameter 'Bytes' being 0 is equivalent to a rtl_freeMemory() call.

See Also
rtl_allocateMemory()
rtl_freeMemory()
Parameters
Ptr[in] pointer to previously allocated memory.
Bytes[in] new memory size.
Returns
pointer to reallocated memory. May differ from Ptr.
SAL_DLLPUBLIC void rtl_secureZeroMemory ( void *  Ptr,
sal_Size  Bytes 
)

Zero memory.

Fills a block of memory with zeros in a way that is guaranteed to be secure

Parameters
Ptr[in] pointer to previously allocated memory.
Bytes[in] memory size.
Since
LibreOffice 5.0