libtcod
Loading...
Searching...
No Matches
list.h
Go to the documentation of this file.
1/* BSD 3-Clause License
2 *
3 * Copyright © 2008-2025, Jice and the libtcod contributors.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
15 *
16 * 3. Neither the name of the copyright holder nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
34#pragma once
35#ifndef TCOD_LIST_H_
36#define TCOD_LIST_H_
37
38#include "portability.h"
39
40#ifdef __cplusplus
41extern "C" {
42#endif
46
53typedef struct TCOD_List {
55 void** array;
61
62typedef TCOD_List* TCOD_list_t;
63
64
74TCODLIB_API TCOD_DEPRECATED("TCOD_List is not a suitable container. Use a custom array or a C++ container instead.")
76
77TCODLIB_API TCOD_List* TCOD_list_allocate(int nb_elements);
78TCODLIB_API TCOD_List* TCOD_list_duplicate(TCOD_List* l);
79TCODLIB_API void TCOD_list_delete(TCOD_List* l);
80TCODLIB_API void TCOD_list_push(TCOD_List* l, const void* elt);
81TCODLIB_API void* TCOD_list_pop(TCOD_List* l);
82TCODLIB_API void* TCOD_list_peek(TCOD_List* l);
83TCODLIB_API void TCOD_list_add_all(TCOD_List* l, TCOD_List* l2);
84TCODLIB_API void* TCOD_list_get(TCOD_List* l, int idx);
85TCODLIB_API void TCOD_list_set(TCOD_List* l, const void* elt, int idx);
86TCODLIB_API void** TCOD_list_begin(TCOD_List* l);
87TCODLIB_API void** TCOD_list_end(TCOD_List* l);
88TCODLIB_API void TCOD_list_reverse(TCOD_List* l);
89TCODLIB_API void** TCOD_list_remove_iterator(TCOD_List* l, void** elt);
90TCODLIB_API void TCOD_list_remove(TCOD_List* l, const void* elt);
91TCODLIB_API void** TCOD_list_remove_iterator_fast(TCOD_List* l, void** elt);
92TCODLIB_API void TCOD_list_remove_fast(TCOD_List* l, const void* elt);
93TCODLIB_API bool TCOD_list_contains(TCOD_List* l, const void* elt);
94TCODLIB_API void TCOD_list_clear(TCOD_List* l);
95TCODLIB_API void TCOD_list_clear_and_delete(TCOD_List* l);
96TCODLIB_API int TCOD_list_size(TCOD_List* l);
97TCODLIB_API void** TCOD_list_insert_before(TCOD_List* l, const void* elt, int before);
98TCODLIB_API bool TCOD_list_is_empty(TCOD_List* l);
99#ifdef __cplusplus
100}
101#endif
103#endif // TCOD_LIST_H_
TCOD_List * TCOD_list_new(void)
Return a new list.
Miscellaneous tools needed across platforms.
Libtcod's generic container, deprecated in favor of more standard tools.
Definition list.h:53
int fillSize
The current count of items in the array. Internal.
Definition list.h:57
int allocSize
The maximum number of items that array can currently hold. Internal.
Definition list.h:59
void ** array
A pointer to an array of void pointers. Internal.
Definition list.h:55