diff options
author | Kurt Zenker <kz@openoffice.org> | 2006-04-26 19:53:59 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2006-04-26 19:53:59 +0000 |
commit | 83be49ca1970a26ddfee3cc58327ccfd5fa97d7d (patch) | |
tree | fccd88116e1ff4a35a52ac8fdfebaa409ae7eded /sd/source/ui/tools/SdGlobalResourceContainer.cxx | |
parent | 8af1fcdb7691551acc20baf550863e852eb1e497 (diff) |
INTEGRATION: CWS taskpane (1.3.116); FILE MERGED
2006/02/17 13:41:46 af 1.3.116.1: #i61359# Added shared_ptr resources.
Diffstat (limited to 'sd/source/ui/tools/SdGlobalResourceContainer.cxx')
-rw-r--r-- | sd/source/ui/tools/SdGlobalResourceContainer.cxx | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/sd/source/ui/tools/SdGlobalResourceContainer.cxx b/sd/source/ui/tools/SdGlobalResourceContainer.cxx index ef49022265c9..0200946b9fe6 100644 --- a/sd/source/ui/tools/SdGlobalResourceContainer.cxx +++ b/sd/source/ui/tools/SdGlobalResourceContainer.cxx @@ -4,9 +4,9 @@ * * $RCSfile: SdGlobalResourceContainer.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: rt $ $Date: 2005-09-09 06:45:09 $ + * last change: $Author: kz $ $Date: 2006-04-26 20:53:59 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -56,8 +56,14 @@ private: */ typedef ::std::vector<SdGlobalResource*> ResourceList; ResourceList maResources; + + typedef ::std::vector<boost::shared_ptr<SdGlobalResource> > SharedResourceList; + SharedResourceList maSharedResources; }; + + + // static SdGlobalResourceContainer& SdGlobalResourceContainer::Instance (void) { @@ -102,6 +108,28 @@ void SdGlobalResourceContainer::AddResource ( +void SdGlobalResourceContainer::AddResource ( + ::boost::shared_ptr<SdGlobalResource> pResource) +{ + ::osl::MutexGuard aGuard (mpImpl->maMutex); + + Implementation::SharedResourceList::iterator iResource; + iResource = ::std::find ( + mpImpl->maSharedResources.begin(), + mpImpl->maSharedResources.end(), + pResource); + if (iResource == mpImpl->maSharedResources.end()) + mpImpl->maSharedResources.push_back(pResource); + else + { + DBG_ASSERT (false, + "SdGlobalResourceContainer:AddResource(): Resource added twice."); + } +} + + + + ::std::auto_ptr<SdGlobalResource> SdGlobalResourceContainer::ReleaseResource ( SdGlobalResource* pResource) { @@ -151,6 +179,17 @@ SdGlobalResourceContainer::~SdGlobalResourceContainer (void) delete *iResource; } + // 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) + { + DBG_ASSERT((*iSharedResource).unique(), + "SdGlobalResource still held in ~SdGlobalResourceContainer"); + } + DBG_ASSERT(Implementation::mpInstance == this, "~SdGlobalResourceContainer(): more than one instance of singleton"); Implementation::mpInstance = NULL; |