home *** CD-ROM | disk | FTP | other *** search
- /*
- File: TempIter.h
-
- Contains: Template utilities for OpenDoc iterators
-
- Owned by: Jens Alfke
-
- Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
-
- Theory of Operation:
-
- These are specific TempObj utilities (see the "Temporary Objects"
- tech note) for OpenDoc iterators. They are intended to be used in
- this fashion:
-
- extern void DoSomethingWith( ODFoo* );
- extern void OrSomethingWith( ODFoo* );
- ...
- ODBazz *bazz;
- ...
- for( TempODFooIterator iter(ev,bazz); iter.Current(); iter.Next() ) {
- DoSomethingWith(iter);
- OrSomethingWith(iter.Current());
- // within the loop you can use iter.Current() or just iter
- // to refer to the current object it's pointing to.
- }
-
- True C++meisters can even do the for loop like this:
-
- for( TempODFooIterator iter(ev,bazz); iter; iter++ )
-
- If you wish you can also call First() to reset the iterator to
- the beginning and return the first element.
-
- */
-
-
- #ifndef _TEMPITER_
- #define _TEMPITER_
-
-
- #ifndef _TEMPOBJ_
- #include "TempObj.h"
- #endif
-
- #ifndef SOM_ODWindow_xh
- #include <Window.xh>
- #endif
-
- #ifndef SOM_ODDragAndDrop_xh
- #include <DragDrp.xh>
- #endif
-
-
- struct Environment;
- class ODFrame;
- class ODFacet;
- class ODFocusSet;
- class ODTypeList;
-
-
- class TempODFacetIterator :public BaseTempObj
- {
- public:
- TempODFacetIterator( Environment*, ODFacet*, ODTraversalType, ODSiblingOrder );
- ODFacet* First( );
- ODFacet* Current( ) {return fCurrent;}
- ODFacet* Next( );
- ODBoolean IsNotComplete( );
- operator ODFacet*() {return fCurrent;}
- ODFacet* operator ->() {return fCurrent;}
- ODFacet* operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODFacet* fCurrent;
- };
-
-
- class TempODFrameFacetIterator :public BaseTempObj
- {
- public:
- TempODFrameFacetIterator( Environment*, ODFrame* );
- ODFacet* First( );
- ODFacet* Current( ) {return fCurrent;}
- ODFacet* Next( );
- ODBoolean IsNotComplete( );
- operator ODFacet*() {return fCurrent;}
- ODFacet* operator ->() {return fCurrent;}
- ODFacet* operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODFacet* fCurrent;
- };
-
-
- class TempODEmbeddedFramesIterator :public BaseTempObj
- {
- public:
- TempODEmbeddedFramesIterator( Environment*, ODPart*, ODFrame* );
- ODFrame* First( );
- ODFrame* Current( ) {return fCurrent;}
- ODFrame* Next( );
- ODBoolean IsNotComplete( );
- operator ODFrame*() {return fCurrent;}
- ODFrame* operator ->() {return fCurrent;}
- ODFrame* operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODFrame* fCurrent;
- };
-
-
- class TempODWindowIterator :public BaseTempObj
- {
- public:
- TempODWindowIterator( Environment*, ODWindowState* );
- ODWindow* First( );
- ODWindow* Current( ) {return fCurrent;}
- ODWindow* Next( );
- ODBoolean IsNotComplete( );
- operator ODWindow*() {return fCurrent;}
- ODWindow* operator ->() {return fCurrent;}
- ODWindow* operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODWindow* fCurrent;
- };
-
-
- class TempODFocusSetIterator :public BaseTempObj
- {
- public:
- TempODFocusSetIterator( Environment*, ODFocusSet* );
- ODTypeToken First( );
- ODTypeToken Current( ) {return fCurrent;}
- ODTypeToken Next( );
- ODBoolean IsNotComplete( );
-
- operator ODTypeToken() {return fCurrent;}
- ODTypeToken operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODTypeToken fCurrent;
- };
-
-
- class TempODTypeListIterator :public BaseTempObj
- {
- public:
- TempODTypeListIterator( Environment*, ODTypeList* );
- ~TempODTypeListIterator( );
- ODType First( );
- ODType Current( ) {return fCurrent;}
- ODType Next( );
- ODBoolean IsNotComplete( );
- operator ODType() {return fCurrent;}
- ODType operator++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODType fCurrent;
- };
-
-
- #ifdef _OD_IMPL_
-
- class TempODDragItemIterator :public BaseTempObj
- {
- public:
- TempODDragItemIterator( Environment*, ODDragAndDrop* );
- ODStorageUnit* First( );
- ODStorageUnit* Current( ) {return fCurrent;}
- ODStorageUnit* Next( );
- ODBoolean IsNotComplete( );
- operator ODStorageUnit*() {return fCurrent;}
- ODStorageUnit* operator ->() {return fCurrent;}
- ODStorageUnit* operator ++() {return this->Next();}
-
- private:
- Environment* fEv;
- ODStorageUnit* fCurrent;
- };
-
- #endif /*_OD_IMPL_*/
-
-
- #endif /*_TEMPITER_*/
-