diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2f78fb4..316e1aa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,7 @@ add_executable(Lexesis main.cpp automata.cpp backend.cpp + backendmanager.cpp re.cpp inputparser.cpp template.cpp diff --git a/src/backendmanager.cpp b/src/backendmanager.cpp new file mode 100644 index 0000000..5b99e88 --- /dev/null +++ b/src/backendmanager.cpp @@ -0,0 +1,15 @@ +#include "Lexesis/backendmanager.h" +#include "Lexesis/backend.h" + +namespace lxs { + void BackendManager::registerBackend(std::unique_ptr backend) { + m_backends.push_back(std::move(backend)); + } + + Backend* BackendManager::findBackendForLang(std::string lang) { + for(std::unique_ptr &backend: m_backends) { + if(backend->canProcessLang(lang)) return backend.get(); + } + return nullptr; + } +}