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