1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef SW_UNOBASECLASS_HXX 24*b1cdbd2cSJim Jagielski #define SW_UNOBASECLASS_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XUnoTunnel.hpp> 27*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 28*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XEnumeration.hpp> 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase2.hxx> 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski class SfxPoolItem; 34*b1cdbd2cSJim Jagielski class SwClient; 35*b1cdbd2cSJim Jagielski class SwDoc; 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski typedef ::cppu::WeakImplHelper2 39*b1cdbd2cSJim Jagielski < ::com::sun::star::lang::XServiceInfo 40*b1cdbd2cSJim Jagielski , ::com::sun::star::container::XEnumeration 41*b1cdbd2cSJim Jagielski > 42*b1cdbd2cSJim Jagielski SwSimpleEnumeration_Base; 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski /* -----------------29.04.98 07:35------------------- 46*b1cdbd2cSJim Jagielski * 47*b1cdbd2cSJim Jagielski * --------------------------------------------------*/ 48*b1cdbd2cSJim Jagielski enum CursorType 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski CURSOR_INVALID, 51*b1cdbd2cSJim Jagielski CURSOR_BODY, 52*b1cdbd2cSJim Jagielski CURSOR_FRAME, 53*b1cdbd2cSJim Jagielski CURSOR_TBLTEXT, 54*b1cdbd2cSJim Jagielski CURSOR_FOOTNOTE, 55*b1cdbd2cSJim Jagielski CURSOR_HEADER, 56*b1cdbd2cSJim Jagielski CURSOR_FOOTER, 57*b1cdbd2cSJim Jagielski CURSOR_REDLINE, 58*b1cdbd2cSJim Jagielski CURSOR_ALL, // for Search&Replace 59*b1cdbd2cSJim Jagielski CURSOR_SELECTION, // create a paragraph enumeration from 60*b1cdbd2cSJim Jagielski // a text range or cursor 61*b1cdbd2cSJim Jagielski CURSOR_SELECTION_IN_TABLE, 62*b1cdbd2cSJim Jagielski CURSOR_META, // meta/meta-field 63*b1cdbd2cSJim Jagielski }; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski /*-----------------04.03.98 11:54------------------- 66*b1cdbd2cSJim Jagielski Start/EndAction or Start/EndAllAction 67*b1cdbd2cSJim Jagielski -------------------------------------------------- */ 68*b1cdbd2cSJim Jagielski class UnoActionContext 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski private: 71*b1cdbd2cSJim Jagielski SwDoc * m_pDoc; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski public: 74*b1cdbd2cSJim Jagielski UnoActionContext(SwDoc *const pDoc); 75*b1cdbd2cSJim Jagielski ~UnoActionContext(); 76*b1cdbd2cSJim Jagielski InvalidateDocument()77*b1cdbd2cSJim Jagielski void InvalidateDocument() { m_pDoc = 0; } 78*b1cdbd2cSJim Jagielski }; 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski /* -----------------07.07.98 12:03------------------- 81*b1cdbd2cSJim Jagielski interrupt Actions for a little while 82*b1cdbd2cSJim Jagielski -------------------------------------------------- */ 83*b1cdbd2cSJim Jagielski class UnoActionRemoveContext 84*b1cdbd2cSJim Jagielski { 85*b1cdbd2cSJim Jagielski private: 86*b1cdbd2cSJim Jagielski SwDoc *const m_pDoc; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski public: 89*b1cdbd2cSJim Jagielski UnoActionRemoveContext(SwDoc *const pDoc); 90*b1cdbd2cSJim Jagielski ~UnoActionRemoveContext(); 91*b1cdbd2cSJim Jagielski }; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< sal_Int8 > CreateUnoTunnelId(); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski /// helper function for implementing SwClient::Modify 97*b1cdbd2cSJim Jagielski void ClientModify(SwClient* pClient, const SfxPoolItem *pOld, const SfxPoolItem *pNew); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski #include <boost/utility.hpp> 101*b1cdbd2cSJim Jagielski #include <osl/diagnose.h> 102*b1cdbd2cSJim Jagielski #include <vos/mutex.hxx> 103*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx> 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski namespace sw { 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski template<typename T> class UnoImplPtr 108*b1cdbd2cSJim Jagielski : private ::boost::noncopyable 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski private: 111*b1cdbd2cSJim Jagielski T * m_p; 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski public: UnoImplPtr(T * const i_p)114*b1cdbd2cSJim Jagielski UnoImplPtr(T *const i_p) 115*b1cdbd2cSJim Jagielski : m_p(i_p) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski OSL_ENSURE(i_p, "UnoImplPtr: null"); 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski ~UnoImplPtr()120*b1cdbd2cSJim Jagielski ~UnoImplPtr() 121*b1cdbd2cSJim Jagielski { 122*b1cdbd2cSJim Jagielski ::vos::OGuard g(Application::GetSolarMutex()); 123*b1cdbd2cSJim Jagielski delete m_p; // #i105557#: call dtor with locked solar mutex 124*b1cdbd2cSJim Jagielski m_p = 0; 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski operator *() const127*b1cdbd2cSJim Jagielski T & operator * () const { return *m_p; } 128*b1cdbd2cSJim Jagielski operator ->() const129*b1cdbd2cSJim Jagielski T * operator ->() const { return m_p; } 130*b1cdbd2cSJim Jagielski get() const131*b1cdbd2cSJim Jagielski T * get () const { return m_p; } 132*b1cdbd2cSJim Jagielski }; 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski template< class C > C * UnoTunnelGetImplementation(::com::sun::star::uno::Reference<::com::sun::star::lang::XUnoTunnel> const & xUnoTunnel)135*b1cdbd2cSJim Jagielski UnoTunnelGetImplementation( 136*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< 137*b1cdbd2cSJim Jagielski ::com::sun::star::lang::XUnoTunnel > const & xUnoTunnel) 138*b1cdbd2cSJim Jagielski { 139*b1cdbd2cSJim Jagielski if (!xUnoTunnel.is()) { return 0; } 140*b1cdbd2cSJim Jagielski C *const pC( reinterpret_cast< C* >( 141*b1cdbd2cSJim Jagielski ::sal::static_int_cast< sal_IntPtr >( 142*b1cdbd2cSJim Jagielski xUnoTunnel->getSomething(C::getUnoTunnelId())))); 143*b1cdbd2cSJim Jagielski return pC; 144*b1cdbd2cSJim Jagielski } 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski template< class C > sal_Int64 UnoTunnelImpl(const::com::sun::star::uno::Sequence<sal_Int8> & rId,C * const pThis)147*b1cdbd2cSJim Jagielski UnoTunnelImpl(const ::com::sun::star::uno::Sequence< sal_Int8 > & rId, 148*b1cdbd2cSJim Jagielski C *const pThis) 149*b1cdbd2cSJim Jagielski { 150*b1cdbd2cSJim Jagielski if ((rId.getLength() == 16) && 151*b1cdbd2cSJim Jagielski (0 == rtl_compareMemory(C::getUnoTunnelId().getConstArray(), 152*b1cdbd2cSJim Jagielski rId.getConstArray(), 16))) 153*b1cdbd2cSJim Jagielski { 154*b1cdbd2cSJim Jagielski return ::sal::static_int_cast< sal_Int64 >( 155*b1cdbd2cSJim Jagielski reinterpret_cast< sal_IntPtr >(pThis) ); 156*b1cdbd2cSJim Jagielski } 157*b1cdbd2cSJim Jagielski return 0; 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< ::rtl::OUString > 161*b1cdbd2cSJim Jagielski GetSupportedServiceNamesImpl( 162*b1cdbd2cSJim Jagielski size_t const nServices, char const*const pServices[]); 163*b1cdbd2cSJim Jagielski sal_Bool SupportsServiceImpl( 164*b1cdbd2cSJim Jagielski size_t const nServices, char const*const pServices[], 165*b1cdbd2cSJim Jagielski ::rtl::OUString const & rServiceName); 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski } // namespace sw 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski #endif // SW_UNOBASECLASS_HXX 170*b1cdbd2cSJim Jagielski 171