-void Model_ValidatorsFactory::registerUnconcealment(std::shared_ptr<ModelAPI_Result> theUnconcealed,
- std::shared_ptr<ModelAPI_Feature> theCanceledFeat)
-{
- if (myUnconcealed.find(theUnconcealed) == myUnconcealed.end()) {
- myUnconcealed[theUnconcealed] = std::list<std::shared_ptr<ModelAPI_Feature> >();
- }
- myUnconcealed[theUnconcealed].push_back(theCanceledFeat);
- std::dynamic_pointer_cast<Model_Data>(theUnconcealed->data())->updateConcealmentFlag();
-}
-
-void Model_ValidatorsFactory::disableUnconcealment(std::shared_ptr<ModelAPI_Result> theUnconcealed,
- std::shared_ptr<ModelAPI_Feature> theCanceledFeat)
-{
- std::map<std::shared_ptr<ModelAPI_Result>, std::list<std::shared_ptr<ModelAPI_Feature> > >
- ::iterator aResFound = myUnconcealed.find(theUnconcealed);
- if (aResFound != myUnconcealed.end()) {
- std::list<std::shared_ptr<ModelAPI_Feature> >::iterator anIter = aResFound->second.begin();
- for(; anIter != aResFound->second.end(); anIter++) {
- if (*anIter == theCanceledFeat) {
- aResFound->second.erase(anIter);
- std::dynamic_pointer_cast<Model_Data>(theUnconcealed->data())->updateConcealmentFlag();
- break;
- }
- }
- }
-}
-
-bool Model_ValidatorsFactory::isUnconcealed(std::shared_ptr<ModelAPI_Result> theUnconcealed,
- std::shared_ptr<ModelAPI_Feature> theCanceledFeat)
-{
- std::map<std::shared_ptr<ModelAPI_Result>, std::list<std::shared_ptr<ModelAPI_Feature> > >
- ::iterator aResFound = myUnconcealed.find(theUnconcealed);
- if (aResFound != myUnconcealed.end()) {
- std::list<std::shared_ptr<ModelAPI_Feature> >::iterator aFeatIter = aResFound->second.begin();
- for(; aFeatIter != aResFound->second.end(); aFeatIter++) {
- if (aFeatIter->get()) {
- if ((*aFeatIter)->isDisabled()) continue;
- if (*aFeatIter == theCanceledFeat)
- return true; // this is exactly canceled
- if (theCanceledFeat->document()->isLater(*aFeatIter, theCanceledFeat))
- return true; // if unconcealed feature (from the list) is later than concealed
- } else
- return true; // empty attribute means that everything is canceled
- }
- }
- return false;
-}
-