xref: /trunk/main/xmloff/source/core/facreg.cxx (revision 63bba73c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_xmloff.hxx"
26 
27 #include "sal/config.h"
28 
29 #include "xmloff/dllapi.h"
30 
31 #include <string.h>
32 #include <com/sun/star/container/XSet.hpp>
33 #include <com/sun/star/registry/XRegistryKey.hpp>
34 #include <osl/diagnose.h>
35 #include <tools/debug.hxx>
36 
37 #include <cppuhelper/factory.hxx>
38 #include <uno/lbnames.h>
39 #include "xmloff/xmlreg.hxx"
40 
41 using namespace rtl;
42 using namespace com::sun::star;
43 
44 #define SERVICE( className )										\
45 extern OUString SAL_CALL className##_getImplementationName() throw();	\
46 extern uno::Sequence< OUString > SAL_CALL className##_getSupportedServiceNames() throw();\
47 extern uno::Reference< uno::XInterface > SAL_CALL className##_createInstance(			\
48 		const uno::Reference< lang::XMultiServiceFactory > & rSMgr )				\
49 	throw( uno::Exception )
50 
51 // impress oasis import
52 SERVICE( XMLImpressImportOasis );
53 SERVICE( XMLImpressStylesImportOasis );
54 SERVICE( XMLImpressContentImportOasis );
55 SERVICE( XMLImpressMetaImportOasis );
56 SERVICE( XMLImpressSettingsImportOasis );
57 
58 // impress oasis export
59 SERVICE( XMLImpressExportOasis );
60 SERVICE( XMLImpressStylesExportOasis );
61 SERVICE( XMLImpressContentExportOasis );
62 SERVICE( XMLImpressMetaExportOasis );
63 SERVICE( XMLImpressSettingsExportOasis );
64 
65 // impress OOo import
66 
67 // impress OOo export
68 SERVICE( XMLImpressExportOOO );
69 SERVICE( XMLImpressStylesExportOOO );
70 SERVICE( XMLImpressContentExportOOO );
71 SERVICE( XMLImpressMetaExportOOO );
72 SERVICE( XMLImpressSettingsExportOOO );
73 
74 // draw oasis import
75 SERVICE( XMLDrawImportOasis );
76 SERVICE( XMLDrawStylesImportOasis );
77 SERVICE( XMLDrawContentImportOasis );
78 SERVICE( XMLDrawMetaImportOasis );
79 SERVICE( XMLDrawSettingsImportOasis );
80 
81 // draw oasis export
82 SERVICE( XMLDrawExportOasis );
83 SERVICE( XMLDrawStylesExportOasis );
84 SERVICE( XMLDrawContentExportOasis );
85 SERVICE( XMLDrawMetaExportOasis );
86 SERVICE( XMLDrawSettingsExportOasis );
87 
88 // draw OOo import
89 
90 // draw OOo export
91 SERVICE( XMLDrawExportOOO );
92 SERVICE( XMLDrawStylesExportOOO );
93 SERVICE( XMLDrawContentExportOOO );
94 SERVICE( XMLDrawMetaExportOOO );
95 SERVICE( XMLDrawSettingsExportOOO );
96 
97 // impress animation import
98 SERVICE( AnimationsImport );
99 
100 // drawing layer export
101 SERVICE( XMLDrawingLayerExport );
102 
103 // impress xml clipboard export
104 SERVICE( XMLImpressClipboardExport );
105 
106 // chart oasis import
107 SERVICE( SchXMLImport );
108 SERVICE( SchXMLImport_Meta );
109 SERVICE( SchXMLImport_Styles );
110 SERVICE( SchXMLImport_Content );
111 
112 // chart oasis export
113 SERVICE( SchXMLExport_Oasis );
114 SERVICE( SchXMLExport_Oasis_Meta );
115 SERVICE( SchXMLExport_Oasis_Styles );
116 SERVICE( SchXMLExport_Oasis_Content );
117 
118 // chart OOo import
119 
120 // chart OOo export
121 SERVICE( SchXMLExport );
122 SERVICE( SchXMLExport_Styles );
123 SERVICE( SchXMLExport_Content );
124 
125 // version list import/export
126 SERVICE( XMLVersionListPersistence );
127 
128 // meta export
129 SERVICE( XMLMetaExportComponent );
130 
131 // meta import
132 SERVICE( XMLMetaImportComponent );
133 
134 // meta export OOo
135 SERVICE( XMLMetaExportOOO );
136 
137 // writer autotext event export
138 SERVICE( XMLAutoTextEventExport );
139 
140 // writer autotext event import
141 SERVICE( XMLAutoTextEventImport );
142 
143 // writer autotext event export OOo
144 SERVICE( XMLAutoTextEventExportOOO );
145 
146 // writer autotext event import OOo
147 SERVICE( XMLAutoTextEventImportOOO );
148 
149 // Oasis2OOo transformer
150 SERVICE( Oasis2OOoTransformer );
151 
152 // OOo2Oasis transformer
153 SERVICE( OOo2OasisTransformer );
154 
155 //
156 #ifdef __cplusplus
157 extern "C"
158 {
159 #endif
160 
component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName,uno_Environment **)161 XMLOFF_DLLPUBLIC void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** )
162 {
163 	*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
164 }
165 
166 #define SINGLEFACTORY(classname)\
167 		if( classname##_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) )\
168 		{\
169 			xFactory = ::cppu::createSingleFactory( xMSF,\
170 				classname##_getImplementationName(),\
171 				classname##_createInstance,\
172 				classname##_getSupportedServiceNames() );\
173 		}
174 
component_getFactory(const sal_Char * pImplName,void * pServiceManager,void *)175 XMLOFF_DLLPUBLIC void * SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
176 {
177 	void * pRet = 0;
178 	if( pServiceManager )
179 	{
180 		uno::Reference< lang::XMultiServiceFactory > xMSF( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ) );
181 
182 		uno::Reference< lang::XSingleServiceFactory > xFactory;
183 
184 		const sal_Int32 nImplNameLen = strlen( pImplName );
185 
186 		// impress oasis import
187 		SINGLEFACTORY( XMLImpressImportOasis )
188 		else SINGLEFACTORY( XMLImpressStylesImportOasis )
189 		else SINGLEFACTORY( XMLImpressContentImportOasis )
190 		else SINGLEFACTORY( XMLImpressMetaImportOasis )
191 		else SINGLEFACTORY( XMLImpressSettingsImportOasis )
192 
193 		// impress oasis export
194 		else SINGLEFACTORY( XMLImpressExportOasis )
195 		else SINGLEFACTORY( XMLImpressStylesExportOasis )
196 		else SINGLEFACTORY( XMLImpressContentExportOasis )
197 		else SINGLEFACTORY( XMLImpressMetaExportOasis )
198 		else SINGLEFACTORY( XMLImpressSettingsExportOasis )
199 
200 		else SINGLEFACTORY( AnimationsImport )
201 
202 		// impress OOo export
203 		else SINGLEFACTORY( XMLImpressExportOOO )
204 		else SINGLEFACTORY( XMLImpressStylesExportOOO )
205 		else SINGLEFACTORY( XMLImpressContentExportOOO )
206 		else SINGLEFACTORY( XMLImpressMetaExportOOO )
207 		else SINGLEFACTORY( XMLImpressSettingsExportOOO )
208 
209 		// draw oasis import
210 		else SINGLEFACTORY( XMLDrawImportOasis )
211 		else SINGLEFACTORY( XMLDrawStylesImportOasis )
212 		else SINGLEFACTORY( XMLDrawContentImportOasis )
213 		else SINGLEFACTORY( XMLDrawMetaImportOasis )
214 		else SINGLEFACTORY( XMLDrawSettingsImportOasis )
215 
216 		// draw oasis export
217 		else SINGLEFACTORY( XMLDrawExportOasis )
218 		else SINGLEFACTORY( XMLDrawStylesExportOasis )
219 		else SINGLEFACTORY( XMLDrawContentExportOasis )
220 		else SINGLEFACTORY( XMLDrawMetaExportOasis )
221 		else SINGLEFACTORY( XMLDrawSettingsExportOasis )
222 
223 		// draw OOo export
224 		else SINGLEFACTORY( XMLDrawExportOOO )
225 		else SINGLEFACTORY( XMLDrawStylesExportOOO )
226 		else SINGLEFACTORY( XMLDrawContentExportOOO )
227 		else SINGLEFACTORY( XMLDrawMetaExportOOO )
228 		else SINGLEFACTORY( XMLDrawSettingsExportOOO )
229 
230 		// drawing layer export
231 		else SINGLEFACTORY( XMLDrawingLayerExport )
232 
233 		// impress xml clipboard export
234 		else SINGLEFACTORY( XMLImpressClipboardExport )
235 
236 		// chart oasis import
237 		else SINGLEFACTORY( SchXMLImport )
238 		else SINGLEFACTORY( SchXMLImport_Meta )
239 		else SINGLEFACTORY( SchXMLImport_Styles )
240 		else SINGLEFACTORY( SchXMLImport_Content )
241 
242 		// chart oasis export
243 		else SINGLEFACTORY( SchXMLExport_Oasis )
244 		else SINGLEFACTORY( SchXMLExport_Oasis_Meta )
245 		else SINGLEFACTORY( SchXMLExport_Oasis_Styles )
246 		else SINGLEFACTORY( SchXMLExport_Oasis_Content )
247 
248 		// chart OOo export
249 		else SINGLEFACTORY( SchXMLExport )
250 		else SINGLEFACTORY( SchXMLExport_Styles )
251 		else SINGLEFACTORY( SchXMLExport_Content )
252 
253 		// meta import/export
254 		else SINGLEFACTORY( XMLMetaExportComponent )
255 		else SINGLEFACTORY( XMLMetaImportComponent )
256 
257         else SINGLEFACTORY( XMLVersionListPersistence )
258 
259 		// meta import/export OOo
260 		else SINGLEFACTORY( XMLMetaExportOOO )
261 
262 		// auto text import/export
263 		else SINGLEFACTORY( XMLAutoTextEventExport )
264 		else SINGLEFACTORY( XMLAutoTextEventImport )
265 		else SINGLEFACTORY( XMLAutoTextEventExportOOO )
266 
267 		if( xFactory.is())
268 		{
269 			xFactory->acquire();
270 			pRet = xFactory.get();
271 		}
272 	}
273 	return pRet;
274 }
275 
276 #ifdef __cplusplus
277 }
278 #endif
279 
280