/****************************************************************************/ /** Microsoft OS/2 LAN Manager **/ /** Copyright(c) Microsoft Corp., 1990 **/ /****************************************************************************/ /****************************************************************************\ iter.hxx LM 3.0 abstract iterator class This file contains the definition for the abstract iterator class that other iterators should inherit from and emulate. FILE HISTORY: johnl 27-Jun-1990 Created \****************************************************************************/ /****************************************************************************\ * *NAME: ITER * *WORKBOOK: ITER * *SYNOPSIS: Abstract iterator class * *INTERFACE: ITER_OF(type) - Defines an abstract iterator of type (generally * used by child classes). * * DECLARE_ITER_OF(type) - Produces declaration for an iterator * of type "type". * * virtual void Reset( ) - Puts iterator in the "initial" * state (i.e., as if it had just * been declared). * * virtual type* Next( ) - Returns "next" item in collection, * returns NULL if the coll. is empty * or we have iterated past last item. * * virtual type* operator()() - Synonym for Next() * *PARENT: * *USES: NONE * *CAVEATS: NONE * * * *HISTORY: * Johnl 27-Jun-1990 * * \****************************************************************************/ #ifndef _ITER_HXX_ #define _ITER_HXX_ #define ITER_OF(type) iter_of_##type #define DECL_ITER_OF(type,dec) \ class dec ITER_OF(type) \ { \ public: \ virtual void Reset( void ) = 0 ; \ virtual type* Next( void ) = 0 ; \ \ }; \ #define DECLARE_ITER_OF(type) \ DECL_ITER_OF(type,DLL_TEMPLATE) #endif //_ITER_HXX_