icqlist.h
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Visual C++

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *   This program is free software; you can redistribute it and/or modify  *
  4.  *   it under the terms of the GNU General Public License as published by  *
  5.  *   the Free Software Foundation; either version 2 of the License, or     *
  6.  *   (at your option) any later version.                                   *
  7.  *                                                                         *
  8.  *   copyright            : (C) 2002 by Zhang Yong                         *
  9.  *   email                : z-yong163@163.com                              *
  10.  ***************************************************************************/
  11. #ifndef _ICQ_LIST_H_
  12. #define _ICQ_LIST_H_
  13. #include "icqtypes.h"
  14. #define LIST_ENTRY(ptr, type, member) 
  15. ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member)))
  16. #define LIST_FOR_EACH(pos, head) 
  17. for (pos = (head)->next; pos != (head); pos = pos->next)
  18. class IcqListItem {
  19. public:
  20. IcqListItem() {
  21. prev = next = this;
  22. }
  23. void remove();
  24. IcqListItem *prev, *next;
  25. };
  26. class IcqList {
  27. public:
  28. bool isEmpty() {
  29. return (head.next == &head);
  30. }
  31. IcqListItem *getHead() {
  32. return head.next;
  33. }
  34. void add(IcqListItem *item);
  35. void addHead(IcqListItem *item);
  36. IcqListItem head;
  37. };
  38. #endif