src/cx/basic_mempool.h

Sun, 21 May 2023 14:37:56 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 21 May 2023 14:37:56 +0200
changeset 706
8c6edaccaef1
parent 572
f0f99dd06d9f
permissions
-rw-r--r--

add empty map implementation - fixes #259

universe@571 1 /*
universe@571 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@571 3 *
universe@571 4 * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
universe@571 5 *
universe@571 6 * Redistribution and use in source and binary forms, with or without
universe@571 7 * modification, are permitted provided that the following conditions are met:
universe@571 8 *
universe@571 9 * 1. Redistributions of source code must retain the above copyright
universe@571 10 * notice, this list of conditions and the following disclaimer.
universe@571 11 *
universe@571 12 * 2. Redistributions in binary form must reproduce the above copyright
universe@571 13 * notice, this list of conditions and the following disclaimer in the
universe@571 14 * documentation and/or other materials provided with the distribution.
universe@571 15 *
universe@571 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
universe@571 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
universe@571 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
universe@571 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
universe@571 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
universe@571 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
universe@571 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
universe@571 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
universe@571 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
universe@571 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
universe@571 26 * POSSIBILITY OF SUCH DAMAGE.
universe@571 27 */
universe@571 28 /**
universe@571 29 * \file basic_mempool.h
universe@571 30 * \brief Implementation of a basic memory pool.
universe@571 31 * \author Mike Becker
universe@571 32 * \author Olaf Wintermann
universe@571 33 * \version 3.0
universe@571 34 * \copyright 2-Clause BSD License
universe@571 35 */
universe@571 36
universe@571 37 #ifndef UCX_BASIC_MEMPOOL_H
universe@571 38 #define UCX_BASIC_MEMPOOL_H
universe@571 39
universe@571 40 #include "mempool.h"
universe@571 41
universe@571 42 #ifdef __cplusplus
universe@571 43 extern "C" {
universe@571 44 #endif
universe@571 45
universe@571 46 /**
universe@571 47 * Basic array-based memory pool.
universe@571 48 */
universe@571 49 struct cx_basic_mempool_s {
universe@571 50 /** Inherit base structure members. */
universe@571 51 CxMempool base;
universe@571 52
universe@571 53 /** List of pointers to pooled memory. */
universe@571 54 void **data;
universe@571 55
universe@571 56 /** Number of pooled memory items. */
universe@571 57 size_t ndata;
universe@571 58
universe@571 59 /** Memory pool size. */
universe@571 60 size_t size;
universe@571 61 };
universe@571 62
universe@571 63 /**
universe@571 64 * Creates a basic array-based memory pool.
universe@571 65 *
universe@571 66 * @param capacity the initial capacity of the pool
universe@571 67 * @return the created memory pool or \c NULL if allocation failed
universe@571 68 */
universe@571 69 __attribute__((__warn_unused_result__))
universe@572 70 CxMempool *cxBasicMempoolCreate(size_t capacity);
universe@571 71
universe@571 72 #ifdef __cplusplus
universe@571 73 } // extern "C"
universe@571 74 #endif
universe@571 75
universe@571 76 #endif // UCX_BASIC_MEMPOOL_H

mercurial