Blame src/cppunit/DynamicLibraryManager.cpp

Packit Service e31359
#include <cppunit/plugin/DynamicLibraryManager.h>
Packit Service e31359
Packit Service e31359
#if !defined(CPPUNIT_NO_TESTPLUGIN)
Packit Service e31359
#include <cppunit/plugin/DynamicLibraryManagerException.h>
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
Packit Service e31359
DynamicLibraryManager::DynamicLibraryManager( const std::string &libraryFileName )
Packit Service e31359
    : m_libraryHandle( NULL )
Packit Service e31359
    , m_libraryName( libraryFileName )
Packit Service e31359
{
Packit Service e31359
  loadLibrary( libraryFileName );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
DynamicLibraryManager::~DynamicLibraryManager()
Packit Service e31359
{
Packit Service e31359
  releaseLibrary();
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
DynamicLibraryManager::Symbol 
Packit Service e31359
DynamicLibraryManager::findSymbol( const std::string &symbol )
Packit Service e31359
{
Packit Service e31359
  try
Packit Service e31359
  {
Packit Service e31359
    Symbol symbolPointer = doFindSymbol( symbol );
Packit Service e31359
    if ( symbolPointer != NULL )
Packit Service e31359
      return symbolPointer;
Packit Service e31359
  }
Packit Service e31359
  catch ( ... )
Packit Service e31359
  {
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  throw DynamicLibraryManagerException( m_libraryName, 
Packit Service e31359
                                        symbol,
Packit Service e31359
                                        DynamicLibraryManagerException::symbolNotFound );
Packit Service e31359
  return NULL;    // keep compiler happy
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void
Packit Service e31359
DynamicLibraryManager::loadLibrary( const std::string &libraryName )
Packit Service e31359
{
Packit Service e31359
  try
Packit Service e31359
  {
Packit Service e31359
    releaseLibrary();
Packit Service e31359
    m_libraryHandle = doLoadLibrary( libraryName );
Packit Service e31359
    if ( m_libraryHandle != NULL )
Packit Service e31359
      return;
Packit Service e31359
  }
Packit Service e31359
  catch (...)
Packit Service e31359
  {
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  throw DynamicLibraryManagerException( m_libraryName,
Packit Service e31359
                                        getLastErrorDetail(),
Packit Service e31359
                                        DynamicLibraryManagerException::loadingFailed );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
DynamicLibraryManager::releaseLibrary()
Packit Service e31359
{
Packit Service e31359
  if ( m_libraryHandle != NULL )
Packit Service e31359
  {
Packit Service e31359
    doReleaseLibrary();
Packit Service e31359
    m_libraryHandle = NULL;
Packit Service e31359
  }
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END
Packit Service e31359
Packit Service e31359
Packit Service e31359
#endif // !defined(CPPUNIT_NO_TESTPLUGIN)