1 // Created on: 1992-03-18
2 // Created by: Stephan GARNAUD
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16 
17 #ifndef _OSD_FileIterator_HeaderFile
18 #define _OSD_FileIterator_HeaderFile
19 
20 #include <OSD_File.hxx>
21 #include <OSD_Error.hxx>
22 #include <TCollection_AsciiString.hxx>
23 
24 class OSD_OSDError;
25 class OSD_Path;
26 class OSD_File;
27 
28 //! Manages a breadth-only search for files in the specified Path.
29 //! There is no specific order of results.
30 class OSD_FileIterator
31 {
32 public:
33 
34   DEFINE_STANDARD_ALLOC
35 
36 
37   //! Instantiates Object as empty Iterator;
38   Standard_EXPORT OSD_FileIterator();
39 
40   //! Instantiates Object as Iterator;
41   //! Wild-card "*" can be used in Mask the same way it
42   //! is used by unix shell for file names
43   Standard_EXPORT OSD_FileIterator(const OSD_Path& where, const TCollection_AsciiString& Mask);
44 
45   Standard_EXPORT void Destroy();
~OSD_FileIterator()46 ~OSD_FileIterator()
47 {
48   Destroy();
49 }
50 
51   //! Initializes the current File Iterator
52   Standard_EXPORT void Initialize (const OSD_Path& where, const TCollection_AsciiString& Mask);
53 
54   //! Returns TRUE if there are other items using the 'Tree'
55   //! method.
56   Standard_EXPORT Standard_Boolean More();
57 
58   //! Sets the iterator to the next item.
59   //! Returns the item value corresponding to the current
60   //! position of the iterator.
61   Standard_EXPORT void Next();
62 
63   //! Returns the next file found .
64   Standard_EXPORT OSD_File Values();
65 
66   //! Returns TRUE if an error occurs
67   Standard_EXPORT Standard_Boolean Failed() const;
68 
69   //! Resets error counter to zero
70   Standard_EXPORT void Reset();
71 
72   //! Raises OSD_Error
73   Standard_EXPORT void Perror();
74 
75   //! Returns error number if 'Failed' is TRUE.
76   Standard_EXPORT Standard_Integer Error() const;
77 
78 private:
79 
80   OSD_File TheIterator;
81   Standard_Boolean myFlag;
82   TCollection_AsciiString myMask;
83   TCollection_AsciiString myPlace;
84   OSD_Error myError;
85 
86   // platform-specific fields
87 #ifdef _WIN32
88   Standard_Address myHandle;
89   Standard_Address myData;
90   Standard_Boolean myFirstCall;
91 #else
92   Standard_Address myDescr;
93   Standard_Address myEntry;
94   Standard_Integer myInit;
95 #endif
96 };
97 
98 #endif // _OSD_FileIterator_HeaderFile
99