summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2006-05-02 11:09:02 +0000
committerRüdiger Timm <rt@openoffice.org>2006-05-02 11:09:02 +0000
commitb35f6a3c1bba60d478363b584892dceff5919bd3 (patch)
tree8d779abb64ac8e4167cf5a505c766f531f02107f /sal
parent2d5120737b820fdde3a547cc92e8b4ddbec07964 (diff)
INTEGRATION: CWS mhu12 (1.7.80); FILE MERGED
2006/04/20 11:00:10 mhu 1.7.80.2: #i23172# #i57764# #125511# Cleaned up, added documentation. 2006/04/11 16:59:25 mhu 1.7.80.1: #125511# #i23172# #i57754# added rtl_arena + rtl_cache functionality.
Diffstat (limited to 'sal')
-rw-r--r--sal/inc/rtl/alloc.h163
1 files changed, 161 insertions, 2 deletions
diff --git a/sal/inc/rtl/alloc.h b/sal/inc/rtl/alloc.h
index 802cdef3b08e..e0ab84341008 100644
--- a/sal/inc/rtl/alloc.h
+++ b/sal/inc/rtl/alloc.h
@@ -4,9 +4,9 @@
*
* $RCSfile: alloc.h,v $
*
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
*
- * last change: $Author: rt $ $Date: 2005-09-08 14:35:09 $
+ * last change: $Author: rt $ $Date: 2006-05-02 12:09:02 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -109,6 +109,165 @@ void SAL_CALL rtl_freeZeroMemory (
) SAL_THROW_EXTERN_C();
+/** Opaque rtl_arena_type.
+ */
+typedef struct rtl_arena_st rtl_arena_type;
+
+#define RTL_ARENA_NAME_LENGTH 31
+
+
+/** rtl_arena_create()
+ *
+ * @param pName [in] descriptive name; for debugging purposes.
+ * @param quantum [in] resource allocation unit / granularity; rounded up to next power of 2.
+ * @param quantum_cache_max [in] max resources to cache; rounded up to next multiple of quantum; usually 0.
+ * @param source_arena [in] passed as argument to source_alloc, source_free; usually NULL.
+ * @param source_alloc [in] function to allocate resources; usually rtl_arena_alloc.
+ * @param source_free [in] function to free resources; usually rtl_arena_free.
+ * @param nFlags [in] flags; usually 0.
+ *
+ * @return pointer to rtl_arena_type, or NULL upon failure.
+ *
+ * @see rtl_arena_destroy()
+ */
+rtl_arena_type *
+SAL_CALL rtl_arena_create (
+ const char * pName,
+ sal_Size quantum,
+ sal_Size quantum_cache_max,
+ rtl_arena_type * source_arena,
+ void * (SAL_CALL * source_alloc)(rtl_arena_type *, sal_Size *),
+ void (SAL_CALL * source_free) (rtl_arena_type *, void *, sal_Size),
+ int nFlags
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_arena_destroy()
+ *
+ * @param pArena [in] the arena to destroy.
+ * @return None
+ *
+ * @see rtl_arena_create()
+ */
+void
+SAL_CALL rtl_arena_destroy (
+ rtl_arena_type * pArena
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_arena_alloc()
+ *
+ * @param pArena [in] arena from which resource is allocated.
+ * @param pBytes [inout] size of resource to allocate.
+ *
+ * @return allocated resource, or NULL upon failure.
+ *
+ * @see rtl_arena_free()
+ */
+void *
+SAL_CALL rtl_arena_alloc (
+ rtl_arena_type * pArena,
+ sal_Size * pBytes
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_arena_free()
+ *
+ * @param pArena [in] arena from which resource was allocated.
+ * @param pAddr [in] resource to free.
+ * @param nBytes [in] size of resource.
+ *
+ * @return None.
+ *
+ * @see rtl_arena_alloc()
+ */
+void
+SAL_CALL rtl_arena_free (
+ rtl_arena_type * pArena,
+ void * pAddr,
+ sal_Size nBytes
+) SAL_THROW_EXTERN_C();
+
+
+/** Opaque rtl_cache_type.
+ */
+typedef struct rtl_cache_st rtl_cache_type;
+
+#define RTL_CACHE_NAME_LENGTH 31
+
+#define RTL_CACHE_FLAG_BULKDESTROY 1
+
+/** rtl_cache_create()
+ *
+ * @param pName [in] descriptive name; for debugging purposes.
+ * @param nObjSize [in] object size.
+ * @param nObjAlign [in] object alignment; usually 0 for suitable default.
+ * @param constructor [in] object constructor callback function; returning 1 for success or 0 for failure.
+ * @param destructor [in] object destructor callback function.
+ * @param reclaim [in] reclaim callback function.
+ * @param pUserArg [in] opaque argument passed to callback functions.
+ * @param nFlags [in] flags.
+ *
+ * @return pointer to rtl_cache_type, or NULL upon failure.
+ *
+ * @see rtl_cache_destroy()
+ */
+rtl_cache_type *
+SAL_CALL rtl_cache_create (
+ const char * pName,
+ sal_Size nObjSize,
+ sal_Size nObjAlign,
+ int (SAL_CALL * constructor)(void * pObj, void * pUserArg),
+ void (SAL_CALL * destructor) (void * pObj, void * pUserArg),
+ void (SAL_CALL * reclaim) (void * pUserArg),
+ void * pUserArg,
+ rtl_arena_type * pSource,
+ int nFlags
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_cache_destroy()
+ *
+ * @param pCache [in] the cache to destroy.
+ *
+ * @return None.
+ *
+ * @see rtl_cache_create()
+ */
+void
+SAL_CALL rtl_cache_destroy (
+ rtl_cache_type * pCache
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_cache_alloc()
+ *
+ * @param pCache [in] cache from which object is allocated.
+ *
+ * @return pointer to allocated object, or NULL upon failure.
+ */
+void *
+SAL_CALL rtl_cache_alloc (
+ rtl_cache_type * pCache
+) SAL_THROW_EXTERN_C();
+
+
+/** rtl_cache_free()
+ *
+ * @param pCache [in] cache from which object was allocated.
+ * @param pObj [in] object to free.
+ *
+ * @return None.
+ *
+ * @see rtl_cache_alloc()
+ */
+void
+SAL_CALL rtl_cache_free (
+ rtl_cache_type * pCache,
+ void * pObj
+) SAL_THROW_EXTERN_C();
+
+
#ifdef __cplusplus
}
#endif