4688545152246db653424d17f2f46e6fa4c2e93e
[occt.git] / src / TDF / TDF_AttributeIterator.hxx
1 // Created by: DAUTRY Philippe
2 // Copyright (c) 1998-1999 Matra Datavision
3 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 //              -------------------------
17
18 // Version:     0.0
19 //Version       Date            Purpose
20 //              0.0     Feb 16 1998     Creation
21
22 #ifndef TDF_AttributeIterator_HeaderFile
23 #define TDF_AttributeIterator_HeaderFile
24
25 #include <TDF_Attribute.hxx>
26 #include <TDF_Label.hxx>
27 #include <TDF_LabelNodePtr.hxx>
28
29 // DO NOT USE THIS CLASS WITHOUT AUTHORIZATION!
30 //
31 // This class provides a way to iterates on the
32 // up-to-date (current) valid attributes of a label.
33 //
34 // Even a Forgotten attribute may be found if this
35 // option is set. To use this possibility, look at
36 // the constructor.
37 // 
38 // Sorry: nobody needs this iterator but its friends!
39
40 class TDF_AttributeIterator  {
41
42 public:
43
44   // Methods PUBLIC
45   // 
46   Standard_EXPORT TDF_AttributeIterator();
47   Standard_EXPORT TDF_AttributeIterator
48     (const TDF_Label& aLabel,
49      const Standard_Boolean withoutForgotten = Standard_True);
50   Standard_EXPORT TDF_AttributeIterator
51     (const TDF_LabelNodePtr aLabelNode,
52      const Standard_Boolean withoutForgotten = Standard_True);
53   Standard_EXPORT   void Initialize
54     (const TDF_Label& aLabel,
55      const Standard_Boolean withoutForgotten = Standard_True) ;
56   inline   Standard_Boolean More() const;
57   Standard_EXPORT   void Next() ;
58   inline   TDF_Attribute * Value() const;
59
60
61 protected:
62
63  // Methods PROTECTED
64  // 
65
66
67  // Fields PROTECTED
68  //
69
70
71 private: 
72
73  // Methods PRIVATE
74  // 
75   void goToNext (const Handle(TDF_Attribute)& anAttr);
76
77
78  // Fields PRIVATE
79  //
80   TDF_Attribute    * myValue;
81   Standard_Boolean myWithoutForgotten;
82 };
83
84
85 // other inline functions and methods (like "C++: function call" methods)
86 //
87
88 inline Standard_Boolean TDF_AttributeIterator::More() const
89 { return (myValue != 0L); }
90
91 inline TDF_Attribute * TDF_AttributeIterator::Value() const
92 { return myValue; }
93
94 #endif