Blame include/cppunit/plugin/PlugInManager.h

Packit 8c9aa0
#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H
Packit 8c9aa0
#define CPPUNIT_PLUGIN_PLUGINMANAGER_H
Packit 8c9aa0
Packit 8c9aa0
#include <cppunit/Portability.h>
Packit 8c9aa0
Packit 8c9aa0
#if !defined(CPPUNIT_NO_TESTPLUGIN)
Packit 8c9aa0
Packit 8c9aa0
#if CPPUNIT_NEED_DLL_DECL
Packit 8c9aa0
#pragma warning( push )
Packit 8c9aa0
#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
Packit 8c9aa0
#endif
Packit 8c9aa0
Packit 8c9aa0
#include <cppunit/plugin/PlugInParameters.h>
Packit 8c9aa0
struct CppUnitTestPlugIn;
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_BEGIN
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
class DynamicLibraryManager;
Packit 8c9aa0
class TestResult;
Packit 8c9aa0
class XmlOutputter;
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
/*! \brief Manges TestPlugIn.
Packit 8c9aa0
 */
Packit 8c9aa0
class CPPUNIT_API PlugInManager
Packit 8c9aa0
{
Packit 8c9aa0
public:
Packit 8c9aa0
  /*! Constructs a PlugInManager object.
Packit 8c9aa0
   */
Packit 8c9aa0
  PlugInManager();
Packit 8c9aa0
Packit 8c9aa0
  /// Destructor.
Packit 8c9aa0
  virtual ~PlugInManager();
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Loads the specified plug-in.
Packit 8c9aa0
   *
Packit 8c9aa0
   * After being loaded, the CppUnitTestPlugIn::initialize() is called.
Packit 8c9aa0
   *
Packit 8c9aa0
   * \param libraryFileName Name of the file that contains the TestPlugIn.
Packit 8c9aa0
   * \param parameters List of string passed to the plug-in.
Packit 8c9aa0
   * \return Pointer on the DynamicLibraryManager associated to the library.
Packit 8c9aa0
   *         Valid until the library is unloaded. Never \c NULL.
Packit 8c9aa0
   * \exception DynamicLibraryManagerException is thrown if an error occurs during loading.
Packit 8c9aa0
   */
Packit 8c9aa0
  void load( const std::string &libraryFileName,
Packit 8c9aa0
             const PlugInParameters &parameters = PlugInParameters() );
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Unloads the specified plug-in.
Packit 8c9aa0
   * \param libraryFileName Name of the file that contains the TestPlugIn passed
Packit 8c9aa0
   *                        to a previous call to load().
Packit 8c9aa0
   */
Packit 8c9aa0
  void unload( const std::string &libraryFileName );
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Gives a chance to each loaded plug-in to register TestListener.
Packit 8c9aa0
   *
Packit 8c9aa0
   * For each plug-in, call CppUnitTestPlugIn::addListener().
Packit 8c9aa0
   */
Packit 8c9aa0
  void addListener( TestResult *eventManager );
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Gives a chance to each loaded plug-in to unregister TestListener.
Packit 8c9aa0
   * For each plug-in, call CppUnitTestPlugIn::removeListener().
Packit 8c9aa0
   */
Packit 8c9aa0
  void removeListener( TestResult *eventManager );
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Provides a way for the plug-in to register some XmlOutputterHook.
Packit 8c9aa0
   */
Packit 8c9aa0
  void addXmlOutputterHooks( XmlOutputter *outputter );
Packit 8c9aa0
Packit 8c9aa0
  /*! \brief Called when the XmlOutputter is destroyed.
Packit 8c9aa0
   * 
Packit 8c9aa0
   * Can be used to free some resources allocated by addXmlOutputterHooks().
Packit 8c9aa0
   */
Packit 8c9aa0
  void removeXmlOutputterHooks();
Packit 8c9aa0
Packit 8c9aa0
protected:
Packit 8c9aa0
  /*! \brief (INTERNAL) Information about a specific plug-in.
Packit 8c9aa0
   */
Packit 8c9aa0
  struct PlugInInfo
Packit 8c9aa0
  {
Packit 8c9aa0
    std::string m_fileName;
Packit 8c9aa0
    DynamicLibraryManager *m_manager;
Packit 8c9aa0
    CppUnitTestPlugIn *m_interface;
Packit 8c9aa0
  };
Packit 8c9aa0
Packit 8c9aa0
  /*! Unloads the specified plug-in.
Packit 8c9aa0
   * \param plugIn Information about the plug-in.
Packit 8c9aa0
   */
Packit 8c9aa0
  void unload( PlugInInfo &plugIn );
Packit 8c9aa0
Packit 8c9aa0
private:
Packit 8c9aa0
  /// Prevents the use of the copy constructor.
Packit 8c9aa0
  PlugInManager( const PlugInManager &copy );
Packit 8c9aa0
Packit 8c9aa0
  /// Prevents the use of the copy operator.
Packit 8c9aa0
  void operator =( const PlugInManager &copy );
Packit 8c9aa0
Packit 8c9aa0
private:
Packit 8c9aa0
  typedef std::deque<PlugInInfo> PlugIns;
Packit 8c9aa0
  PlugIns m_plugIns;
Packit 8c9aa0
};
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_END
Packit 8c9aa0
Packit 8c9aa0
#if CPPUNIT_NEED_DLL_DECL
Packit 8c9aa0
#pragma warning( pop )
Packit 8c9aa0
#endif
Packit 8c9aa0
Packit 8c9aa0
#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
#endif  // CPPUNIT_PLUGIN_PLUGINMANAGER_H