00001 /***************************************************************** 00002 | 00003 | Atomix - Iterator Interface 00004 | 00005 | (c) 2002-2006 Gilles Boccon-Gibod 00006 | Author: Gilles Boccon-Gibod (bok@bok.net) 00007 | 00008 ****************************************************************/ 00013 #ifndef _ATX_ITERATOR_H_ 00014 #define _ATX_ITERATOR_H_ 00015 00016 /*---------------------------------------------------------------------- 00017 | includes 00018 +---------------------------------------------------------------------*/ 00019 #include "AtxInterfaces.h" 00020 #include "AtxTypes.h" 00021 00022 /*---------------------------------------------------------------------- 00023 | error codes 00024 +---------------------------------------------------------------------*/ 00025 #define ATX_ERROR_END_OF_ITERATION (ATX_ERROR_BASE_ITERATOR - 0) 00026 00027 /*---------------------------------------------------------------------- 00028 | ATX_Iterator interface 00029 +---------------------------------------------------------------------*/ 00030 ATX_DECLARE_INTERFACE(ATX_Iterator) 00040 ATX_BEGIN_INTERFACE_DEFINITION(ATX_Iterator) 00052 ATX_Result (*GetNext)(ATX_Iterator* self, ATX_Any* element); 00053 00062 ATX_Result (*Reset)(ATX_Iterator* self); 00063 ATX_END_INTERFACE_DEFINITION 00064 00065 /*---------------------------------------------------------------------- 00066 | convenience macros 00067 +---------------------------------------------------------------------*/ 00072 #define ATX_Iterator_GetNext(self, element) \ 00073 ATX_INTERFACE(self)->GetNext(self, element) 00074 00079 #define ATX_Iterator_Reset(self) \ 00080 ATX_INTERFACE(self)->Reset(self) 00081 00082 #endif /* _ATX_ITERATOR_H_ */ 00083 00084