Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*************************************************************************
3 : *
4 : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : *
6 : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : *
8 : * OpenOffice.org - a multi-platform office productivity suite
9 : *
10 : * This file is part of OpenOffice.org.
11 : *
12 : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : * it under the terms of the GNU Lesser General Public License version 3
14 : * only, as published by the Free Software Foundation.
15 : *
16 : * OpenOffice.org is distributed in the hope that it will be useful,
17 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : * GNU Lesser General Public License version 3 for more details
20 : * (a copy is included in the LICENSE file that accompanied this code).
21 : *
22 : * You should have received a copy of the GNU Lesser General Public License
23 : * version 3 along with OpenOffice.org. If not, see
24 : * <http://www.openoffice.org/license.html>
25 : * for a copy of the LGPLv3 License.
26 : *
27 : ************************************************************************/
28 :
29 :
30 : #ifdef AIX
31 : #define _LINUX_SOURCE_COMPAT
32 : #include <sys/timer.h>
33 : #undef _LINUX_SOURCE_COMPAT
34 : #endif
35 :
36 : #ifdef WNT
37 : #include <prewin.h>
38 : #include <postwin.h>
39 : #endif
40 :
41 : #include <cstdarg>
42 :
43 : #include <plugin/impl.hxx>
44 : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
45 : #include <com/sun/star/lang/XSingleServiceFactory.hpp>
46 : #include <com/sun/star/container/XSet.hpp>
47 : #include <com/sun/star/registry/XRegistryKey.hpp>
48 :
49 : #include <uno/dispatcher.h>
50 : #include <uno/mapping.hxx>
51 :
52 : #include <cppuhelper/factory.hxx>
53 :
54 : using namespace cppu;
55 :
56 : extern "C" {
57 1 : SAL_DLLPUBLIC_EXPORT void* SAL_CALL pl_component_getFactory(
58 : const sal_Char* pImplementationName,
59 : void* pXUnoSMgr,
60 : void* /*pXUnoKey*/
61 : )
62 : {
63 1 : void* pRet = 0;
64 :
65 1 : OUString aImplName( OUString::createFromAscii( pImplementationName ) );
66 :
67 1 : if( pXUnoSMgr )
68 : {
69 : Reference< ::com::sun::star::lang::XMultiServiceFactory > xMgr(
70 : static_cast< ::com::sun::star::lang::XMultiServiceFactory* >( pXUnoSMgr )
71 1 : );
72 2 : Reference< ::com::sun::star::lang::XSingleServiceFactory > xFactory;
73 1 : if( aImplName.equals( XPluginManager_Impl::getImplementationName_Static() ) )
74 : {
75 2 : xFactory = ::cppu::createSingleFactory(
76 : xMgr, aImplName, PluginManager_CreateInstance,
77 1 : XPluginManager_Impl::getSupportedServiceNames_Static() );
78 : }
79 0 : else if( aImplName.equals( PluginModel::getImplementationName_Static() ) )
80 : {
81 0 : xFactory = ::cppu::createSingleFactory(
82 : xMgr, aImplName, PluginModel_CreateInstance,
83 0 : PluginModel::getSupportedServiceNames_Static() );
84 : }
85 1 : if( xFactory.is() )
86 : {
87 1 : xFactory->acquire();
88 1 : pRet = xFactory.get();
89 1 : }
90 : }
91 1 : return pRet;
92 : }
93 : } /* extern "C" */
94 :
95 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|