1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_starmath.hxx"
30 #include <com/sun/star/lang/XServiceInfo.hpp>
31 #include <com/sun/star/registry/XRegistryKey.hpp>
32 #include <com/sun/star/uno/Sequence.h>
33 #include <rtl/ustring.hxx>
35 #include <sfx2/sfxmodelfactory.hxx>
38 #include "document.hxx"
39 #include "unomodel.hxx"
41 using namespace ::rtl
;
42 using namespace ::com::sun::star
;
43 using namespace ::com::sun::star::uno
;
44 using namespace ::com::sun::star::lang
;
47 extern Sequence
< OUString
> SAL_CALL
48 SmDocument_getSupportedServiceNames() throw();
49 extern OUString SAL_CALL
50 SmDocument_getImplementationName() throw();
51 extern Reference
< XInterface
>SAL_CALL
52 SmDocument_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
, const sal_uInt64 _nCreationFlags
) throw( Exception
);
55 extern Sequence
< OUString
> SAL_CALL
56 SmXMLImport_getSupportedServiceNames() throw();
57 extern OUString SAL_CALL
58 SmXMLImport_getImplementationName() throw();
59 extern Reference
< XInterface
> SAL_CALL
60 SmXMLImport_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
61 extern Sequence
< OUString
> SAL_CALL
62 SmXMLImportMeta_getSupportedServiceNames() throw();
63 extern OUString SAL_CALL
64 SmXMLImportMeta_getImplementationName() throw();
65 extern Reference
< XInterface
> SAL_CALL
66 SmXMLImportMeta_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
67 extern Sequence
< OUString
> SAL_CALL
68 SmXMLImportSettings_getSupportedServiceNames() throw();
69 extern OUString SAL_CALL
SmXMLImportSettings_getImplementationName() throw();
70 extern Reference
< XInterface
> SAL_CALL
71 SmXMLImportSettings_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
74 extern Sequence
< OUString
> SAL_CALL
75 SmXMLExport_getSupportedServiceNames() throw();
76 extern OUString SAL_CALL
77 SmXMLExport_getImplementationName() throw();
78 extern Reference
< XInterface
> SAL_CALL
79 SmXMLExport_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
80 extern Sequence
< OUString
> SAL_CALL
81 SmXMLExportMetaOOO_getSupportedServiceNames() throw();
82 extern OUString SAL_CALL
83 SmXMLExportMetaOOO_getImplementationName() throw();
84 extern Reference
< XInterface
> SAL_CALL
85 SmXMLExportMetaOOO_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
86 extern Sequence
< OUString
> SAL_CALL
87 SmXMLExportMeta_getSupportedServiceNames() throw();
88 extern OUString SAL_CALL
89 SmXMLExportMeta_getImplementationName() throw();
90 extern Reference
< XInterface
> SAL_CALL
91 SmXMLExportMeta_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
92 extern Sequence
< OUString
> SAL_CALL
93 SmXMLExportSettingsOOO_getSupportedServiceNames() throw();
94 extern OUString SAL_CALL
95 SmXMLExportSettingsOOO_getImplementationName() throw();
96 extern Reference
< XInterface
> SAL_CALL
97 SmXMLExportSettingsOOO_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
98 extern Sequence
< OUString
> SAL_CALL
99 SmXMLExportSettings_getSupportedServiceNames() throw();
100 extern OUString SAL_CALL
101 SmXMLExportSettings_getImplementationName() throw();
102 extern Reference
< XInterface
> SAL_CALL
103 SmXMLExportSettings_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
104 extern Sequence
< OUString
> SAL_CALL
105 SmXMLExportContent_getSupportedServiceNames() throw();
106 extern OUString SAL_CALL
107 SmXMLExportContent_getImplementationName() throw();
108 extern Reference
< XInterface
> SAL_CALL
109 SmXMLExportContent_createInstance(const Reference
< XMultiServiceFactory
> & rSMgr
) throw( Exception
);
114 void SAL_CALL
component_getImplementationEnvironment(
115 const sal_Char
** ppEnvironmentTypeName
,
116 uno_Environment
** /*ppEnvironment*/ )
118 *ppEnvironmentTypeName
= CPPU_CURRENT_LANGUAGE_BINDING_NAME
;
121 void* SAL_CALL
component_getFactory( const sal_Char
* pImplementationName
,
122 void* pServiceManager
,
123 void* /*pRegistryKey*/ )
125 // Set default return value for this operation - if it failed.
126 void* pReturn
= NULL
;
129 ( pImplementationName
!= NULL
) &&
130 ( pServiceManager
!= NULL
)
133 // Define variables which are used in following macros.
134 Reference
< XSingleServiceFactory
> xFactory
;
135 Reference
< XMultiServiceFactory
> xServiceManager( reinterpret_cast< XMultiServiceFactory
* >( pServiceManager
) ) ;
137 if( SmXMLImport_getImplementationName().equalsAsciiL(
138 pImplementationName
, strlen(pImplementationName
)) )
140 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
141 SmXMLImport_getImplementationName(),
142 SmXMLImport_createInstance
,
143 SmXMLImport_getSupportedServiceNames() );
145 else if( SmXMLExport_getImplementationName().equalsAsciiL(
146 pImplementationName
, strlen(pImplementationName
)) )
148 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
149 SmXMLExport_getImplementationName(),
150 SmXMLExport_createInstance
,
151 SmXMLExport_getSupportedServiceNames() );
153 else if( SmXMLImportMeta_getImplementationName().equalsAsciiL(
154 pImplementationName
, strlen(pImplementationName
)) )
156 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
157 SmXMLImportMeta_getImplementationName(),
158 SmXMLImportMeta_createInstance
,
159 SmXMLImportMeta_getSupportedServiceNames() );
161 else if( SmXMLExportMetaOOO_getImplementationName().equalsAsciiL(
162 pImplementationName
, strlen(pImplementationName
)) )
164 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
165 SmXMLExportMetaOOO_getImplementationName(),
166 SmXMLExportMetaOOO_createInstance
,
167 SmXMLExportMetaOOO_getSupportedServiceNames() );
169 else if( SmXMLExportMeta_getImplementationName().equalsAsciiL(
170 pImplementationName
, strlen(pImplementationName
)) )
172 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
173 SmXMLExportMeta_getImplementationName(),
174 SmXMLExportMeta_createInstance
,
175 SmXMLExportMeta_getSupportedServiceNames() );
177 else if( SmXMLImportSettings_getImplementationName().equalsAsciiL(
178 pImplementationName
, strlen(pImplementationName
)) )
180 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
181 SmXMLImportSettings_getImplementationName(),
182 SmXMLImportSettings_createInstance
,
183 SmXMLImportSettings_getSupportedServiceNames() );
185 else if( SmXMLExportSettingsOOO_getImplementationName().equalsAsciiL(
186 pImplementationName
, strlen(pImplementationName
)) )
188 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
189 SmXMLExportSettingsOOO_getImplementationName(),
190 SmXMLExportSettingsOOO_createInstance
,
191 SmXMLExportSettingsOOO_getSupportedServiceNames() );
193 else if( SmXMLExportSettings_getImplementationName().equalsAsciiL(
194 pImplementationName
, strlen(pImplementationName
)) )
196 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
197 SmXMLExportSettings_getImplementationName(),
198 SmXMLExportSettings_createInstance
,
199 SmXMLExportSettings_getSupportedServiceNames() );
201 else if( SmXMLExportContent_getImplementationName().equalsAsciiL(
202 pImplementationName
, strlen(pImplementationName
)) )
204 xFactory
= ::cppu::createSingleFactory( xServiceManager
,
205 SmXMLExportContent_getImplementationName(),
206 SmXMLExportContent_createInstance
,
207 SmXMLExportContent_getSupportedServiceNames() );
209 else if( SmDocument_getImplementationName().equalsAsciiL(
210 pImplementationName
, strlen(pImplementationName
)) )
212 xFactory
= ::sfx2::createSfxModelFactory( xServiceManager
,
213 SmDocument_getImplementationName(),
214 SmDocument_createInstance
,
215 SmDocument_getSupportedServiceNames() );
219 // Factory is valid - service was found.
223 pReturn
= xFactory
.get();
227 // Return with result of this operation.