Update ooo320-m1
[ooovba.git] / sd / source / helper / simplereferencecomponent.cxx
blobf714625eae3c31a7eaac2b917b3fba8ef5e6eb9f
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: simplereferencecomponent.cxx,v $
10 * $Revision: 1.5 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sd.hxx"
34 #ifndef _SALHELPER_SIMPLEREFERENCECOMPONENT_HXX_
35 #include "helper/simplereferencecomponent.hxx"
36 #endif
38 #include "com/sun/star/uno/RuntimeException.hpp"
39 #include "osl/diagnose.h"
41 #ifndef INCLUDED_NEW
42 #include <new>
43 #define INCLUDED_NEW
44 #endif
46 using com::sun::star::uno::RuntimeException;
47 using sd::SimpleReferenceComponent;
49 SimpleReferenceComponent::SimpleReferenceComponent()
50 : m_nCount(0)
51 , mbDisposed(false)
55 SimpleReferenceComponent::~SimpleReferenceComponent()
57 OSL_ASSERT(m_nCount == 0);
58 OSL_ASSERT(mbDisposed);
61 void SimpleReferenceComponent::acquire()
63 osl_incrementInterlockedCount(&m_nCount);
66 void SimpleReferenceComponent::release()
68 if((1 == m_nCount) && !mbDisposed)
70 try
72 Dispose();
74 catch (RuntimeException &
75 #if OSL_DEBUG_LEVEL > 0
76 exc
77 #endif
78 ) // don't break throw ()
80 #if OSL_DEBUG_LEVEL > 0
81 rtl::OString msg( rtl::OUStringToOString( exc.Message, RTL_TEXTENCODING_ASCII_US ) );
82 OSL_ENSURE( 0, msg.getStr() );
83 #endif
87 if(osl_decrementInterlockedCount(&m_nCount) == 0) delete this;
90 void SimpleReferenceComponent::Dispose()
92 if( !mbDisposed )
94 mbDisposed = true;
95 disposing();
99 void SimpleReferenceComponent::disposing()
103 void * SimpleReferenceComponent::operator new(std::size_t nSize)
104 SAL_THROW((std::bad_alloc))
106 return ::operator new(nSize);
109 void * SimpleReferenceComponent::operator new(std::size_t nSize,
110 std::nothrow_t const &
111 #ifndef WNT
112 rNothrow
113 #endif
115 SAL_THROW(())
117 #if defined WNT
118 return ::operator new(nSize);
119 // WNT lacks a global nothrow operator new...
120 #else // WNT
121 return ::operator new(nSize, rNothrow);
122 #endif // WNT
125 void SimpleReferenceComponent::operator delete(void * pPtr) SAL_THROW(())
127 ::operator delete(pPtr);
130 void SimpleReferenceComponent::operator delete(void * pPtr,
131 std::nothrow_t const &
132 #ifndef WNT
133 rNothrow
134 #endif
136 SAL_THROW(())
138 #if defined WNT || (defined IRIX && !defined GCC)
139 ::operator delete(pPtr); // WNT lacks a global nothrow operator delete...
140 #else // WNT
141 ::operator delete(pPtr, rNothrow);
142 #endif // WNT