Move AbstractScopeSequenceHolder to Parse and make it a template class to be reusable

This commit is contained in:
Jan
2022-01-18 22:55:25 +01:00
parent 0aad5a42cb
commit 91cfb2e8dd
15 changed files with 61 additions and 68 deletions

View File

@ -0,0 +1,31 @@
#pragma once
#include <memory>
#include <vector>
template <typename ParserType>
class AbstractScopeSequenceHolder
{
std::vector<std::unique_ptr<typename ParserType::sequence_t>>& m_all_sequences;
std::vector<typename ParserType::sequence_t*>& m_scope_sequences;
protected:
AbstractScopeSequenceHolder(std::vector<std::unique_ptr<typename ParserType::sequence_t>>& allSequences, std::vector<typename ParserType::sequence_t*>& scopeSequences)
: m_all_sequences(allSequences),
m_scope_sequences(scopeSequences)
{
}
void AddSequence(std::unique_ptr<typename ParserType::sequence_t> test) const
{
m_scope_sequences.push_back(test.get());
m_all_sequences.emplace_back(std::move(test));
}
public:
virtual ~AbstractScopeSequenceHolder() = default;
AbstractScopeSequenceHolder(const AbstractScopeSequenceHolder& other) = delete;
AbstractScopeSequenceHolder(AbstractScopeSequenceHolder&& other) noexcept = default;
AbstractScopeSequenceHolder& operator=(const AbstractScopeSequenceHolder& other) = delete;
AbstractScopeSequenceHolder& operator=(AbstractScopeSequenceHolder&& other) noexcept = delete;
};