xref: /trunk/main/starmath/source/register.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
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.
14  *
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).
20  *
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.
25  *
26  ************************************************************************/
27 
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>
34 
35 #include <sfx2/sfxmodelfactory.hxx>
36 
37 #include "smdll.hxx"
38 #include "document.hxx"
39 #include "unomodel.hxx"
40 
41 using namespace ::rtl;
42 using namespace ::com::sun::star;
43 using namespace ::com::sun::star::uno;
44 using namespace ::com::sun::star::lang;
45 
46 //Math document
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 );
53 
54 //MathML import
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 );
72 
73 //MathML export
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 );
110 
111 
112 extern "C" {
113 
114 void SAL_CALL component_getImplementationEnvironment(
115         const  sal_Char**   ppEnvironmentTypeName,
116         uno_Environment**   /*ppEnvironment*/  )
117 {
118     *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
119 }
120 
121 void* SAL_CALL component_getFactory( const sal_Char* pImplementationName,
122                                      void* pServiceManager,
123                                      void* /*pRegistryKey*/ )
124 {
125     // Set default return value for this operation - if it failed.
126     void* pReturn = NULL ;
127 
128     if  (
129             ( pImplementationName   !=  NULL ) &&
130             ( pServiceManager       !=  NULL )
131         )
132     {
133         // Define variables which are used in following macros.
134         Reference< XSingleServiceFactory >   xFactory                                                                                                ;
135         Reference< XMultiServiceFactory >    xServiceManager( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
136 
137         if( SmXMLImport_getImplementationName().equalsAsciiL(
138             pImplementationName, strlen(pImplementationName)) )
139         {
140             xFactory = ::cppu::createSingleFactory( xServiceManager,
141             SmXMLImport_getImplementationName(),
142             SmXMLImport_createInstance,
143             SmXMLImport_getSupportedServiceNames() );
144         }
145         else if( SmXMLExport_getImplementationName().equalsAsciiL(
146             pImplementationName, strlen(pImplementationName)) )
147         {
148             xFactory = ::cppu::createSingleFactory( xServiceManager,
149             SmXMLExport_getImplementationName(),
150             SmXMLExport_createInstance,
151             SmXMLExport_getSupportedServiceNames() );
152         }
153         else if( SmXMLImportMeta_getImplementationName().equalsAsciiL(
154             pImplementationName, strlen(pImplementationName)) )
155         {
156             xFactory = ::cppu::createSingleFactory( xServiceManager,
157             SmXMLImportMeta_getImplementationName(),
158             SmXMLImportMeta_createInstance,
159             SmXMLImportMeta_getSupportedServiceNames() );
160         }
161         else if( SmXMLExportMetaOOO_getImplementationName().equalsAsciiL(
162             pImplementationName, strlen(pImplementationName)) )
163         {
164             xFactory = ::cppu::createSingleFactory( xServiceManager,
165             SmXMLExportMetaOOO_getImplementationName(),
166             SmXMLExportMetaOOO_createInstance,
167             SmXMLExportMetaOOO_getSupportedServiceNames() );
168         }
169         else if( SmXMLExportMeta_getImplementationName().equalsAsciiL(
170             pImplementationName, strlen(pImplementationName)) )
171         {
172             xFactory = ::cppu::createSingleFactory( xServiceManager,
173             SmXMLExportMeta_getImplementationName(),
174             SmXMLExportMeta_createInstance,
175             SmXMLExportMeta_getSupportedServiceNames() );
176         }
177         else if( SmXMLImportSettings_getImplementationName().equalsAsciiL(
178             pImplementationName, strlen(pImplementationName)) )
179         {
180             xFactory = ::cppu::createSingleFactory( xServiceManager,
181             SmXMLImportSettings_getImplementationName(),
182             SmXMLImportSettings_createInstance,
183             SmXMLImportSettings_getSupportedServiceNames() );
184         }
185         else if( SmXMLExportSettingsOOO_getImplementationName().equalsAsciiL(
186             pImplementationName, strlen(pImplementationName)) )
187         {
188             xFactory = ::cppu::createSingleFactory( xServiceManager,
189             SmXMLExportSettingsOOO_getImplementationName(),
190             SmXMLExportSettingsOOO_createInstance,
191             SmXMLExportSettingsOOO_getSupportedServiceNames() );
192         }
193         else if( SmXMLExportSettings_getImplementationName().equalsAsciiL(
194             pImplementationName, strlen(pImplementationName)) )
195         {
196             xFactory = ::cppu::createSingleFactory( xServiceManager,
197             SmXMLExportSettings_getImplementationName(),
198             SmXMLExportSettings_createInstance,
199             SmXMLExportSettings_getSupportedServiceNames() );
200         }
201         else if( SmXMLExportContent_getImplementationName().equalsAsciiL(
202             pImplementationName, strlen(pImplementationName)) )
203         {
204             xFactory = ::cppu::createSingleFactory( xServiceManager,
205             SmXMLExportContent_getImplementationName(),
206             SmXMLExportContent_createInstance,
207             SmXMLExportContent_getSupportedServiceNames() );
208         }
209         else if( SmDocument_getImplementationName().equalsAsciiL(
210             pImplementationName, strlen(pImplementationName)) )
211         {
212             xFactory = ::sfx2::createSfxModelFactory( xServiceManager,
213             SmDocument_getImplementationName(),
214             SmDocument_createInstance,
215             SmDocument_getSupportedServiceNames() );
216         }
217 
218 
219         // Factory is valid - service was found.
220         if ( xFactory.is() )
221         {
222             xFactory->acquire();
223             pReturn = xFactory.get();
224         }
225     }
226 
227     // Return with result of this operation.
228     return pReturn ;
229 }
230 } // extern "C"
231 
232 
233 
234