1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include "plugin.h"
- #include <util/generic/singleton.h>
- #include <util/generic/vector.h>
- #include <util/generic/utility.h>
- 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<IPlugin> plugin) {
- Plugins.emplace_back(std::move(plugin));
- }
- static TPlugins& Instance() {
- return *Singleton<TPlugins>();
- }
- private:
- TVector<TSimpleSharedPtr<IPlugin>> Plugins;
- };
- } // anonymous namespace
- TPluginRegistrator::TPluginRegistrator(TSimpleSharedPtr<IPlugin> 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);
- }
- }
- }
|