summaryrefslogtreecommitdiff
path: root/sd/source/ui/tools/SdGlobalResourceContainer.cxx
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2006-04-26 19:53:59 +0000
committerKurt Zenker <kz@openoffice.org>2006-04-26 19:53:59 +0000
commit83be49ca1970a26ddfee3cc58327ccfd5fa97d7d (patch)
treefccd88116e1ff4a35a52ac8fdfebaa409ae7eded /sd/source/ui/tools/SdGlobalResourceContainer.cxx
parent8af1fcdb7691551acc20baf550863e852eb1e497 (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.cxx43
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;