Fri, 23 May 2025 12:44:24 +0200
make test-compile depend on both static and shared
the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build
398
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved. |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
28 | /** |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
29 | * @file linked_list.h |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
30 | * @brief Linked list implementation. |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
31 | * @author Mike Becker |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
32 | * @author Olaf Wintermann |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
33 | * @copyright 2-Clause BSD License |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
34 | */ |
398
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
35 | |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | #ifndef UCX_LINKED_LIST_H |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | #define UCX_LINKED_LIST_H |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | |
484
9e6900b1cf9d
add common.h include to all other header files
Mike Becker <universe@uap-core.de>
parents:
481
diff
changeset
|
39 | #include "common.h" |
398
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | #include "list.h" |
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | |
415 | 42 | #ifdef __cplusplus |
43 | extern "C" { | |
44 | #endif | |
45 | ||
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
46 | /** |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
47 | * Allocates a linked list for storing elements with @p elem_size bytes each. |
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
48 | * |
1111
78eeeb950883
remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents:
1100
diff
changeset
|
49 | * If @p elem_size is #CX_STORE_POINTERS, the created list stores pointers instead of |
78eeeb950883
remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents:
1100
diff
changeset
|
50 | * copies of the added elements and the compare function will be automatically set |
78eeeb950883
remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents:
1100
diff
changeset
|
51 | * to cx_cmp_ptr(), if none is given. |
669
dce9b8450656
add docs for CX_STORE_POINTERS and remove cxHashMapCreateForPointers()
Mike Becker <universe@uap-core.de>
parents:
662
diff
changeset
|
52 | * |
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
53 | * @param allocator the allocator for allocating the list nodes |
1318
12fa1d37fe48
allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents:
1241
diff
changeset
|
54 | * (if @c NULL, the cxDefaultAllocator will be used) |
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
55 | * @param comparator the comparator for the elements |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
56 | * (if @c NULL, and the list is not storing pointers, sort and find |
763
741a2040fa33
make cx_cmp_ptr default comparator for pointer lists - relates to #340
Mike Becker <universe@uap-core.de>
parents:
759
diff
changeset
|
57 | * functions will not work) |
855
35bcb3216c0d
fix inconsistent use of item_size and elem_size
Mike Becker <universe@uap-core.de>
parents:
807
diff
changeset
|
58 | * @param elem_size the size of each element in bytes |
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
59 | * @return the created list |
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
60 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
61 | cx_attr_nodiscard |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
62 | cx_attr_malloc |
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
989
diff
changeset
|
63 | cx_attr_dealloc(cxListFree, 1) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
64 | cx_attr_export |
500
eb9e7bd40a8e
do not hide pointers behind typedefs
Mike Becker <universe@uap-core.de>
parents:
489
diff
changeset
|
65 | CxList *cxLinkedListCreate( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
66 | const CxAllocator *allocator, |
677
b09aae58bba4
refactoring of collections to make use of destructors in map implementations
Mike Becker <universe@uap-core.de>
parents:
670
diff
changeset
|
67 | cx_compare_func comparator, |
855
35bcb3216c0d
fix inconsistent use of item_size and elem_size
Mike Becker <universe@uap-core.de>
parents:
807
diff
changeset
|
68 | size_t elem_size |
670
4ad8ea3aee49
allow NULL for allocator and comparator
Mike Becker <universe@uap-core.de>
parents:
669
diff
changeset
|
69 | ); |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
70 | |
466
28bc3e10ac28
add special linked list implementation for storing pointers
Mike Becker <universe@uap-core.de>
parents:
456
diff
changeset
|
71 | /** |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
72 | * Allocates a linked list for storing elements with @p elem_size bytes each. |
662
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
73 | * |
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
74 | * The list will use cxDefaultAllocator and no comparator function. If you want |
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
75 | * to call functions that need a comparator, you must either set one immediately |
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
76 | * after list creation or use cxLinkedListCreate(). |
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
77 | * |
1111
78eeeb950883
remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents:
1100
diff
changeset
|
78 | * If @p elem_size is #CX_STORE_POINTERS, the created list stores pointers instead of |
78eeeb950883
remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents:
1100
diff
changeset
|
79 | * copies of the added elements and the compare function will be automatically set |
1239
b4b1f15d1866
complete more than 80% of the list.h documentation
Mike Becker <universe@uap-core.de>
parents:
1180
diff
changeset
|
80 | * to cx_cmp_ptr(). |
669
dce9b8450656
add docs for CX_STORE_POINTERS and remove cxHashMapCreateForPointers()
Mike Becker <universe@uap-core.de>
parents:
662
diff
changeset
|
81 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
82 | * @param elem_size (@c size_t) the size of each element in bytes |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
83 | * @return (@c CxList*) the created list |
662
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
84 | */ |
855
35bcb3216c0d
fix inconsistent use of item_size and elem_size
Mike Becker <universe@uap-core.de>
parents:
807
diff
changeset
|
85 | #define cxLinkedListCreateSimple(elem_size) \ |
35bcb3216c0d
fix inconsistent use of item_size and elem_size
Mike Becker <universe@uap-core.de>
parents:
807
diff
changeset
|
86 | cxLinkedListCreate(NULL, NULL, elem_size) |
662
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
87 | |
d0d95740071b
add simple functions for creating lists
Mike Becker <universe@uap-core.de>
parents:
647
diff
changeset
|
88 | /** |
438
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
89 | * Finds the node at a certain index. |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
90 | * |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
91 | * This function can be used to start at an arbitrary position within the list. |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
92 | * If the search index is large than the start index, @p loc_advance must denote |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
93 | * the location of some sort of @c next pointer (i.e. a pointer to the next node). |
438
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
94 | * But it is also possible that the search index is smaller than the start index |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
95 | * (e.g. in cases where traversing a list backwards is faster) in which case |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
96 | * @p loc_advance must denote the location of some sort of @c prev pointer |
438
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
97 | * (i.e. a pointer to the previous node). |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
98 | * |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
99 | * @param start a pointer to the start node |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
100 | * @param start_index the start index |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
101 | * @param loc_advance the location of the pointer to advance |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
102 | * @param index the search index |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
103 | * @return the node found at the specified index |
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
104 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
105 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
106 | cx_attr_nodiscard |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
107 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
108 | void *cx_linked_list_at( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
109 | const void *start, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
110 | size_t start_index, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
111 | ptrdiff_t loc_advance, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
112 | size_t index |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
113 | ); |
438
cd3069757010
add function cx_linked_list_at()
Mike Becker <universe@uap-core.de>
parents:
415
diff
changeset
|
114 | |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
115 | /** |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
116 | * Finds the node containing an element within a linked list. |
480
e3be53a3354f
add cx_linked_list_find()
Mike Becker <universe@uap-core.de>
parents:
478
diff
changeset
|
117 | * |
e3be53a3354f
add cx_linked_list_find()
Mike Becker <universe@uap-core.de>
parents:
478
diff
changeset
|
118 | * @param start a pointer to the start node |
e3be53a3354f
add cx_linked_list_find()
Mike Becker <universe@uap-core.de>
parents:
478
diff
changeset
|
119 | * @param loc_advance the location of the pointer to advance |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
120 | * @param loc_data the location of the @c data pointer within your node struct |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
121 | * @param cmp_func a compare function to compare @p elem against the node data |
480
e3be53a3354f
add cx_linked_list_find()
Mike Becker <universe@uap-core.de>
parents:
478
diff
changeset
|
122 | * @param elem a pointer to the element to find |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
123 | * @param found_index an optional pointer where the index of the found node |
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
124 | * (given that @p start has index 0) is stored |
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
125 | * @return the index of the element, if found - unspecified if not found |
480
e3be53a3354f
add cx_linked_list_find()
Mike Becker <universe@uap-core.de>
parents:
478
diff
changeset
|
126 | */ |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
127 | cx_attr_nonnull_arg(1, 4, 5) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
128 | cx_attr_export |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
129 | void *cx_linked_list_find( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
130 | const void *start, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
131 | ptrdiff_t loc_advance, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
132 | ptrdiff_t loc_data, |
677
b09aae58bba4
refactoring of collections to make use of destructors in map implementations
Mike Becker <universe@uap-core.de>
parents:
670
diff
changeset
|
133 | cx_compare_func cmp_func, |
1162
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
134 | const void *elem, |
e3bb67b72d33
remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents:
1113
diff
changeset
|
135 | size_t *found_index |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
136 | ); |
764
ccbdbd088455
add cxListFindRemove and cx_linked_list_find_node
Mike Becker <universe@uap-core.de>
parents:
763
diff
changeset
|
137 | |
ccbdbd088455
add cxListFindRemove and cx_linked_list_find_node
Mike Becker <universe@uap-core.de>
parents:
763
diff
changeset
|
138 | /** |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
139 | * Finds the first node in a linked list. |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
140 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
141 | * The function starts with the pointer denoted by @p node and traverses the list |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
142 | * along a prev pointer whose location within the node struct is |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
143 | * denoted by @p loc_prev. |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
144 | * |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
145 | * @param node a pointer to a node in the list |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
146 | * @param loc_prev the location of the @c prev pointer |
485
6a86ad3d8c03
use same doxygen style in all files
Mike Becker <universe@uap-core.de>
parents:
484
diff
changeset
|
147 | * @return a pointer to the first node |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
148 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
149 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
150 | cx_attr_returns_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
151 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
152 | void *cx_linked_list_first( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
153 | const void *node, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
154 | ptrdiff_t loc_prev |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
155 | ); |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
156 | |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
157 | /** |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
158 | * Finds the last node in a linked list. |
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
159 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
160 | * The function starts with the pointer denoted by @p node and traverses the list |
456
227c2eabbef8
change cx_linked_list_last() and add a test for it
Mike Becker <universe@uap-core.de>
parents:
453
diff
changeset
|
161 | * along a next pointer whose location within the node struct is |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
162 | * denoted by @p loc_next. |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
163 | * |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
164 | * @param node a pointer to a node in the list |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
165 | * @param loc_next the location of the @c next pointer |
478
599770bb6314
add more nonnull attributes
Mike Becker <universe@uap-core.de>
parents:
477
diff
changeset
|
166 | * @return a pointer to the last node |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
167 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
168 | cx_attr_nonnull |
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
169 | cx_attr_returns_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
170 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
171 | void *cx_linked_list_last( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
172 | const void *node, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
173 | ptrdiff_t loc_next |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
174 | ); |
398
8d506ed6c1c0
adds first draft for linked list implementation
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
175 | |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
176 | /** |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
177 | * Finds the predecessor of a node in case it is not linked. |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
178 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
179 | * @remark If @p node is not contained in the list starting with @p begin, the behavior is undefined. |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
180 | * |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
181 | * @param begin the node where to start the search |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
182 | * @param loc_next the location of the @c next pointer |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
183 | * @param node the successor of the node to find |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
184 | * @return the node or @c NULL if @p node has no predecessor |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
185 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
186 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
187 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
188 | void *cx_linked_list_prev( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
189 | const void *begin, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
190 | ptrdiff_t loc_next, |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
191 | const void *node |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
192 | ); |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
193 | |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
194 | /** |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
195 | * Adds a new node to a linked list. |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
196 | * The node must not be part of any list already. |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
197 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
198 | * @remark One of the pointers @p begin or @p end may be @c NULL, but not both. |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
199 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
200 | * @param begin a pointer to the beginning node pointer (if your list has one) |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
201 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
202 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
203 | * @param loc_next the location of a @c next pointer within your node struct (required) |
453
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
204 | * @param new_node a pointer to the node that shall be appended |
bb144d08cd44
add some documentation and changes some signatures
Mike Becker <universe@uap-core.de>
parents:
438
diff
changeset
|
205 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
206 | cx_attr_nonnull_arg(5) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
207 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
208 | void cx_linked_list_add( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
209 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
210 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
211 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
212 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
213 | void *new_node |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
214 | ); |
406
9cbea761fbf7
adds cxLinkedListWrap and cxLinkedListRecalculateSize
Mike Becker <universe@uap-core.de>
parents:
402
diff
changeset
|
215 | |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
216 | /** |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
217 | * Prepends a new node to a linked list. |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
218 | * The node must not be part of any list already. |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
219 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
220 | * @remark One of the pointers @p begin or @p end may be @c NULL, but not both. |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
221 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
222 | * @param begin a pointer to the beginning node pointer (if your list has one) |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
223 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
224 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
225 | * @param loc_next the location of a @c next pointer within your node struct (required) |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
226 | * @param new_node a pointer to the node that shall be prepended |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
227 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
228 | cx_attr_nonnull_arg(5) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
229 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
230 | void cx_linked_list_prepend( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
231 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
232 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
233 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
234 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
235 | void *new_node |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
236 | ); |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
237 | |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
238 | /** |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
239 | * Links two nodes. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
240 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
241 | * @param left the new predecessor of @p right |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
242 | * @param right the new successor of @p left |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
243 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
244 | * @param loc_next the location of a @c next pointer within your node struct (required) |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
245 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
246 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
247 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
248 | void cx_linked_list_link( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
249 | void *left, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
250 | void *right, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
251 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
252 | ptrdiff_t loc_next |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
253 | ); |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
254 | |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
255 | /** |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
256 | * Unlinks two nodes. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
257 | * |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
258 | * If right is not the successor of left, the behavior is undefined. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
259 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
260 | * @param left the predecessor of @p right |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
261 | * @param right the successor of @p left |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
262 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
263 | * @param loc_next the location of a @c next pointer within your node struct (required) |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
264 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
265 | cx_attr_nonnull |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
266 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
267 | void cx_linked_list_unlink( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
268 | void *left, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
269 | void *right, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
270 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
271 | ptrdiff_t loc_next |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
272 | ); |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
273 | |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
274 | /** |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
275 | * Inserts a new node after a given node of a linked list. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
276 | * The new node must not be part of any list already. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
277 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
278 | * @note If you specify @c NULL as the @p node to insert after, this function needs either the @p begin or |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
279 | * the @p end pointer to determine the start of the list. Then the new node will be prepended to the list. |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
280 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
281 | * @param begin a pointer to the beginning node pointer (if your list has one) |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
282 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
283 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
284 | * @param loc_next the location of a @c next pointer within your node struct (required) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
285 | * @param node the node after which to insert (@c NULL if you want to prepend the node to the list) |
878
1c1ee61c01f9
fix typo in documentation
Mike Becker <universe@uap-core.de>
parents:
855
diff
changeset
|
286 | * @param new_node a pointer to the node that shall be inserted |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
287 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
288 | cx_attr_nonnull_arg(6) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
289 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
290 | void cx_linked_list_insert( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
291 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
292 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
293 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
294 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
295 | void *node, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
296 | void *new_node |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
297 | ); |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
298 | |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
299 | /** |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
300 | * Inserts a chain of nodes after a given node of a linked list. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
301 | * The chain must not be part of any list already. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
302 | * |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
303 | * If you do not explicitly specify the end of the chain, it will be determined by traversing |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
304 | * the @c next pointer. |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
305 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
306 | * @note If you specify @c NULL as the @p node to insert after, this function needs either the @p begin or |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
307 | * the @p end pointer to determine the start of the list. If only the @p end pointer is specified, you also need |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
308 | * to provide a valid @p loc_prev location. |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
309 | * Then the chain will be prepended to the list. |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
310 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
311 | * @param begin a pointer to the beginning node pointer (if your list has one) |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
312 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
313 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
314 | * @param loc_next the location of a @c next pointer within your node struct (required) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
315 | * @param node the node after which to insert (@c NULL to prepend the chain to the list) |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
316 | * @param insert_begin a pointer to the first node of the chain that shall be inserted |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
317 | * @param insert_end a pointer to the last node of the chain (or NULL if the last node shall be determined) |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
318 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
319 | cx_attr_nonnull_arg(6) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
320 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
321 | void cx_linked_list_insert_chain( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
322 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
323 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
324 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
325 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
326 | void *node, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
327 | void *insert_begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
328 | void *insert_end |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
329 | ); |
475
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
330 | |
31bf97fdbf71
add cx_linked_list_first() + cx_linked_list_prepend()
Mike Becker <universe@uap-core.de>
parents:
473
diff
changeset
|
331 | /** |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
332 | * Inserts a node into a sorted linked list. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
333 | * The new node must not be part of any list already. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
334 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
335 | * If the list starting with the node pointed to by @p begin is not sorted |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
336 | * already, the behavior is undefined. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
337 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
338 | * @param begin a pointer to the beginning node pointer (required) |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
339 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
340 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
341 | * @param loc_next the location of a @c next pointer within your node struct (required) |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
342 | * @param new_node a pointer to the node that shall be inserted |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
343 | * @param cmp_func a compare function that will receive the node pointers |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
344 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
345 | cx_attr_nonnull_arg(1, 5, 6) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
346 | cx_attr_export |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
347 | void cx_linked_list_insert_sorted( |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
348 | void **begin, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
349 | void **end, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
350 | ptrdiff_t loc_prev, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
351 | ptrdiff_t loc_next, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
352 | void *new_node, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
353 | cx_compare_func cmp_func |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
354 | ); |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
355 | |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
356 | /** |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
357 | * Inserts a chain of nodes into a sorted linked list. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
358 | * The chain must not be part of any list already. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
359 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
360 | * If either the list starting with the node pointed to by @p begin or the list |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
361 | * starting with @p insert_begin is not sorted, the behavior is undefined. |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
362 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
363 | * @attention In contrast to cx_linked_list_insert_chain(), the source chain |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
364 | * will be broken and inserted into the target list so that the resulting list |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
365 | * will be sorted according to @p cmp_func. That means, each node in the source |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
366 | * chain may be re-linked with nodes from the target list. |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
367 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
368 | * @param begin a pointer to the beginning node pointer (required) |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
369 | * @param end a pointer to the end node pointer (if your list has one) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
370 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
371 | * @param loc_next the location of a @c next pointer within your node struct (required) |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
372 | * @param insert_begin a pointer to the first node of the chain that shall be inserted |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
373 | * @param cmp_func a compare function that will receive the node pointers |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
374 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
375 | cx_attr_nonnull_arg(1, 5, 6) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
376 | cx_attr_export |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
377 | void cx_linked_list_insert_sorted_chain( |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
378 | void **begin, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
379 | void **end, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
380 | ptrdiff_t loc_prev, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
381 | ptrdiff_t loc_next, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
382 | void *insert_begin, |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
383 | cx_compare_func cmp_func |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
384 | ); |
879
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
385 | |
9c24a4eb5ac9
implement optimized sorted insert for linked lists - resolves #415
Mike Becker <universe@uap-core.de>
parents:
878
diff
changeset
|
386 | /** |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
387 | * Removes a chain of nodes from the linked list. |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
388 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
389 | * If one of the nodes to remove is the beginning (resp. end) node of the list and if @p begin (resp. @p end) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
390 | * addresses are provided, the pointers are adjusted accordingly. |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
391 | * |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
392 | * The following combinations of arguments are valid (more arguments are optional): |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
393 | * @li @p loc_next and @p loc_prev (ancestor node is determined by using the prev pointer, overall O(1) performance) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
394 | * @li @p loc_next and @p begin (ancestor node is determined by list traversal, overall O(n) performance) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
395 | * |
1241
ebcc08023c33
complete linked_list.h docu
Mike Becker <universe@uap-core.de>
parents:
1239
diff
changeset
|
396 | * @remark The @c next and @c prev pointers of the removed chain are not cleared by this function and may still be used |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
397 | * to traverse to a former adjacent node in the list, or within the chain. |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
398 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
399 | * @param begin a pointer to the beginning node pointer (optional) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
400 | * @param end a pointer to the end node pointer (optional) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
401 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
402 | * @param loc_next the location of a @c next pointer within your node struct (required) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
403 | * @param node the start node of the chain |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
404 | * @param num the number of nodes to remove |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
405 | * @return the actual number of nodes that were removed (can be less when the list did not have enough nodes) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
406 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
407 | cx_attr_nonnull_arg(5) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
408 | cx_attr_export |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
409 | size_t cx_linked_list_remove_chain( |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
410 | void **begin, |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
411 | void **end, |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
412 | ptrdiff_t loc_prev, |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
413 | ptrdiff_t loc_next, |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
414 | void *node, |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
415 | size_t num |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
416 | ); |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
417 | |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
418 | /** |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
419 | * Removes a node from the linked list. |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
420 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
421 | * If the node to remove is the beginning (resp. end) node of the list and if @p begin (resp. @p end) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
422 | * addresses are provided, the pointers are adjusted accordingly. |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
423 | * |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
424 | * The following combinations of arguments are valid (more arguments are optional): |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
425 | * @li @p loc_next and @p loc_prev (ancestor node is determined by using the prev pointer, overall O(1) performance) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
426 | * @li @p loc_next and @p begin (ancestor node is determined by list traversal, overall O(n) performance) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
427 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
428 | * @remark The @c next and @c prev pointers of the removed node are not cleared by this function and may still be used |
476
60ff4561dc04
change contract of cx_linked_list_remove()
Mike Becker <universe@uap-core.de>
parents:
475
diff
changeset
|
429 | * to traverse to a former adjacent node in the list. |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
430 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
431 | * @param begin a pointer to the beginning node pointer (optional) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
432 | * @param end a pointer to the end node pointer (optional) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
433 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
434 | * @param loc_next the location of a @c next pointer within your node struct (required) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
435 | * @param node the node to remove |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
436 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
437 | cx_attr_nonnull_arg(5) |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
438 | static inline void cx_linked_list_remove( |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
439 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
440 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
441 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
442 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
443 | void *node |
919
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
444 | ) { |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
445 | cx_linked_list_remove_chain(begin, end, loc_prev, loc_next, node, 1); |
75da57d4634e
add possibility to remove arrays of data and retrieve removed data
Mike Becker <universe@uap-core.de>
parents:
891
diff
changeset
|
446 | } |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
447 | |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
448 | /** |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
449 | * Determines the size of a linked list starting with @p node. |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
450 | * |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
451 | * @param node the first node |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
452 | * @param loc_next the location of the @c next pointer within the node struct |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
453 | * @return the size of the list or zero if @p node is @c NULL |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
454 | */ |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
455 | cx_attr_nodiscard |
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
456 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
457 | size_t cx_linked_list_size( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
458 | const void *node, |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
459 | ptrdiff_t loc_next |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
460 | ); |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
461 | |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
462 | /** |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
463 | * Sorts a linked list based on a comparison function. |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
464 | * |
639
309e8b08c60e
temporarily remove pointer lists - see #234
Mike Becker <universe@uap-core.de>
parents:
629
diff
changeset
|
465 | * This function can work with linked lists of the following structure: |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
466 | * @code |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
467 | * typedef struct node node; |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
468 | * struct node { |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
469 | * node* prev; |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
470 | * node* next; |
639
309e8b08c60e
temporarily remove pointer lists - see #234
Mike Becker <universe@uap-core.de>
parents:
629
diff
changeset
|
471 | * my_payload data; |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
472 | * } |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
473 | * @endcode |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
474 | * |
476
60ff4561dc04
change contract of cx_linked_list_remove()
Mike Becker <universe@uap-core.de>
parents:
475
diff
changeset
|
475 | * @note This is a recursive function with at most logarithmic recursion depth. |
60ff4561dc04
change contract of cx_linked_list_remove()
Mike Becker <universe@uap-core.de>
parents:
475
diff
changeset
|
476 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
477 | * @param begin a pointer to the beginning node pointer (required) |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
478 | * @param end a pointer to the end node pointer (optional) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
479 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if not present) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
480 | * @param loc_next the location of a @c next pointer within your node struct (required) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
481 | * @param loc_data the location of the @c data pointer within your node struct |
468
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
482 | * @param cmp_func the compare function defining the sort order |
75ae1dccd101
add cx_linked_list_sort()
Mike Becker <universe@uap-core.de>
parents:
467
diff
changeset
|
483 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
484 | cx_attr_nonnull_arg(1, 6) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
485 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
486 | void cx_linked_list_sort( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
487 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
488 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
489 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
490 | ptrdiff_t loc_next, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
491 | ptrdiff_t loc_data, |
677
b09aae58bba4
refactoring of collections to make use of destructors in map implementations
Mike Becker <universe@uap-core.de>
parents:
670
diff
changeset
|
492 | cx_compare_func cmp_func |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
493 | ); |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
494 | |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
495 | |
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
496 | /** |
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
497 | * Compares two lists element wise. |
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
498 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
499 | * @attention Both list must have the same structure. |
488
9138acaa494b
add cxLinkedListFromArray() and cxListCompare()
Mike Becker <universe@uap-core.de>
parents:
487
diff
changeset
|
500 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
501 | * @param begin_left the beginning of the left list (@c NULL denotes an empty list) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
502 | * @param begin_right the beginning of the right list (@c NULL denotes an empty list) |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
503 | * @param loc_advance the location of the pointer to advance |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
504 | * @param loc_data the location of the @c data pointer within your node struct |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
505 | * @param cmp_func the function to compare the elements |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
506 | * @return the first non-zero result of invoking @p cmp_func or: negative if the left list is smaller than the |
552
4373c2a90066
#178 fix that lists of different kind cannot be compared
Mike Becker <universe@uap-core.de>
parents:
528
diff
changeset
|
507 | * right list, positive if the left list is larger than the right list, zero if both lists are equal. |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
508 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
509 | cx_attr_nonnull_arg(5) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
510 | cx_attr_export |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
511 | int cx_linked_list_compare( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
512 | const void *begin_left, |
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
879
diff
changeset
|
513 | const void *begin_right, |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
514 | ptrdiff_t loc_advance, |
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
515 | ptrdiff_t loc_data, |
677
b09aae58bba4
refactoring of collections to make use of destructors in map implementations
Mike Becker <universe@uap-core.de>
parents:
670
diff
changeset
|
516 | cx_compare_func cmp_func |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
517 | ); |
486
d7ca126eab7f
add cx_linked_list_compare() and simplifies some tests
Mike Becker <universe@uap-core.de>
parents:
485
diff
changeset
|
518 | |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
519 | /** |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
520 | * Reverses the order of the nodes in a linked list. |
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
521 | * |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
522 | * @param begin a pointer to the beginning node pointer (required) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
523 | * @param end a pointer to the end node pointer (optional) |
1100
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
524 | * @param loc_prev the location of a @c prev pointer within your node struct (negative if your struct does not have one) |
2ca6fa71e55e
refine docs for linked_list.h - issue #548
Mike Becker <universe@uap-core.de>
parents:
993
diff
changeset
|
525 | * @param loc_next the location of a @c next pointer within your node struct (required) |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
526 | */ |
985
68754c7de906
major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents:
926
diff
changeset
|
527 | cx_attr_nonnull_arg(1) |
1180
4c3a69b9723a
add support for building windows DLLs - resolves #582
Mike Becker <universe@uap-core.de>
parents:
1162
diff
changeset
|
528 | cx_attr_export |
481
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
529 | void cx_linked_list_reverse( |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
530 | void **begin, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
531 | void **end, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
532 | ptrdiff_t loc_prev, |
eef025d82a34
add several new linked list functions
Mike Becker <universe@uap-core.de>
parents:
480
diff
changeset
|
533 | ptrdiff_t loc_next |
891
49d8cff6f0ee
make all function attributes leading - fixes #425
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
534 | ); |
473
1bd4b8c28722
add cx_linked_list_{prev, remove, reverse}
Mike Becker <universe@uap-core.de>
parents:
468
diff
changeset
|
535 | |
415 | 536 | #ifdef __cplusplus |
628
1e2be40f0cb5
use //-style single line comments everywhere
Mike Becker <universe@uap-core.de>
parents:
552
diff
changeset
|
537 | } // extern "C" |
415 | 538 | #endif |
539 | ||
628
1e2be40f0cb5
use //-style single line comments everywhere
Mike Becker <universe@uap-core.de>
parents:
552
diff
changeset
|
540 | #endif // UCX_LINKED_LIST_H |