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_COMMAND_LIST_H__
00028 #define __ALICEML_COMMAND_LIST_H__
00029
00030 #include "aliceml.h"
00031 #include "aliceml_command.h"
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00038 #define aliceml_foreach_command_list(message, it) ¥
00039 for (it = ML_CommandList_GetCurrentBegin((message)->command_list); ¥
00040 !ML_CommandListIt_IsEqual( ¥
00041 (it), ML_CommandList_GetCurrentEnd((message)->command_list)); ¥
00042 it = ML_CommandListIt_Next(it))
00043
00047 typedef struct ML_CommandList ML_CommandList;
00048
00056 typedef struct ML_CommandListIt {
00057 ML_Command *ptr;
00058 } ML_CommandListIt;
00059
00061 ALICEMLAPI ML_Command * ALICEMLCALL
00062 ML_CommandListIt_Get(ML_CommandListIt it);
00063
00065 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00066 ML_CommandListIt_Next(ML_CommandListIt it);
00067
00069 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00070 ML_CommandListIt_Prev(ML_CommandListIt it);
00071
00073 ALICEMLAPI ML_bool ALICEMLCALL
00074 ML_CommandListIt_IsBegin(ML_CommandList *self, ML_CommandListIt it);
00075
00077 ALICEMLAPI ML_bool ALICEMLCALL
00078 ML_CommandListIt_IsEnd(ML_CommandList *self, ML_CommandListIt it);
00079
00081 ALICEMLAPI ML_bool ALICEMLCALL
00082 ML_CommandListIt_IsCurrentBegin(ML_CommandList *self, ML_CommandListIt it);
00083
00085 ALICEMLAPI ML_bool ALICEMLCALL
00086 ML_CommandListIt_IsCurrentEnd(ML_CommandList *self, ML_CommandListIt it);
00087
00089 ALICEMLAPI ML_bool ALICEMLCALL
00090 ML_CommandListIt_IsEqual(ML_CommandListIt x, ML_CommandListIt y);
00091
00092
00094 ALICEMLAPI ML_CommandList * ALICEMLCALL
00095 ML_CommandList_Create();
00096
00098 ALICEMLAPI void ALICEMLCALL
00099 ML_CommandList_Destroy(ML_CommandList *self);
00100
00102 ALICEMLAPI void ALICEMLCALL
00103 ML_CommandList_Dump(ML_CommandList *self, FILE *fp, ML_bool only_current);
00104
00106 ALICEMLAPI ML_size ALICEMLCALL
00107 ML_CommandList_GetSize(ML_CommandList *self);
00108
00110 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00111 ML_CommandList_GetBegin(ML_CommandList *self);
00112
00114 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00115 ML_CommandList_GetEnd(ML_CommandList *self);
00116
00118 ALICEMLAPI int ALICEMLCALL
00119 ML_CommandList_Insert(ML_CommandList *self, ML_CommandListIt where,
00120 ML_Command *command);
00121
00123 ALICEMLAPI int ALICEMLCALL
00124 ML_CommandList_PushBack(ML_CommandList *self, ML_Command *command);
00125
00127 ALICEMLAPI int ALICEMLCALL
00128 ML_CommandList_Clear(ML_CommandList *self);
00129
00131 ALICEMLAPI int ALICEMLCALL
00132 ML_CommandList_Remove(ML_CommandList *self, ML_CommandListIt where);
00133
00135 ALICEMLAPI int ALICEMLCALL
00136 ML_CommandList_RemoveRange(ML_CommandList *self, ML_CommandListIt begin,
00137 ML_CommandListIt end);
00138
00140 ALICEMLAPI int ALICEMLCALL
00141 ML_CommandList_GetCurrentSize(ML_CommandList *self);
00142
00144 ALICEMLAPI ML_bool ALICEMLCALL
00145 ML_CommandList_IsCurrentEmpty(ML_CommandList *self);
00146
00148 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00149 ML_CommandList_GetCurrentBegin(ML_CommandList *self);
00150
00152 ALICEMLAPI int ALICEMLCALL
00153 ML_CommandList_SetCurrentBegin(ML_CommandList *self, ML_CommandListIt it);
00154
00156 ALICEMLAPI ML_CommandListIt ALICEMLCALL
00157 ML_CommandList_GetCurrentEnd(ML_CommandList *self);
00158
00160 ALICEMLAPI int ALICEMLCALL
00161 ML_CommandList_SetCurrentEnd(ML_CommandList *self, ML_CommandListIt it);
00162
00164 ALICEMLAPI int ALICEMLCALL
00165 ML_CommandList_MoveCurrentBeginToEnd(ML_CommandList *self);
00166
00167 #ifdef __cplusplus
00168 }
00169 #endif
00170
00171 #endif