QList.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:2k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef _QLIST_H_
  2. #define _QLIST_H_
  3. #include "gendef.h" 
  4. enum
  5.   {
  6.    QLIST_OK,
  7.    QLIST_EMPTY,
  8.    QLIST_BEGIN,
  9.    QLIST_END,
  10.    QLIST_ITEM_NOT_FOUND,
  11.    QLIST_OUT_MEMORY
  12.   };
  13. #ifdef __cplusplus
  14. extern "C"{
  15. #endif 
  16. typedef struct tagQList QList;
  17. typedef struct tagList List;
  18. struct tagList
  19. {
  20.     void *pData;
  21.     struct tagList *pNext;
  22.     struct tagList *pPrev;
  23. };
  24. struct tagQList
  25. {
  26.     void(*Clear)(QList *self);
  27.     int (*Add)(QList *self,void* pData);
  28.     int (*Insert)(QList *self,void* pData);
  29.     void *(*GetData)(QList *self);
  30.     int (*MoveToHead)(QList *self);
  31.     int (*MoveToTail)(QList *self);
  32.     int (*MoveNext)(QList *self);
  33.     int (*MovePrev)(QList *self);
  34.     int (*IsEmpty)(QList *self);
  35.     int (*GetSize)(QList *self);
  36.     int (*PlaceAtHead)(QList *self,void* pData);
  37.     int (*Remove)(QList *self);
  38.     List *m_pHead;
  39.     List *m_pTail;
  40.     List *m_pCurrent;
  41.     int m_nSize;
  42. };
  43. QList NewQList();
  44. QList *MallocQList();
  45. void QListClear(QList *self);
  46. int QListAdd(QList *self,void* pData);
  47. int QListInsert(QList *self,void* pData);
  48. void *QListGetData(QList *self);
  49. int QListMoveToHead(QList *self);
  50. int QListMoveToTail(QList *self);
  51. int QListMoveNext(QList *self);
  52. int QListMovePrev(QList *self);
  53. int QListIsEmpty(QList *self);
  54. int QListGetSize(QList *self);
  55. int QListPlaceAtHead(QList *self,void* pData);
  56. int QListRemove(QList *self);
  57. typedef struct tagQAutoList QAutoList;
  58. struct tagQAutoList
  59. {
  60.     void (*Release)(QAutoList *self);
  61.     QList list;
  62. };
  63. QAutoList NewQAutoList();
  64. QAutoList *MallocQAutoList();
  65. void    QAutoListRelease(QAutoList *self);
  66. typedef struct tagQInn QInn;
  67. typedef struct tagInn Inn;
  68. struct tagInn
  69. {
  70.     void *data;
  71.     struct tagInn *pNext;
  72. };
  73. struct tagQInn
  74. {
  75.    void (*Push)(QInn *self,void *data);
  76.    void *(*Pop)(QInn *self);
  77.    void (*Release)(QInn *self);
  78.    Inn *pHead;
  79.    Inn *pTail;
  80. };
  81. QInn NewQInn();
  82. QInn *MallocQInn();
  83. void QInnRelease(QInn *self);
  84. void QInnPush(QInn *self,void *data);
  85. void *QInnPop(QInn *self);
  86. #ifdef __cplusplus
  87. }
  88. #endif
  89. #endif