From 0e93e6809c7beac4597148edc1dc09bcdf9a2ab3 Mon Sep 17 00:00:00 2001 From: "iamyhw@gmail.com" Date: Thu, 24 Mar 2011 14:00:19 +0000 Subject: add rtgui_win subfield,Highlight the ease of use git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1345 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- components/rtgui_win/include/rtgui/list.h | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 components/rtgui_win/include/rtgui/list.h (limited to 'components/rtgui_win/include/rtgui/list.h') diff --git a/components/rtgui_win/include/rtgui/list.h b/components/rtgui_win/include/rtgui/list.h new file mode 100644 index 0000000000..eb8afb62ea --- /dev/null +++ b/components/rtgui_win/include/rtgui/list.h @@ -0,0 +1,66 @@ +/* + * File : list.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2009-10-16 Bernard first version + */ +#ifndef __RTGUI_LIST_H__ +#define __RTGUI_LIST_H__ + +#include + +typedef struct rtgui_list_node rtgui_list_t;/* (template),注意与CCList的区别 */ + +struct rtgui_list_node +{ + rtgui_list_t* next; +}; +rt_inline void rtgui_list_init(rtgui_list_t *l) +{ + l->next = (rtgui_list_t *)0; +} + +rt_inline void rtgui_list_append(rtgui_list_t *l, rtgui_list_t *n) +{ + rtgui_list_t* node; + + node = l; + while(node->next) node = node->next; + + /* append the node to the tail */ + node->next = n; + n->next = (rtgui_list_t*) 0; +} + +rt_inline void list_insert(rtgui_list_t *l, rtgui_list_t *n) +{ + n->next = l->next; + l->next = n; +} + +rt_inline rtgui_list_t* rtgui_list_remove(rtgui_list_t *l, rtgui_list_t *n) +{ + /* remove slist head */ + rtgui_list_t* node = l; + while(node->next && node->next != n) node = node->next; + + /* remove node */ + if(node->next != (rtgui_list_t *)0) node->next = node->next->next; + + return l; +} + +#define rtgui_list_entry(node, type, member) \ + ((type *)((char*)(node)-(unsigned long)(&((type *)0)->member))) + +#define rtgui_list_foreach(node, list) \ + for((node) = (list)->next; (node) != RT_NULL; (node) = (node)->next) + +#endif -- cgit v1.3.1