xref: /aoo41x/main/cppu/inc/uno/environment.h (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef _UNO_ENVIRONMENT_H_
28*cdf0e10cSrcweir #define _UNO_ENVIRONMENT_H_
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include <sal/types.h>
31*cdf0e10cSrcweir #include <rtl/ustring.h>
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir #include <stdarg.h>
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #ifdef __cplusplus
36*cdf0e10cSrcweir extern "C"
37*cdf0e10cSrcweir {
38*cdf0e10cSrcweir #endif
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir struct _uno_ExtEnvironment;
41*cdf0e10cSrcweir struct _typelib_InterfaceTypeDescription;
42*cdf0e10cSrcweir 
43*cdf0e10cSrcweir #if defined( SAL_W32)
44*cdf0e10cSrcweir #pragma pack(push, 8)
45*cdf0e10cSrcweir #elif defined(SAL_OS2)
46*cdf0e10cSrcweir #pragma pack(push, 8)
47*cdf0e10cSrcweir #endif
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir /** The binary specification of an UNO environment.
50*cdf0e10cSrcweir */
51*cdf0e10cSrcweir typedef struct _uno_Environment
52*cdf0e10cSrcweir {
53*cdf0e10cSrcweir 	/** reserved for future use (0 if not used)
54*cdf0e10cSrcweir 	*/
55*cdf0e10cSrcweir 	void *				pReserved;
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir 	/** type name of environment
58*cdf0e10cSrcweir 	*/
59*cdf0e10cSrcweir 	rtl_uString *		pTypeName;
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir 	/** free context pointer to be used for specific classes of environments (e.g., a jvm pointer)
62*cdf0e10cSrcweir 	*/
63*cdf0e10cSrcweir 	void *				pContext;
64*cdf0e10cSrcweir 
65*cdf0e10cSrcweir 	/** pointer to extended environment (interface registration functionality), if supported
66*cdf0e10cSrcweir 	*/
67*cdf0e10cSrcweir 	struct _uno_ExtEnvironment * pExtEnv;
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir 	/** Acquires this environment.
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir 		@param pEnv this environment
72*cdf0e10cSrcweir 	*/
73*cdf0e10cSrcweir 	void (SAL_CALL * acquire)( struct _uno_Environment * pEnv );
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir 	/** Releases this environment; last release of environment will revoke the environment from
76*cdf0e10cSrcweir         runtime.
77*cdf0e10cSrcweir 
78*cdf0e10cSrcweir 		@param pEnv this environment
79*cdf0e10cSrcweir 	*/
80*cdf0e10cSrcweir 	void (SAL_CALL * release)( struct _uno_Environment * pEnv );
81*cdf0e10cSrcweir 
82*cdf0e10cSrcweir 	/** Acquires this environment weakly.  You can only harden a weakly held environment if it
83*cdf0e10cSrcweir         is still acquired hard (acquire()).
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir 		@param pEnv this environment
86*cdf0e10cSrcweir 	*/
87*cdf0e10cSrcweir 	void (SAL_CALL * acquireWeak)( struct _uno_Environment * pEnv );
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir 	/** Releases this environment weakly in correspondence to acquireWeak().
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir 		@param pEnv this environment
92*cdf0e10cSrcweir 	*/
93*cdf0e10cSrcweir 	void (SAL_CALL * releaseWeak)( struct _uno_Environment * pEnv );
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir 	/** Makes hard reference out of weak referenced environment. You can only harden a weakly
96*cdf0e10cSrcweir         held environment if it is still acquired hard (acquire()).
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir 		@param ppHardEnv inout hard referenced environment (has to be released via release())
99*cdf0e10cSrcweir 		@param pEnv environment (may be weak referenced)
100*cdf0e10cSrcweir 	*/
101*cdf0e10cSrcweir 	void (SAL_CALL * harden)(
102*cdf0e10cSrcweir 		struct _uno_Environment ** ppHardEnv,
103*cdf0e10cSrcweir 		struct _uno_Environment * pEnv );
104*cdf0e10cSrcweir 
105*cdf0e10cSrcweir 	/** Call this function to EXPLICITLY dispose this environment (e.g., release all
106*cdf0e10cSrcweir         interfaces). You may want to call this function before shutting down due to a runtime error.
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir 		@param pEnv this environment
109*cdf0e10cSrcweir 	*/
110*cdf0e10cSrcweir 	void (SAL_CALL * dispose)( struct _uno_Environment * pEnv );
111*cdf0e10cSrcweir 
112*cdf0e10cSrcweir 	/* ===== the following part will be late initialized by a matching bridge ===== *
113*cdf0e10cSrcweir 	 * ===== and is NOT for public use.										  ===== */
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir 	/** CALLBACK function pointer: Disposing callback function pointer that can be set to get
116*cdf0e10cSrcweir                                    signalled before the environment is destroyed.
117*cdf0e10cSrcweir 
118*cdf0e10cSrcweir 		@param pEnv environment that is being disposed
119*cdf0e10cSrcweir 	*/
120*cdf0e10cSrcweir 	void (SAL_CALL * environmentDisposing)( struct _uno_Environment * pEnv );
121*cdf0e10cSrcweir } uno_Environment;
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir /** Generic function pointer declaration to free a proxy object if it is not needed by the
124*cdf0e10cSrcweir     environment anymore.
125*cdf0e10cSrcweir 	Any proxy object must register itself on first acquire() call and revoke itself on last
126*cdf0e10cSrcweir     release() call. This can happen several times because the environment caches proxy objects
127*cdf0e10cSrcweir 	until the environment explicitly frees the proxy object calling this function.
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir 	@param pEnv environment
130*cdf0e10cSrcweir 	@param pProxy proxy pointer
131*cdf0e10cSrcweir */
132*cdf0e10cSrcweir typedef void (SAL_CALL * uno_freeProxyFunc)( struct _uno_ExtEnvironment * pEnv, void * pProxy );
133*cdf0e10cSrcweir 
134*cdf0e10cSrcweir /** Generic function pointer declaration to allocate memory. Used with getRegisteredInterfaces().
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir 	@param nBytes amount of memory in bytes
137*cdf0e10cSrcweir 	@return pointer to allocated memory
138*cdf0e10cSrcweir */
139*cdf0e10cSrcweir typedef void * (SAL_CALL * uno_memAlloc)( sal_Size nBytes );
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir /** The binary specification of an UNO environment supporting interface registration.
142*cdf0e10cSrcweir */
143*cdf0e10cSrcweir typedef struct _uno_ExtEnvironment
144*cdf0e10cSrcweir {
145*cdf0e10cSrcweir 	/** inherits all members of an uno_Environment
146*cdf0e10cSrcweir 	*/
147*cdf0e10cSrcweir 	uno_Environment aBase;
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir 	/** Registers an interface of this environment.
150*cdf0e10cSrcweir 
151*cdf0e10cSrcweir 		@param pEnv			this environment
152*cdf0e10cSrcweir 		@param ppInterface	inout parameter of interface to be registered
153*cdf0e10cSrcweir 		@param pOId			object id of interface
154*cdf0e10cSrcweir 		@param pTypeDescr	type description of interface
155*cdf0e10cSrcweir 	*/
156*cdf0e10cSrcweir 	void (SAL_CALL * registerInterface)(
157*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
158*cdf0e10cSrcweir 		void ** ppInterface,
159*cdf0e10cSrcweir 		rtl_uString * pOId,
160*cdf0e10cSrcweir 		struct _typelib_InterfaceTypeDescription * pTypeDescr );
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir 	/** Registers a proxy interface of this environment that can be reanimated and is freed
163*cdf0e10cSrcweir         explicitly by this environment.
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir 		@param pEnv			this environment
166*cdf0e10cSrcweir 		@param ppInterface	inout parameter of interface to be registered
167*cdf0e10cSrcweir 		@param freeProxy	function to free proxy object
168*cdf0e10cSrcweir 		@param pOId			object id of interface
169*cdf0e10cSrcweir 		@param pTypeDescr	type description of interface
170*cdf0e10cSrcweir 	*/
171*cdf0e10cSrcweir 	void (SAL_CALL * registerProxyInterface)(
172*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
173*cdf0e10cSrcweir 		void ** ppProxy,
174*cdf0e10cSrcweir 		uno_freeProxyFunc freeProxy,
175*cdf0e10cSrcweir 		rtl_uString * pOId,
176*cdf0e10cSrcweir 		struct _typelib_InterfaceTypeDescription * pTypeDescr );
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir 	/** Revokes an interface from this environment. You have to revoke any interface that has
179*cdf0e10cSrcweir         been registered via this method.
180*cdf0e10cSrcweir 
181*cdf0e10cSrcweir 		@param pEnv			this environment
182*cdf0e10cSrcweir 		@param pInterface	interface to be revoked
183*cdf0e10cSrcweir 	*/
184*cdf0e10cSrcweir 	void (SAL_CALL * revokeInterface)(
185*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
186*cdf0e10cSrcweir 		void * pInterface );
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir 	/** Provides the object id of a given interface.
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir 		@param ppOut		inout oid
191*cdf0e10cSrcweir 		@param pInterface	interface of object
192*cdf0e10cSrcweir 	*/
193*cdf0e10cSrcweir 	void (SAL_CALL * getObjectIdentifier)(
194*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
195*cdf0e10cSrcweir 		rtl_uString ** ppOId,
196*cdf0e10cSrcweir 		void * pInterface );
197*cdf0e10cSrcweir 
198*cdf0e10cSrcweir 	/** Retrieves an interface identified by its object id and type from this environment.
199*cdf0e10cSrcweir 		Interfaces are retrieved in the same order as they are registered.
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 		@param pEnv			this environment
202*cdf0e10cSrcweir 		@param ppInterface	inout parameter for the registered interface; (0) if none was found
203*cdf0e10cSrcweir 		@param pOId			object id of interface to be retrieved
204*cdf0e10cSrcweir 		@param pTypeDescr	type description of interface to be retrieved
205*cdf0e10cSrcweir 	*/
206*cdf0e10cSrcweir 	void (SAL_CALL * getRegisteredInterface)(
207*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
208*cdf0e10cSrcweir 		void ** ppInterface,
209*cdf0e10cSrcweir 		rtl_uString * pOId,
210*cdf0e10cSrcweir 		struct _typelib_InterfaceTypeDescription * pTypeDescr );
211*cdf0e10cSrcweir 
212*cdf0e10cSrcweir 	/** Returns all currently registered interfaces of this environment. The memory block
213*cdf0e10cSrcweir         allocated might be slightly larger than (*pnLen * sizeof(void *)).
214*cdf0e10cSrcweir 
215*cdf0e10cSrcweir 		@param pEnv			this environment
216*cdf0e10cSrcweir 		@param pppInterfaces out param; pointer to array of interface pointers
217*cdf0e10cSrcweir 		@param pnLen		out param; length of array
218*cdf0e10cSrcweir 		@param memAlloc		function for allocating memory that is passed back
219*cdf0e10cSrcweir 	*/
220*cdf0e10cSrcweir 	void (SAL_CALL * getRegisteredInterfaces)(
221*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
222*cdf0e10cSrcweir 		void *** pppInterfaces,
223*cdf0e10cSrcweir 		sal_Int32 * pnLen,
224*cdf0e10cSrcweir 		uno_memAlloc memAlloc );
225*cdf0e10cSrcweir 
226*cdf0e10cSrcweir 	/* ===== the following part will be late initialized by a matching bridge ===== */
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir 	/** Computes an object id of the given interface; is called by the environment implementation.
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir 		@param pEnv			corresponding environment
231*cdf0e10cSrcweir 		@param ppOId		out param: computed id
232*cdf0e10cSrcweir 		@param pInterface	an interface
233*cdf0e10cSrcweir 	*/
234*cdf0e10cSrcweir 	void (SAL_CALL * computeObjectIdentifier)(
235*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
236*cdf0e10cSrcweir 		rtl_uString ** ppOId, void * pInterface );
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir 	/** Function to acquire an interface.
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir 		@param pEnv			corresponding environment
241*cdf0e10cSrcweir 		@param pInterface	an interface
242*cdf0e10cSrcweir 	*/
243*cdf0e10cSrcweir 	void (SAL_CALL * acquireInterface)(
244*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
245*cdf0e10cSrcweir 		void * pInterface );
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir 	/** Function to release an interface.
248*cdf0e10cSrcweir 
249*cdf0e10cSrcweir 		@param pEnv			corresponding environment
250*cdf0e10cSrcweir 		@param pInterface	an interface
251*cdf0e10cSrcweir 	*/
252*cdf0e10cSrcweir 	void (SAL_CALL * releaseInterface)(
253*cdf0e10cSrcweir 		struct _uno_ExtEnvironment * pEnv,
254*cdf0e10cSrcweir 		void * pInterface );
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir } uno_ExtEnvironment;
257*cdf0e10cSrcweir 
258*cdf0e10cSrcweir #if defined( SAL_W32) ||  defined(SAL_OS2)
259*cdf0e10cSrcweir #pragma pack(pop)
260*cdf0e10cSrcweir #endif
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir /** Function exported by some bridge library providing acquireInterface(), releaseInterface();
263*cdf0e10cSrcweir     may set a disposing callback.
264*cdf0e10cSrcweir 
265*cdf0e10cSrcweir 	@param pEnv environment to be initialized
266*cdf0e10cSrcweir */
267*cdf0e10cSrcweir typedef void (SAL_CALL * uno_initEnvironmentFunc)( uno_Environment * pEnv );
268*cdf0e10cSrcweir #define UNO_INIT_ENVIRONMENT "uno_initEnvironment"
269*cdf0e10cSrcweir 
270*cdf0e10cSrcweir /** Gets a specific environment. If the specified environment does not exist, then a default one
271*cdf0e10cSrcweir     is created and registered. The environment revokes itself on last release() call.
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir 	@param ppEnv		inout parameter of environment; given environment will be released
274*cdf0e10cSrcweir 	@param pEnvDcp	    descriptor of environment
275*cdf0e10cSrcweir 	@param pContext		some context pointer (e.g., to distinguish java vm; set 0 if not needed)
276*cdf0e10cSrcweir */
277*cdf0e10cSrcweir void SAL_CALL uno_getEnvironment(
278*cdf0e10cSrcweir 	uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext )
279*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
280*cdf0e10cSrcweir 
281*cdf0e10cSrcweir /** Gets all specified environments. Caller has to release returned environments and free allocated
282*cdf0e10cSrcweir     memory.
283*cdf0e10cSrcweir 
284*cdf0e10cSrcweir 	@param pppEnvs		out param; pointer to array of environments
285*cdf0e10cSrcweir 	@param pnLen		out param; length of array
286*cdf0e10cSrcweir 	@param memAlloc		function for allocating memory that is passed back
287*cdf0e10cSrcweir 	@param pEnvDcp      descriptor of environments; 0 defaults to all
288*cdf0e10cSrcweir */
289*cdf0e10cSrcweir void SAL_CALL uno_getRegisteredEnvironments(
290*cdf0e10cSrcweir 	uno_Environment *** pppEnvs, sal_Int32 * pnLen, uno_memAlloc memAlloc,
291*cdf0e10cSrcweir 	rtl_uString * pEnvDcp )
292*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir /** Creates an environment. The new environment is anonymous (NOT publicly registered/ accessible).
295*cdf0e10cSrcweir 
296*cdf0e10cSrcweir 	@param ppEnv		out parameter of environment; given environment will be released
297*cdf0e10cSrcweir 	@param pEnvDcp      descriptor of environment
298*cdf0e10cSrcweir 	@param pContext		context pointer (e.g., to distinguish java vm); set 0 if not needed
299*cdf0e10cSrcweir */
300*cdf0e10cSrcweir void SAL_CALL uno_createEnvironment(
301*cdf0e10cSrcweir 	uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext )
302*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
303*cdf0e10cSrcweir 
304*cdf0e10cSrcweir /** Dumps out environment information, i.e. registered interfaces.
305*cdf0e10cSrcweir 
306*cdf0e10cSrcweir 	@param stream		output stream (FILE *)
307*cdf0e10cSrcweir 	@param pEnv			environment to be dumped
308*cdf0e10cSrcweir 	@param pFilter		if not null, filters output
309*cdf0e10cSrcweir */
310*cdf0e10cSrcweir void SAL_CALL uno_dumpEnvironment(
311*cdf0e10cSrcweir 	void * stream, uno_Environment * pEnv, const sal_Char * pFilter )
312*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
313*cdf0e10cSrcweir /** Dumps out environment information, i.e. registered interfaces.
314*cdf0e10cSrcweir 
315*cdf0e10cSrcweir 	@param stream		output stream (FILE *)
316*cdf0e10cSrcweir 	@param pEnvDcp      descritpro of environment to be dumped
317*cdf0e10cSrcweir 	@param pFilter		if not null, filters output
318*cdf0e10cSrcweir */
319*cdf0e10cSrcweir void SAL_CALL uno_dumpEnvironmentByName(
320*cdf0e10cSrcweir 	void * stream, rtl_uString * pEnvDcp, const sal_Char * pFilter )
321*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir 
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir /** Returns the current Environment.
326*cdf0e10cSrcweir 	In case no Environment has explicitly been entered, a purpose free
327*cdf0e10cSrcweir 	default environment gets returned (e.g. the "uno" or "gcc3" Environment).
328*cdf0e10cSrcweir 
329*cdf0e10cSrcweir 	@param ppEnv	  inout parameter; a given environment will be released
330*cdf0e10cSrcweir 	@param pTypeName  the optional type of the environment, falls back to "uno"
331*cdf0e10cSrcweir     @since UDK 3.2.7
332*cdf0e10cSrcweir */
333*cdf0e10cSrcweir void SAL_CALL uno_getCurrentEnvironment(uno_Environment ** ppEnv, rtl_uString * pTypeName)
334*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir /** Typedef for variable argument function.
337*cdf0e10cSrcweir  */
338*cdf0e10cSrcweir typedef void SAL_CALL uno_EnvCallee(va_list * pParam);
339*cdf0e10cSrcweir 
340*cdf0e10cSrcweir /** Invoke the passed function in the given environment.
341*cdf0e10cSrcweir 
342*cdf0e10cSrcweir     @param pEnv     the target environment
343*cdf0e10cSrcweir     @param pCallee  the function to call
344*cdf0e10cSrcweir     @param pParam   the parameter pointer passed to the function
345*cdf0e10cSrcweir     @since UDK 3.2.7
346*cdf0e10cSrcweir  */
347*cdf0e10cSrcweir void SAL_CALL uno_Environment_invoke_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list * pParam)
348*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
349*cdf0e10cSrcweir 
350*cdf0e10cSrcweir /** Invoke the passed function in the given environment.
351*cdf0e10cSrcweir 
352*cdf0e10cSrcweir     @param pEnv     the target environment
353*cdf0e10cSrcweir     @param pCallee  the function to call
354*cdf0e10cSrcweir     @param ...      the parameters passed to the function
355*cdf0e10cSrcweir     @since UDK 3.2.7
356*cdf0e10cSrcweir */
357*cdf0e10cSrcweir void SAL_CALL uno_Environment_invoke (uno_Environment * pEnv, uno_EnvCallee * pCallee, ...)
358*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
359*cdf0e10cSrcweir 
360*cdf0e10cSrcweir /** Enter an environment explicitly.
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir 	@param pEnv    the environment to enter; NULL leaves all environments
363*cdf0e10cSrcweir     @since UDK 3.2.7
364*cdf0e10cSrcweir */
365*cdf0e10cSrcweir void SAL_CALL uno_Environment_enter(uno_Environment * pEnv)
366*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
367*cdf0e10cSrcweir 
368*cdf0e10cSrcweir /** Check if a particular environment is currently valid, so
369*cdf0e10cSrcweir 	that objects of that environment might be called.
370*cdf0e10cSrcweir 
371*cdf0e10cSrcweir 	@param pEnv                    the environment
372*cdf0e10cSrcweir     @param rtl_uString ** pReason  the reason, if it is not valid
373*cdf0e10cSrcweir 	@return                        1 == valid, 0 == invalid
374*cdf0e10cSrcweir     @since UDK 3.2.7
375*cdf0e10cSrcweir */
376*cdf0e10cSrcweir int SAL_CALL uno_Environment_isValid(uno_Environment * pEnv, rtl_uString ** pReason)
377*cdf0e10cSrcweir 	SAL_THROW_EXTERN_C();
378*cdf0e10cSrcweir 
379*cdf0e10cSrcweir 
380*cdf0e10cSrcweir 
381*cdf0e10cSrcweir #ifdef __cplusplus
382*cdf0e10cSrcweir }
383*cdf0e10cSrcweir #endif
384*cdf0e10cSrcweir 
385*cdf0e10cSrcweir #endif
386