/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
// .NAME cmDynamicLoader - class interface to system dynamic libraries
// .SECTION Description
// cmDynamicLoader provides a portable interface to loading dynamic
// libraries into a process.

#ifndef cmDynamicLoader_h
#define cmDynamicLoader_h

#include "cmConfigure.h" // IWYU pragma: keep

#include "cmsys/DynamicLoader.hxx" // IWYU pragma: export

class cmDynamicLoader
{
  CM_DISABLE_COPY(cmDynamicLoader)

public:
  // Description:
  // Load a dynamic library into the current process.
  // The returned cmsys::DynamicLoader::LibraryHandle can be used to access
  // the symbols in the library.
  static cmsys::DynamicLoader::LibraryHandle OpenLibrary(const char*);

  // Description:
  // Flush the cache of dynamic loader.
  static void FlushCache();

protected:
  cmDynamicLoader() {}
  ~cmDynamicLoader() {}
};

#endif
