home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-11-08 | 21.2 KB | 630 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWIters.cpp
- // Release Version: $ 1.0d11 $
- //
- // Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWFrameW.hpp"
-
- #ifndef FWITERS_H
- #include "FWIters.h"
- #endif
-
- #ifndef FWFRAME_H
- #include "FWFrame.h"
- #endif
-
- #ifndef FWFRMING_H
- #include "FWFrming.h"
- #endif
-
- #ifndef FWPROXY_H
- #include "FWProxy.h"
- #endif
-
- #ifndef FWPXYFRM_H
- #include "FWPxyFrm.h"
- #endif
-
- #ifndef FWPRESEN_H
- #include "FWPresen.h"
- #endif
-
- #ifndef FWLNKMGR_H
- #include "FWLnkMgr.h"
- #endif
-
- //========================================================================================
- // Runtime information
- //========================================================================================
-
- #if FW_LIB_EXPORT_PRAGMAS
- #pragma lib_export on
- #endif
-
- #ifdef FW_BUILD_MAC
- #pragma segment framework
- #endif
-
- //========================================================================================
- // class FW_CFrameFacetIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameFacetIterator::FW_CFrameFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameFacetIterator::FW_CFrameFacetIterator(Environment* ev, const FW_CFrame* frame):
- FW_CODFrameFacetIterator(ev, frame->GetODFrame(ev))
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameFacetIterator::~FW_CFrameFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameFacetIterator::~FW_CFrameFacetIterator()
- {
- }
-
- //========================================================================================
- // class FW_CODFrameFacetIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CODFrameFacetIterator::FW_CODFrameFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CODFrameFacetIterator::FW_CODFrameFacetIterator(Environment* ev, ODFrame* odFrame):
- fODFrameFacetIte(NULL)
- {
- fODFrameFacetIte = odFrame->CreateFacetIterator(ev);
-
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CODFrameFacetIterator::~FW_CODFrameFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CODFrameFacetIterator::~FW_CODFrameFacetIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fODFrameFacetIte;
- }
-
- //========================================================================================
- // FW_CFacetIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CFacetIterator::FW_CFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFacetIterator::FW_CFacetIterator(Environment* ev,
- ODFacet* facet,
- ODTraversalType traversalType,
- ODSiblingOrder siblingOrder) :
- fODFacetIterator(NULL)
- {
- fODFacetIterator = facet->CreateFacetIterator(ev, traversalType, siblingOrder);
-
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFacetIterator::~FW_CFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFacetIterator::~FW_CFacetIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fODFacetIterator;
- fODFacetIterator = NULL;
- }
-
- //========================================================================================
- // FW_CPresentationFrameIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFrameIterator::FW_CPresentationFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CPresentationFrameIterator::FW_CPresentationFrameIterator(FW_CPresentation* presentation):
- fIterator(NULL)
- {
- fIterator = new FW_COrderedCollectionIterator(presentation->fFrames);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFrameIterator::~FW_CPresentationFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CPresentationFrameIterator::~FW_CPresentationFrameIterator()
- {
- FW_START_DESTRUCTOR
- delete fIterator;
- }
-
- //========================================================================================
- // FW_CPresentationFacetIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFacetIterator::FW_CPresentationFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CPresentationFacetIterator::FW_CPresentationFacetIterator(Environment* ev, FW_CPresentation* presentation):
- fFacetIterator(NULL),
- fCurrentFacet(NULL),
- fFrameIterator(presentation)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFacetIterator::~FW_CPresentationFacetIterator
- //----------------------------------------------------------------------------------------
-
- FW_CPresentationFacetIterator::~FW_CPresentationFacetIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fFacetIterator;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFacetIterator::First
- //----------------------------------------------------------------------------------------
-
- ODFacet* FW_CPresentationFacetIterator::First(Environment* ev)
- {
- FW_CFrame* frame = fFrameIterator.First();
- fCurrentFacet = ResetFacetIterator(ev, frame);
-
- return fCurrentFacet;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFacetIterator::Next
- //----------------------------------------------------------------------------------------
-
- ODFacet* FW_CPresentationFacetIterator::Next(Environment* ev)
- {
- fCurrentFacet = NULL;
-
- if (fFacetIterator)
- {
- fCurrentFacet = fFacetIterator->Next(ev);
- if (fCurrentFacet == NULL)
- {
- delete fFacetIterator;
- fFacetIterator = NULL;
-
- fCurrentFacet = ResetFacetIterator(ev, fFrameIterator.Next());
- }
- }
-
- return fCurrentFacet;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPresentationFacetIterator::ResetFacetIterator
- //----------------------------------------------------------------------------------------
-
- ODFacet* FW_CPresentationFacetIterator::ResetFacetIterator(Environment* ev, FW_CFrame* frame)
- {
- if (frame != NULL)
- {
- fFacetIterator = FW_NEW(FW_CFrameFacetIterator, (ev, frame));
- return fFacetIterator->First(ev);
- }
-
- return NULL;
- }
-
- //========================================================================================
- // FW_CProxyProxyFrameIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyProxyFrameIterator::FW_CProxyProxyFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CProxyProxyFrameIterator::FW_CProxyProxyFrameIterator(const FW_MProxy* proxy):
- fIterator(NULL)
- {
- fIterator = new FW_COrderedCollectionIterator(proxy->fProxyFrames);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyProxyFrameIterator::~FW_CProxyProxyFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CProxyProxyFrameIterator::~FW_CProxyProxyFrameIterator()
- {
- FW_START_DESTRUCTOR
- delete fIterator;
- }
-
- //========================================================================================
- // FW_CProxyEmbeddedFrameIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::FW_CProxyEmbeddedFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CProxyEmbeddedFrameIterator::FW_CProxyEmbeddedFrameIterator(Environment* ev, const FW_MProxy* proxy) :
- fIterator(proxy),
- fCurrentFrame(NULL)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::~FW_CProxyEmbeddedFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CProxyEmbeddedFrameIterator::~FW_CProxyEmbeddedFrameIterator()
- {
- FW_START_DESTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::First
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::First(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.First();
- fCurrentFrame = PrivNext(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::Next
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::Next(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Next();
- fCurrentFrame = PrivNext(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::Last
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::Last(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Last();
- fCurrentFrame = PrivPrevious(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::Previous
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::Previous(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Previous();
- fCurrentFrame = PrivPrevious(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::PrivNext
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::PrivNext(Environment* ev, FW_CProxyFrame* proxyFrame)
- {
- while (proxyFrame != NULL)
- {
- if (proxyFrame->IsFrameInMemory(ev))
- return proxyFrame->GetFrame(ev);
-
- proxyFrame = fIterator.Next();
- }
-
- return NULL;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CProxyEmbeddedFrameIterator::PrivPrevious
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CProxyEmbeddedFrameIterator::PrivPrevious(Environment* ev, FW_CProxyFrame* proxyFrame)
- {
- while (proxyFrame != NULL)
- {
- if (proxyFrame->IsFrameInMemory(ev))
- return proxyFrame->GetFrame(ev);
-
- proxyFrame = fIterator.Previous();
- }
-
- return NULL;
- }
-
- //========================================================================================
- // FW_CFrameEmbeddedFrameIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::FW_CFrameEmbeddedFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameEmbeddedFrameIterator::FW_CFrameEmbeddedFrameIterator(Environment* ev, const FW_CEmbeddingFrame* frame) :
- fIterator(frame),
- fCurrentFrame(NULL)
- {
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::~FW_CFrameEmbeddedFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameEmbeddedFrameIterator::~FW_CFrameEmbeddedFrameIterator()
- {
- FW_START_DESTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::First
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::First(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.First();
- fCurrentFrame = PrivNext(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::Next
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::Next(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Next();
- fCurrentFrame = PrivNext(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::Last
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::Last(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Last();
- fCurrentFrame = PrivPrevious(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::Previous
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::Previous(Environment* ev)
- {
- FW_CProxyFrame* proxyFrame = fIterator.Previous();
- fCurrentFrame = PrivPrevious(ev, proxyFrame);
- return fCurrentFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::PrivNext
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::PrivNext(Environment* ev, FW_CProxyFrame* proxyFrame)
- {
- while (proxyFrame != NULL)
- {
- if (proxyFrame->IsFrameInMemory(ev))
- return proxyFrame->GetFrame(ev);
-
- proxyFrame = fIterator.Next();
- }
-
- return NULL;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameEmbeddedFrameIterator::PrivPrevious
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CFrameEmbeddedFrameIterator::PrivPrevious(Environment* ev, FW_CProxyFrame* proxyFrame)
- {
- while (proxyFrame != NULL)
- {
- if (proxyFrame->IsFrameInMemory(ev))
- return proxyFrame->GetFrame(ev);
-
- proxyFrame = fIterator.Previous();
- }
-
- return NULL;
- }
-
- //========================================================================================
- // FW_CFrameProxyFrameIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameProxyFrameIterator::FW_CFrameProxyFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameProxyFrameIterator::FW_CFrameProxyFrameIterator(const FW_CEmbeddingFrame* frame) :
- fIterator(NULL)
- {
- fIterator = new FW_COrderedCollectionIterator(frame->fProxyFrames);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CFrameProxyFrameIterator::~FW_CFrameProxyFrameIterator
- //----------------------------------------------------------------------------------------
-
- FW_CFrameProxyFrameIterator::~FW_CFrameProxyFrameIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fIterator;
- fIterator = NULL;
- }
-
- //========================================================================================
- // FW_CEmbeddedODFacetsIterator
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::FW_CEmbeddedODFacetsIterator
- //----------------------------------------------------------------------------------------
-
- FW_CEmbeddedODFacetsIterator::FW_CEmbeddedODFacetsIterator(Environment* ev,
- const FW_MProxy* proxy,
- ODFacet* embeddingFacet,
- ODSiblingOrder siblingOrder) :
- fODFacetIterator(NULL)
- {
- fODFacetIterator = embeddingFacet->CreateFacetIterator(ev, kODChildrenOnly, siblingOrder);
- fProxy = proxy;
- fODFacet = NULL;
-
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::~FW_CEmbeddedODFacetsIterator
- //----------------------------------------------------------------------------------------
-
- FW_CEmbeddedODFacetsIterator::~FW_CEmbeddedODFacetsIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fODFacetIterator;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::First
- //----------------------------------------------------------------------------------------
-
- ODFacet* FW_CEmbeddedODFacetsIterator::First(Environment* ev)
- {
- fODFacet = fODFacetIterator->First(ev);
- FindNext(ev);
- return fODFacet;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::Next
- //----------------------------------------------------------------------------------------
-
- ODFacet* FW_CEmbeddedODFacetsIterator::Next(Environment* ev)
- {
- fODFacet = fODFacetIterator->Next(ev);
- FindNext(ev);
- return fODFacet;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::IsNotComplete
- //----------------------------------------------------------------------------------------
-
- FW_Boolean FW_CEmbeddedODFacetsIterator::IsNotComplete(Environment* ev)
- {
- return fODFacet != NULL;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CEmbeddedODFacetsIterator::FindNext
- //----------------------------------------------------------------------------------------
-
- void FW_CEmbeddedODFacetsIterator::FindNext(Environment* ev)
- {
- while (fODFacet != NULL)
- {
- FW_CAcquiredODPart aqODPart = fODFacet->GetFrame(ev)->AcquirePart(ev);
- if (aqODPart == fProxy->GetEmbeddedPart(ev))
- {
- return;
- }
- fODFacet = fODFacetIterator->Next(ev);
- }
- }
-
- //========================================================================================
- // class FW_CPartPublishIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartPublishIterator::FW_CPartPublishIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartPublishIterator::FW_CPartPublishIterator(const FW_CPart* part) :
- fIterator(NULL)
- {
- FW_CPrivOrderedCollection* theList = NULL;
- if (part->fLinkManager)
- theList = part->fLinkManager->fPublishLinkList;
-
- fIterator = new FW_COrderedCollectionIterator(theList);
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartPublishIterator::~FW_CPartPublishIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartPublishIterator::~FW_CPartPublishIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fIterator;
- fIterator = NULL;
- }
-
- //========================================================================================
- // class FW_CPartSubscribeIterator
- //========================================================================================
-
- //---------------------------------------------------------------------------------------
- // FW_CPartSubscribeIterator::FW_CPartSubscribeIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartSubscribeIterator::FW_CPartSubscribeIterator(const FW_CPart* part) :
- fIterator(NULL)
- {
- FW_CPrivOrderedCollection* theList = NULL;
- if (part->fLinkManager)
- theList = part->fLinkManager->fSubscribeLinkList;
-
- fIterator = new FW_COrderedCollectionIterator(theList);
- FW_END_CONSTRUCTOR
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPartSubscribeIterator::~FW_CPartSubscribeIterator
- //---------------------------------------------------------------------------------------
-
- FW_CPartSubscribeIterator::~FW_CPartSubscribeIterator()
- {
- FW_START_DESTRUCTOR
-
- delete fIterator;
- fIterator = NULL;
- }
-