mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
32 lines
1.0 KiB
C++
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
|