class SdGlobalResourceContainer::Implementation
{ private: friendclass SdGlobalResourceContainer;
std::mutex maMutex;
/** All instances of SdGlobalResource in this vector are owned by the containerandwillbedestroyedwhenthecontainerisdestroyed.
*/
std::vector<std::unique_ptr<SdGlobalResource>> maResources;
// static
SdGlobalResourceContainer& SdGlobalResourceContainer::Instance()
{
SdGlobalResourceContainer *const pRet(theSdGlobalResourceContainerInstance().get());
assert(pRet); // error if it has been deleted and is null return *pRet;
}
// Release the resources in reversed order of their addition to the // container. This is because a resource A added before resource B // may have been created due to a request of B. Thus B depends on A and // should be destroyed first. for (auto iResource = mpImpl->maResources.rbegin();
iResource != mpImpl->maResources.rend();
++iResource)
{
iResource->reset();
}
// The SharedResourceList has not to be released manually. We just // assert resources that are still held by someone other than us.
Implementation::SharedResourceList::reverse_iterator iSharedResource; for (iSharedResource = mpImpl->maSharedResources.rbegin();
iSharedResource != mpImpl->maSharedResources.rend();
++iSharedResource)
{ if (iSharedResource->use_count() > 1)
{
SdGlobalResource* pResource = iSharedResource->get();
SAL_INFO( "sd.tools", pResource << " " << iSharedResource->use_count());
DBG_ASSERT(iSharedResource->use_count() == 1, "SdGlobalResource still held in ~SdGlobalResourceContainer");
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.