diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-01-28 20:52:27 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-01-28 20:52:27 +0100 |
commit | f457a7fdbb4400f34844af0492dc32d2f3623c95 (patch) | |
tree | 9e9f67205cd5b72f1031721273e1534a3a1e5b0f /sc/source/core/tool/callform.cxx | |
parent | 2601b25912a2ed05ed8d009bca40aa8b479f39d8 (diff) |
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'sc/source/core/tool/callform.cxx')
-rw-r--r-- | sc/source/core/tool/callform.cxx | 456 |
1 files changed, 0 insertions, 456 deletions
diff --git a/sc/source/core/tool/callform.cxx b/sc/source/core/tool/callform.cxx deleted file mode 100644 index c7fb248a8..000000000 --- a/sc/source/core/tool/callform.cxx +++ /dev/null @@ -1,456 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sc.hxx" - - - -// INCLUDE --------------------------------------------------------------- -#include <vcl/svapp.hxx> -#include <osl/module.hxx> -#include <osl/file.hxx> -#include <unotools/transliterationwrapper.hxx> - -#include "callform.hxx" -#include "global.hxx" -#include "adiasync.hxx" - -//------------------------------------------------------------------------ - -extern "C" { - -typedef void (CALLTYPE* ExFuncPtr1)(void*); -typedef void (CALLTYPE* ExFuncPtr2)(void*, void*); -typedef void (CALLTYPE* ExFuncPtr3)(void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr4)(void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr5)(void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr6)(void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr7)(void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr8)(void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr9)(void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr10)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr11)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr12)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr13)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr14)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr15)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); -typedef void (CALLTYPE* ExFuncPtr16)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); - -typedef void (CALLTYPE* GetFuncCountPtr)(sal_uInt16& nCount); -typedef void (CALLTYPE* GetFuncDataPtr) - (sal_uInt16& nNo, sal_Char* pFuncName, sal_uInt16& nParamCount, ParamType* peType, sal_Char* pInternalName); - -typedef void (CALLTYPE* SetLanguagePtr)( sal_uInt16& nLanguage ); -typedef void (CALLTYPE* GetParamDesc) - (sal_uInt16& nNo, sal_uInt16& nParam, sal_Char* pName, sal_Char* pDesc ); - -typedef void (CALLTYPE* IsAsync) ( sal_uInt16& nNo, - ParamType* peType ); -typedef void (CALLTYPE* Advice) ( sal_uInt16& nNo, - AdvData& pfCallback ); -typedef void (CALLTYPE* Unadvice)( double& nHandle ); - -typedef void (CALLTYPE* FARPROC) ( void ); - -} - -#define GETFUNCTIONCOUNT "GetFunctionCount" -#define GETFUNCTIONDATA "GetFunctionData" -#define SETLANGUAGE "SetLanguage" -#define GETPARAMDESC "GetParameterDescription" -#define ISASYNC "IsAsync" -#define ADVICE "Advice" -#define UNADVICE "Unadvice" - -#define LIBFUNCNAME( name ) \ - (String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( name ) )) - -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -FuncData::FuncData(const String& rIName) : - pModuleData (NULL), - aInternalName (rIName), - nNumber (0), - nParamCount (0), - eAsyncType (NONE) -{ - for (sal_uInt16 i = 0; i < MAXFUNCPARAM; i++) - eParamType[i] = PTR_DOUBLE; -} - -//------------------------------------------------------------------------ - -FuncData::FuncData(const ModuleData*pModule, - const String& rIName, - const String& rFName, - sal_uInt16 nNo, - sal_uInt16 nCount, - const ParamType* peType, - ParamType eType) : - pModuleData (pModule), - aInternalName (rIName), - aFuncName (rFName), - nNumber (nNo), - nParamCount (nCount), - eAsyncType (eType) -{ - for (sal_uInt16 i = 0; i < MAXFUNCPARAM; i++) - eParamType[i] = peType[i]; -} - -//------------------------------------------------------------------------ - -FuncData::FuncData(const FuncData& rData) : - ScDataObject(), - pModuleData (rData.pModuleData), - aInternalName (rData.aInternalName), - aFuncName (rData.aFuncName), - nNumber (rData.nNumber), - nParamCount (rData.nParamCount), - eAsyncType (rData.eAsyncType) -{ - for (sal_uInt16 i = 0; i < MAXFUNCPARAM; i++) - eParamType[i] = rData.eParamType[i]; -} - -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -short FuncCollection::Compare(ScDataObject* pKey1, ScDataObject* pKey2) const -{ - return (short) ScGlobal::GetpTransliteration()->compareString( - ((FuncData*)pKey1)->aInternalName, ((FuncData*)pKey2)->aInternalName ); -} - -//------------------------------------------------------------------------ - -sal_Bool FuncCollection::SearchFunc( const String& rName, sal_uInt16& rIndex ) const -{ - FuncData aDataObj(rName); - return Search( &aDataObj, rIndex ); -} - -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -class ModuleData : public ScDataObject -{ -friend class ModuleCollection; - String aName; - osl::Module* pInstance; -public: - ModuleData(const String& rStr, osl::Module* pInst) : aName (rStr), pInstance (pInst) {} - ModuleData(const ModuleData& rData) : ScDataObject(), aName (rData.aName) {pInstance = new osl::Module(aName);} - ~ModuleData() { delete pInstance; } - virtual ScDataObject* Clone() const { return new ModuleData(*this); } - - const String& GetName() const { return aName; } - osl::Module* GetInstance() const { return pInstance; } - void FreeInstance() { delete pInstance; pInstance = 0; } -}; - -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -class ModuleCollection : public ScSortedCollection -{ -public: - ModuleCollection(sal_uInt16 nLim = 4, sal_uInt16 nDel = 4, sal_Bool bDup = false) : ScSortedCollection ( nLim, nDel, bDup ) {} - ModuleCollection(const ModuleCollection& rModuleCollection) : ScSortedCollection ( rModuleCollection ) {} - - virtual ScDataObject* Clone() const { return new ModuleCollection(*this); } - ModuleData* operator[]( const sal_uInt16 nIndex) const {return (ModuleData*)At(nIndex);} - virtual short Compare(ScDataObject* pKey1, ScDataObject* pKey2) const; - sal_Bool SearchModule( const String& rName, - const ModuleData*& rpModule ) const; -}; - -static ModuleCollection aModuleCollection; - -//------------------------------------------------------------------------ - -short ModuleCollection::Compare(ScDataObject* pKey1, ScDataObject* pKey2) const -{ - return (short) ScGlobal::GetpTransliteration()->compareString( - ((ModuleData*)pKey1)->aName, ((ModuleData*)pKey2)->aName ); -} - -//------------------------------------------------------------------------ - -sal_Bool ModuleCollection::SearchModule( const String& rName, - const ModuleData*& rpModule ) const -{ - sal_uInt16 nIndex; - ModuleData aSearchModule(rName, 0); - sal_Bool bFound = Search( &aSearchModule, nIndex ); - if (bFound) - rpModule = (ModuleData*)At(nIndex); - else - rpModule = 0; - return bFound; -} - -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -sal_Bool InitExternalFunc(const rtl::OUString& rModuleName) -{ - String aModuleName( rModuleName ); - - // Module schon geladen? - const ModuleData* pTemp; - if (aModuleCollection.SearchModule(aModuleName, pTemp)) - return false; - - rtl::OUString aNP; - aNP = rModuleName; - - sal_Bool bRet = false; - osl::Module* pLib = new osl::Module( aNP ); - if (pLib->is()) - { - FARPROC fpGetCount = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(GETFUNCTIONCOUNT)); - FARPROC fpGetData = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(GETFUNCTIONDATA)); - if ((fpGetCount != NULL) && (fpGetData != NULL)) - { - FARPROC fpIsAsync = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(ISASYNC)); - FARPROC fpAdvice = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(ADVICE)); - FARPROC fpSetLanguage = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(SETLANGUAGE)); - if ( fpSetLanguage ) - { - LanguageType eLanguage = Application::GetSettings().GetUILanguage(); - sal_uInt16 nLanguage = (sal_uInt16) eLanguage; - (*((SetLanguagePtr)fpSetLanguage))( nLanguage ); - } - - // Module in die Collection aufnehmen - ModuleData* pModuleData = new ModuleData(aModuleName, pLib); - aModuleCollection.Insert(pModuleData); - - // Schnittstelle initialisieren - AdvData pfCallBack = &ScAddInAsyncCallBack; - FuncData* pFuncData; - FuncCollection* pFuncCol = ScGlobal::GetFuncCollection(); - sal_uInt16 nCount; - (*((GetFuncCountPtr)fpGetCount))(nCount); - for (sal_uInt16 i=0; i < nCount; i++) - { - sal_Char cFuncName[256]; - sal_Char cInternalName[256]; - sal_uInt16 nParamCount; - ParamType eParamType[MAXFUNCPARAM]; - ParamType eAsyncType = NONE; - // alles initialisieren, falls das AddIn sich schlecht verhaelt - cFuncName[0] = 0; - cInternalName[0] = 0; - nParamCount = 0; - for ( sal_uInt16 j=0; j<MAXFUNCPARAM; j++ ) - { - eParamType[j] = NONE; - } - (*((GetFuncDataPtr)fpGetData))(i, cFuncName, nParamCount, - eParamType, cInternalName); - if( fpIsAsync ) - { - (*((IsAsync)fpIsAsync))(i, &eAsyncType); - if ( fpAdvice && eAsyncType != NONE ) - (*((Advice)fpAdvice))( i, pfCallBack ); - } - String aInternalName( cInternalName, osl_getThreadTextEncoding() ); - String aFuncName( cFuncName, osl_getThreadTextEncoding() ); - pFuncData = new FuncData( pModuleData, - aInternalName, - aFuncName, - i, - nParamCount, - eParamType, - eAsyncType ); - pFuncCol->Insert(pFuncData); - } - bRet = sal_True; - } - else - delete pLib; - } - else - delete pLib; - return bRet; -} - -//------------------------------------------------------------------------ - -void ExitExternalFunc() -{ - sal_uInt16 nCount = aModuleCollection.GetCount(); - for (sal_uInt16 i=0; i<nCount; i++) - { - ModuleData* pData = aModuleCollection[i]; - pData->FreeInstance(); - } -} - -//------------------------------------------------------------------------ - -sal_Bool FuncData::Call(void** ppParam) -{ - sal_Bool bRet = false; - osl::Module* pLib = pModuleData->GetInstance(); - FARPROC fProc = (FARPROC)pLib->getFunctionSymbol(aFuncName); - if (fProc != NULL) - { - switch (nParamCount) - { - case 1 : - (*((ExFuncPtr1)fProc))(ppParam[0]); - bRet = sal_True; - break; - case 2 : - (*((ExFuncPtr2)fProc))(ppParam[0], ppParam[1]); - bRet = sal_True; - break; - case 3 : - (*((ExFuncPtr3)fProc))(ppParam[0], ppParam[1], ppParam[2]); - bRet = sal_True; - break; - case 4 : - (*((ExFuncPtr4)fProc))(ppParam[0], ppParam[1], ppParam[2], ppParam[3]); - bRet = sal_True; - break; - case 5 : - (*((ExFuncPtr5)fProc))(ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4]); - bRet = sal_True; - break; - case 6 : - (*((ExFuncPtr6)fProc))(ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5]); - bRet = sal_True; - break; - case 7 : - (*((ExFuncPtr7)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6]); - bRet = sal_True; - break; - case 8 : - (*((ExFuncPtr8)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7]); - bRet = sal_True; - break; - case 9 : - (*((ExFuncPtr9)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8]); - bRet = sal_True; - break; - case 10 : - (*((ExFuncPtr10)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9]); - bRet = sal_True; - break; - case 11 : - (*((ExFuncPtr11)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10]); - bRet = sal_True; - break; - case 12: - (*((ExFuncPtr12)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10], ppParam[11]); - bRet = sal_True; - break; - case 13: - (*((ExFuncPtr13)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10], ppParam[11], - ppParam[12]); - bRet = sal_True; - break; - case 14 : - (*((ExFuncPtr14)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10], ppParam[11], - ppParam[12], ppParam[13]); - bRet = sal_True; - break; - case 15 : - (*((ExFuncPtr15)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10], ppParam[11], - ppParam[12], ppParam[13], ppParam[14]); - bRet = sal_True; - break; - case 16 : - (*((ExFuncPtr16)fProc))( ppParam[0], ppParam[1], ppParam[2], ppParam[3], ppParam[4], ppParam[5], - ppParam[6], ppParam[7], ppParam[8], ppParam[9], ppParam[10], ppParam[11], - ppParam[12], ppParam[13], ppParam[14], ppParam[15]); - bRet = sal_True; - break; - default : break; - } - } - return bRet; -} - -//------------------------------------------------------------------------ - -sal_Bool FuncData::Unadvice( double nHandle ) -{ - sal_Bool bRet = false; - osl::Module* pLib = pModuleData->GetInstance(); - FARPROC fProc = (FARPROC)pLib->getFunctionSymbol(LIBFUNCNAME(UNADVICE)); - if (fProc != NULL) - { - ((::Unadvice)fProc)(nHandle); - bRet = sal_True; - } - return bRet; -} - -//------------------------------------------------------------------------ - -const String& FuncData::GetModuleName() const -{ - return pModuleData->GetName(); -} - -bool FuncData::getParamDesc( ::rtl::OUString& aName, ::rtl::OUString& aDesc, sal_uInt16 nParam ) -{ - bool bRet = false; - if ( nParam <= nParamCount ) - { - osl::Module* pLib = pModuleData->GetInstance(); - FARPROC fProc = (FARPROC) pLib->getFunctionSymbol( LIBFUNCNAME(GETPARAMDESC) ); - if ( fProc != NULL ) - { - sal_Char pcName[256]; - sal_Char pcDesc[256]; - *pcName = *pcDesc = 0; - sal_uInt16 nFuncNo = nNumber; // nicht per Reference versauen lassen.. - ((::GetParamDesc)fProc)( nFuncNo, nParam, pcName, pcDesc ); - aName = ::rtl::OUString( pcName, 256, osl_getThreadTextEncoding() ); - aDesc = ::rtl::OUString( pcDesc, 256, osl_getThreadTextEncoding() ); - bRet = true; - } - } - if ( !bRet ) - { - aName = ::rtl::OUString(); - aDesc = ::rtl::OUString(); - } - return bRet; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |