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: iface.hxx,v $
10 * $Revision: 1.6.6.1 $
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 ************************************************************************/
34 #ifndef _SFXHINT_HXX //autogen
35 #include <bf_svtools/hint.hxx>
37 #ifndef _GEN_HXX //autogen
38 #include <tools/gen.hxx>
41 #include <tools/svborder.hxx>
43 #ifndef _SHL_HXX //autogen
44 #include <tools/shl.hxx>
46 #include <bf_so3/factory.hxx>
47 #include <bf_so3/so2dll.hxx>
49 #include <sot/object.hxx>
52 #ifndef INCLUDED_SO3DLLAPI_H
53 #include "bf_so3/so3dllapi.h"
60 /*************************************************************************
61 *************************************************************************/
65 // Zugriff auf Dlldaten
66 #define SOAPP SoDll::GetOrCreate()
68 /**************************************************************************
69 **************************************************************************/
70 #define SO2_DECL_INTERFACE() \
71 virtual ::IUnknown * GetInterface( const SvGlobalName & ); \
72 ::IUnknown * GetMemberInterface( const SvGlobalName & );\
75 #define SO2_DECL_STANDARD_CLASS_DLL(ClassName,FacName) \
76 SO2_DECL_BASIC_CLASS_DLL(ClassName,FacName) \
77 SO2_DECL_INTERFACE() \
80 #define SO2_DECL_STANDARD_CLASS(ClassName) \
81 SO2_DECL_BASIC_CLASS(ClassName) \
82 SO2_DECL_INTERFACE() \
85 /**************************************************************************
86 **************************************************************************/
87 #define SO2_IMPL_INTERFACE(ClassName) \
88 ::IUnknown * __EXPORT ClassName::GetInterface( const SvGlobalName & rName ) \
90 ::IUnknown * p = GetMemberInterface( rName ); \
95 #define SO2_IMPL_CLASS_DLL(ClassName,FactoryName,GlobalName) \
96 SO2_IMPL_BASIC_CLASS_DLL(ClassName,FactoryName,GlobalName) \
97 SO2_IMPL_INTERFACE(ClassName) \
98 SO2_IMPL_INVARIANT(ClassName)
100 #define SO2_IMPL_CLASS(ClassName,FactoryName,GlobalName) \
101 SotFactory * ClassName::pFactory = NULL; \
102 SO2_IMPL_CLASS_DLL(ClassName,FactoryName,GlobalName)
104 /**************************************************************************
105 **************************************************************************/
106 #define SO2_IMPL_INTERFACE1(ClassName,Super1) \
107 ::IUnknown * __EXPORT ClassName::GetInterface( const SvGlobalName & rName ) \
109 ::IUnknown * p = GetMemberInterface( rName ); \
111 p = Super1::GetInterface( rName ); \
115 #define SO2_IMPL_CLASS1_DLL(ClassName,FactoryName,Super1,GlobalName) \
116 SO2_IMPL_BASIC_CLASS1_DLL(ClassName,FactoryName,Super1,GlobalName) \
117 SO2_IMPL_INTERFACE1(ClassName,Super1) \
118 SO2_IMPL_INVARIANT1(ClassName,Super1)
120 #define SO2_IMPL_CLASS1(ClassName,FactoryName,Super1,GlobalName) \
121 SotFactory * ClassName::pFactory = NULL; \
122 SO2_IMPL_CLASS1_DLL(ClassName,FactoryName,Super1,GlobalName)
124 #define SO2_IMPL_STANDARD_CLASS1_DLL(ClassName,FactoryName,Super1,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
125 SO2_IMPL_CLASS1_DLL(ClassName,FactoryName,Super1, \
126 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
128 #define SO2_IMPL_STANDARD_CLASS1(ClassName,FactoryName,Super1,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
129 SO2_IMPL_CLASS1(ClassName,FactoryName,Super1, \
130 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
132 /**************************************************************************
133 **************************************************************************/
134 #define SO2_IMPL_INTERFACE2(ClassName,Super1,Super2) \
135 ::IUnknown * __EXPORT ClassName::GetInterface( const SvGlobalName & rName ) \
137 ::IUnknown * p = GetMemberInterface( rName ); \
139 p = Super1::GetInterface( rName ); \
141 p = Super2::GetInterface( rName ); \
145 #define SO2_IMPL_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,GlobalName) \
146 SO2_IMPL_BASIC_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,GlobalName) \
147 SO2_IMPL_INTERFACE2(ClassName,Super1,Super2) \
148 SO2_IMPL_INVARIANT2(ClassName,Super1,Super2)
150 #define SO2_IMPL_CLASS2(ClassName,FactoryName,Super1,Super2,GlobalName) \
151 SotFactory * ClassName::pFactory = NULL; \
152 SO2_IMPL_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,GlobalName)
154 #define SO2_IMPL_STANDARD_CLASS2(ClassName,FactoryName,Super1,Super2,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
155 SO2_IMPL_CLASS2(ClassName,FactoryName,Super1,Super2, \
156 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
158 #define SO2_IMPL_STANDARD_CLASS2_DLL(ClassName,FactoryName,Super1,Super2,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
159 SO2_IMPL_CLASS2_DLL(ClassName,FactoryName,Super1,Super2, \
160 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
162 /**************************************************************************
163 **************************************************************************/
164 #define SO2_IMPL_INTERFACE3(ClassName,Super1,Super2,Super3) \
165 ::IUnknown * __EXPORT ClassName::GetInterface( const SvGlobalName & rName ) \
167 ::IUnknown * p = GetMemberInterface( rName ); \
169 p = Super1::GetInterface( rName ); \
171 p = Super2::GetInterface( rName ); \
173 p = Super3::GetInterface( rName ); \
177 #define SO2_IMPL_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,GlobalName) \
178 SO2_IMPL_BASIC_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,GlobalName) \
179 SO2_IMPL_INTERFACE3(ClassName,Super1,Super2,Super3) \
180 SO2_IMPL_INVARIANT3(ClassName,Super1,Super2,Super3)
182 #define SO2_IMPL_CLASS3(ClassName,FactoryName,Super1,Super2,Super3,GlobalName) \
183 SotFactory * ClassName::pFactory = NULL; \
184 SO2_IMPL_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,GlobalName)
186 #define SO2_IMPL_STANDARD_CLASS3(ClassName,FactoryName,Super1,Super2,Super3,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
187 SO2_IMPL_CLASS3(ClassName,FactoryName,Super1,Super2,Super3, \
188 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
190 #define SO2_IMPL_STANDARD_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
191 SO2_IMPL_CLASS3_DLL(ClassName,FactoryName,Super1,Super2,Super3, \
192 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15)
194 /**************************************************************************
195 **************************************************************************/
196 #define SO2_IMPL_INTERFACE4(ClassName,Super1,Super2,Super3,Super4) \
197 ::IUnknown * __EXPORT ClassName::GetInterface( const SvGlobalName & rName ) \
199 ::IUnknown * p = GetMemberInterface( rName ); \
201 p = Super1::GetInterface( rName ); \
203 p = Super2::GetInterface( rName ); \
205 p = Super3::GetInterface( rName ); \
207 p = Super4::GetInterface( rName ); \
211 #define SO2_IMPL_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName ) \
212 SO2_IMPL_BASIC_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName ) \
213 SO2_IMPL_INTERFACE4(ClassName,Super1,Super2,Super3,Super4) \
214 SO2_IMPL_INVARIANT4(ClassName,Super1,Super2,Super3,Super4)
216 #define SO2_IMPL_CLASS4(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName) \
217 SotFactory * ClassName::pFactory = NULL; \
218 SO2_IMPL_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,GlobalName)
220 #define SO2_IMPL_STANDARD_CLASS4(ClassName,FactoryName,Super1,Super2,Super3,Super4,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
221 SO2_IMPL_CLASS4(ClassName,FactoryName,Super1,Super2,Super3,Super4,\
222 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
224 #define SO2_IMPL_STANDARD_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15) \
225 SO2_IMPL_CLASS4_DLL(ClassName,FactoryName,Super1,Super2,Super3,Super4,\
226 SvGlobalName(n1,n2,n3,b8,b9,b10,b11,b12,b13,b14,b15))
229 //==================class SvObject========================================
231 #pragma warning(disable: 4250)
234 class SO3_DLLPUBLIC SvObject
: virtual public SotObject
236 friend struct IUnknown
;
237 friend class SvSoIPCService
;
238 friend class SvSoIPCClient
;
239 friend class SvFactory
;
244 ::IUnknown
* pObj
; // IUnknown Interface
245 SvSoIPCClient
* pClient
; // Client, falls !Owner()
246 SvSoIPCService
* pService
; // Service Punkt, falls Owner()
248 USHORT nExtCount
; // externer Referenzzaehler
250 #if defined (GCC) && (defined(C281) || defined(C290) || defined(C291))
256 SO3_DLLPRIVATE
void DeInit( ::IUnknown
* );
257 SO3_DLLPRIVATE
void DeInit( SvSoIPCService
* );
258 SO3_DLLPRIVATE
void DeInit( SvSoIPCClient
* );
259 virtual void MakeUnknown();
262 SO2_DECL_STANDARD_CLASS_DLL(SvObject
,SOAPP
)
263 void Init( SvSoIPCClient
* pObj
);
264 void OwnerInit( SvSoIPCService
* pObj
);
265 SvSoIPCService
* GetIPCService() const;
266 SvSoIPCClient
* GetIPCClient() const;
268 ::IUnknown
* DownAggInterface( const SvGlobalName
& rName
);
269 ::IUnknown
* AggInterface( const SvGlobalName
& rName
);
271 UINT32
ReleaseRef(); // Nur fur DBG_UTIL
273 // Kopieren und Zuweisen dieses Objekttyps ist nicht erlaubt
274 SO3_DLLPRIVATE SvObject
& operator = ( const SvObject
& );
275 SO3_DLLPRIVATE
SvObject( const SvObject
& );
278 //==================class SvObjectRef======================================
279 #ifndef SO2_DECL_SVOBJECT_DEFINED
280 #define SO2_DECL_SVOBJECT_DEFINED
281 class SO3_DLLPUBLIC SvObjectRef
283 PRV_SV_DECL_REF(SvObject
)
286 SO2_IMPL_REF(SvObject
)
288 //==================class SvObject*List====================================
289 #if !defined( SO_EXTERN ) || defined( SO2_SVOBJECTLIST )
290 SV_DECL_REF_LIST(SvObject
,SvObject
*)
291 SV_IMPL_REF_LIST(SvObject
,SvObject
*)
294 //==================class SvFactory_Impl===================================
295 #if !defined( SO_EXTERN )
296 struct IClassFactory
;
297 class SO3_DLLPRIVATE SvFactory_Impl
: public SvObject
302 friend class ImpFactory
;
303 friend class SvFactory
;
305 IClassFactory
* pObjI
;
308 SO3_DLLPRIVATE
SvFactory_Impl();
309 SO3_DLLPRIVATE
SvFactory_Impl( SvFactory
* );
310 SO3_DLLPRIVATE
~SvFactory_Impl();
312 SO2_DECL_STANDARD_CLASS_DLL( SvFactory_Impl
, SOAPP
)
314 SO3_DLLPRIVATE IClassFactory
* GetClassFactory() const;
318 //=========================================================================
319 #define OLE2_MAPMODE MAP_100TH_MM
321 #if defined (_INC_WINDOWS) || defined (_WINDOWS_)
322 RECT
GetSysRect( const Rectangle
& rRect
);
323 Rectangle
GetSvRect( const RECT
& rRect
);
327 ByteString
SvPrint( const SvBorder
& );
328 ByteString
SvPrint( const Rectangle
& );
329 ByteString
SvPrint( const Point
& );
330 ByteString
SvPrint( const Size
& );
333 //=========================================================================