MPLABĀ® Harmony Graphics Suite
legato_array.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) 2020 Microchip Technology Inc. and its subsidiaries.
3 *
4 * Subject to your compliance with these terms, you may use Microchip software
5 * and any derivatives exclusively with Microchip products. It is your
6 * responsibility to comply with third party license terms applicable to your
7 * use of third party software (including open source software) that may
8 * accompany Microchip software.
9 *
10 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
11 * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
12 * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
13 * PARTICULAR PURPOSE.
14 *
15 * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
16 * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
17 * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
18 * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
19 * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
20 * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
21 * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
22 *******************************************************************************/
23 
24 /*******************************************************************************
25  Module for Microchip Graphics Library - Legato User Interface Library
26 
27  Company:
28  Microchip Technology Inc.
29 
30  File Name:
31  legato_array.h
32 
33  Summary:
34  An array implementation for storing pointers for the
35  Legato user interface library
36 
37  Description:
38  This is an array implementation that is used internally by the
39  Legato user interface library.
40 *******************************************************************************/
41 
42 
50 #ifndef LEGATO_ARRAY_H
51 #define LEGATO_ARRAY_H
52 
54 
55 // *****************************************************************************
60 typedef struct leArray
61 {
62  void** values;
63  uint32_t size;
64  uint32_t capacity;
66 
67 // *****************************************************************************
79 
80 
81 // *****************************************************************************
99 leResult leArray_Resize(leArray* arr, uint32_t sz);
100 
101 // *****************************************************************************
116 leResult leArray_PushFront(leArray* arr, void* val);
117 
118 // *****************************************************************************
132 
133 // *****************************************************************************
147 leResult leArray_PushBack(leArray* arr, void* val);
148 
149 // *****************************************************************************
162 
163 // *****************************************************************************
182  uint32_t idx,
183  void* val);
184 
185 // *****************************************************************************
200 leResult leArray_RemoveAt(leArray* arr, uint32_t idx);
201 
202 // *****************************************************************************
217 leResult leArray_Remove(leArray* arr, void* val);
218 
219 // *****************************************************************************
234 void* leArray_Get(const leArray* arr, uint32_t idx);
235 
236 // *****************************************************************************
253 leResult leArray_Set(leArray* arr, uint32_t idx, void* val);
254 
255 // *****************************************************************************
269 int32_t leArray_Find(const leArray* arr, void* val);
270 
271 // *****************************************************************************
285 leResult leArray_Copy(leArray* src, leArray* dest);
286 
287 // *****************************************************************************
300 
301 #endif /* LEGATO_ARRAY_H */
legato_error.h
Error functions, macros and definitions.
leResult
leResult
This enum represents function call results.
Definition: legato_common.h:134
leArray::capacity
uint32_t capacity
Definition: legato_array.h:64
leArray_RemoveAt
leResult leArray_RemoveAt(leArray *arr, uint32_t idx)
Remove value at index.
Definition: legato_array.c:197
leArray::size
uint32_t size
Definition: legato_array.h:63
leArray
struct leArray leArray
This struct represents a array.
legato_memory.h
Memory functions and definitions.
leArray_Find
int32_t leArray_Find(const leArray *arr, void *val)
Find a first index of value.
Definition: legato_array.c:242
leArray_PushBack
leResult leArray_PushBack(leArray *arr, void *val)
Push value on back.
Definition: legato_array.c:147
leArray_PushFront
leResult leArray_PushFront(leArray *arr, void *val)
Push value on front.
Definition: legato_array.c:119
leArray_Set
leResult leArray_Set(leArray *arr, uint32_t idx, void *val)
Set value at index.
Definition: legato_array.c:232
leArray_Resize
leResult leArray_Resize(leArray *arr, uint32_t sz)
Resize array.
Definition: legato_array.c:85
leArray
This struct represents a array.
Definition: legato_array.h:61
legato_array.h
An array implementation for storing pointers.
leArray::values
void ** values
Definition: legato_array.h:62
leArray_Create
leResult leArray_Create(leArray *arr)
Create a new array.
Definition: legato_array.c:73
leArray_InsertAt
leResult leArray_InsertAt(leArray *arr, uint32_t idx, void *val)
Insert value at index.
Definition: legato_array.c:174
leArray_PopBack
leResult leArray_PopBack(leArray *arr)
Pop value from back.
Definition: legato_array.c:164
leArray_PopFront
leResult leArray_PopFront(leArray *arr)
Pop value from front.
Definition: legato_array.c:137
leArray_Clear
leResult leArray_Clear(leArray *arr)
Clear array.
Definition: legato_array.c:279
leArray_Get
void * leArray_Get(const leArray *arr, uint32_t idx)
Get entry at index.
Definition: legato_array.c:224
leArray_Copy
leResult leArray_Copy(leArray *src, leArray *dest)
Copy array.
Definition: legato_array.c:258
legato_common.h
Common macros and definitions used by Legato.
leArray_Remove
leResult leArray_Remove(leArray *arr, void *val)
Remove value.
Definition: legato_array.c:207