| 
							- /*
 -   LV2 realtime safe memory pool extension definition
 -   This work is in public domain.
 - 
 -   This file is distributed in the hope that it will be useful,
 -   but WITHOUT ANY WARRANTY; without even the implied warranty of
 -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 - 
 -   If you have questions, contact Filipe Coelho (aka falkTX) <falktx@falktx.com>
 -   or ask in #lad channel, FreeNode IRC network.
 - */
 - 
 - /**
 -  * @file lv2_rtmempool.h
 -  * C header for the LV2 rtmempool extension <http://kxstudio.sf.net/ns/lv2ext/rtmempool>.
 -  *
 -  */
 - 
 - #ifndef LV2_RTMEMPOOL_H
 - #define LV2_RTMEMPOOL_H
 - 
 - #define LV2_RTSAFE_MEMORY_POOL_URI    "http://kxstudio.sf.net/ns/lv2ext/rtmempool"
 - #define LV2_RTSAFE_MEMORY_POOL_PREFIX LV2_RTSAFE_MEMORY_POOL_URI "#"
 - 
 - #define LV2_RTSAFE_MEMORY_POOL__Pool  LV2_RTSAFE_MEMORY_POOL_URI "Pool"
 - 
 - /** max size of memory pool name, in chars, including terminating zero char */
 - #define LV2_RTSAFE_MEMORY_POOL_NAME_MAX 128
 - 
 - #ifdef __cplusplus
 - extern "C" {
 - #else
 - #include <stdbool.h>
 - #endif
 - 
 - /**
 -  * Opaque data to host data for LV2_RtMemPool_Pool.
 -  */
 - typedef void* LV2_RtMemPool_Handle;
 - 
 - /**
 -  * On instantiation, host must supply LV2_RTSAFE_MEMORY_POOL__Pool feature.
 -  * LV2_Feature::data must be pointer to LV2_RtMemPool_Pool.
 -  */
 - typedef struct _LV2_RtMemPool_Pool {
 -   /**
 -    * This function is called when plugin wants to create memory pool
 -    *
 -    * <b>may/will sleep</b>
 -    *
 -    * @param pool_name pool name, for debug purposes, max RTSAFE_MEMORY_POOL_NAME_MAX chars, including terminating zero char. May be NULL.
 -    * @param data_size memory chunk size
 -    * @param min_preallocated min chunks preallocated
 -    * @param max_preallocated max chunks preallocated
 -    *
 -    * @return Success status, true if successful
 -    */
 -   bool (*create)(LV2_RtMemPool_Handle * handle_ptr,
 -                  const char * pool_name,
 -                  size_t data_size,
 -                  size_t min_preallocated,
 -                  size_t max_preallocated);
 - 
 -   /**
 -    * This function is called when plugin wants to destroy previously created memory pool
 -    *
 -    * <b>may/will sleep</b>
 -    */
 -   void (*destroy)(LV2_RtMemPool_Handle handle);
 - 
 -   /**
 -    * This function is called when plugin wants to allocate memory in context where sleeping is not allowed
 -    *
 -    * <b>will not sleep</b>
 -    *
 -    * @return Pointer to allocated memory or NULL if memory no memory is available
 -    */
 -   void * (*allocate_atomic)(LV2_RtMemPool_Handle handle);
 - 
 -   /**
 -    * This function is called when plugin wants to allocate memory in context where sleeping is allowed
 -    *
 -    * <b>may/will sleep</b>
 -    *
 -    * @return Pointer to allocated memory or NULL if memory no memory is available (should not happen under normal conditions)
 -    */
 -   void * (*allocate_sleepy)(LV2_RtMemPool_Handle handle);
 - 
 -   /**
 -    * This function is called when plugin wants to deallocate previously allocated memory
 -    *
 -    * <b>will not sleep</b>
 -    *
 -    * @param memory_ptr pointer to previously allocated memory chunk
 -    */
 -   void (*deallocate)(LV2_RtMemPool_Handle handle,
 -                      void * memory_ptr);
 - 
 - } LV2_RtMemPool_Pool;
 - 
 - #ifdef __cplusplus
 - } /* extern "C" */
 - #endif
 - 
 - #endif /* LV2_RTMEMPOOL_H */
 
 
  |