libnids注册删除回调函数

 1 void
2 register_callback(struct proc_node **procs, void (*x))
3 {
4 struct proc_node *ipp;
5
6 for (ipp =*procs; ipp; ipp = ipp->next)//判断该回调函数是否存在
7 if (x == ipp->item)
8 return;
9 ipp = mknew(struct proc_node);
10 ipp->item = x;
11 ipp->next =*procs;
12 *procs = ipp;
13 }

采用函数链表存储处理函数,采用前端插入节点的方法完成。

 1 void
2 unregister_callback(struct proc_node **procs, void (*x))
3 {
4 struct proc_node *ipp;
5 struct proc_node *ipp_prev =0;
6 for (ipp =*procs; ipp; ipp = ipp->next)
7 {
8 if (x == ipp->item)
9 {
10 if (ipp_prev)
11 ipp_prev->next = ipp->next;
12 else
13 *procs = ipp->next;
14 free(ipp);
15 return;
16 }
17 ipp_prev = ipp;
18 }
19 }

注册函数删除方式为普通的单向链表删除节点方法。

posted @ 2011-08-29 13:55  戴安澜式编程  阅读(580)  评论(0编辑  收藏  举报