1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: simplereferencecomponent.cxx,v $
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"
38 #include "com/sun/star/uno/RuntimeException.hpp"
39 #include "osl/diagnose.h"
46 using com::sun::star::uno::RuntimeException
;
47 using sd::SimpleReferenceComponent
;
49 SimpleReferenceComponent::SimpleReferenceComponent()
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
)
74 catch (RuntimeException
&
75 #if OSL_DEBUG_LEVEL > 0
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() );
87 if(osl_decrementInterlockedCount(&m_nCount
) == 0) delete this;
90 void SimpleReferenceComponent::Dispose()
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 &
118 return ::operator new(nSize
);
119 // WNT lacks a global nothrow operator new...
121 return ::operator new(nSize
, rNothrow
);
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 &
138 #if defined WNT || (defined IRIX && !defined GCC)
139 ::operator delete(pPtr
); // WNT lacks a global nothrow operator delete...
141 ::operator delete(pPtr
, rNothrow
);