Salome HOME
refs #1330: basic implementation of the not zoomable polyline arrows
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.cxx
index 8d4c2afb413b600cb7e6f9ea336a029ba5b6e8ce..a8222673200ca513b032e57beb941ce7a15c1930 100644 (file)
 #include "HYDRO_trace.hxx"
 
 HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects()
-  : NCollection_Sequence<Handle_HYDROData_Entity>()
+  : NCollection_Sequence<Handle(HYDROData_Entity)>()
 {
 }
 
 HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects( const HYDROData_SequenceOfObjects& theSequence )
-  : NCollection_Sequence<Handle_HYDROData_Entity>( theSequence )
+  : NCollection_Sequence<Handle(HYDROData_Entity)>( theSequence )
 {
 }
 
-HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects( const NCollection_Sequence<Handle_HYDROData_Entity>& theSequence )
-  : NCollection_Sequence<Handle_HYDROData_Entity>( theSequence )
+HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects( const NCollection_Sequence<Handle(HYDROData_Entity)>& theSequence )
+  : NCollection_Sequence<Handle(HYDROData_Entity)>( theSequence )
 {
 }
 
-IMPLEMENT_STANDARD_HANDLE(HYDROData_Entity,MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Entity,MMgt_TShared)
 
 // is equal function for unique object mapping
-bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Handle_HYDROData_Entity& theObj2)
+bool IsEqual(const Handle(HYDROData_Entity)& theObj1, const Handle(HYDROData_Entity)& theObj2)
 {
   if ( !theObj1.IsNull() && !theObj2.IsNull() )
     return theObj1->Label() == theObj2->Label();
@@ -303,7 +302,7 @@ HYDROData_SequenceOfObjects HYDROData_Entity::GetAllReferenceObjects() const
   return HYDROData_SequenceOfObjects();
 }
 
-Standard_Boolean HYDROData_Entity::GetZLevel( Standard_Integer& theLevel ) const
+bool HYDROData_Entity::GetZLevel( Standard_Integer& theLevel ) const
 {
   theLevel = -1;
 
@@ -314,11 +313,11 @@ Standard_Boolean HYDROData_Entity::GetZLevel( Standard_Integer& theLevel ) const
     if ( aLabel.FindAttribute( TDataStd_Integer::GetID(), anIntVal ) )
     {
       theLevel = anIntVal->Get();
-      return Standard_True;
+      return true;
     }
   }
 
-  return Standard_False;
+  return false;
 }
 
 void HYDROData_Entity::SetZLevel( const Standard_Integer& theLevel )
@@ -335,7 +334,7 @@ void HYDROData_Entity::RemoveZLevel()
 
 void HYDROData_Entity::SetLabel( const TDF_Label& theLabel )
 {
-  myLab = theLabel;
+  myLab = theLabel; 
 }
 
 void HYDROData_Entity::SaveByteArray( const int   theTag, 
@@ -383,7 +382,7 @@ int HYDROData_Entity::NbReferenceObjects( const int theTag ) const
   return aRefs.IsNull() ? 0 : aRefs->Extent();
 }
 
-bool HYDROData_Entity::HasReference( const Handle_HYDROData_Entity& theObj,
+bool HYDROData_Entity::HasReference( const Handle(HYDROData_Entity)& theObj,
                                      const int                      theTag ) const
 {
   if ( theObj.IsNull() )
@@ -404,7 +403,7 @@ bool HYDROData_Entity::HasReference( const Handle_HYDROData_Entity& theObj,
   return false;
 }
 
-void HYDROData_Entity::AddReferenceObject( const Handle_HYDROData_Entity& theObj,
+void HYDROData_Entity::AddReferenceObject( const Handle(HYDROData_Entity)& theObj,
                                            const int                      theTag )
 {
   if ( theObj.IsNull() )
@@ -414,7 +413,7 @@ void HYDROData_Entity::AddReferenceObject( const Handle_HYDROData_Entity& theObj
   aRefs->Append( theObj->Label() );
 }
 
-void HYDROData_Entity::SetReferenceObject( const Handle_HYDROData_Entity& theObj,
+void HYDROData_Entity::SetReferenceObject( const Handle(HYDROData_Entity)& theObj,
                                            const int                      theTag,
                                            const int                      theIndex )
 {
@@ -448,7 +447,7 @@ void HYDROData_Entity::SetReferenceObject( const Handle_HYDROData_Entity& theObj
   }
 }
 
-void HYDROData_Entity::InsertReferenceObject( const Handle_HYDROData_Entity& theObj,
+void HYDROData_Entity::InsertReferenceObject( const Handle(HYDROData_Entity)& theObj,
                                               const int                      theTag,
                                               const int                      theBeforeIndex )
 {
@@ -490,6 +489,7 @@ void HYDROData_Entity::SetReferenceObjects( const HYDROData_SequenceOfObjects& t
 Handle(HYDROData_Entity) HYDROData_Entity::GetReferenceObject( const int theTag,
                                                                const int theIndex ) const
 {
+  //DEBTRACE("GetReferenceObject " << theTag << " " << theIndex);
   Handle(HYDROData_Entity) aRes;
 
   Handle(TDataStd_ReferenceList) aRefs = getReferenceList( theTag, false );
@@ -579,12 +579,12 @@ void HYDROData_Entity::ClearReferenceObjects( const int theTag )
 Handle(TDataStd_ReferenceList) HYDROData_Entity::getReferenceList( const int theTag,
                                                                    const bool theIsCreate ) const
 {
+  //DEBTRACE("getReferenceList " << theTag << " " << theIsCreate);
   TDF_Label aLabel = theTag == 0 ? myLab : myLab.FindChild( theTag );
 
   Handle(TDataStd_ReferenceList) aRefs;
   if ( !aLabel.FindAttribute( TDataStd_ReferenceList::GetID(), aRefs ) && theIsCreate )
     aRefs = TDataStd_ReferenceList::Set( aLabel );
-
   return aRefs;
 }
 
@@ -822,3 +822,30 @@ double HYDROData_Entity::GetDouble( int theTag, double theDefValue ) const
 
   return anAttr->Get();
 }
+
+void HYDROData_Entity::SetInteger( int theTag, int theValue )
+{
+  Handle(TDataStd_Integer) anAttr;
+  TDF_Label aLabel = myLab.FindChild( theTag );
+  if( !aLabel.FindAttribute( TDataStd_Integer::GetID(), anAttr ) )
+    aLabel.AddAttribute( anAttr = new TDataStd_Integer() );
+  anAttr->Set( theValue );
+}
+
+int HYDROData_Entity::GetInteger( int theTag, int theDefValue ) const
+{
+  Handle(TDataStd_Integer) anAttr;
+  TDF_Label aLabel = myLab.FindChild( theTag );
+  if( !aLabel.FindAttribute( TDataStd_Integer::GetID(), anAttr ) )
+    return 0;
+
+  return anAttr->Get();
+}
+
+bool HYDROData_Entity::CompareLabels(const Handle(HYDROData_Entity)& theOtherObj) 
+{
+  if ( !theOtherObj.IsNull() )
+    return this->Label() == theOtherObj->Label();
+  return false;
+} 
+