1 //+-------------------------------------------------------------------------
2 //
3 //  For conditions of distribution and use, see copyright notice
4 //  in Flashpix.h
5 //
6 //  Copyright (c) 1999 Digital Imaging Group, Inc.
7 //
8 //  Classes:    CMSFIterator - Main iterator class for MSF
9 //
10 //  Functions:  None.
11 //
12 //--------------------------------------------------------------------------
13 
14 #ifndef __MSFITER_HXX__
15 #define __MSFITER_HXX__
16 
17 #include "msf.hxx"
18 
19 class CDirectory;
20 
21 //+-------------------------------------------------------------------------
22 //
23 //  Class:      CMSFIterator
24 //
25 //  Purpose:    Iterator object provided by multi-stream
26 //
27 //  Interface:  See below
28 //
29 //--------------------------------------------------------------------------
30 
31 class CMSFIterator
32 {
33     public:
34         inline CMSFIterator(CDirectory *pdir, SID sidChild);
35         SCODE GetNext(STATSTGW *pstat);
36   SCODE BufferGetNext(SIterBuffer *pib);
37         inline SCODE Rewind();
38 
39         inline void  Release();
40 
41     private:
42         CDirectory *_pdir;
43   SID _sidChildRoot;
44         CDfName _dfnCurrent;
45 };
46 
CMSFIterator(CDirectory * pdir,SID sidChild)47 inline CMSFIterator::CMSFIterator(CDirectory *pdir, SID sidChild)
48 {
49     _pdir = pdir;
50     _sidChildRoot = sidChild;
51 }
52 
53 //+-------------------------------------------------------------------------
54 //
55 //  Member:     CMSFIterator::Rewind, public
56 //
57 //  Synposis:   Reset iterator to first position.
58 //
59 //  Effects:    Modifies _sidCurrent
60 //
61 //  Arguments:  Void.
62 //
63 //  Returns:    S_OK
64 //
65 //  Notes:
66 //
67 //---------------------------------------------------------------------------
68 
Rewind()69 inline SCODE CMSFIterator::Rewind()
70 {
71     msfDebugOut((DEB_TRACE,"In CMSFIterator::Rewind()\n"));
72     _dfnCurrent.Set((WORD)0, (BYTE *)NULL);
73     msfDebugOut((DEB_TRACE,"Leaving CMSFIterator::Rewind()\n"));
74     return S_OK;
75 }
76 
77 //+-------------------------------------------------------------------------
78 //
79 //  Method:     CMSFIterator::Release, public
80 //
81 //  Synopsis:   Release this MSFIterator instance
82 //
83 //  Arguments:  None.
84 //
85 //  Returns:    Void.
86 //
87 //--------------------------------------------------------------------------
88 
Release()89 inline void CMSFIterator::Release()
90 {
91     delete this;
92 }
93 
94 #endif  //__MSFITER_HXX__
95