Skip to content
Snippets Groups Projects
DllOpen.h 2.94 KiB
Newer Older
#ifndef MANTID_KERNEL_DLLOPEN_H_
#define MANTID_KERNEL_DLLOPEN_H_
namespace Mantid {
namespace Kernel {
/** @class DllOpen DllOpen.h
 Simple class for opening shared libraries at run-time. Works for Windows and
 Linux.
 @author ISIS, STFC
 @date 25/10/2007

 Copyright © 2007 ISIS Rutherford Appleton Laboratory, NScD Oak Ridge
 National Laboratory & European Spallation Source
 This file is part of Mantid.
 Mantid is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3 of the License, or
 (at your option) any later version.
 Mantid 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 General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 File change history is stored at: <https://github.com/mantidproject/mantid>.
 Code Documentation is available at: <http://doxygen.mantidproject.org>
 */
class MANTID_KERNEL_DLL DllOpen {
  /// Static method for opening the shared library
  static void *OpenDll(const std::string &);
  /// Static method for opening the shared library
  static void *OpenDll(const std::string &, const std::string &);
  /// Static method for retrieving a function pointer
  static void *GetFunction(void *, const std::string &);
  /// Static method for closing the shared library
  static void CloseDll(void *);
  /// Static method for converting a filename to a libName (without lib___.so or
  /// ___.dll)
  static const std::string ConvertToLibName(const std::string &);
Nick Draper's avatar
Nick Draper committed

  /// Adds a directiry to the dll search path.
  static void addSearchDirectory(const std::string &);
  /// Constructor private as not needed
  /// Copy operator private as not needed
  DllOpen(const DllOpen &) = default;
  /// Destructor private as not needed

  // private functions specific to implementation
  /// Implementation specifc static method for opening a shared library
  static void *OpenDllImpl(const std::string &);

  /// Implementation specifc static method for retrieving a function pointer
  static void *GetFunctionImpl(void *, const std::string &);

  /// Implementation specifc static method for closing a shared library
  static void CloseDllImpl(void *);

  /// Implementation specifc static method for adding a directiry to the dll
  /// search path.
  static void addSearchDirectoryImpl(const std::string &);

  /// lib prefix
  static const std::string LIB_PREFIX;
  /// lib postfix
  static const std::string LIB_POSTFIX;
  /// path seperator
  static const std::string PATH_SEPERATOR;
} // namespace Kernel
} // namespace Mantid

#endif /*MANTID_KERNEL_DLLOPEN_H_*/