20 #ifndef INCLUDED_VCL_LAZYDELETE_HXX
21 #define INCLUDED_VCL_LAZYDELETE_HXX
25 #include <com/sun/star/lang/XComponent.hpp>
59 static void SAL_DLLPRIVATE ImplDeleteOnDeInit();
64 virtual void doCleanup() = 0;
69 template <
typename T >
75 template <
class... Args >
78 m_pT.emplace(
args...);
87 T*
get() {
return m_pT ? &*m_pT :
nullptr; }
91 template <
class... Args >
92 std::optional<T>
set(Args&&... args)
94 auto pOld = std::move(m_pT);
95 m_pT.emplace(
args...);
111 template <
typename I>
120 css::uno::Reference<I>
get() {
return m_xI; }
122 void set (
const css::uno::Reference<I>& r_xNew )
124 css::uno::Reference< css::lang::XComponent> xComponent (m_xI, css::uno::UNO_QUERY);
126 if (xComponent.is())
try
128 xComponent->dispose();
130 catch( css::uno::Exception& )
css::uno::Reference< I > m_xI
Similar to DeleteOnDeinit, the DeleteUnoReferenceOnDeinit template class makes sure that a static UNO...
std::optional< T > set(Args &&...args)
void set(const css::uno::Reference< I > &r_xNew)
DeleteOnDeinit(DeleteOnDeinitFlag)
virtual void doCleanup() override
DeleteOnDeinit(Args &&...args)
virtual void doCleanup() override
static void addDeinitContainer(DeleteOnDeinitBase *i_pContainer)
DeleteUnoReferenceOnDeinit(const css::uno::Reference< I > &r_xI)