- theLabel.FindAttribute(TDataStd_Real::GetID(), mySelectionType);
- updateSubs();
- }
-}
-
-void Model_AttributeSelectionList::setObject(const boost::shared_ptr<ModelAPI_Object>& theObject)
-{
- ModelAPI_AttributeSelectionList::setObject(theObject);
- std::vector<boost::shared_ptr<Model_AttributeSelection> >::iterator aSubIter = mySubs.begin();
- for(; aSubIter != mySubs.end(); aSubIter++) {
- (*aSubIter)->setObject(theObject);
- }
-}
-
-void Model_AttributeSelectionList::updateSubs()
-{
- unsigned int aNum = mySize->Get();
- if (aNum > mySubs.size()) { // add subs what are not yet created
- TDF_ChildIterator aSubIter(mySize->Label());
- for(int aExisting = mySubs.size(); aExisting > 0; aSubIter.Next()) aExisting--;
- for(; aSubIter.More(); aSubIter.Next()) {
- TDF_Label aChildLab = aSubIter.Value();
- boost::shared_ptr<Model_AttributeSelection> aNewAttr =
- boost::shared_ptr<Model_AttributeSelection>(new Model_AttributeSelection(aChildLab));
- if (owner())
- aNewAttr->setObject(owner());
- mySubs.push_back(aNewAttr);
- }
- } else if (aNum < mySubs.size()) { // remove excess subs from the end
- if (aNum == 0) {
- mySubs.clear();
- } else {
- std::vector<boost::shared_ptr<Model_AttributeSelection> >::iterator aSubIter = mySubs.begin();
- for(int aExisting = aNum; aExisting != 0; aSubIter++) aExisting--;
- mySubs.erase(aSubIter, mySubs.end());
- }