XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
map.h
浏览该文件的文档.
1
13#ifndef __xwos_lib_map_h__
14#define __xwos_lib_map_h__
15
16#include <xwos/standard.h>
17#include <xwos/lib/rbtree.h>
18#include <xwos/lib/bclst.h>
19
33 struct xwlib_rbtree_node rbn;
34 struct xwlib_bclst_node bcln;
35 void * key;
36 void * value;
37};
38
42typedef xwssq_t (* xwlib_map_cmp_f)(void *, void *);
43
48 struct xwlib_rbtree rbtree;
49 struct xwlib_bclst_head bclh;
51};
52
58static __xwlib_inline
60{
63 map->cmp = cmp;
64}
65
72static __xwlib_inline
74 void * key, void * value)
75{
78 mc->key = key;
79 mc->value = value;
80}
81
87#define xwlib_map_itr_forward(map, c) \
88 xwlib_bclst_itr_next_entry((c), \
89 &(map)->bclh, \
90 struct xwlib_map_container, bcln)
91
97#define xwlib_map_itr_backward(map, c) \
98 xwlib_bclst_itr_next_entry((c), \
99 &(map)->bclh, \
100 struct xwlib_map_container, bcln)
101
108#define xwlib_map_itr_forward_safe(map, c, n) \
109 xwlib_bclst_itr_next_entry_safe((c), \
110 &(map)->bclh, \
111 struct xwlib_map_container, bcln)
112
119#define xwlib_map_itr_backward_safe(map, c, n) \
120 xwlib_bclst_itr_prev_entry_safe((c), (n), \
121 &(map)->bclh, \
122 struct xwlib_map_container, bcln)
123
132xwer_t xwlib_map_insert(struct xwlib_map * map, struct xwlib_map_container * newmc);
133
134
143xwer_t xwlib_map_erase(struct xwlib_map * map, struct xwlib_map_container * mc);
144
145
155xwer_t xwlib_map_find(struct xwlib_map * map, void * key,
156 struct xwlib_map_container ** mcbuf);
157
162#endif /* xwos/lib/map.h */
XWOS通用库:双循环链表
static void xwlib_bclst_init_head(struct xwlib_bclst_node *h)
初始化一个链表头。
Definition bclst.h:229
static void xwlib_bclst_init_node(struct xwlib_bclst_node *n)
初始化一个链表节点。
Definition bclst.h:240
#define xwlib_bclst_head
双循环链表头
Definition bclst.h:35
#define __xwlib_inline
Definition compiler.h:203
#define __xwcc_alignptr
Definition compiler.h:129
static void xwlib_map_init(struct xwlib_map *map, xwlib_map_cmp_f cmp)
初始化键值对容器的map
Definition map.h:59
xwssq_t(* xwlib_map_cmp_f)(void *, void *)
键比较函数类型
Definition map.h:42
xwer_t xwlib_map_find(struct xwlib_map *map, void *key, struct xwlib_map_container **mcbuf)
根据 键值 查找容器
Definition map.c:86
static void xwlib_map_init_container(struct xwlib_map_container *mc, void *key, void *value)
初始化键值对容器
Definition map.h:73
xwer_t xwlib_map_insert(struct xwlib_map *map, struct xwlib_map_container *newmc)
插入键值对容器
Definition map.c:17
xwer_t xwlib_map_erase(struct xwlib_map *map, struct xwlib_map_container *mc)
删除键值对容器
Definition map.c:70
static void xwlib_rbtree_init_node(struct xwlib_rbtree_node *rbn)
初始化红黑树节点
Definition rbtree.h:114
static void xwlib_rbtree_init(struct xwlib_rbtree *rbt)
初始化红黑树
Definition rbtree.h:104
signed long xwer_t
Definition type.h:554
signed long xwssq_t
Definition type.h:461
XWOS通用库:红黑树
双循环链表的节点
Definition bclst.h:27
键值对容器
Definition map.h:32
void * value
Definition map.h:36
struct xwlib_bclst_node bcln
Definition map.h:34
struct xwlib_rbtree_node rbn
Definition map.h:33
键值对集合
Definition map.h:47
xwlib_map_cmp_f cmp
Definition map.h:50
struct xwlib_rbtree rbtree
Definition map.h:48
struct xwlib_bclst_node bclh
Definition map.h:49
红黑树节点
Definition rbtree.h:81
红黑树
Definition rbtree.h:95
XWOS的标准头文件