client-c  0.7.0
kaa_list.h
Go to the documentation of this file.
1 /*
2  * Copyright 2014 CyberVision, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef KAA_LIST_H_
18 #define KAA_LIST_H_
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #include "../kaa_common.h"
25 #include <stdbool.h>
26 #include <sys/types.h> // For ssize_t
27 
28 typedef struct kaa_list_t kaa_list_t;
29 
33 typedef bool (*match_predicate)(void *data, void *context);
34 
38 typedef void (*deallocate_list_data)(void *);
39 
40 
41 
45 kaa_list_t *kaa_list_push_back(kaa_list_t *head, void *data);
46 
50 kaa_list_t *kaa_list_push_front(kaa_list_t *head, void *data);
51 
55 void *kaa_list_get_data(kaa_list_t *position);
56 
60 size_t kaa_list_get_size(kaa_list_t *position);
61 
65 bool kaa_list_has_next(kaa_list_t *position);
66 
71 
77 
82 kaa_list_t *kaa_list_create(void *data);
83 
87 void kaa_list_destroy(kaa_list_t *head, deallocate_list_data deallocator);
88 
92 void kaa_list_destroy_no_data_cleanup(void *head);
93 
101 
106 kaa_error_t kaa_list_remove_first(kaa_list_t **head, match_predicate pred, void *context, deallocate_list_data deallocator);
107 
112 void kaa_list_set_data_at(kaa_list_t *position, void *data, deallocate_list_data deallocator);
113 
118 kaa_list_t *kaa_list_insert_after(kaa_list_t *position, void *data);
119 
124 kaa_list_t *kaa_list_find_next(kaa_list_t *from, match_predicate pred, void *context);
125 
130 kaa_list_t *kaa_list_find_last(kaa_list_t *from, match_predicate pred, void *context);
131 
133 
134 #ifdef __cplusplus
135 } // extern "C"
136 #endif
137 #endif /* KAA_LIST_H_ */
void kaa_list_destroy(kaa_list_t *head, deallocate_list_data deallocator)
void kaa_list_set_data_at(kaa_list_t *position, void *data, deallocate_list_data deallocator)
kaa_list_t * kaa_list_find_last(kaa_list_t *from, match_predicate pred, void *context)
void kaa_list_destroy_no_data_cleanup(void *head)
kaa_error_t
Definition: kaa_error.h:31
kaa_list_t * kaa_list_push_back(kaa_list_t *head, void *data)
struct kaa_list_t kaa_list_t
Definition: kaa_list.h:28
kaa_list_t * kaa_lists_merge(kaa_list_t *list1, kaa_list_t *list2)
bool(* match_predicate)(void *data, void *context)
Definition: kaa_list.h:33
kaa_list_t * kaa_list_insert_after(kaa_list_t *position, void *data)
kaa_list_t * kaa_list_push_front(kaa_list_t *head, void *data)
kaa_list_t * kaa_list_split_after(kaa_list_t *head, kaa_list_t *after, kaa_list_t **tail)
kaa_list_t * kaa_list_remove_at(kaa_list_t **head, kaa_list_t *position, deallocate_list_data deallocator)
kaa_error_t kaa_list_remove_first(kaa_list_t **head, match_predicate pred, void *context, deallocate_list_data deallocator)
kaa_list_t * kaa_list_next(kaa_list_t *position)
void(* deallocate_list_data)(void *)
Definition: kaa_list.h:38
kaa_list_t * kaa_list_find_next(kaa_list_t *from, match_predicate pred, void *context)
kaa_list_t * kaa_list_create(void *data)
bool kaa_list_has_next(kaa_list_t *position)
void * kaa_list_get_data(kaa_list_t *position)
size_t kaa_list_get_size(kaa_list_t *position)