Blame src/cppunit/DynamicLibraryManager.cpp

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