void DataMapping::deleteLaterFrom(View_t * view, Vector_t & vector) { auto ownedViewIt = findUnique(vector, view); if (ownedViewIt == vector.end()) { // Reentered this function while calling view->dockWidgetParent()->close(); return; } auto viewOwnership = std::move(*ownedViewIt); vector.erase(ownedViewIt); // Handle deletion in Qt event loop. If the event loop is not running anymore (application shutdown), // deletion will be handled in ~DataMapping viewOwnership.release()->deleteLater(); }
void VectorTest::testAddAndRead() { static const size_type staticSize = 10; static const int maxSize = static_cast<int>(staticSize * 2); typedef Vector<int, staticSize> Vector_t; Vector_t mutableVector; TS_ASSERT(mutableVector.empty()); TS_ASSERT_EQUALS(staticSize, mutableVector.capacity()); for (int i = 0; i < maxSize; ++i) { mutableVector.push_back(i); const Vector_t constVector = mutableVector; TS_ASSERT(! mutableVector.empty()); TS_ASSERT(! constVector.empty()); TS_ASSERT_EQUALS(0, mutableVector.front()); TS_ASSERT_EQUALS(i, mutableVector.back()); TS_ASSERT_EQUALS(0, constVector.front()); TS_ASSERT_EQUALS(i, constVector.back()); for (int j = 0; j <= i; ++j) { TS_ASSERT_EQUALS(j, mutableVector[j]); TS_ASSERT_EQUALS(j, constVector[j]); } int ix = 0; Vector_t::const_iterator ii = constVector.begin(); for (Vector_t::iterator jj = mutableVector.begin(); jj != mutableVector.end(); ++jj, ++ii) { TS_ASSERT_EQUALS(ix, *jj); TS_ASSERT_EQUALS(ix, *ii); ++ix; } } }