1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#ifndef INCLUDED_CPPUHELPER_FACTORY_HXX
20#define INCLUDED_CPPUHELPER_FACTORY_HXX
21
22#include <rtl/ustring.hxx>
23#include <uno/dispatcher.h>
24#include <rtl/unload.h>
25
26#include <com/sun/star/uno/XComponentContext.hpp>
27#include <com/sun/star/lang/XSingleComponentFactory.hpp>
28#include <com/sun/star/lang/XSingleServiceFactory.hpp>
29#include <com/sun/star/lang/XMultiServiceFactory.hpp>
30#include <com/sun/star/registry/XRegistryKey.hpp>
31#include <cppuhelper/cppuhelperdllapi.h>
32
33//##################################################################################################
34
35#define COMPONENT_GETENV "component_getImplementationEnvironment"
36#define COMPONENT_GETENVEXT "component_getImplementationEnvironmentExt"
37#define COMPONENT_GETDESCRIPTION "component_getDescription"
38#define COMPONENT_WRITEINFO "component_writeInfo"
39#define COMPONENT_GETFACTORY "component_getFactory"
40
41typedef struct _uno_Environment uno_Environment;
42
43/** Function pointer declaration.
44 Function determines the environment of the component implementation, i.e. which compiler
45 compiled it. If the environment is NOT session specific (needs no additional context),
46 then this function should return the environment type name and leave ppEnv (to 0).
47
48 @param ppEnvTypeName environment type name; string must be constant
49 @param ppEnv function returns its environment if the environment is session specific,
50 i.e. has special context
51*/
52typedef void (SAL_CALL * component_getImplementationEnvironmentFunc)(
53 const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv );
54
55/** Function pointer declaration.
56 Function determines the environment of the component implementation, i.e. the compiler.
57 If the environment is NOT session specific (needs no additional context),
58 then this function should return the environment type name and leave ppEnv (to 0).
59
60 @param ppEnvTypeName environment type name; string must be a constant
61 @param ppEnv function returns an environment if the environment is session specific,
62 i.e. has special context
63 @param pImplName
64*/
65typedef void (SAL_CALL * component_getImplementationEnvironmentExtFunc)(
66 sal_Char const ** ppEnvTypeName,
67 uno_Environment ** ppEnv,
68 sal_Char const * pImplName,
69 uno_Environment * pTargetEnv
70);
71
72/** Function pointer declaration.
73 Function retrieves a component description.
74
75 @return an XML formatted string containing a short component description
76 @deprecated
77*/
78typedef const sal_Char * (SAL_CALL * component_getDescriptionFunc)(void);
79
80/** Function pointer declaration.
81
82 @deprecated component_writeInfo should no longer be used in new components
83
84 Function writes component registry info, at least writing the supported service names.
85
86 @param pServiceManager
87 a service manager (the type is an XMultiServiceFactory that can be used
88 by the environment returned by component_getImplementationEnvironment)
89 @param pRegistryKey a registry key
90 (the type is XRegistryKey that can be used by the environment
91 returned by component_getImplementationEnvironment)
92 @return true if everything went fine
93*/
94typedef sal_Bool (SAL_CALL * component_writeInfoFunc)(
95 void * pServiceManager, void * pRegistryKey );
96
97/** Function pointer declaration.
98 Retrieves a factory to create component instances.
99
100 @param pImplName
101 desired implementation name
102 @param pServiceManager
103 a service manager (the type is XMultiServiceFactory that can be used by the environment
104 returned by component_getImplementationEnvironment)
105 @param pRegistryKey
106 a registry key (the type is XRegistryKey that can be used by the environment
107 returned by component_getImplementationEnvironment)
108 @return acquired component factory
109 (the type is lang::XSingleComponentFactory or lang::XSingleServiceFactory to be used by the
110 environment returned by component_getImplementationEnvironment)
111*/
112typedef void * (SAL_CALL * component_getFactoryFunc)(
113 const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey );
114
115//##################################################################################################
116
117namespace cppu
118{
119
120/** Function pointer declaration.
121 Function creates component instance passing the component context to be used.
122
123 @param xContext component context to be used
124 @return component instance
125*/
126typedef ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(
127 SAL_CALL * ComponentFactoryFunc)(
128 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & xContext )
129 SAL_THROW( (::com::sun::star::uno::Exception) );
130
131/** Creates a single component factory supporting the XSingleComponentFactory interface.
132
133 @param fptr function pointer for instanciating the object
134 @param rImplementationName implementation name of service
135 @param rServiceNames supported services
136 @param pModCount a backwards-compatibility remainder of a removed library
137 unloading feature; always set to null
138*/
139CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory >
140SAL_CALL createSingleComponentFactory(
141 ComponentFactoryFunc fptr,
142 ::rtl::OUString const & rImplementationName,
143 ::com::sun::star::uno::Sequence< ::rtl::OUString > const & rServiceNames,
144 rtl_ModuleCount * pModCount = 0 )
145 SAL_THROW(());
146
147/** Creates a single service factory which holds the instance created only once.
148
149 @param fptr function pointer for instanciating the object
150 @param rImplementationName implementation name of service
151 @param rServiceNames supported services
152 @param pModCount a backwards-compatibility remainder of a removed library
153 unloading feature; always set to null
154
155 @see createSingleComponentFactory
156*/
157CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > SAL_CALL
158createOneInstanceComponentFactory(
159 ComponentFactoryFunc fptr,
160 ::rtl::OUString const & rImplementationName,
161 ::com::sun::star::uno::Sequence< ::rtl::OUString > const & rServiceNames,
162 rtl_ModuleCount * pModCount = 0 )
163 SAL_THROW(());
164
165/** Deprecated. The type of the instanciate function used as argument of the create*Fcatory functions.
166
167 @see createSingleFactory
168 @see createOneInstanceFactory
169 @deprecated
170*/
171typedef ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(SAL_CALL * ComponentInstantiation)(
172 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager );
173
174/** Deprecated. Creates a single service factory.
175
176 @param rServiceManager the service manager used by the implementation.
177 @param rImplementationName the implementation name. An empty string is possible.
178 @param pCreateFunction the function pointer to create an object.
179 @param rServiceNames the service supported by the implementation.
180 @param pModCount a backwards-compatibility remainder of a removed library
181 unloading feature; always set to null.
182 @return a factory that support the interfaces XServiceProvider, XServiceInfo
183 XSingleServiceFactory and XComponent.
184
185 @see createOneInstanceFactory
186 @deprecated
187*/
188CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > SAL_CALL
189createSingleFactory(
190 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager,
191 const ::rtl::OUString & rImplementationName,
192 ComponentInstantiation pCreateFunction,
193 const ::com::sun::star::uno::Sequence< ::rtl::OUString > & rServiceNames,
194 rtl_ModuleCount * pModCount = 0 )
195 SAL_THROW(());
196
197/** Deprecated. Creates a factory wrapping another one.
198 This means the methods of the interfaces XServiceProvider, XServiceInfo and
199 XSingleServiceFactory are forwarded.
200 @attention
201 The XComponent interface is not supported!
202
203 @param rServiceManager the service manager used by the implementation.
204 @param rFactory the wrapped service factory.
205 @return a factory that support the interfaces XServiceProvider, XServiceInfo
206 XSingleServiceFactory.
207
208 @see createSingleFactory
209 @deprecated
210*/
211CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > SAL_CALL
212createFactoryProxy(
213 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager,
214 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > & rFactory )
215 SAL_THROW(());
216
217/** Deprecated. Creates a single service factory which holds the instance created only once.
218
219 @param rServiceManager the service manager used by the implementation.
220 @param rComponentName the implementation name. An empty string is possible.
221 @param pCreateFunction the function pointer to create an object.
222 @param rServiceNames the service supported by the implementation.
223 @param pModCount a backwards-compatibility remainder of a removed library
224 unloading feature; always set to null.
225 @return a factory that support the interfaces XServiceProvider, XServiceInfo
226 XSingleServiceFactory and XComponent.
227
228 @see createSingleFactory
229 @deprecated
230*/
231CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > SAL_CALL
232createOneInstanceFactory(
233 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager,
234 const ::rtl::OUString & rComponentName,
235 ComponentInstantiation pCreateFunction,
236 const ::com::sun::star::uno::Sequence< ::rtl::OUString > & rServiceNames,
237 rtl_ModuleCount * pModCount = 0 )
238 SAL_THROW(());
239
240/** Deprecated. Creates a single service factory based on a registry.
241
242 @param rServiceManager the service manager used by the implementation.
243 @param rImplementationName the implementation name. An empty string is possible.
244 @param rImplementationKey the registry key of the implementation section.
245 @return a factory that support the interfaces XServiceProvider, XServiceInfo
246 XSingleServiceFactory and XComponent.
247 @deprecated
248*/
249CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > SAL_CALL
250createSingleRegistryFactory(
251 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager,
252 const ::rtl::OUString & rImplementationName,
253 const ::com::sun::star::uno::Reference< ::com::sun::star::registry::XRegistryKey > & rImplementationKey )
254 SAL_THROW(());
255
256/** Deprecated. Creates a single service factory which holds the instance created only once
257 based on a registry.
258
259 @param rServiceManager the service manager used by the implementation.
260 @param rComponentName the implementation name. An empty string is possible.
261 @param rImplementationKey the registry key of the implementation section.
262 @return a factory that support the interfaces XServiceProvider, XServiceInfo
263 XSingleServiceFactory and XComponent.
264
265 @see createSingleRegistryFactory
266 @deprecated
267*/
268CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > SAL_CALL
269createOneInstanceRegistryFactory(
270 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rServiceManager,
271 const ::rtl::OUString & rComponentName,
272 const ::com::sun::star::uno::Reference< ::com::sun::star::registry::XRegistryKey > & rImplementationKey )
273 SAL_THROW(());
274
275}
276
277#endif
278
279/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
280