-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <TDF_LabelMap.hxx>
#include <TDF_ListIteratorOfLabelList.hxx>
+// for TDF_Label map usage
+static Standard_Integer HashCode(const TDF_Label& theLab, const Standard_Integer theUpper);
+static Standard_Boolean IsEqual(const TDF_Label& theLab1, const TDF_Label& theLab2);
+
int kUNDEFINED_FEATURE_INDEX = -1;
static const std::string& groupNameFoldering(const std::string& theGroupID,
return ObjectPtr();
createHistory(theGroupID);
const std::string& aGroupID = groupNameFoldering(theGroupID, theAllowFolder);
- const std::vector<ObjectPtr>& aVec = myHistory[theGroupID];
- //if (aVec.size() <= theIndex)
- // return aVec[aVec.size() - 1]; // too high index requested (to avoid crash in #2360)
return aGroupID.empty() ? myHistory[theGroupID][theIndex] : myHistory[aGroupID][theIndex];
}
return;
// after all updates, sends a message that groups of features were created or updated
Events_Loop* aLoop = Events_Loop::loop();
- static Events_ID aDispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
- static Events_ID aCreateEvent = Events_Loop::eventByName(EVENT_OBJECT_CREATED);
- static Events_ID anUpdateEvent = Events_Loop::eventByName(EVENT_OBJECT_UPDATED);
+ //static Events_ID aDispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
+ static Events_ID aCreateEvent = aLoop->eventByName(EVENT_OBJECT_CREATED);
+ static Events_ID anUpdateEvent = aLoop->eventByName(EVENT_OBJECT_UPDATED);
static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
- static Events_ID aDeleteEvent = Events_Loop::eventByName(EVENT_OBJECT_DELETED);
+ static Events_ID aDeleteEvent = aLoop->eventByName(EVENT_OBJECT_DELETED);
static Events_ID aToHideEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
bool isActive = aLoop->activateFlushes(false);
ModelAPI_Tools::allResults(aFeature, aResults);
std::list<ResultPtr>::iterator aResIter = aResults.begin();
for(; aResIter != aResults.end(); aResIter++) {
- std::list<std::shared_ptr<ModelAPI_Attribute> > anAttrs =
- (*aResIter)->data()->attributes("");
- std::list<std::shared_ptr<ModelAPI_Attribute> >::iterator anAttr = anAttrs.begin();
- for(; anAttr != anAttrs.end(); anAttr++)
+ anAttrs = (*aResIter)->data()->attributes("");
+ for(anAttr = anAttrs.begin(); anAttr != anAttrs.end(); anAttr++)
(*anAttr)->reinit();
}
}
bool Model_Objects::hasCustomName(DataPtr theFeatureData,
ResultPtr theResult,
- int theResultIndex,
+ int /*theResultIndex*/,
std::wstring& theParentName) const
{
ResultBodyPtr aBodyRes = std::dynamic_pointer_cast<ModelAPI_ResultBody>(theFeatureData->owner());
if (aLabIter.More()) {
TDF_Label anArgLab = aLabIter.Value();
Handle(TDataStd_Comment) aGroup;
- if (aLabIter.Value().FindAttribute(TDataStd_Comment::GetID(), aGroup)) {
+ if (anArgLab.FindAttribute(TDataStd_Comment::GetID(), aGroup)) {
return TCollection_AsciiString(aGroup->Get()).ToCString();
}
}
if (aGroup->Get() == ModelAPI_ResultBody::group().c_str()) {
aNewBody = createBody(theFeature->data(), aResIndex);
} else if (aGroup->Get() == ModelAPI_ResultPart::group().c_str()) {
- if (aResIndex <= theFeature->results().size()) { // to avoid crash if previous execute
+ if (aResIndex <= (int)theFeature->results().size()) {// to avoid crash if previous execute
// for index = 0 erases result
std::shared_ptr<ModelAPI_ResultPart> aNewP = createPart(theFeature->data(), aResIndex);
if (!aNewP->data()->isDeleted()) {
bool Model_Objects::isLater(FeaturePtr theLater, FeaturePtr theCurrent) const
{
+ if (theLater->getKind() == "InternalSelectionInPartFeature")
+ return true;
std::shared_ptr<Model_Data> aLaterD = std::static_pointer_cast<Model_Data>(theLater->data());
std::shared_ptr<Model_Data> aCurrentD = std::static_pointer_cast<Model_Data>(theCurrent->data());
if (aLaterD.get() && aLaterD->isValid() && aCurrentD.get() && aCurrentD->isValid()) {
Standard_Integer HashCode(const TDF_Label& theLab, const Standard_Integer theUpper)
{
return TDF_LabelMapHasher::HashCode(theLab, theUpper);
-
}
Standard_Boolean IsEqual(const TDF_Label& theLab1, const TDF_Label& theLab2)
{