#include "plugin.h" #include #include #include namespace NUnitTest { namespace NPlugin { namespace { class TPlugins { public: void OnStartMain(int argc, char* argv[]) const { for (const auto& plugin : Plugins) { plugin->OnStartMain(argc, argv); } } void OnStopMain(int argc, char* argv[]) const { for (const auto& plugin : Plugins) { plugin->OnStopMain(argc, argv); } } void Register(TSimpleSharedPtr plugin) { Plugins.emplace_back(std::move(plugin)); } static TPlugins& Instance() { return *Singleton(); } private: TVector> Plugins; }; } // anonymous namespace TPluginRegistrator::TPluginRegistrator(TSimpleSharedPtr plugin) { TPlugins::Instance().Register(std::move(plugin)); } void OnStartMain(int argc, char* argv[]) { TPlugins::Instance().OnStartMain(argc, argv); } void OnStopMain(int argc, char* argv[]) { TPlugins::Instance().OnStopMain(argc, argv); } } }