universe@571: /* universe@571: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. universe@571: * universe@571: * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. universe@571: * universe@571: * Redistribution and use in source and binary forms, with or without universe@571: * modification, are permitted provided that the following conditions are met: universe@571: * universe@571: * 1. Redistributions of source code must retain the above copyright universe@571: * notice, this list of conditions and the following disclaimer. universe@571: * universe@571: * 2. Redistributions in binary form must reproduce the above copyright universe@571: * notice, this list of conditions and the following disclaimer in the universe@571: * documentation and/or other materials provided with the distribution. universe@571: * universe@571: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@571: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@571: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE universe@571: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE universe@571: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR universe@571: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF universe@571: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS universe@571: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN universe@571: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) universe@571: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE universe@571: * POSSIBILITY OF SUCH DAMAGE. universe@571: */ universe@571: /** universe@571: * \file basic_mempool.h universe@571: * \brief Implementation of a basic memory pool. universe@571: * \author Mike Becker universe@571: * \author Olaf Wintermann universe@571: * \version 3.0 universe@571: * \copyright 2-Clause BSD License universe@571: */ universe@571: universe@571: #ifndef UCX_BASIC_MEMPOOL_H universe@571: #define UCX_BASIC_MEMPOOL_H universe@571: universe@571: #include "mempool.h" universe@571: universe@571: #ifdef __cplusplus universe@571: extern "C" { universe@571: #endif universe@571: universe@571: /** universe@571: * Basic array-based memory pool. universe@571: */ universe@571: struct cx_basic_mempool_s { universe@571: /** Inherit base structure members. */ universe@571: CxMempool base; universe@571: universe@571: /** List of pointers to pooled memory. */ universe@571: void **data; universe@571: universe@571: /** Number of pooled memory items. */ universe@571: size_t ndata; universe@571: universe@571: /** Memory pool size. */ universe@571: size_t size; universe@571: }; universe@571: universe@571: /** universe@571: * Creates a basic array-based memory pool. universe@571: * universe@571: * @param capacity the initial capacity of the pool universe@571: * @return the created memory pool or \c NULL if allocation failed universe@571: */ universe@571: __attribute__((__warn_unused_result__)) universe@572: CxMempool *cxBasicMempoolCreate(size_t capacity); universe@571: universe@571: #ifdef __cplusplus universe@571: } // extern "C" universe@571: #endif universe@571: universe@571: #endif // UCX_BASIC_MEMPOOL_H