X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOM%2FGEOM_PythonDump.cxx;h=ae1d802892f7e66058ae216ee577ed9d43945b41;hb=b6fca18ac39432d7c1b4466c60feb3e0a26f68aa;hp=985136d7078683377c684f0087b6e0362372c805;hpb=438f4b0922bde24be526d18c3cee98bdaea52642;p=modules%2Fgeom.git diff --git a/src/GEOM/GEOM_PythonDump.cxx b/src/GEOM/GEOM_PythonDump.cxx index 985136d70..ae1d80289 100644 --- a/src/GEOM/GEOM_PythonDump.cxx +++ b/src/GEOM/GEOM_PythonDump.cxx @@ -1,21 +1,24 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "GEOM_PythonDump.hxx" @@ -30,7 +33,7 @@ namespace GEOM { size_t TPythonDump::myCounter = 0; - TPythonDump::TPythonDump (Handle(GEOM_Function)& theFunction, bool theAppend) + TPythonDump::TPythonDump (const Handle(GEOM_Function)& theFunction, bool theAppend) { myFunction = theFunction; myCounter++; @@ -42,19 +45,23 @@ namespace GEOM if (--myCounter == 0) { TCollection_AsciiString aDescr; if ( myAppend ) - aDescr = myFunction->GetDescription() + "\n\t"; - aDescr += (char *)myStream.str().c_str(); + aDescr = myFunction->GetDescription(); + std::string aString = myStream.str(); + if ( !aDescr.IsEmpty() && !aString.empty()) + aDescr += "\n\t"; + aDescr += (char *)aString.c_str(); myFunction->SetDescription( aDescr ); } } -// TPythonDump::operator TCollection_AsciiString () const -// { -// if (myCounter == 1) { -// return TCollection_AsciiString ((char *)myStream.str().c_str()); -// } -// return TCollection_AsciiString (); -// } + TPythonDump& TPythonDump::operator<< (bool theArg) + { + if (theArg) + myStream << "True"; + else + myStream << "False"; + return *this; + } TPythonDump& TPythonDump::operator<< (long int theArg) { @@ -94,6 +101,12 @@ namespace GEOM return *this; } + TPythonDump& TPythonDump::operator<< (const TCollection_AsciiString theArg) + { + myStream<GetEntry(), anEntry); - myStream << anEntry.ToCString(); + if (theObject.IsNull()) { + myStream << "None"; + } else { + *this << theObject.operator->(); + } + return *this; + } + + TPythonDump& TPythonDump::operator<< (const Handle(TColStd_HSequenceOfTransient)& theObjects) + { + Standard_Integer aLength = theObjects->Length(); + if ( aLength > 1 ) { + myStream << "["; + } + for ( Standard_Integer i = 1; i <= aLength; i++ ) { + *this << Handle(GEOM_Object)::DownCast(theObjects->Value(i)); + if ( i < aLength ) myStream << ", "; + } + if ( aLength > 1 ) { + myStream << "]"; + } + return *this; + } + Standard_EXPORT TPythonDump& + TPythonDump::operator<< (const std::list& theObjects) + { + Standard_Integer aLength = theObjects.size(); + if ( aLength != 1 ) { + myStream << "["; + } + std::list::const_iterator obj = theObjects.begin(); + for ( Standard_Integer i = 1; i <= aLength; i++, ++obj ) { + *this << *obj; + if ( i < aLength ) myStream << ", "; + } + if ( aLength != 1 ) { + myStream << "]"; + } + return *this; + } + + TPythonDump& TPythonDump::operator<< (const GEOM_BaseObject* theObject) + { + if ( !theObject ) { + myStream << "None"; + } else { + TCollection_AsciiString anEntry; + TDF_Tool::Entry(theObject->GetEntry(), anEntry); + myStream << anEntry.ToCString(); + } return *this; } - Handle(GEOM_Object) GetCreatedLast(const Handle(GEOM_Object)& theObj1, - const Handle(GEOM_Object)& theObj2) + Handle(GEOM_BaseObject) GetCreatedLast(const Handle(Standard_Transient)& theObj1, + const Handle(Standard_Transient)& theObj2) { - if (theObj1.IsNull()) return theObj2; - if (theObj2.IsNull()) return theObj1; + Handle(GEOM_BaseObject) bo1 = Handle(GEOM_Object)::DownCast(theObj1); + Handle(GEOM_BaseObject) bo2 = Handle(GEOM_Object)::DownCast(theObj2); + if (bo1.IsNull()) return bo2; + if (bo2.IsNull()) return bo1; TColStd_ListOfInteger aTags1, aTags2; - TDF_Tool::TagList(theObj1->GetEntry(), aTags1); - TDF_Tool::TagList(theObj2->GetEntry(), aTags2); + TDF_Tool::TagList(bo1->GetEntry(), aTags1); + TDF_Tool::TagList(bo2->GetEntry(), aTags2); TColStd_ListIteratorOfListOfInteger aListIter1(aTags1), aListIter2(aTags2); - for (; aListIter1.More(); aListIter1.Next()) { + for (; aListIter1.More(); aListIter1.Next(), aListIter2.Next()) { if (!aListIter2.More()) - return theObj1; // anObj1 is stored under anObj2 + return bo1; // anObj1 is stored under anObj2 if (aListIter1.Value() > aListIter2.Value()) - return theObj1; + return bo1; else if (aListIter1.Value() < aListIter2.Value()) - return theObj2; + return bo2; } - return theObj1; + return bo1; } - Handle(GEOM_Object) GetCreatedLast(const Handle(TColStd_HSequenceOfTransient)& theObjects) + Handle(GEOM_BaseObject) GetCreatedLast(const Handle(TColStd_HSequenceOfTransient)& theObjects) { - Handle(GEOM_Object) anObject, aLatest; + Handle(GEOM_BaseObject) anObject, aLatest; int i, aLen = theObjects->Length(); if (aLen < 1) return aLatest; for (i = 1; i <= aLen; i++) { - anObject = Handle(GEOM_Object)::DownCast(theObjects->Value(i)); + anObject = Handle(GEOM_BaseObject)::DownCast(theObjects->Value(i)); + if ( anObject.IsNull() ) { + Handle(GEOM_Function) fun = Handle(GEOM_Function)::DownCast(theObjects->Value(i)); + if ( !fun.IsNull() ) + anObject = GEOM_BaseObject::GetObject( fun->GetOwnerEntry() ); + } aLatest = GetCreatedLast(aLatest, anObject); } return aLatest;