00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __ALICEML_LIST_H__
00028 #define __ALICEML_LIST_H__
00029
00030 #include "aliceml.h"
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00039 typedef struct ML_ListNode ML_ListNode;
00040
00044 typedef struct ML_List ML_List;
00045
00049 typedef struct ML_ListIt {
00050 ML_ListNode *node;
00051 } ML_ListIt;
00052
00054 ALICEMLAPI ML_List * ALICEMLCALL ML_List_Create(ML_Callback_Insert insert, ML_Callback_Remove remove);
00055
00057 ALICEMLAPI void ALICEMLCALL ML_List_Destroy(ML_List *self);
00058
00060 ALICEMLAPI ML_size ALICEMLCALL ML_List_GetSize(ML_List *self);
00061
00063 ALICEMLAPI void ALICEMLCALL ML_List_Clear(ML_List *self);
00064
00066 ALICEMLAPI int ALICEMLCALL ML_List_Insert(ML_List *self, ML_ListIt where, void *ptr);
00067
00069 ALICEMLAPI int ALICEMLCALL ML_List_Erase(ML_List *self, ML_ListIt where);
00070
00072 ALICEMLAPI int ALICEMLCALL ML_List_PushFront(ML_List *self, void *ptr);
00073
00075 ALICEMLAPI int ALICEMLCALL ML_List_PushBack(ML_List *self, void *ptr);
00076
00078 ALICEMLAPI int ALICEMLCALL ML_List_PopFront(ML_List *self);
00079
00081 ALICEMLAPI int ALICEMLCALL ML_List_PopBack(ML_List *self);
00082
00084 ALICEMLAPI ML_ListIt ALICEMLCALL ML_List_GetBegin(ML_List *self);
00085
00087 ALICEMLAPI ML_ListIt ALICEMLCALL ML_List_GetEnd(ML_List *self);
00088
00090 ALICEMLAPI ML_bool ALICEMLCALL ML_List_IsBegin(ML_List *self, ML_ListIt it);
00091
00093 ALICEMLAPI ML_bool ALICEMLCALL ML_List_IsEnd(ML_List *self, ML_ListIt it);
00094
00096 ALICEMLAPI ML_ListIt ALICEMLCALL ML_List_Find(ML_List *self, void *ptr);
00097
00099 ALICEMLAPI ML_ListIt ALICEMLCALL ML_List_FindIf(ML_List *self, ML_Comparator compare, void *ptr);
00100
00102 ALICEMLAPI ML_ListIt ALICEMLCALL ML_ListIt_Next(ML_ListIt it);
00103
00105 ALICEMLAPI ML_ListIt ALICEMLCALL ML_ListIt_Prev(ML_ListIt it);
00106
00108 ALICEMLAPI void * ALICEMLCALL ML_ListIt_Get(ML_ListIt it);
00109
00111 ALICEMLAPI ML_bool ALICEMLCALL ML_ListIt_IsEqual(ML_ListIt x, ML_ListIt y);
00112
00113 #ifdef __cplusplus
00114 }
00115 #endif
00116
00117 #endif