Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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;
		}
	}
}