home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 4.0 KB | 123 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWLnkIte.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWFrameW.hpp"
-
- #ifndef FWLNKITE_H
- #include "FWLnkIte.h"
- #endif
-
- //========================================================================================
- // Runtime information
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment odflinking
- #endif
-
- //========================================================================================
- // class FW_CPartLinkSourceIterator
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CPartLinkSourceIterator)
-
- //========================================================================================
- // class FW_CPartLinkDestIterator
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CPartLinkDestIterator)
-
- //========================================================================================
- // class FW_CLinkMgrLinkSourceIterator
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CLinkMgrLinkSourceIterator)
-
- //========================================================================================
- // class FW_CLinkMgrLinkDestIterator
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CLinkMgrLinkDestIterator)
-
- //========================================================================================
- // class FW_CLinkIterator
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CLinkIterator)
-
- //---------------------------------------------------------------------------------------
- // FW_CLinkIterator constructor
- //---------------------------------------------------------------------------------------
-
- FW_CLinkIterator::FW_CLinkIterator(FW_CLinkManager* linkMgr)
- : fFirstIterator(linkMgr),
- fSecondIterator(linkMgr),
- fCurrentLink(NULL),
- fIteratingSecondList(false)
- {
- // iterate link sources first, then link destinations
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CLinkIterator destructor
- //---------------------------------------------------------------------------------------
-
- FW_CLinkIterator::~FW_CLinkIterator()
- {
- FW_START_DESTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CLinkIterator::FirstLink
- //---------------------------------------------------------------------------------------
- FW_CLink* FW_CLinkIterator::FirstLink()
- {
- fCurrentLink = fFirstIterator.First();
- if (fCurrentLink == NULL)
- {
- // no items in first list; switch to second list
- fIteratingSecondList = true;
- fCurrentLink = fSecondIterator.First();
- }
- return fCurrentLink;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CLinkIterator::IsNotComplete
- //---------------------------------------------------------------------------------------
- FW_Boolean FW_CLinkIterator::IsNotComplete()
- {
- return fCurrentLink != NULL;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CLinkIterator::NextLink
- //---------------------------------------------------------------------------------------
- FW_CLink* FW_CLinkIterator::NextLink()
- {
- if (fIteratingSecondList)
- {
- fCurrentLink = fSecondIterator.Next();
- }
- else // iterating first list
- {
- fCurrentLink = fFirstIterator.Next();
- if (fCurrentLink == NULL)
- {
- // no items left in first list; switch to second list
- fIteratingSecondList = true;
- fCurrentLink = fSecondIterator.First();
- }
- }
- return fCurrentLink;
- }
-
-
-