/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include #include #include #include #include #include #include #include #if defined __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunknown-attributes" #endif #include #if defined __clang__ #pragma clang diagnostic pop #endif #include #include "juhx-export-functions.hxx" #include "vm.hxx" #ifdef DISABLE_DYNLOADING #include #endif using namespace ::com::sun::star; using namespace ::com::sun::star::uno; /* * Class: com_sun_star_comp_helper_SharedLibraryLoader * Method: component_writeInfo * Signature: (Ljava/lang/String;Lcom/sun/star/lang/XMultiServiceFactory;Lcom/sun/star/registry/XRegistryKey;)Z */ jboolean Java_com_sun_star_comp_helper_SharedLibraryLoader_component_1writeInfo( JNIEnv * pJEnv, SAL_UNUSED_PARAMETER jclass, jstring jLibName, jobject jSMgr, jobject jRegKey, jobject loader ) { bool bRet = false; const jchar* pJLibName = pJEnv->GetStringChars(jLibName, nullptr); OUString aLibName(reinterpret_cast(pJLibName)); pJEnv->ReleaseStringChars(jLibName, pJLibName); #ifdef DISABLE_DYNLOADING (void) jSMgr; (void) jRegKey; (void) loader; fprintf(stderr, "Hmm, %s called for %s\n", __PRETTY_FUNCTION__, OUStringToOString(aLibName, osl_getThreadTextEncoding()).getStr()); #else osl::Module lib(aLibName, SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL); if (lib.is()) { // ========================= LATEST VERSION ========================= oslGenericFunction pSym = lib.getFunctionSymbol(COMPONENT_GETENV); if (pSym) { Environment java_env, loader_env; const char * pEnvTypeName = nullptr; (*reinterpret_cast(pSym))( &pEnvTypeName, reinterpret_cast(&loader_env) ); if (! loader_env.is()) { OUString aEnvTypeName( OUString::createFromAscii( pEnvTypeName ) ); uno_getEnvironment( reinterpret_cast(&loader_env), aEnvTypeName.pData, nullptr ); } // create vm access ::rtl::Reference< ::jvmaccess::UnoVirtualMachine > vm_access( ::javaunohelper::create_vm_access( pJEnv, loader ) ); OUString java_env_name = UNO_LB_JAVA; uno_getEnvironment( reinterpret_cast(&java_env), java_env_name.pData, vm_access.get() ); pSym = lib.getFunctionSymbol(COMPONENT_WRITEINFO); if (pSym) { if (loader_env.is() && java_env.is()) { Mapping java2dest(java_env.get(), loader_env.get()); if ( java2dest.is() ) { void * pSMgr = java2dest.mapInterface( jSMgr, cppu::UnoType::get()); void * pKey = java2dest.mapInterface( jRegKey, cppu::UnoType::get()); uno_ExtEnvironment * env = loader_env.get()->pExtEnv; if (pKey) { bRet = (*reinterpret_cast(pSym))( pSMgr, pKey ); if (env) (*env->releaseInterface)( env, pKey ); } if (pSMgr && env) (*env->releaseInterface)( env, pSMgr ); } } } } lib.release(); } #endif return bRet; } /* * Class: com_sun_star_comp_helper_SharedLibraryLoader * Method: component_getFactory * Signature: (Ljava/lang/String;Ljava/lang/String;Lcom/sun/star/lang/XMultiServiceFactory;Lcom/sun/star/registry/XRegistryKey;)Ljava/lang/Object; */ jobject Java_com_sun_star_comp_helper_SharedLibraryLoader_component_1getFactory( JNIEnv * pJEnv, SAL_UNUSED_PARAMETER jclass, jstring jLibName, jstring jImplName, jobject jSMgr, jobject jRegKey, jobject loader ) { const jchar* pJLibName = pJEnv->GetStringChars(jLibName, nullptr); OUString aLibName(reinterpret_cast(pJLibName)); pJEnv->ReleaseStringChars(jLibName, pJLibName); #ifdef DISABLE_DYNLOADING (void) jImplName; (void) jSMgr; (void) jRegKey; (void) loader; fprintf(stderr, "Hmm, %s called for %s\n", __PRETTY_FUNCTION__, OUStringToOString(aLibName, osl_getThreadTextEncoding()).getStr()); #endif aLibName += SAL_DLLEXTENSION; jobject joSLL_cpp = nullptr; #ifndef DISABLE_DYNLOADING osl::Module lib(aLibName, SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL); if (lib.is()) { // ========================= LATEST VERSION ========================= oslGenericFunction pSym = lib.getFunctionSymbol(COMPONENT_GETENV); if (pSym) { Environment java_env, loader_env; const char * pEnvTypeName = nullptr; (*reinterpret_cast(pSym))( &pEnvTypeName, reinterpret_cast(&loader_env) ); if (! loader_env.is()) { OUString aEnvTypeName( OUString::createFromAscii( pEnvTypeName ) ); uno_getEnvironment( reinterpret_cast(&loader_env), aEnvTypeName.pData, nullptr ); } // create vm access ::rtl::Reference< ::jvmaccess::UnoVirtualMachine > vm_access( ::javaunohelper::create_vm_access( pJEnv, loader ) ); OUString java_env_name = UNO_LB_JAVA; uno_getEnvironment( reinterpret_cast(&java_env), java_env_name.pData, vm_access.get() ); pSym = lib.getFunctionSymbol(COMPONENT_GETFACTORY); if (pSym) { if (loader_env.is() && java_env.is()) { Mapping java2dest( java_env.get(), loader_env.get() ); Mapping dest2java( loader_env.get(), java_env.get() ); if (dest2java.is() && java2dest.is()) { void * pSMgr = java2dest.mapInterface( jSMgr, cppu::UnoType::get()); void * pKey = java2dest.mapInterface( jRegKey, cppu::UnoType::get()); const char* pImplName = pJEnv->GetStringUTFChars( jImplName, nullptr ); void * pSSF = (*reinterpret_cast(pSym))( pImplName, pSMgr, pKey ); pJEnv->ReleaseStringUTFChars( jImplName, pImplName ); uno_ExtEnvironment * env = loader_env.get()->pExtEnv; if (pKey && env) (*env->releaseInterface)( env, pKey ); if (pSMgr && env) (*env->releaseInterface)( env, pSMgr ); if (pSSF) { jobject jglobal = static_cast(dest2java.mapInterface( pSSF, cppu::UnoType::get())); joSLL_cpp = pJEnv->NewLocalRef( jglobal ); pJEnv->DeleteGlobalRef( jglobal ); if (env) (*env->releaseInterface)( env, pSSF ); } } } } } lib.release(); } #endif return joSLL_cpp; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ ctor-7.0'>distro/vector/vector-7.0 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-02-22loplugin:write only fieldsNoel Grandin
Change-Id: I45895e9845a9037da207f001fece427452ed499f
2015-10-23com::sun::star->css in lotuswordpro,mysqlc,ooxNoel Grandin
Change-Id: Id99ff87c4eb3f1b36702261ce63d5d2793ea35d7
2015-07-21loplugin:unusedmethods ooxNoel Grandin
Change-Id: I5381e0da0efc1f951e248cfcfb35fc680ace94e4 Reviewed-on: https://gerrit.libreoffice.org/17225 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2015-06-30remove some unnecessary typedefs to pointerNoel Grandin
that were really not helping make the code any clearer. Found with a search git grep -P 'typedef\s+\w+\s*\*\s*\w+\;' and manual inspection Change-Id: I6a5c031e9e060ad3623a7586ec8a8cc4fe6252e9
2015-02-19boost->stdCaolán McNamara
Change-Id: Icae6b6f07ad8dbd287fdfc689739187883a07775
2014-09-14Move oox/drawingml/*hxx internal headers to oox/inc.Matúš Kukan
Do not export LinePropertiesContext class as visible. And move GraphicProperties to its own header. Change-Id: I047c181e9f2adc7e59885f59663ea56c7eb898ed