UDK 3.2.7 C/C++ API Reference
uno/environment.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /*************************************************************************
00003  *
00004  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
00005  *
00006  * Copyright 2000, 2010 Oracle and/or its affiliates.
00007  *
00008  * OpenOffice.org - a multi-platform office productivity suite
00009  *
00010  * This file is part of OpenOffice.org.
00011  *
00012  * OpenOffice.org is free software: you can redistribute it and/or modify
00013  * it under the terms of the GNU Lesser General Public License version 3
00014  * only, as published by the Free Software Foundation.
00015  *
00016  * OpenOffice.org is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU Lesser General Public License version 3 for more details
00020  * (a copy is included in the LICENSE file that accompanied this code).
00021  *
00022  * You should have received a copy of the GNU Lesser General Public License
00023  * version 3 along with OpenOffice.org.  If not, see
00024  * <http://www.openoffice.org/license.html>
00025  * for a copy of the LGPLv3 License.
00026  *
00027  ************************************************************************/
00028 #ifndef _UNO_ENVIRONMENT_H_
00029 #define _UNO_ENVIRONMENT_H_
00030 
00031 #include <cppu/cppudllapi.h>
00032 #include <rtl/ustring.h>
00033 
00034 #include <stdarg.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040 
00041 struct _uno_ExtEnvironment;
00042 struct _typelib_InterfaceTypeDescription;
00043 
00044 #if defined( SAL_W32)
00045 #pragma pack(push, 8)
00046 #endif
00047 
00050 typedef struct _uno_Environment
00051 {
00054     void *              pReserved;
00055 
00058     rtl_uString *       pTypeName;
00059 
00062     void *              pContext;
00063 
00066     struct _uno_ExtEnvironment * pExtEnv;
00067 
00072     void (SAL_CALL * acquire)( struct _uno_Environment * pEnv );
00073 
00079     void (SAL_CALL * release)( struct _uno_Environment * pEnv );
00080 
00086     void (SAL_CALL * acquireWeak)( struct _uno_Environment * pEnv );
00087 
00092     void (SAL_CALL * releaseWeak)( struct _uno_Environment * pEnv );
00093 
00100     void (SAL_CALL * harden)(
00101         struct _uno_Environment ** ppHardEnv,
00102         struct _uno_Environment * pEnv );
00103 
00109     void (SAL_CALL * dispose)( struct _uno_Environment * pEnv );
00110 
00111     /* ===== the following part will be late initialized by a matching bridge ===== *
00112      * ===== and is NOT for public use.                                       ===== */
00113 
00119     void (SAL_CALL * environmentDisposing)( struct _uno_Environment * pEnv );
00120 } uno_Environment;
00121 
00131 typedef void (SAL_CALL * uno_freeProxyFunc)( struct _uno_ExtEnvironment * pEnv, void * pProxy );
00132 
00138 typedef void * (SAL_CALL * uno_memAlloc)( sal_Size nBytes );
00139 
00142 typedef struct _uno_ExtEnvironment
00143 {
00146     uno_Environment aBase;
00147 
00155     void (SAL_CALL * registerInterface)(
00156         struct _uno_ExtEnvironment * pEnv,
00157         void ** ppInterface,
00158         rtl_uString * pOId,
00159         struct _typelib_InterfaceTypeDescription * pTypeDescr );
00160 
00170     void (SAL_CALL * registerProxyInterface)(
00171         struct _uno_ExtEnvironment * pEnv,
00172         void ** ppProxy,
00173         uno_freeProxyFunc freeProxy,
00174         rtl_uString * pOId,
00175         struct _typelib_InterfaceTypeDescription * pTypeDescr );
00176 
00183     void (SAL_CALL * revokeInterface)(
00184         struct _uno_ExtEnvironment * pEnv,
00185         void * pInterface );
00186 
00192     void (SAL_CALL * getObjectIdentifier)(
00193         struct _uno_ExtEnvironment * pEnv,
00194         rtl_uString ** ppOId,
00195         void * pInterface );
00196 
00205     void (SAL_CALL * getRegisteredInterface)(
00206         struct _uno_ExtEnvironment * pEnv,
00207         void ** ppInterface,
00208         rtl_uString * pOId,
00209         struct _typelib_InterfaceTypeDescription * pTypeDescr );
00210 
00219     void (SAL_CALL * getRegisteredInterfaces)(
00220         struct _uno_ExtEnvironment * pEnv,
00221         void *** pppInterfaces,
00222         sal_Int32 * pnLen,
00223         uno_memAlloc memAlloc );
00224 
00225     /* ===== the following part will be late initialized by a matching bridge ===== */
00226 
00233     void (SAL_CALL * computeObjectIdentifier)(
00234         struct _uno_ExtEnvironment * pEnv,
00235         rtl_uString ** ppOId, void * pInterface );
00236 
00242     void (SAL_CALL * acquireInterface)(
00243         struct _uno_ExtEnvironment * pEnv,
00244         void * pInterface );
00245 
00251     void (SAL_CALL * releaseInterface)(
00252         struct _uno_ExtEnvironment * pEnv,
00253         void * pInterface );
00254 
00255 } uno_ExtEnvironment;
00256 
00257 #if defined( SAL_W32)
00258 #pragma pack(pop)
00259 #endif
00260 
00266 typedef void (SAL_CALL * uno_initEnvironmentFunc)( uno_Environment * pEnv );
00267 #define UNO_INIT_ENVIRONMENT "uno_initEnvironment"
00268 
00269 #ifdef DISABLE_DYNLOADING
00270 /* We link statically and have just one kind of environment */
00271 void SAL_CALL CPPU_ENV_uno_initEnvironment( uno_Environment * Env )
00272      SAL_THROW_EXTERN_C();
00273 #endif
00274 
00282 CPPU_DLLPUBLIC void SAL_CALL uno_getEnvironment(
00283     uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext )
00284     SAL_THROW_EXTERN_C();
00285 
00294 CPPU_DLLPUBLIC void SAL_CALL uno_getRegisteredEnvironments(
00295     uno_Environment *** pppEnvs, sal_Int32 * pnLen, uno_memAlloc memAlloc,
00296     rtl_uString * pEnvDcp )
00297     SAL_THROW_EXTERN_C();
00298 
00305 CPPU_DLLPUBLIC void SAL_CALL uno_createEnvironment(
00306     uno_Environment ** ppEnv, rtl_uString * pEnvDcp, void * pContext )
00307     SAL_THROW_EXTERN_C();
00308 
00315 CPPU_DLLPUBLIC void SAL_CALL uno_dumpEnvironment(
00316     void * stream, uno_Environment * pEnv, const sal_Char * pFilter )
00317     SAL_THROW_EXTERN_C();
00324 CPPU_DLLPUBLIC void SAL_CALL uno_dumpEnvironmentByName(
00325     void * stream, rtl_uString * pEnvDcp, const sal_Char * pFilter )
00326     SAL_THROW_EXTERN_C();
00327 
00328 
00329 
00338 CPPU_DLLPUBLIC void SAL_CALL uno_getCurrentEnvironment(uno_Environment ** ppEnv, rtl_uString * pTypeName)
00339     SAL_THROW_EXTERN_C();
00340 
00343 typedef void SAL_CALL uno_EnvCallee(va_list * pParam);
00344 
00352 CPPU_DLLPUBLIC void SAL_CALL uno_Environment_invoke_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list * pParam)
00353     SAL_THROW_EXTERN_C();
00354 
00362 CPPU_DLLPUBLIC void SAL_CALL uno_Environment_invoke (uno_Environment * pEnv, uno_EnvCallee * pCallee, ...)
00363     SAL_THROW_EXTERN_C();
00364 
00370 CPPU_DLLPUBLIC void SAL_CALL uno_Environment_enter(uno_Environment * pEnv)
00371     SAL_THROW_EXTERN_C();
00372 
00381 CPPU_DLLPUBLIC int SAL_CALL uno_Environment_isValid(uno_Environment * pEnv, rtl_uString ** pReason)
00382     SAL_THROW_EXTERN_C();
00383 
00384 #ifdef __cplusplus
00385 }
00386 #endif
00387 
00388 #endif
00389 
00390 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines