0031466: Data Exchange - Cannot import layers from STeP file (7.4.0 regression)
[occt.git] / src / XCAFDoc / XCAFDoc_LayerTool.cxx
old mode 100755 (executable)
new mode 100644 (file)
index e558911..3b14fef
@@ -1,38 +1,42 @@
 // Created on: 2000-10-02
 // Created by: Pavel TELKOV
-// Copyright (c) 2000-2012 OPEN CASCADE SAS
+// Copyright (c) 2000-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
+#include <XCAFDoc_LayerTool.hxx>
 
-
-#include <XCAFDoc_LayerTool.ixx>
-#include <XCAFDoc_DocumentTool.hxx>
-#include <XCAFDoc_GraphNode.hxx>
+#include <Standard_GUID.hxx>
+#include <Standard_Type.hxx>
+#include <TCollection_ExtendedString.hxx>
 #include <TDataStd_Name.hxx>
+#include <TDataStd_UAttribute.hxx>
+#include <TDF_Attribute.hxx>
 #include <TDF_ChildIDIterator.hxx>
 #include <TDF_ChildIterator.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_RelocationTable.hxx>
+#include <TopoDS_Shape.hxx>
 #include <XCAFDoc.hxx>
-#include <TDataStd_UAttribute.hxx>
+#include <XCAFDoc_DocumentTool.hxx>
+#include <XCAFDoc_GraphNode.hxx>
+#include <XCAFDoc_ShapeTool.hxx>
+
+IMPLEMENT_DERIVED_ATTRIBUTE_WITH_TYPE(XCAFDoc_LayerTool,TDataStd_GenericEmpty,"xcaf","LayerTool")
 
 //=======================================================================
 //function : Constructor
 //purpose  : 
 //=======================================================================
-
 XCAFDoc_LayerTool::XCAFDoc_LayerTool()
 {
 }
@@ -428,7 +432,7 @@ void XCAFDoc_LayerTool::SetVisibility (const TDF_Label& layerL,
   Handle(TDataStd_UAttribute) aUAttr;
   if (! isvisible ) {
     if (!layerL.FindAttribute(XCAFDoc::InvisibleGUID(), aUAttr)) {
-      aUAttr->Set( layerL, XCAFDoc::InvisibleGUID() );
+      TDataStd_UAttribute::Set( layerL, XCAFDoc::InvisibleGUID() );
     }
   }
   else layerL.ForgetAttribute( XCAFDoc::InvisibleGUID() );
@@ -445,7 +449,6 @@ Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh,
                                             const Standard_Boolean shapeInOneLayer)
 {
   TDF_Label aLab;
-//   if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
   // PTV 22.01.2003 set layer for shape with location if it is necessary
   if (! myShapeTool->Search( Sh, aLab ) ) return Standard_False;
   SetLayer(aLab, LayerL, shapeInOneLayer);
@@ -475,7 +478,8 @@ Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh,
 Standard_Boolean XCAFDoc_LayerTool::UnSetLayers(const TopoDS_Shape& Sh) 
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab) )
+    return Standard_False;
   UnSetLayers(aLab);
   return Standard_True;
 }
@@ -490,7 +494,8 @@ Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh,
                                                  const TCollection_ExtendedString& aLayer)
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab) )
+    return Standard_False;
   return UnSetOneLayer(aLab, aLayer);
 }
 
@@ -503,7 +508,8 @@ Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh,
                                                  const TDF_Label& aLayerL)
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab) )
+    return Standard_False;
   return UnSetOneLayer(aLab, aLayerL);
 }
 
@@ -516,7 +522,8 @@ Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh,
                                          const TCollection_ExtendedString& aLayer) 
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (! myShapeTool->Search(Sh, aLab) )
+    return Standard_False;
   return IsSet(aLab, aLayer);
 }
 
@@ -530,7 +537,8 @@ Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh,
                                          const TDF_Label& aLayerL) 
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab) )
+    return Standard_False;
   return IsSet(aLab, aLayerL);
 }
 
@@ -543,7 +551,8 @@ Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh,
                                              Handle(TColStd_HSequenceOfExtendedString)& aLayerS) 
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab))
+    return Standard_False;
   return GetLayers(aLab, aLayerS);
 }
 
@@ -556,7 +565,8 @@ Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh,
                                              TDF_LabelSequence& aLayerLS) 
 {
   TDF_Label aLab;
-  if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False;
+  if (!myShapeTool->Search(Sh, aLab))
+    return Standard_False;
   return GetLayers(aLab, aLayerLS);
 }
 
@@ -570,7 +580,7 @@ Handle(TColStd_HSequenceOfExtendedString) XCAFDoc_LayerTool::GetLayers(const Top
 {
   Handle(TColStd_HSequenceOfExtendedString) aLayerS = new TColStd_HSequenceOfExtendedString;
   TDF_Label aLab;
-  if ( myShapeTool->FindShape(Sh, aLab) )
+  if (myShapeTool->Search(Sh, aLab))
     aLayerS = GetLayers(aLab);
   return aLayerS;
 }
@@ -586,35 +596,15 @@ const Standard_GUID& XCAFDoc_LayerTool::ID() const
   return GetID();
 }
 
-
 //=======================================================================
-//function : Restore
+//function : DumpJson
 //purpose  : 
 //=======================================================================
-
-void XCAFDoc_LayerTool::Restore(const Handle(TDF_Attribute)& /* with */) 
+void XCAFDoc_LayerTool::DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth) const
 {
-}
-
+  OCCT_DUMP_TRANSIENT_CLASS_BEGIN (theOStream)
 
-//=======================================================================
-//function : NewEmpty
-//purpose  : 
-//=======================================================================
-
-Handle(TDF_Attribute) XCAFDoc_LayerTool::NewEmpty() const
-{
-  return new XCAFDoc_LayerTool;
-}
-
-
-//=======================================================================
-//function : Paste
-//purpose  : 
-//=======================================================================
-
-void XCAFDoc_LayerTool::Paste(const Handle(TDF_Attribute)& /* into */,
-                             const Handle(TDF_RelocationTable)& /* RT */) const
-{
-}
+  OCCT_DUMP_BASE_CLASS (theOStream, theDepth, TDF_Attribute)
 
+  OCCT_DUMP_FIELD_VALUES_DUMPED (theOStream, theDepth, myShapeTool.get())
+}
\ No newline at end of file