-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019 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
#ifdef _DEBUG_
static int MYDEBUG = 0;
+using namespace std;
#else
static int MYDEBUG = 0;
#endif
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)) {
aNode->Remove();
}
- TDF_Label aLabel = theObject->GetEntry();
aLabel.ForgetAllAttributes(Standard_True);
// Remember the label to reuse it then
{
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
+
+ _OCAFApp->SaveAs( _document, aFileName.c_str() );
return true;
}
//=============================================================================
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;
- if (_OCAFApp->Open(theFileName, aDoc) != PCDM_RS_OK) {
+ if (_OCAFApp->Open(aFileName.c_str(), aDoc) != PCDM_RS_OK) {
return false;
}
if(c == 58) isFound = Standard_True;
}
- if(isFound && arr[j-2] != 58) { // last char should be a diggit
+ 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);
}
if(MYDEBUG) {
cout<<"Variables from SObject:"<<endl;
- for (int i = 0; i < aVariables.size();i++)
+ for (size_t i = 0; i < aVariables.size();i++)
cout<<"\t Variable["<<i<<"] = "<<aVariables[i].myVariable<<endl;
}
//Replace parameters by variables
Standard_Integer aStartPos = 0;
Standard_Integer aEndPos = 0;
- int 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)
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++;
theObjListToPublish.Append( anEntry );
TObjectData& data = aEntry2ObjData[ anEntry ];
- if ( data._pyName.IsEmpty() ) { // encounted for the 1st time
+ if ( data._pyName.IsEmpty() ) { // encountered for the 1st time
if ( !data._name.IsEmpty() ) { // published object
data._pyName = data._name;
engine->healPyName( data._pyName, anEntry, aNameToEntry);
if (!thePublished.count(theTag)) {
// This object is not published yet.
+ thePublished.insert(theTag);
+
std::map< int, TCollection_AsciiString >::const_iterator anIt =
theEntryToCmdMap.find(theTag);
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) {
// Add the object command.
aResult += anIt->second;
}
-
- thePublished.insert(theTag);
}
return aResult;
//================================================================================
TState ObjectStates::GetCurrectState() const
{
- if(_states.size() > _dumpstate)
+ if((int)_states.size() > _dumpstate)
return _states[_dumpstate];
return TState();
}