00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CX_DEQUE_H
00029 #define CX_DEQUE_H
00030
00031 #include <cxmemory.h>
00032
00033 CX_BEGIN_DECLS
00034
00035 typedef struct _cx_deque_ cx_deque;
00036
00037 typedef unsigned long cx_deque_const_iterator;
00038 typedef unsigned long cx_deque_iterator;
00039 typedef cxint (*cx_deque_compare) (cxcptr a, cxcptr b);
00040
00041
00042 cx_deque *cx_deque_new(void);
00043 void cx_deque_destroy(cx_deque *d, cx_free_func deallocate);
00044
00045 cxsize cx_deque_size(const cx_deque *d);
00046 cxbool cx_deque_empty(const cx_deque *d);
00047
00048 cxptr cx_deque_get(const cx_deque *d, cx_deque_const_iterator indx);
00049
00050 cx_deque_iterator cx_deque_begin(const cx_deque *d);
00051 cx_deque_iterator cx_deque_end(const cx_deque *d);
00052 cx_deque_iterator cx_deque_next(const cx_deque *d, cx_deque_const_iterator i);
00053
00054
00055 void cx_deque_push_back(cx_deque *d, cxptr what);
00056 void cx_deque_push_front(cx_deque *d, cxptr what);
00057 cx_deque_iterator cx_deque_erase(cx_deque *d, cx_deque_iterator indx, cx_free_func deallocate);
00058 void cx_deque_insert(cx_deque *d, cx_deque_iterator indx, cxptr what);
00059
00060 void cx_deque_sort(cx_deque *d, cx_deque_compare compare);
00061
00062 CX_END_DECLS
00063
00064 #endif
00065