summaryrefslogtreecommitdiff
path: root/inc/XCAFDoc_GraphNode.hxx
blob: 6814380bb4e4e4a1fb33cf06f8b22d5b0622d0f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _XCAFDoc_GraphNode_HeaderFile
#define _XCAFDoc_GraphNode_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_XCAFDoc_GraphNode_HeaderFile
#include <Handle_XCAFDoc_GraphNode.hxx>
#endif

#ifndef _XCAFDoc_GraphNodeSequence_HeaderFile
#include <XCAFDoc_GraphNodeSequence.hxx>
#endif
#ifndef _Standard_GUID_HeaderFile
#include <Standard_GUID.hxx>
#endif
#ifndef _TDF_Attribute_HeaderFile
#include <TDF_Attribute.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Handle_TDF_Attribute_HeaderFile
#include <Handle_TDF_Attribute.hxx>
#endif
#ifndef _Handle_TDF_RelocationTable_HeaderFile
#include <Handle_TDF_RelocationTable.hxx>
#endif
#ifndef _Handle_TDF_DataSet_HeaderFile
#include <Handle_TDF_DataSet.hxx>
#endif
#ifndef _Standard_OStream_HeaderFile
#include <Standard_OStream.hxx>
#endif
class TDF_Label;
class Standard_GUID;
class TDF_Attribute;
class TDF_RelocationTable;
class TDF_DataSet;


//! This attribute allow user multirelation tree of labels. <br>
//! This GraphNode is experimental Graph that not control looping and redundance. <br>
class XCAFDoc_GraphNode : public TDF_Attribute {

public:

  //! class  methods working on the node <br>
//!          =================================== <br>//! Shortcut to search  a Graph node attribute with default <br>
//!          GraphID.  Returns true if found. <br>
  Standard_EXPORT   static  Standard_Boolean Find(const TDF_Label& L,Handle(XCAFDoc_GraphNode)& G) ;
  //! Finds or Creates a GraphNode attribute on the label <L> <br>
//!           with  the  default Graph  ID,   returned by the method <br>
//!          <GetDefaultGraphID>.  Returns the created/found     GraphNode <br>
//!          attribute. <br>
  Standard_EXPORT   static  Handle_XCAFDoc_GraphNode Set(const TDF_Label& L) ;
  //! Finds  or Creates a   GraphNode attribute on  the label <br>
//!          <L>, with an   explicit tree ID.  <ExplicitGraphID>  is <br>
//!          the  ID   returned by    <TDF_Attribute::ID>   method. <br>
//!          Returns the found/created GraphNode attribute. <br>
  Standard_EXPORT   static  Handle_XCAFDoc_GraphNode Set(const TDF_Label& L,const Standard_GUID& ExplicitGraphID) ;
  //!  returns a default  Graph ID.  this  ID is  used by the <br>
//!          <Set> method without explicit tree ID. <br>//! Instance methods: <br>
//!          ================ <br>
  Standard_EXPORT   static const Standard_GUID& GetDefaultGraphID() ;
  
  Standard_EXPORT   XCAFDoc_GraphNode();
  
  Standard_EXPORT     void SetGraphID(const Standard_GUID& explicitID) ;
  //! Set GraphNode <F> as father of me and returns index of <F> <br>
//!          in Sequence that containing Fathers GraphNodes. <br>
//!          return index of <F> from GraphNodeSequnece <br>
  Standard_EXPORT     Standard_Integer SetFather(const Handle(XCAFDoc_GraphNode)& F) ;
  //! Set GraphNode <Ch> as child of me and returns index of <Ch> <br>
//!          in Sequence that containing Children GraphNodes. <br>
//!          return index of <Ch> from GraphNodeSequnece <br>
  Standard_EXPORT     Standard_Integer SetChild(const Handle(XCAFDoc_GraphNode)& Ch) ;
  //! Remove <F> from Fathers GraphNodeSequence. <br>
//!          and remove link between father and child. <br>
  Standard_EXPORT     void UnSetFather(const Handle(XCAFDoc_GraphNode)& F) ;
  //! Remove Father GraphNode by index from Fathers GraphNodeSequence. <br>
//!          and remove link between father and child. <br>
  Standard_EXPORT     void UnSetFather(const Standard_Integer Findex) ;
  //! Remove <Ch> from GraphNodeSequence. <br>
//!          and remove link between father and child. <br>
  Standard_EXPORT     void UnSetChild(const Handle(XCAFDoc_GraphNode)& Ch) ;
  //! Remove Child GraphNode by index from Children GraphNodeSequence. <br>
//!          and remove link between father and child. <br>
  Standard_EXPORT     void UnSetChild(const Standard_Integer Chindex) ;
  //! Return GraphNode by index from GraphNodeSequence. <br>
  Standard_EXPORT     Handle_XCAFDoc_GraphNode GetFather(const Standard_Integer Findex) const;
  //! Return GraphNode by index from GraphNodeSequence. <br>
  Standard_EXPORT     Handle_XCAFDoc_GraphNode GetChild(const Standard_Integer Chindex) const;
  //! Return index of <F>, or zero if there is no such Graphnode. <br>
  Standard_EXPORT     Standard_Integer FatherIndex(const Handle(XCAFDoc_GraphNode)& F) const;
  //! Return index of <Ch>, or zero if there is no such Graphnode. <br>
  Standard_EXPORT     Standard_Integer ChildIndex(const Handle(XCAFDoc_GraphNode)& Ch) const;
  //! returns TRUE if <me> is father of <Ch>. <br>
  Standard_EXPORT     Standard_Boolean IsFather(const Handle(XCAFDoc_GraphNode)& Ch) const;
  //! returns TRUE if <me> is child of <F>. <br>
  Standard_EXPORT     Standard_Boolean IsChild(const Handle(XCAFDoc_GraphNode)& F) const;
  //! return Number of Fathers GraphNodes. <br>
  Standard_EXPORT     Standard_Integer NbFathers() const;
  //! return Number of Childrens GraphNodes. <br>//! Implementation of Attribute methods: <br>
//!          =================================== <br>
  Standard_EXPORT     Standard_Integer NbChildren() const;
  //! Returns the Graph ID (default or explicit one depending <br>
//!          onthe Set method used). <br>
  Standard_EXPORT    const Standard_GUID& ID() const;
  
  Standard_EXPORT   virtual  void Restore(const Handle(TDF_Attribute)& with) ;
  
  Standard_EXPORT   virtual  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
  
  Standard_EXPORT   virtual  Handle_TDF_Attribute NewEmpty() const;
  
  Standard_EXPORT   virtual  void References(const Handle(TDF_DataSet)& aDataSet) const;
  
  Standard_EXPORT   virtual  Standard_OStream& Dump(Standard_OStream& anOS) const;
  
  Standard_EXPORT   virtual  void BeforeForget() ;




  DEFINE_STANDARD_RTTI(XCAFDoc_GraphNode)

protected:




private: 

  //! remove link between father and child. <br>
  Standard_EXPORT     void UnSetFatherlink(const Handle(XCAFDoc_GraphNode)& F) ;
  //! remove link between father and child. <br>
  Standard_EXPORT     void UnSetChildlink(const Handle(XCAFDoc_GraphNode)& C) ;

XCAFDoc_GraphNodeSequence myFathers;
XCAFDoc_GraphNodeSequence myChildren;
Standard_GUID myGraphID;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif