diff options
Diffstat (limited to 'salhelper/inc/salhelper/dynload.hxx')
-rw-r--r-- | salhelper/inc/salhelper/dynload.hxx | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/salhelper/inc/salhelper/dynload.hxx b/salhelper/inc/salhelper/dynload.hxx deleted file mode 100644 index f79bb2277987..000000000000 --- a/salhelper/inc/salhelper/dynload.hxx +++ /dev/null @@ -1,204 +0,0 @@ -/* -*- 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 . - */ - -#ifndef _SALHELPER_DYNLOAD_HXX_ -#define _SALHELPER_DYNLOAD_HXX_ - -#include <sal/types.h> -#include <rtl/ustring.hxx> -#include <osl/module.h> -#include "salhelperdllapi.h" - -namespace salhelper -{ - -/** The ORealDynamicLoader is an implementation helper class for the template loader ODynamicLoader. - */ -class SALHELPER_DLLPUBLIC ORealDynamicLoader -{ -public: - /** initializes the loader, loads the library and call the initialization function. - - @param ppSetToZeroInDestructor points to the loader instance which must be set to NULL - if the loader will be destroyed. - @param strModuleName specifies the library name. - @param strInitFunction specifies the name of the initialization function. - */ - static ORealDynamicLoader* SAL_CALL newInstance( - ORealDynamicLoader ** ppSetToZeroInDestructor, - const ::rtl::OUString& strModuleName, - const ::rtl::OUString& strInitFunction ); - - /// increase the reference count. - sal_uInt32 SAL_CALL acquire(); - /// decrease the reference count and delete the last instance. - sal_uInt32 SAL_CALL release(); - - /// returns a poiner to the initialized API function structure. - void* SAL_CALL getApi() const; - -protected: - /** Constructor. - - @param ppSetToZeroInDestructor points to the loader instance which must be set to NULL - if the loader will be destroyed. - @param strModuleName specifies the library name. - @param strInitFunction specifies the name of the initialization function. - @param pApi points to a structure with the initialized API function pointers. - @param pModule points to the loaded library handle. - */ - ORealDynamicLoader( ORealDynamicLoader ** ppSetToZeroInDestructor, - const ::rtl::OUString& strModuleName, - const ::rtl::OUString& strInitFunction, - void* pApi, - oslModule pModule ); - - /// Destructor, try to unload the library. - virtual ~ORealDynamicLoader(); - - /// points to the structure with the initialzed API function pointers. - void* m_pApi; - /// stores the reference count. - sal_uInt32 m_refCount; - /// stores the library handle. - oslModule m_pModule; - /// stores the library name. - ::rtl::OUString m_strModuleName; - /// stores the name of the initialization function. - ::rtl::OUString m_strInitFunction; - /** stores a pointer to itself, which must be reset in the destructor to signal - that the loader is invalid. - */ - ORealDynamicLoader ** ppSetToZeroInDestructor; -}; - - -/** The ODynmaicLoader provides a special load on call mechanism for dynamic libraries - which support a C-API. - - The libraries must provide a struct with function pointers for all supported C functions. - The loader loads the specified library and call the specified initialization function - to initialize the function pointers with the real functions. Furthermore provides the - loader a reference counter for the library. When the last instance of the laoder will - be destroyed the loader will unload the library. - - @deprecated - Do not use. - */ -template<class API> -class ODynamicLoader -{ -public: - /// Default constructor - ODynamicLoader() SAL_THROW(()) - { - m_pLoader = 0; - } - - /** Constructor, loads the library if necessary otherwise the refernece count will - be increased. - - @param strModuleName specifies the library name. - @param strInitFunction specifies the name of the initialization function. - */ - ODynamicLoader( const ::rtl::OUString& strModuleName, - const ::rtl::OUString& strInitFunction ) SAL_THROW(()) - { - if (!m_pStaticLoader) - { - m_pStaticLoader = ORealDynamicLoader::newInstance( - &m_pStaticLoader, - strModuleName, - strInitFunction); - } - else - { - m_pStaticLoader->acquire(); - } - - m_pLoader = m_pStaticLoader; - } - - /// Copy constructor - ODynamicLoader(const ODynamicLoader<API>& toCopy) SAL_THROW(()) - { - m_pLoader = toCopy.m_pLoader; - if( m_pLoader ) - m_pLoader->acquire(); - } - - /// Destructor, decrease the reference count and unload the library if it is tha last instance. - ~ODynamicLoader() SAL_THROW(()) - { - if( m_pLoader ) - m_pLoader->release(); - } - - /// Assign operator - ODynamicLoader<API>& SAL_CALL operator = (const ODynamicLoader<API>& toAssign) SAL_THROW(()) - { - if( m_pLoader != toAssign.m_pLoader ) - { - if( toAssign.m_pLoader ) - { - toAssign.m_pLoader->acquire(); - } - if( m_pLoader ) - { - m_pLoader->release(); - } - m_pLoader = toAssign.m_pLoader; - } - - return (*this); - } - - /// returns a poiner to the initialized API function structure. - API* SAL_CALL getApi() const SAL_THROW(()) - { - return (API*)m_pLoader->getApi(); - } - - /// cast operator, which cast to a poiner with the initialized API function structure. - API* SAL_CALL operator->() const SAL_THROW(()) - { - return (API*)m_pLoader->getApi(); - } - - /// checks if the loader works on a loaded and initialized library. - sal_Bool SAL_CALL isLoaded() const SAL_THROW(()) - { - return (m_pLoader != NULL); - } - -protected: - /// stores the real loader helper instance - static ORealDynamicLoader* m_pStaticLoader; - ORealDynamicLoader* m_pLoader; -}; - - -template<class API> -ORealDynamicLoader* ODynamicLoader<API>::m_pStaticLoader = NULL; - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |