0029590: Coding - avoid usage of Standard_EXPORT attribute for inline methods
[occt.git] / src / TFunction / TFunction_Logbook.hxx
1 // Created on: 1999-07-19
2 // Created by: Denis PASCAL
3 // Copyright (c) 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 _TFunction_Logbook_HeaderFile
18 #define _TFunction_Logbook_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <TDF_LabelMap.hxx>
25 #include <TDF_Attribute.hxx>
26 #include <Standard_Boolean.hxx>
27 #include <Standard_OStream.hxx>
28 class TDF_Label;
29 class Standard_GUID;
30 class TFunction_Logbook;
31 class TDF_Attribute;
32 class TDF_RelocationTable;
33
34 class TFunction_Logbook;
35 DEFINE_STANDARD_HANDLE(TFunction_Logbook, TDF_Attribute)
36
37 //! This class contains information which is written and
38 //! read during the solving process. Information is divided
39 //! in three groups.
40 //!
41 //! * Touched Labels  (modified by the end user),
42 //! * Impacted Labels (modified during execution of the function),
43 //! * Valid Labels    (within the valid label scope).
44 class TFunction_Logbook : public TDF_Attribute
45 {
46 public:
47   
48   //! Finds or Creates a TFunction_Logbook attribute at the root label accessed by <Access>.
49   //! Returns the attribute.
50   Standard_EXPORT static Handle(TFunction_Logbook) Set(const TDF_Label& Access);
51   
52   //! Returns the GUID for logbook attribute.
53   Standard_EXPORT static const Standard_GUID& GetID();
54   
55
56   //! The methods manipulating the data
57   //! (touched, impacted and valid labels)
58   //  ====================================
59
60   //! Constructor (empty).
61   Standard_EXPORT TFunction_Logbook();
62   
63   //! Clears this logbook to its default, empty state.
64   Standard_EXPORT void Clear();
65   Standard_EXPORT Standard_Boolean IsEmpty() const;
66   
67   //! Sets the label L as a touched label in this logbook.
68   //! In other words, L is understood to have been modified by the end user.
69   void SetTouched (const TDF_Label& L);
70   
71   //! Sets the label L as an impacted label in this logbook.
72   //! This method is called by execution of the function driver.
73   Standard_EXPORT void SetImpacted (const TDF_Label& L, const Standard_Boolean WithChildren = Standard_False);
74   
75   //! Sets the label L as a valid label in this logbook.
76   Standard_EXPORT void SetValid (const TDF_Label& L, const Standard_Boolean WithChildren = Standard_False);
77   Standard_EXPORT void SetValid (const TDF_LabelMap& Ls);
78   
79   //! Returns True if the label L is touched  or impacted. This method
80   //! is called by <TFunction_FunctionDriver::MustExecute>.
81   //! If <WithChildren> is set to true, the method checks
82   //! all the sublabels of <L> too.
83   Standard_EXPORT Standard_Boolean IsModified (const TDF_Label& L, const Standard_Boolean WithChildren = Standard_False) const;
84
85   //! Returns the map of touched labels in this logbook.
86   //! A touched label is the one modified by the end user.
87   const TDF_LabelMap& GetTouched() const;
88
89   //! Returns the map of impacted labels contained in this logbook.
90   const TDF_LabelMap& GetImpacted() const;
91   
92   //! Returns the map of valid labels in this logbook.
93   const TDF_LabelMap& GetValid() const;
94   Standard_EXPORT void GetValid(TDF_LabelMap& Ls) const;
95   
96   //! Sets status of execution.
97   void Done (const Standard_Boolean status);
98   
99   //! Returns status of execution.
100   Standard_Boolean IsDone() const;
101
102
103   //! The methods inherited from TDF_Attribute
104   //  ========================================
105
106   //! Returns the ID of the attribute.
107   Standard_EXPORT const Standard_GUID& ID() const Standard_OVERRIDE;
108   
109   //! Undos (and redos) the attribute.
110   Standard_EXPORT virtual void Restore (const Handle(TDF_Attribute)& with) Standard_OVERRIDE;
111   
112   //! Pastes the attribute to another label.
113   Standard_EXPORT virtual void Paste (const Handle(TDF_Attribute)& into, 
114                                       const Handle(TDF_RelocationTable)& RT) const Standard_OVERRIDE;
115   
116   //! Returns a new empty instance of the attribute.
117   Standard_EXPORT virtual Handle(TDF_Attribute) NewEmpty() const Standard_OVERRIDE;
118   
119   //! Prints th data of the attributes (touched, impacted and valid labels).
120   Standard_EXPORT virtual Standard_OStream& Dump (Standard_OStream& anOS) const Standard_OVERRIDE;
121
122
123 private:
124
125   TDF_LabelMap myTouched;
126   TDF_LabelMap myImpacted;
127   TDF_LabelMap myValid;
128   Standard_Boolean isDone;
129 };
130
131 #include <TFunction_Logbook.lxx>
132
133 #endif // _TFunction_Logbook_HeaderFile