client-c  0.7.0
kaa_deque.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_COLLECTIONS_KAA_DEQUE_H_
18 #define KAA_COLLECTIONS_KAA_DEQUE_H_
19 
20 #include <sys/types.h>
21 #include "../kaa_error.h"
22 
27 
31 typedef struct kaa_deque_t kaa_deque_t;
32 
36 typedef void (*kaa_deque_data_destroy_fn)(void *);
37 
46 
55 
65 
75 
86 
95 void kaa_deque_destroy(kaa_deque_t *self, kaa_deque_data_destroy_fn data_destroy_fn);
96 
107 
118 
130 
142 
156 
169 
183 
196 
205 ssize_t kaa_deque_size(kaa_deque_t *self);
206 
218 
219 #endif /* KAA_COLLECTIONS_KAA_DEQUE_H_ */
kaa_error_t kaa_deque_push_back_data(kaa_deque_t *self, void *data)
Add data to the end of the deque.
kaa_deque_iterator_t * kaa_deque_iterator_next(kaa_deque_iterator_t *it)
Accesses iterator placed after the given one.
struct kaa_deque_t kaa_deque_t
Struct representing a deque object.
Definition: kaa_deque.h:31
kaa_deque_t * kaa_deque_merge_move(kaa_deque_t *deque1, kaa_deque_t *deque2)
Moves elements from deque2 to deque1.
kaa_error_t kaa_deque_create(kaa_deque_t **self)
Create new kaa_deque_t object.
kaa_error_t
Definition: kaa_error.h:31
void kaa_deque_destroy(kaa_deque_t *self, kaa_deque_data_destroy_fn data_destroy_fn)
Releases memory occupied by a kaa_deque_t object (including memory occupied by iterators).
kaa_error_t kaa_deque_push_back_iterator(kaa_deque_t *self, kaa_deque_iterator_t *it)
Add existing iterator to the end of the deque.
kaa_error_t kaa_deque_push_front_data(kaa_deque_t *self, void *data)
Add data to the beginning of the deque.
kaa_error_t kaa_deque_pop_front(kaa_deque_t *self, kaa_deque_iterator_t **it)
Fetch and remove iterator to the first element in a deque.
void(* kaa_deque_data_destroy_fn)(void *)
Function signature for functions used to cleanup data stored in a deque.
Definition: kaa_deque.h:36
struct kaa_deque_iterator_t kaa_deque_iterator_t
Iterator to access the data stored in kaa_deque_t.
Definition: kaa_deque.h:26
void * kaa_deque_iterator_get_data(kaa_deque_iterator_t *it)
Extracts data pointed by an iterator.
void kaa_deque_iterator_destroy(kaa_deque_iterator_t *it, kaa_deque_data_destroy_fn data_destroy_fn)
Releases memory occupied by an iterator.
kaa_error_t kaa_deque_push_front_iterator(kaa_deque_t *self, kaa_deque_iterator_t *it)
Add existing iterator to the beginning of the deque.
ssize_t kaa_deque_size(kaa_deque_t *self)
Returns number of elements stored in the deque.
kaa_error_t kaa_deque_first(kaa_deque_t *self, kaa_deque_iterator_t **it)
Fetch iterator to the first element in a deque.
kaa_error_t kaa_deque_last(kaa_deque_t *self, kaa_deque_iterator_t **it)
Fetch iterator to the last element in a deque.
kaa_deque_iterator_t * kaa_deque_iterator_previous(kaa_deque_iterator_t *)
Accesses iterator placed before the given one.
kaa_error_t kaa_deque_pop_back(kaa_deque_t *self, kaa_deque_iterator_t **it)
Fetch and remove iterator to the last element in a deque.