OpenAssetTools/src/RawTemplater/Templating/SetDefineStreamProxy.h

32 lines
1.0 KiB
C++

#pragma once
#include "Parsing/Impl/AbstractDirectiveStreamProxy.h"
#include "Parsing/Impl/DefinesStreamProxy.h"
#include "Utils/ClassUtils.h"
namespace templating
{
class SetDefineStreamProxy final : public AbstractDirectiveStreamProxy
{
public:
explicit SetDefineStreamProxy(IParserLineStream* stream);
void SetDefinesProxy(DefinesStreamProxy* definesProxy);
ParserLine NextLine() override;
bool IncludeFile(const std::string& filename) override;
void PopCurrentFile() override;
_NODISCARD bool IsOpen() const override;
_NODISCARD bool Eof() const override;
private:
static constexpr const char* SET_DIRECTIVE = "set";
_NODISCARD bool MatchSetDirective(const ParserLine& line, size_t directiveStartPosition, size_t directiveEndPosition) const;
_NODISCARD bool MatchDirectives(const ParserLine& line) const;
IParserLineStream* const m_stream;
DefinesStreamProxy* m_defines_proxy;
};
} // namespace templating