diff options
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp')
-rw-r--r-- | Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp index 55da303b70b..b4eb95c991c 100644 --- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp +++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp @@ -2,7 +2,7 @@ ** SpecialManager.hpp ** ** ** ** This file is part of dvisvgm -- a fast DVI to SVG converter ** -** Copyright (C) 2005-2023 Martin Gieseking <martin.gieseking@uos.de> ** +** Copyright (C) 2005-2024 Martin Gieseking <martin.gieseking@uos.de> ** ** ** ** This program is free software; you can redistribute it and/or ** ** modify it under the terms of the GNU General Public License as ** @@ -21,12 +21,14 @@ #ifndef SPECIALMANAGER_HPP #define SPECIALMANAGER_HPP +#include <algorithm> #include <memory> #include <ostream> #include <string> #include <unordered_map> #include <vector> #include "SpecialHandler.hpp" +#include "utility.hpp" class SpecialActions; @@ -38,6 +40,14 @@ class SpecialManager { public: SpecialManager (const SpecialManager &) =delete; static SpecialManager& instance (); + + template <class Handler> + static void registerHandler (const std::vector<std::string> &ignoredHandlerNames) { + const char *name = Handler::handlerName(); + if (!name || find(ignoredHandlerNames.begin(), ignoredHandlerNames.end(), std::string(name)) == ignoredHandlerNames.end()) + instance().registerHandler(util::make_unique<Handler>()); + } + void registerHandler (std::unique_ptr<SpecialHandler> handler); void registerHandlers (std::vector<std::unique_ptr<SpecialHandler>> &handlers, const char *ignorelist); void unregisterHandlers (); |