Extract commonly used Parser code to new Parser component

This commit is contained in:
Jan
2021-03-08 20:06:34 +01:00
parent d96f813e73
commit 8d9080066f
39 changed files with 54 additions and 3 deletions

View File

@ -0,0 +1,39 @@
#pragma once
#include <string>
#include <functional>
#include "Utils/ClassUtils.h"
class ParserLine
{
static const std::string EMPTY_STRING;
public:
std::reference_wrapper<const std::string> m_filename;
int m_line_number;
std::string m_line;
ParserLine();
ParserLine(const std::string& filename, int lineNumber, std::string line);
_NODISCARD bool IsEof() const;
};
class IParserLineStream
{
public:
IParserLineStream() = default;
virtual ~IParserLineStream() = default;
IParserLineStream(const IParserLineStream& other) = default;
IParserLineStream(IParserLineStream&& other) noexcept = default;
IParserLineStream& operator=(const IParserLineStream& other) = default;
IParserLineStream& operator=(IParserLineStream&& other) noexcept = default;
virtual ParserLine NextLine() = 0;
virtual bool IncludeFile(const std::string& filename) = 0;
virtual void PopCurrentFile() = 0;
_NODISCARD virtual bool IsOpen() const = 0;
_NODISCARD virtual bool Eof() const = 0;
};