Salome HOME
PR: last merge from BR_V5_DEV
[modules/kernel.git] / src / SALOMEDSImpl / SALOMEDSImpl_AttributeTreeNode.hxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //  File   : SALOMEDSImpl_AttributeTreeNode.hxx
23 //  Author : Sergey RUIN
24 //  Module : SALOME
25 //
26 #ifndef _SALOMEDSImpl_AttributeTreeNode_HeaderFile
27 #define _SALOMEDSImpl_AttributeTreeNode_HeaderFile
28
29 #include "SALOMEDSImpl_Defines.hxx"
30 #include "DF_Attribute.hxx"
31 #include "DF_Label.hxx"
32 #include <string>
33 #include "SALOMEDSImpl_GenericAttribute.hxx"
34
35 class SALOMEDSIMPL_EXPORT SALOMEDSImpl_AttributeTreeNode : 
36   public SALOMEDSImpl_GenericAttribute 
37 {
38 public:
39
40   const static std::string& GetDefaultTreeID();
41   static SALOMEDSImpl_AttributeTreeNode* Set(const DF_Label& L, const std::string& ID);
42
43   SALOMEDSImpl_AttributeTreeNode();
44   void SetFather(const SALOMEDSImpl_AttributeTreeNode* value);
45   void SetPrevious(const SALOMEDSImpl_AttributeTreeNode* value);
46   void SetNext(const SALOMEDSImpl_AttributeTreeNode* value);
47   void SetFirst(const SALOMEDSImpl_AttributeTreeNode* value);
48   void SetTreeID(const std::string& value);
49
50   bool Append(SALOMEDSImpl_AttributeTreeNode* value);  
51   bool Prepend(SALOMEDSImpl_AttributeTreeNode* value);
52   bool Remove();
53   bool InsertBefore(SALOMEDSImpl_AttributeTreeNode* value);
54   bool InsertAfter(SALOMEDSImpl_AttributeTreeNode* value);
55
56   SALOMEDSImpl_AttributeTreeNode* GetFather() const { return myFather; }
57   SALOMEDSImpl_AttributeTreeNode* GetPrevious() const { return myPrevious; }
58   SALOMEDSImpl_AttributeTreeNode* GetNext() const { return myNext; }
59   SALOMEDSImpl_AttributeTreeNode* GetFirst() const { return myFirst; }
60
61   bool HasFather() { return (myFather); }
62   bool HasPrevious() { return (myPrevious); }
63   bool HasNext() {return (myNext); }
64   bool HasFirst() { return (myFirst); }
65   const std::string& GetTreeID() { return ID(); }
66   int Depth() const;
67   bool IsRoot() const ;
68   SALOMEDSImpl_AttributeTreeNode* Root() const;
69   bool IsAscendant (const SALOMEDSImpl_AttributeTreeNode* ofTN) const;
70   bool IsDescendant(const SALOMEDSImpl_AttributeTreeNode* value) const;
71   bool IsFather(const SALOMEDSImpl_AttributeTreeNode* value) const;
72   bool IsChild(const SALOMEDSImpl_AttributeTreeNode* value) const;
73
74   virtual std::string Save();
75   virtual void Load(const std::string&); 
76   virtual std::string Type(); 
77
78   const std::string& ID() const;
79   void Restore(DF_Attribute* with) ;
80   void Paste(DF_Attribute* into);
81   DF_Attribute* NewEmpty() const;
82   ~SALOMEDSImpl_AttributeTreeNode() {;}
83
84   virtual void AfterAddition();
85   virtual void BeforeForget();
86
87 private:
88
89   std::string myTreeID; 
90   SALOMEDSImpl_AttributeTreeNode* myFather;
91   SALOMEDSImpl_AttributeTreeNode* myPrevious;
92   SALOMEDSImpl_AttributeTreeNode* myNext;
93   SALOMEDSImpl_AttributeTreeNode* myFirst;
94
95   friend class SALOMEDSImpl_ChildNodeIterator;
96
97 };
98
99 #endif