/***************************************************************************** * file include/array.h * author YuLiang * version 1.0.0 * date 22-Sep-2021 * brief This file provides all the headers of the array functions. ****************************************************************************** * Attention * *

© COPYRIGHT(c) 2021 LandPower

* * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of LandPower nor the names of its contributors may be used to * endorse or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************/ #ifndef _ARRAY_H_ #define _ARRAY_H_ /* Includes ------------------------------------------------------------------*/ /* Define --------------------------------------------------------------------*/ #define ARRAY_MIN_SIZE 8 /* Exported types ------------------------------------------------------------*/ typedef struct { uint32_t active; /* 当前可使用的索引位置. */ uint32_t alloced; /* 申请的内存大小. */ void **index; /* 数组元素. */ } array_t; /* Extern global variables ---------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/ /* 获取数组A索引I的数据. */ #define array_get(A, I) ((A)->index[(I)]) /* 获取数组A目前激活的索引. */ #define array_active(A) ((A)->active) /* Exported functions --------------------------------------------------------*/ extern array_t *array_init(uint32_t size, int32_t mem_type); extern void array_set(array_t *a, uint32_t i, void *val, int32_t mem_type); extern void array_unset(array_t *v, uint32_t i); extern uint32_t array_append(array_t *a, void *val, int32_t mem_type); extern void array_free_wrapper(array_t *a, int32_t mem_type); extern void array_free_index(array_t *a, int32_t mem_type); extern void array_free(array_t *a, int32_t mem_type); extern array_t *array_copy(array_t *a, int32_t mem_type); extern void array_merge(array_t *a, array_t *b, int32_t mem_type); extern void *array_lookup(array_t *a, uint32_t i); extern uint32_t array_count(array_t *a); #endif /************************ (C) COPYRIGHT LandPower ***** END OF FILE ****/