Salome HOME
projects
/
modules
/
geom.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Copyright update 2021
[modules/geom.git]
/
src
/
GEOM
/
GEOM_Engine.cxx
diff --git
a/src/GEOM/GEOM_Engine.cxx
b/src/GEOM/GEOM_Engine.cxx
index d8ad0eb92f1a2512a81d6ecf1c4748879db98cbe..e89d43ec18e44fbf5b1963d4f142c243fbb0e7f3 100644
(file)
--- a/
src/GEOM/GEOM_Engine.cxx
+++ b/
src/GEOM/GEOM_Engine.cxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-20
16
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-20
21
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
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-37,6
+37,7
@@
#include "utilities.h"
#include <Basics_Utils.hxx>
#include "utilities.h"
#include <Basics_Utils.hxx>
+#include <Basics_OCCTVersion.hxx>
#include <TDF_Tool.hxx>
#include <TDF_Data.hxx>
#include <TDF_Tool.hxx>
#include <TDF_Data.hxx>
@@
-62,7
+63,9
@@
#include <TColStd_DataMapIteratorOfDataMapOfIntegerTransient.hxx>
#include <TColStd_DataMapIteratorOfDataMapOfIntegerTransient.hxx>
+#if OCC_VERSION_LARGE < 0x07050000
#include <Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString.hxx>
#include <Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString.hxx>
+#endif
#include <BinDrivers.hxx>
#include <StdDrivers_DocumentRetrievalDriver.hxx>
#include <BinDrivers.hxx>
#include <StdDrivers_DocumentRetrievalDriver.hxx>
@@
-82,6
+85,7
@@
#ifdef _DEBUG_
static int MYDEBUG = 0;
#ifdef _DEBUG_
static int MYDEBUG = 0;
+using namespace std;
#else
static int MYDEBUG = 0;
#endif
#else
static int MYDEBUG = 0;
#endif
@@
-113,7
+117,7
@@
bool ProcessFunction(Handle(GEOM_Function)& theFunction,
TCollection_AsciiString& theScript,
TCollection_AsciiString& theAfterScript,
const TVariablesList& theVariables,
TCollection_AsciiString& theScript,
TCollection_AsciiString& theAfterScript,
const TVariablesList& theVariables,
- const bool
theIsPublished
,
+ const bool
/*theIsPublished*/
,
TDF_LabelMap& theProcessed,
std::set<TCollection_AsciiString>& theIgnoreObjs,
bool& theIsDumpCollected);
TDF_LabelMap& theProcessed,
std::set<TCollection_AsciiString>& theIgnoreObjs,
bool& theIsDumpCollected);
@@
-434,6
+438,10
@@
bool GEOM_Engine::RemoveObject(Handle(GEOM_BaseObject)& theObject)
if(!_document)
return false; // document is closed...
if(!_document)
return false; // document is closed...
+ TDF_Label aLabel = theObject->GetEntry();
+ if ( aLabel == aLabel.Root() )
+ return false; // already removed object
+
//Remove an object from the map of available objects
TCollection_AsciiString anID = BuildIDFromObject(theObject);
if (_objects.IsBound(anID)) {
//Remove an object from the map of available objects
TCollection_AsciiString anID = BuildIDFromObject(theObject);
if (_objects.IsBound(anID)) {
@@
-462,7
+470,6
@@
bool GEOM_Engine::RemoveObject(Handle(GEOM_BaseObject)& theObject)
aNode->Remove();
}
aNode->Remove();
}
- TDF_Label aLabel = theObject->GetEntry();
aLabel.ForgetAllAttributes(Standard_True);
// Remember the label to reuse it then
aLabel.ForgetAllAttributes(Standard_True);
// Remember the label to reuse it then
@@
-509,9
+516,13
@@
bool GEOM_Engine::Save(const char* theFileName)
{
if(!_document) return false;
{
if(!_document) return false;
- _OCAFApp->SaveAs(_document, theFileName);
+#if defined(WIN32) && defined(UNICODE)
+ std::wstring aFileName = Kernel_Utils::utf8_decode_s(theFileName);
+#else
+ std::string aFileName = theFileName;
+#endif
- return
true
;
+ return
_OCAFApp->SaveAs( _document, aFileName.c_str() ) == PCDM_SS_OK
;
}
//=============================================================================
}
//=============================================================================
@@
-521,8
+532,13
@@
bool GEOM_Engine::Save(const char* theFileName)
//=============================================================================
bool GEOM_Engine::Load(const char* theFileName)
{
//=============================================================================
bool GEOM_Engine::Load(const char* theFileName)
{
+#if defined(WIN32) && defined(UNICODE)
+ std::wstring aFileName = Kernel_Utils::utf8_decode_s(theFileName);
+#else
+ std::string aFileName = theFileName;
+#endif
Handle(TDocStd_Document) aDoc;
Handle(TDocStd_Document) aDoc;
- if (_OCAFApp->Open(
theFileName
, aDoc) != PCDM_RS_OK) {
+ if (_OCAFApp->Open(
aFileName.c_str()
, aDoc) != PCDM_RS_OK) {
return false;
}
return false;
}
@@
-1265,7
+1281,7
@@
Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theStrin
if(c == 58) isFound = Standard_True;
}
if(c == 58) isFound = Standard_True;
}
- if(isFound && arr[j-2] != 58) { // last char should be a dig
g
it
+ if(isFound && arr[j-2] != 58) { // last char should be a digit
aSeq->Append(i+1); // +1 because AsciiString starts from 1
aSeq->Append(j-1);
}
aSeq->Append(i+1); // +1 because AsciiString starts from 1
aSeq->Append(j-1);
}
@@
-1287,13
+1303,13
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
const TVariablesList& theVariables)
{
if (MYDEBUG)
const TVariablesList& theVariables)
{
if (MYDEBUG)
-
cout<<"Command : "<<theCommand<<
endl;
+
std::cout<<"Command : "<<theCommand<<std::
endl;
if (MYDEBUG) {
if (MYDEBUG) {
-
cout<<"All Entries:"<<
endl;
+
std::cout<<"All Entries:"<<std::
endl;
TVariablesList::const_iterator it = theVariables.begin();
for(;it != theVariables.end();it++)
TVariablesList::const_iterator it = theVariables.begin();
for(;it != theVariables.end();it++)
-
cout<<"\t'"<<(*it).first<<"'"<<
endl;
+
std::cout<<"\t'"<<(*it).first<<"'"<<std::
endl;
}
//Additional case - multi-row commands
}
//Additional case - multi-row commands
@@
-1304,7
+1320,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
break;
if (MYDEBUG)
break;
if (MYDEBUG)
-
cout<<"Sub-command : "<<aCommand<<
endl;
+
std::cout<<"Sub-command : "<<aCommand<<std::
endl;
Standard_Integer aStartCommandPos = theCommand.Location(aCommand,1,theCommand.Length());
Standard_Integer aEndCommandPos = aStartCommandPos + aCommand.Length();
Standard_Integer aStartCommandPos = theCommand.Location(aCommand,1,theCommand.Length());
Standard_Integer aEndCommandPos = aStartCommandPos + aCommand.Length();
@@
-1322,7
+1338,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
-
cout<<"Result entry : '" <<anEntry<<"'"<<
endl;
+
std::cout<<"Result entry : '" <<anEntry<<"'"<<std::
endl;
if ( anEntry.IsEmpty() ) {
aCommandIndex++;
if ( anEntry.IsEmpty() ) {
aCommandIndex++;
@@
-1340,7
+1356,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
anEntry.RightAdjust();
anEntry.LeftAdjust();
if(MYDEBUG)
-
cout<<"Sub-entry : '" <<anEntry<<"'"<<
endl;
+
std::cout<<"Sub-entry : '" <<anEntry<<"'"<<std::
endl;
}
//Find variables used for object construction
}
//Find variables used for object construction
@@
-1351,7
+1367,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
if(!aStates) {
if(MYDEBUG)
if(!aStates) {
if(MYDEBUG)
-
cout<<"Valiables list empty!!!"<<
endl;
+
std::cout<<"Valiables list empty!!!"<<std::
endl;
aCommandIndex++;
continue;
}
aCommandIndex++;
continue;
}
@@
-1359,9
+1375,9
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
TState aVariables = aStates->GetCurrectState();
if(MYDEBUG) {
TState aVariables = aStates->GetCurrectState();
if(MYDEBUG) {
-
cout<<"Variables from SObject:"<<
endl;
- for (
in
t i = 0; i < aVariables.size();i++)
-
cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<
endl;
+
std::cout<<"Variables from SObject:"<<std::
endl;
+ for (
size_
t i = 0; i < aVariables.size();i++)
+
std::cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<std::
endl;
}
//Calculate total number of parameters
}
//Calculate total number of parameters
@@
-1370,14
+1386,14
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
aTotalNbParams++;
if(MYDEBUG)
aTotalNbParams++;
if(MYDEBUG)
-
cout<<"aTotalNbParams = "<<aTotalNbParams<<
endl;
+
std::cout<<"aTotalNbParams = "<<aTotalNbParams<<std::
endl;
Standard_Integer aFirstParam = aNbEntries;
//Replace parameters by variables
Standard_Integer aStartPos = 0;
Standard_Integer aEndPos = 0;
Standard_Integer aFirstParam = aNbEntries;
//Replace parameters by variables
Standard_Integer aStartPos = 0;
Standard_Integer aEndPos = 0;
-
in
t iVar = 0;
+
size_
t iVar = 0;
TCollection_AsciiString aVar, aReplacedVar;
for(Standard_Integer i=aFirstParam;i <= aTotalNbParams;i++) {
//Replace first parameter (bettwen '(' character and first ',' character)
TCollection_AsciiString aVar, aReplacedVar;
for(Standard_Integer i=aFirstParam;i <= aTotalNbParams;i++) {
//Replace first parameter (bettwen '(' character and first ',' character)
@@
-1401,6
+1417,8
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
aEndPos = aCommand.Location(i, COMMA, 1, aCommand.Length());
}
aStartPos = aCommand.Location(i-1, COMMA, 1, aCommand.Length()) + 2;
aEndPos = aCommand.Location(i, COMMA, 1, aCommand.Length());
}
+ if (aStartPos == 0 || aEndPos == 0)
+ continue;
if( aCommand.Value( aStartPos ) == O_SQR_BRACKET )
aStartPos++;
if( aCommand.Value( aStartPos ) == O_SQR_BRACKET )
aStartPos++;
@@
-1410,14
+1428,14
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
continue; // PAL20889: for "[]"
if(MYDEBUG)
continue; // PAL20889: for "[]"
if(MYDEBUG)
-
cout<<"aStartPos = "<<aStartPos<<", aEndPos = "<<aEndPos<<
endl;
+
std::cout<<"aStartPos = "<<aStartPos<<", aEndPos = "<<aEndPos<<std::
endl;
aVar = aCommand.SubString(aStartPos, aEndPos-1);
aVar.RightAdjust();
aVar.LeftAdjust();
if(MYDEBUG)
aVar = aCommand.SubString(aStartPos, aEndPos-1);
aVar.RightAdjust();
aVar.LeftAdjust();
if(MYDEBUG)
-
cout<<"Variable: '"<< aVar <<"'"<<
endl;
+
std::cout<<"Variable: '"<< aVar <<"'"<<std::
endl;
// specific case for sketcher
if(aVar.Location( TCollection_AsciiString("Sketcher:"), 1, aVar.Length() ) != 0) {
// specific case for sketcher
if(aVar.Location( TCollection_AsciiString("Sketcher:"), 1, aVar.Length() ) != 0) {
@@
-1437,7
+1455,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
aSection = aVar.SubString(aStartSectionPos, aEndSectionPos-1);
if(MYDEBUG)
aSection = aVar.SubString(aStartSectionPos, aEndSectionPos-1);
if(MYDEBUG)
-
cout<<"aSection: "<<aSection<<
endl;
+
std::cout<<"aSection: "<<aSection<<std::
endl;
Standard_Integer aNbParams = 1;
while( aSection.Location( aNbParams, ' ', 1, aSection.Length() ) )
Standard_Integer aNbParams = 1;
while( aSection.Location( aNbParams, ' ', 1, aSection.Length() ) )
@@
-1454,14
+1472,14
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
aEndParamPos = aSection.Length() + 1;
if(MYDEBUG)
aEndParamPos = aSection.Length() + 1;
if(MYDEBUG)
-
cout<<"aParamIndex: "<<aParamIndex<<" aStartParamPos: " <<aStartParamPos<<" aEndParamPos: "<<aEndParamPos<<
endl;
+
std::cout<<"aParamIndex: "<<aParamIndex<<" aStartParamPos: " <<aStartParamPos<<" aEndParamPos: "<<aEndParamPos<<std::
endl;
if ( aStartParamPos == aEndParamPos)
continue;
aParameter = aSection.SubString(aStartParamPos, aEndParamPos-1);
if(MYDEBUG)
if ( aStartParamPos == aEndParamPos)
continue;
aParameter = aSection.SubString(aStartParamPos, aEndParamPos-1);
if(MYDEBUG)
-
cout<<"aParameter: "<<aParameter<<
endl;
+
std::cout<<"aParameter: "<<aParameter<<std::
endl;
if(iVar >= aVariables.size())
continue;
if(iVar >= aVariables.size())
continue;
@@
-1478,27
+1496,27
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
}
if(MYDEBUG)
}
if(MYDEBUG)
-
cout<<"aSection before : "<<aSection<<
endl;
+
std::cout<<"aSection before : "<<aSection<< std::
endl;
aSection.Remove(aStartParamPos, aEndParamPos - aStartParamPos);
aSection.Insert(aStartParamPos, aReplacedParameter);
if(MYDEBUG)
aSection.Remove(aStartParamPos, aEndParamPos - aStartParamPos);
aSection.Insert(aStartParamPos, aReplacedParameter);
if(MYDEBUG)
-
cout<<"aSection after : "<<aSection<<endl<<
endl;
+
std::cout<<"aSection after : "<<aSection<<std::endl<<std::
endl;
iVar++;
}
if(MYDEBUG)
iVar++;
}
if(MYDEBUG)
-
cout<<"aVar before : "<<aVar<<
endl;
+
std::cout<<"aVar before : "<<aVar<<std::
endl;
aVar.Remove(aStartSectionPos, aEndSectionPos - aStartSectionPos);
aVar.Insert(aStartSectionPos, aSection);
if(MYDEBUG)
aVar.Remove(aStartSectionPos, aEndSectionPos - aStartSectionPos);
aVar.Insert(aStartSectionPos, aSection);
if(MYDEBUG)
-
cout<<"aVar after : "<<aVar<<endl<<
endl;
+
std::cout<<"aVar after : "<<aVar<<std::endl<<std::
endl;
}
if(MYDEBUG)
}
if(MYDEBUG)
-
cout<<"aCommand before : "<<aCommand<<
endl;
+
std::cout<<"aCommand before : "<<aCommand<<std::
endl;
aCommand.Remove(aStartPos, aEndPos - aStartPos);
aCommand.Insert(aStartPos, aVar);
if(MYDEBUG)
aCommand.Remove(aStartPos, aEndPos - aStartPos);
aCommand.Insert(aStartPos, aVar);
if(MYDEBUG)
-
cout<<"aCommand after : "<<aCommand<<
endl;
+
std::cout<<"aCommand after : "<<aCommand<<std::
endl;
break;
} // end of specific case for sketcher
break;
} // end of specific case for sketcher
@@
-1535,7
+1553,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
}
if (MYDEBUG)
}
if (MYDEBUG)
-
cout<<"Command : "<<theCommand<<
endl;
+
std::cout<<"Command : "<<theCommand<<std::
endl;
}
//=============================================================================
}
//=============================================================================
@@
-1545,7
+1563,7
@@
void ReplaceVariables(TCollection_AsciiString& theCommand,
//=============================================================================
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
TSting2ObjDataMap& aEntry2ObjData,
//=============================================================================
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
TSting2ObjDataMap& aEntry2ObjData,
- const bool
theIsPublished
,
+ const bool
/*theIsPublished*/
,
TColStd_SequenceOfAsciiString& theObjListToPublish,
Standard_Integer& objectCounter,
Resource_DataMapOfAsciiStringAsciiString& aNameToEntry)
TColStd_SequenceOfAsciiString& theObjListToPublish,
Standard_Integer& objectCounter,
Resource_DataMapOfAsciiStringAsciiString& aNameToEntry)
@@
-1565,7
+1583,7
@@
void ReplaceEntriesByNames (TCollection_AsciiString& theScript,
theObjListToPublish.Append( anEntry );
TObjectData& data = aEntry2ObjData[ anEntry ];
theObjListToPublish.Append( anEntry );
TObjectData& data = aEntry2ObjData[ anEntry ];
- if ( data._pyName.IsEmpty() ) { // encounted for the 1st time
+ if ( data._pyName.IsEmpty() ) { // encounte
re
d for the 1st time
if ( !data._name.IsEmpty() ) { // published object
data._pyName = data._name;
engine->healPyName( data._pyName, anEntry, aNameToEntry);
if ( !data._name.IsEmpty() ) { // published object
data._pyName = data._name;
engine->healPyName( data._pyName, anEntry, aNameToEntry);
@@
-1818,6
+1836,8
@@
TCollection_AsciiString GetPublishCommands
if (!thePublished.count(theTag)) {
// This object is not published yet.
if (!thePublished.count(theTag)) {
// This object is not published yet.
+ thePublished.insert(theTag);
+
std::map< int, TCollection_AsciiString >::const_iterator anIt =
theEntryToCmdMap.find(theTag);
std::map< int, TCollection_AsciiString >::const_iterator anIt =
theEntryToCmdMap.find(theTag);
@@
-1826,7
+1846,7
@@
TCollection_AsciiString GetPublishCommands
TIntToListIntMap::const_iterator aRefIt = theMapRefs.find(theTag);
if (aRefIt != theMapRefs.end()) {
TIntToListIntMap::const_iterator aRefIt = theMapRefs.find(theTag);
if (aRefIt != theMapRefs.end()) {
- // Recursively publish all references.
+ // Recursively publish all references.
std::list< int >::const_iterator aRefTagIt = aRefIt->second.begin();
for(; aRefTagIt != aRefIt->second.end(); ++aRefTagIt) {
std::list< int >::const_iterator aRefTagIt = aRefIt->second.begin();
for(; aRefTagIt != aRefIt->second.end(); ++aRefTagIt) {
@@
-1840,8
+1860,6
@@
TCollection_AsciiString GetPublishCommands
// Add the object command.
aResult += anIt->second;
}
// Add the object command.
aResult += anIt->second;
}
-
- thePublished.insert(theTag);
}
return aResult;
}
return aResult;
@@
-1911,7
+1929,7
@@
ObjectStates::~ObjectStates()
//================================================================================
TState ObjectStates::GetCurrectState() const
{
//================================================================================
TState ObjectStates::GetCurrectState() const
{
- if(_states.size() > _dumpstate)
+ if(
(int)
_states.size() > _dumpstate)
return _states[_dumpstate];
return TState();
}
return _states[_dumpstate];
return TState();
}