From f9ef7cc35ba2857d9581d385c380f320bae0afec Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 10 Feb 2021 18:03:50 +0100 Subject: [PATCH] Add Tests for ZCG cpp --- premake5.lua | 8 +- src/ZoneCodeGeneratorLib.lua | 43 ++++ .../Computations/MemberComputations.cpp | 0 .../Domain/Computations/MemberComputations.h | 0 .../MemberDeclarationModifierComputations.cpp | 0 .../MemberDeclarationModifierComputations.h | 0 .../Computations/StructureComputations.cpp | 0 .../Computations/StructureComputations.h | 0 .../Definition/ArrayDeclarationModifier.cpp | 0 .../Definition/ArrayDeclarationModifier.h | 0 .../Domain/Definition/BaseTypeDefinition.cpp | 0 .../Domain/Definition/BaseTypeDefinition.h | 0 .../Domain/Definition/DataDefinition.cpp | 0 .../Domain/Definition/DataDefinition.h | 0 .../Domain/Definition/DeclarationModifier.h | 0 .../Definition/DefinitionWithMembers.cpp | 0 .../Domain/Definition/DefinitionWithMembers.h | 0 .../Domain/Definition/EnumDefinition.cpp | 0 .../Domain/Definition/EnumDefinition.h | 0 .../Domain/Definition/EnumMember.cpp | 0 .../Domain/Definition/EnumMember.h | 0 .../Domain/Definition/ForwardDeclaration.cpp | 0 .../Domain/Definition/ForwardDeclaration.h | 0 .../Definition/PointerDeclarationModifier.cpp | 0 .../Definition/PointerDeclarationModifier.h | 0 .../Domain/Definition/StructDefinition.cpp | 0 .../Domain/Definition/StructDefinition.h | 0 .../Domain/Definition/TypeDeclaration.cpp | 0 .../Domain/Definition/TypeDeclaration.h | 0 .../Domain/Definition/TypedefDefinition.cpp | 0 .../Domain/Definition/TypedefDefinition.h | 0 .../Domain/Definition/UnionDefinition.cpp | 0 .../Domain/Definition/UnionDefinition.h | 0 .../Domain/Definition/Variable.cpp | 0 .../Domain/Definition/Variable.h | 0 .../Domain/Evaluation/IEvaluation.h | 0 .../Domain/Evaluation/OperandDynamic.cpp | 0 .../Domain/Evaluation/OperandDynamic.h | 0 .../Domain/Evaluation/OperandStatic.cpp | 0 .../Domain/Evaluation/OperandStatic.h | 0 .../Domain/Evaluation/Operation.cpp | 0 .../Domain/Evaluation/Operation.h | 0 .../Domain/Evaluation/OperationType.cpp | 0 .../Domain/Evaluation/OperationType.h | 0 .../Domain/Extension/CustomAction.cpp | 0 .../Domain/Extension/CustomAction.h | 0 .../Domain/FastFile/FastFileBlock.cpp | 0 .../Domain/FastFile/FastFileBlock.h | 0 .../Domain/Information/MemberInformation.cpp | 0 .../Domain/Information/MemberInformation.h | 0 .../Information/StructureInformation.cpp | 0 .../Domain/Information/StructureInformation.h | 0 .../Generating/CodeGenerator.cpp | 0 .../Generating/CodeGenerator.h | 0 .../Parsing/AbstractLexer.cpp | 0 .../Parsing/AbstractLexer.h | 0 .../Parsing/Commands/CommandsFileReader.cpp | 0 .../Parsing/Commands/CommandsFileReader.h | 0 .../Parsing/Commands/Impl/CommandsLexer.cpp | 0 .../Parsing/Commands/Impl/CommandsLexer.h | 0 .../Parsing/Commands/Impl/CommandsParser.cpp | 0 .../Parsing/Commands/Impl/CommandsParser.h | 0 .../Commands/Impl/CommandsParserValue.cpp | 0 .../Commands/Impl/CommandsParserValue.h | 0 .../Parsing/Header/HeaderFileReader.cpp | 12 +- .../Parsing/Header/HeaderFileReader.h | 0 .../Parsing/ILexer.h | 0 .../Parsing/IParserLineStream.cpp | 0 .../Parsing/IParserLineStream.h | 0 .../Impl/CommentRemovingStreamProxy.cpp | 74 ++++++ .../Parsing/Impl/CommentRemovingStreamProxy.h | 18 ++ .../Parsing/Impl/DefinesStreamProxy.cpp | 0 .../Parsing/Impl/DefinesStreamProxy.h | 0 .../Parsing/Impl/IncludingStreamProxy.cpp | 0 .../Parsing/Impl/IncludingStreamProxy.h | 3 +- .../Parsing/Impl/ParserFilesystemStream.cpp | 0 .../Parsing/Impl/ParserFilesystemStream.h | 0 .../Parsing/ParsingException.cpp | 0 .../Parsing/ParsingException.h | 0 .../Parsing/TokenPos.cpp | 0 .../Parsing/TokenPos.h | 0 .../Persistence/IDataRepository.h | 0 .../InMemory/InMemoryRepository.cpp | 0 .../Persistence/InMemory/InMemoryRepository.h | 0 .../Printing/PrettyPrinter.cpp | 0 .../Printing/PrettyPrinter.h | 0 .../Utils/AlignmentUtils.h | 0 .../Utils/NamespaceBuilder.cpp | 0 .../Utils/NamespaceBuilder.h | 0 .../ZoneCodeGenerator.cpp | 0 .../ZoneCodeGenerator.h | 0 .../ZoneCodeGeneratorArguments.cpp | 0 .../ZoneCodeGeneratorArguments.h | 0 src/ZoneCodeGeneratorNew.lua | 15 +- .../Parsing/Impl/CommentRemovingStreamProxy.h | 12 - test/ZoneCodeGeneratorLibTests.lua | 51 ++++ .../Impl/CommentRemovingStreamProxyTest.cpp | 227 ++++++++++++++++++ .../Parsing/Impl/DefinesStreamProxyTest.cpp | 0 .../Parsing/Impl/IncludingStreamProxyTest.cpp | 0 .../Parsing/Mock/MockParserLineStream.cpp | 36 +++ .../Parsing/Mock/MockParserLineStream.h | 22 ++ test/ZoneCodeGeneratorLibTests/main.cpp | 2 + 102 files changed, 502 insertions(+), 21 deletions(-) create mode 100644 src/ZoneCodeGeneratorLib.lua rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/MemberComputations.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/MemberComputations.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/MemberDeclarationModifierComputations.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/MemberDeclarationModifierComputations.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/StructureComputations.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Computations/StructureComputations.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/ArrayDeclarationModifier.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/ArrayDeclarationModifier.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/BaseTypeDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/BaseTypeDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/DataDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/DataDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/DeclarationModifier.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/DefinitionWithMembers.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/DefinitionWithMembers.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/EnumDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/EnumDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/EnumMember.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/EnumMember.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/ForwardDeclaration.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/ForwardDeclaration.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/PointerDeclarationModifier.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/PointerDeclarationModifier.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/StructDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/StructDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/TypeDeclaration.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/TypeDeclaration.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/TypedefDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/TypedefDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/UnionDefinition.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/UnionDefinition.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/Variable.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Definition/Variable.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/IEvaluation.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperandDynamic.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperandDynamic.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperandStatic.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperandStatic.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/Operation.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/Operation.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperationType.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Evaluation/OperationType.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Extension/CustomAction.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Extension/CustomAction.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/FastFile/FastFileBlock.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/FastFile/FastFileBlock.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Information/MemberInformation.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Information/MemberInformation.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Information/StructureInformation.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Domain/Information/StructureInformation.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Generating/CodeGenerator.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Generating/CodeGenerator.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/AbstractLexer.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/AbstractLexer.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/CommandsFileReader.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/CommandsFileReader.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsLexer.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsLexer.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsParser.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsParser.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsParserValue.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Commands/Impl/CommandsParserValue.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Header/HeaderFileReader.cpp (76%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Header/HeaderFileReader.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/ILexer.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/IParserLineStream.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/IParserLineStream.h (100%) create mode 100644 src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.cpp create mode 100644 src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.h rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/DefinesStreamProxy.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/DefinesStreamProxy.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/IncludingStreamProxy.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/IncludingStreamProxy.h (94%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/ParserFilesystemStream.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/Impl/ParserFilesystemStream.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/ParsingException.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/ParsingException.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/TokenPos.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Parsing/TokenPos.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Persistence/IDataRepository.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Persistence/InMemory/InMemoryRepository.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Persistence/InMemory/InMemoryRepository.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Printing/PrettyPrinter.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Printing/PrettyPrinter.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Utils/AlignmentUtils.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Utils/NamespaceBuilder.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/Utils/NamespaceBuilder.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/ZoneCodeGenerator.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/ZoneCodeGenerator.h (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/ZoneCodeGeneratorArguments.cpp (100%) rename src/{ZoneCodeGeneratorNew => ZoneCodeGeneratorLib}/ZoneCodeGeneratorArguments.h (100%) delete mode 100644 src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.h create mode 100644 test/ZoneCodeGeneratorLibTests.lua create mode 100644 test/ZoneCodeGeneratorLibTests/Parsing/Impl/CommentRemovingStreamProxyTest.cpp rename src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.cpp => test/ZoneCodeGeneratorLibTests/Parsing/Impl/DefinesStreamProxyTest.cpp (100%) create mode 100644 test/ZoneCodeGeneratorLibTests/Parsing/Impl/IncludingStreamProxyTest.cpp create mode 100644 test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.cpp create mode 100644 test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.h create mode 100644 test/ZoneCodeGeneratorLibTests/main.cpp diff --git a/premake5.lua b/premake5.lua index c8d65865..ff7ac955 100644 --- a/premake5.lua +++ b/premake5.lua @@ -106,6 +106,7 @@ workspace "OpenAssetTools" -- ======================== -- ThirdParty -- ======================== +include "thirdparty/catch2.lua" include "thirdparty/libtomcrypt.lua" include "thirdparty/libtommath.lua" include "thirdparty/minilzo.lua" @@ -115,6 +116,7 @@ include "thirdparty/zlib.lua" -- ThirdParty group: All projects that are external dependencies group "ThirdParty" + catch2:project() libtommath:project() libtomcrypt:project() minilzo:project() @@ -132,6 +134,7 @@ include "src/Unlinker.lua" include "src/Utils.lua" include "src/ZoneCode.lua" include "src/ZoneCodeGenerator.lua" +include "src/ZoneCodeGeneratorLib.lua" include "src/ZoneCodeGeneratorNew.lua" include "src/ZoneCommon.lua" include "src/ZoneLoading.lua" @@ -147,7 +150,7 @@ group "Components" Utils:project() ZoneCode:project() ZoneCodeGenerator:project() - ZoneCodeGeneratorNew:project() + ZoneCodeGeneratorLib:project() ZoneCommon:project() ZoneLoading:project() ZoneWriting:project() @@ -160,6 +163,7 @@ group "" group "Tools" Linker:project() Unlinker:project() + ZoneCodeGeneratorNew:project() group "" -- ======================== @@ -167,11 +171,13 @@ group "" -- ======================== include "test/ObjCommonTests.lua" include "test/ZoneCodeGeneratorTests.lua" +include "test/ZoneCodeGeneratorLibTests.lua" include "test/ZoneCommonTests.lua" -- Tests group: Unit test and other tests projects group "Tests" ObjCommonTests:project() ZoneCodeGeneratorTests:project() + ZoneCodeGeneratorLibTests:project() ZoneCommonTests:project() group "" \ No newline at end of file diff --git a/src/ZoneCodeGeneratorLib.lua b/src/ZoneCodeGeneratorLib.lua new file mode 100644 index 00000000..e1ed4f92 --- /dev/null +++ b/src/ZoneCodeGeneratorLib.lua @@ -0,0 +1,43 @@ +ZoneCodeGeneratorLib = {} + +function ZoneCodeGeneratorLib:include() + if References:include(self:name()) then + includedirs { + path.join(ProjectFolder(), "ZoneCodeGeneratorLib") + } + end + Utils:include() +end + +function ZoneCodeGeneratorLib:link() + if References:link(self:name()) then + links(self:name()) + Utils:link() + end +end + +function ZoneCodeGeneratorLib:use() + dependson(self:name()) +end + +function ZoneCodeGeneratorLib:name() + return "ZoneCodeGeneratorLib" +end + +function ZoneCodeGeneratorLib:project() + References:reset() + local folder = ProjectFolder(); + + project(self:name()) + targetdir(TargetDirectoryLib) + location "%{wks.location}/src/%{prj.name}" + kind "StaticLib" + language "C++" + + files { + path.join(folder, "ZoneCodeGeneratorLib/**.h"), + path.join(folder, "ZoneCodeGeneratorLib/**.cpp") + } + + self:include() +end diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/MemberComputations.cpp b/src/ZoneCodeGeneratorLib/Domain/Computations/MemberComputations.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/MemberComputations.cpp rename to src/ZoneCodeGeneratorLib/Domain/Computations/MemberComputations.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/MemberComputations.h b/src/ZoneCodeGeneratorLib/Domain/Computations/MemberComputations.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/MemberComputations.h rename to src/ZoneCodeGeneratorLib/Domain/Computations/MemberComputations.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/MemberDeclarationModifierComputations.cpp b/src/ZoneCodeGeneratorLib/Domain/Computations/MemberDeclarationModifierComputations.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/MemberDeclarationModifierComputations.cpp rename to src/ZoneCodeGeneratorLib/Domain/Computations/MemberDeclarationModifierComputations.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/MemberDeclarationModifierComputations.h b/src/ZoneCodeGeneratorLib/Domain/Computations/MemberDeclarationModifierComputations.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/MemberDeclarationModifierComputations.h rename to src/ZoneCodeGeneratorLib/Domain/Computations/MemberDeclarationModifierComputations.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/StructureComputations.cpp b/src/ZoneCodeGeneratorLib/Domain/Computations/StructureComputations.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/StructureComputations.cpp rename to src/ZoneCodeGeneratorLib/Domain/Computations/StructureComputations.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Computations/StructureComputations.h b/src/ZoneCodeGeneratorLib/Domain/Computations/StructureComputations.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Computations/StructureComputations.h rename to src/ZoneCodeGeneratorLib/Domain/Computations/StructureComputations.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/ArrayDeclarationModifier.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/ArrayDeclarationModifier.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/ArrayDeclarationModifier.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/ArrayDeclarationModifier.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/ArrayDeclarationModifier.h b/src/ZoneCodeGeneratorLib/Domain/Definition/ArrayDeclarationModifier.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/ArrayDeclarationModifier.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/ArrayDeclarationModifier.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/BaseTypeDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/BaseTypeDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/BaseTypeDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/BaseTypeDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/BaseTypeDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/BaseTypeDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/BaseTypeDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/BaseTypeDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/DataDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/DataDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/DataDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/DataDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/DataDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/DataDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/DataDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/DataDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/DeclarationModifier.h b/src/ZoneCodeGeneratorLib/Domain/Definition/DeclarationModifier.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/DeclarationModifier.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/DeclarationModifier.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/DefinitionWithMembers.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/DefinitionWithMembers.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/DefinitionWithMembers.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/DefinitionWithMembers.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/DefinitionWithMembers.h b/src/ZoneCodeGeneratorLib/Domain/Definition/DefinitionWithMembers.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/DefinitionWithMembers.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/DefinitionWithMembers.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/EnumDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/EnumDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/EnumDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/EnumDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/EnumDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/EnumDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/EnumDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/EnumDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/EnumMember.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/EnumMember.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/EnumMember.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/EnumMember.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/EnumMember.h b/src/ZoneCodeGeneratorLib/Domain/Definition/EnumMember.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/EnumMember.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/EnumMember.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/ForwardDeclaration.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/ForwardDeclaration.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/ForwardDeclaration.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/ForwardDeclaration.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/ForwardDeclaration.h b/src/ZoneCodeGeneratorLib/Domain/Definition/ForwardDeclaration.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/ForwardDeclaration.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/ForwardDeclaration.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/PointerDeclarationModifier.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/PointerDeclarationModifier.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/PointerDeclarationModifier.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/PointerDeclarationModifier.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/PointerDeclarationModifier.h b/src/ZoneCodeGeneratorLib/Domain/Definition/PointerDeclarationModifier.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/PointerDeclarationModifier.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/PointerDeclarationModifier.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/StructDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/StructDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/StructDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/StructDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/StructDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/StructDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/StructDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/StructDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/TypeDeclaration.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/TypeDeclaration.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/TypeDeclaration.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/TypeDeclaration.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/TypeDeclaration.h b/src/ZoneCodeGeneratorLib/Domain/Definition/TypeDeclaration.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/TypeDeclaration.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/TypeDeclaration.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/TypedefDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/TypedefDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/TypedefDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/TypedefDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/TypedefDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/TypedefDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/TypedefDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/TypedefDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/UnionDefinition.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/UnionDefinition.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/UnionDefinition.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/UnionDefinition.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/UnionDefinition.h b/src/ZoneCodeGeneratorLib/Domain/Definition/UnionDefinition.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/UnionDefinition.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/UnionDefinition.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/Variable.cpp b/src/ZoneCodeGeneratorLib/Domain/Definition/Variable.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/Variable.cpp rename to src/ZoneCodeGeneratorLib/Domain/Definition/Variable.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Definition/Variable.h b/src/ZoneCodeGeneratorLib/Domain/Definition/Variable.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Definition/Variable.h rename to src/ZoneCodeGeneratorLib/Domain/Definition/Variable.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/IEvaluation.h b/src/ZoneCodeGeneratorLib/Domain/Evaluation/IEvaluation.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/IEvaluation.h rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/IEvaluation.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandDynamic.cpp b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandDynamic.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandDynamic.cpp rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandDynamic.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandDynamic.h b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandDynamic.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandDynamic.h rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandDynamic.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandStatic.cpp b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandStatic.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandStatic.cpp rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandStatic.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandStatic.h b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandStatic.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperandStatic.h rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperandStatic.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/Operation.cpp b/src/ZoneCodeGeneratorLib/Domain/Evaluation/Operation.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/Operation.cpp rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/Operation.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/Operation.h b/src/ZoneCodeGeneratorLib/Domain/Evaluation/Operation.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/Operation.h rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/Operation.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperationType.cpp b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperationType.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperationType.cpp rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperationType.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Evaluation/OperationType.h b/src/ZoneCodeGeneratorLib/Domain/Evaluation/OperationType.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Evaluation/OperationType.h rename to src/ZoneCodeGeneratorLib/Domain/Evaluation/OperationType.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Extension/CustomAction.cpp b/src/ZoneCodeGeneratorLib/Domain/Extension/CustomAction.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Extension/CustomAction.cpp rename to src/ZoneCodeGeneratorLib/Domain/Extension/CustomAction.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Extension/CustomAction.h b/src/ZoneCodeGeneratorLib/Domain/Extension/CustomAction.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Extension/CustomAction.h rename to src/ZoneCodeGeneratorLib/Domain/Extension/CustomAction.h diff --git a/src/ZoneCodeGeneratorNew/Domain/FastFile/FastFileBlock.cpp b/src/ZoneCodeGeneratorLib/Domain/FastFile/FastFileBlock.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/FastFile/FastFileBlock.cpp rename to src/ZoneCodeGeneratorLib/Domain/FastFile/FastFileBlock.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/FastFile/FastFileBlock.h b/src/ZoneCodeGeneratorLib/Domain/FastFile/FastFileBlock.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/FastFile/FastFileBlock.h rename to src/ZoneCodeGeneratorLib/Domain/FastFile/FastFileBlock.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Information/MemberInformation.cpp b/src/ZoneCodeGeneratorLib/Domain/Information/MemberInformation.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Information/MemberInformation.cpp rename to src/ZoneCodeGeneratorLib/Domain/Information/MemberInformation.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Information/MemberInformation.h b/src/ZoneCodeGeneratorLib/Domain/Information/MemberInformation.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Information/MemberInformation.h rename to src/ZoneCodeGeneratorLib/Domain/Information/MemberInformation.h diff --git a/src/ZoneCodeGeneratorNew/Domain/Information/StructureInformation.cpp b/src/ZoneCodeGeneratorLib/Domain/Information/StructureInformation.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Information/StructureInformation.cpp rename to src/ZoneCodeGeneratorLib/Domain/Information/StructureInformation.cpp diff --git a/src/ZoneCodeGeneratorNew/Domain/Information/StructureInformation.h b/src/ZoneCodeGeneratorLib/Domain/Information/StructureInformation.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Domain/Information/StructureInformation.h rename to src/ZoneCodeGeneratorLib/Domain/Information/StructureInformation.h diff --git a/src/ZoneCodeGeneratorNew/Generating/CodeGenerator.cpp b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Generating/CodeGenerator.cpp rename to src/ZoneCodeGeneratorLib/Generating/CodeGenerator.cpp diff --git a/src/ZoneCodeGeneratorNew/Generating/CodeGenerator.h b/src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Generating/CodeGenerator.h rename to src/ZoneCodeGeneratorLib/Generating/CodeGenerator.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/AbstractLexer.cpp b/src/ZoneCodeGeneratorLib/Parsing/AbstractLexer.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/AbstractLexer.cpp rename to src/ZoneCodeGeneratorLib/Parsing/AbstractLexer.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/AbstractLexer.h b/src/ZoneCodeGeneratorLib/Parsing/AbstractLexer.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/AbstractLexer.h rename to src/ZoneCodeGeneratorLib/Parsing/AbstractLexer.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/CommandsFileReader.cpp b/src/ZoneCodeGeneratorLib/Parsing/Commands/CommandsFileReader.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/CommandsFileReader.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Commands/CommandsFileReader.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/CommandsFileReader.h b/src/ZoneCodeGeneratorLib/Parsing/Commands/CommandsFileReader.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/CommandsFileReader.h rename to src/ZoneCodeGeneratorLib/Parsing/Commands/CommandsFileReader.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsLexer.cpp b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsLexer.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsLexer.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsLexer.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsLexer.h b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsLexer.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsLexer.h rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsLexer.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParser.cpp b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParser.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParser.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParser.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParser.h b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParser.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParser.h rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParser.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParserValue.cpp b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParserValue.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParserValue.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParserValue.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParserValue.h b/src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParserValue.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Commands/Impl/CommandsParserValue.h rename to src/ZoneCodeGeneratorLib/Parsing/Commands/Impl/CommandsParserValue.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Header/HeaderFileReader.cpp b/src/ZoneCodeGeneratorLib/Parsing/Header/HeaderFileReader.cpp similarity index 76% rename from src/ZoneCodeGeneratorNew/Parsing/Header/HeaderFileReader.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Header/HeaderFileReader.cpp index 271ad21f..94caa504 100644 --- a/src/ZoneCodeGeneratorNew/Parsing/Header/HeaderFileReader.cpp +++ b/src/ZoneCodeGeneratorLib/Parsing/Header/HeaderFileReader.cpp @@ -2,7 +2,7 @@ #include - +#include "Parsing/Impl/CommentRemovingStreamProxy.h" #include "Parsing/Impl/IncludingStreamProxy.h" #include "Parsing/Impl/ParserFilesystemStream.h" @@ -23,8 +23,14 @@ bool HeaderFileReader::ReadHeaderFile(IDataRepository* repository) const return false; } - IncludingStreamProxy includeProxy(&stream); - IParserLineStream* lineStream = &includeProxy; + IParserLineStream* lineStream = &stream; + + IncludingStreamProxy includeProxy(lineStream); + lineStream = &includeProxy; + + CommentRemovingStreamProxy commentProxy(lineStream); + lineStream = &commentProxy; + while(true) { diff --git a/src/ZoneCodeGeneratorNew/Parsing/Header/HeaderFileReader.h b/src/ZoneCodeGeneratorLib/Parsing/Header/HeaderFileReader.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Header/HeaderFileReader.h rename to src/ZoneCodeGeneratorLib/Parsing/Header/HeaderFileReader.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/ILexer.h b/src/ZoneCodeGeneratorLib/Parsing/ILexer.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/ILexer.h rename to src/ZoneCodeGeneratorLib/Parsing/ILexer.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/IParserLineStream.cpp b/src/ZoneCodeGeneratorLib/Parsing/IParserLineStream.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/IParserLineStream.cpp rename to src/ZoneCodeGeneratorLib/Parsing/IParserLineStream.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/IParserLineStream.h b/src/ZoneCodeGeneratorLib/Parsing/IParserLineStream.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/IParserLineStream.h rename to src/ZoneCodeGeneratorLib/Parsing/IParserLineStream.h diff --git a/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.cpp b/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.cpp new file mode 100644 index 00000000..f43772f0 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.cpp @@ -0,0 +1,74 @@ +#include "CommentRemovingStreamProxy.h" + +CommentRemovingStreamProxy::CommentRemovingStreamProxy(IParserLineStream* stream) + : m_stream(stream), + m_inside_multi_line_comment(false), + m_next_line_is_comment(false) +{ +} + +ParserLine CommentRemovingStreamProxy::NextLine() +{ + auto line = m_stream->NextLine(); + + if (m_next_line_is_comment) + { + m_next_line_is_comment = !line.m_line.empty() && line.m_line[line.m_line.size() - 1] == '\\'; + return ParserLine(line.m_filename, line.m_line_number, std::string()); + } + + unsigned multiLineCommentStart = 0; + for (auto i = 0u; i < line.m_line.size(); i++) + { + const auto c = line.m_line[i]; + + if (m_inside_multi_line_comment) + { + if (c == '*' && i + 1 < line.m_line.size() && line.m_line[i + 1] == '/') + { + line.m_line.erase(multiLineCommentStart, i + 2 - multiLineCommentStart); + multiLineCommentStart = 0; + m_inside_multi_line_comment = false; + } + } + else + { + if(c == '/' && i + 1 < line.m_line.size()) + { + const auto c1 = line.m_line[i + 1]; + + if (c1 == '*') + { + multiLineCommentStart = i; + m_inside_multi_line_comment = true; + } + else if(c1 == '/') + { + m_next_line_is_comment = line.m_line[line.m_line.size() - 1] == '\\'; + line.m_line.erase(i); + return line; + } + } + } + } + + if(m_inside_multi_line_comment) + line.m_line.erase(multiLineCommentStart); + + return line; +} + +bool CommentRemovingStreamProxy::IncludeFile(const std::string& filename) +{ + return m_stream->IncludeFile(filename); +} + +bool CommentRemovingStreamProxy::IsOpen() const +{ + return m_stream->IsOpen(); +} + +bool CommentRemovingStreamProxy::Eof() const +{ + return m_stream->Eof(); +} diff --git a/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.h b/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.h new file mode 100644 index 00000000..bdbb5ad9 --- /dev/null +++ b/src/ZoneCodeGeneratorLib/Parsing/Impl/CommentRemovingStreamProxy.h @@ -0,0 +1,18 @@ +#pragma once + +#include "Parsing/IParserLineStream.h" + +class CommentRemovingStreamProxy final : public IParserLineStream +{ + IParserLineStream* const m_stream; + bool m_inside_multi_line_comment; + bool m_next_line_is_comment; + +public: + explicit CommentRemovingStreamProxy(IParserLineStream* stream); + + ParserLine NextLine() override; + bool IncludeFile(const std::string& filename) override; + _NODISCARD bool IsOpen() const override; + _NODISCARD bool Eof() const override; +}; diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/DefinesStreamProxy.cpp b/src/ZoneCodeGeneratorLib/Parsing/Impl/DefinesStreamProxy.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/DefinesStreamProxy.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Impl/DefinesStreamProxy.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/DefinesStreamProxy.h b/src/ZoneCodeGeneratorLib/Parsing/Impl/DefinesStreamProxy.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/DefinesStreamProxy.h rename to src/ZoneCodeGeneratorLib/Parsing/Impl/DefinesStreamProxy.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/IncludingStreamProxy.cpp b/src/ZoneCodeGeneratorLib/Parsing/Impl/IncludingStreamProxy.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/IncludingStreamProxy.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Impl/IncludingStreamProxy.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/IncludingStreamProxy.h b/src/ZoneCodeGeneratorLib/Parsing/Impl/IncludingStreamProxy.h similarity index 94% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/IncludingStreamProxy.h rename to src/ZoneCodeGeneratorLib/Parsing/Impl/IncludingStreamProxy.h index 9bbba8f8..ef921a05 100644 --- a/src/ZoneCodeGeneratorNew/Parsing/Impl/IncludingStreamProxy.h +++ b/src/ZoneCodeGeneratorLib/Parsing/Impl/IncludingStreamProxy.h @@ -1,6 +1,5 @@ #pragma once -#include "Utils/ClassUtils.h" #include "Parsing/IParserLineStream.h" class IncludingStreamProxy final : public IParserLineStream @@ -10,7 +9,7 @@ class IncludingStreamProxy final : public IParserLineStream static constexpr int INCLUDE_DIRECTIVE_LENGTH = std::char_traits::length(INCLUDE_DIRECTIVE); static constexpr int INCLUDE_DIRECTIVE_MINIMUM_TOTAL_LENGTH = INCLUDE_DIRECTIVE_LENGTH + 1 + 2; // #=+1 ""=+2 - IParserLineStream* m_stream; + IParserLineStream* const m_stream; _NODISCARD static bool FindIncludeDirective(const ParserLine& line, unsigned& includeDirectivePosition); _NODISCARD static bool ExtractIncludeFilename(const ParserLine& line, unsigned includeDirectivePosition, unsigned& filenameStartPosition, unsigned& filenameEndPosition); diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/ParserFilesystemStream.cpp b/src/ZoneCodeGeneratorLib/Parsing/Impl/ParserFilesystemStream.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/ParserFilesystemStream.cpp rename to src/ZoneCodeGeneratorLib/Parsing/Impl/ParserFilesystemStream.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/ParserFilesystemStream.h b/src/ZoneCodeGeneratorLib/Parsing/Impl/ParserFilesystemStream.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/ParserFilesystemStream.h rename to src/ZoneCodeGeneratorLib/Parsing/Impl/ParserFilesystemStream.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/ParsingException.cpp b/src/ZoneCodeGeneratorLib/Parsing/ParsingException.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/ParsingException.cpp rename to src/ZoneCodeGeneratorLib/Parsing/ParsingException.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/ParsingException.h b/src/ZoneCodeGeneratorLib/Parsing/ParsingException.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/ParsingException.h rename to src/ZoneCodeGeneratorLib/Parsing/ParsingException.h diff --git a/src/ZoneCodeGeneratorNew/Parsing/TokenPos.cpp b/src/ZoneCodeGeneratorLib/Parsing/TokenPos.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/TokenPos.cpp rename to src/ZoneCodeGeneratorLib/Parsing/TokenPos.cpp diff --git a/src/ZoneCodeGeneratorNew/Parsing/TokenPos.h b/src/ZoneCodeGeneratorLib/Parsing/TokenPos.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/TokenPos.h rename to src/ZoneCodeGeneratorLib/Parsing/TokenPos.h diff --git a/src/ZoneCodeGeneratorNew/Persistence/IDataRepository.h b/src/ZoneCodeGeneratorLib/Persistence/IDataRepository.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Persistence/IDataRepository.h rename to src/ZoneCodeGeneratorLib/Persistence/IDataRepository.h diff --git a/src/ZoneCodeGeneratorNew/Persistence/InMemory/InMemoryRepository.cpp b/src/ZoneCodeGeneratorLib/Persistence/InMemory/InMemoryRepository.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Persistence/InMemory/InMemoryRepository.cpp rename to src/ZoneCodeGeneratorLib/Persistence/InMemory/InMemoryRepository.cpp diff --git a/src/ZoneCodeGeneratorNew/Persistence/InMemory/InMemoryRepository.h b/src/ZoneCodeGeneratorLib/Persistence/InMemory/InMemoryRepository.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Persistence/InMemory/InMemoryRepository.h rename to src/ZoneCodeGeneratorLib/Persistence/InMemory/InMemoryRepository.h diff --git a/src/ZoneCodeGeneratorNew/Printing/PrettyPrinter.cpp b/src/ZoneCodeGeneratorLib/Printing/PrettyPrinter.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Printing/PrettyPrinter.cpp rename to src/ZoneCodeGeneratorLib/Printing/PrettyPrinter.cpp diff --git a/src/ZoneCodeGeneratorNew/Printing/PrettyPrinter.h b/src/ZoneCodeGeneratorLib/Printing/PrettyPrinter.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Printing/PrettyPrinter.h rename to src/ZoneCodeGeneratorLib/Printing/PrettyPrinter.h diff --git a/src/ZoneCodeGeneratorNew/Utils/AlignmentUtils.h b/src/ZoneCodeGeneratorLib/Utils/AlignmentUtils.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Utils/AlignmentUtils.h rename to src/ZoneCodeGeneratorLib/Utils/AlignmentUtils.h diff --git a/src/ZoneCodeGeneratorNew/Utils/NamespaceBuilder.cpp b/src/ZoneCodeGeneratorLib/Utils/NamespaceBuilder.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Utils/NamespaceBuilder.cpp rename to src/ZoneCodeGeneratorLib/Utils/NamespaceBuilder.cpp diff --git a/src/ZoneCodeGeneratorNew/Utils/NamespaceBuilder.h b/src/ZoneCodeGeneratorLib/Utils/NamespaceBuilder.h similarity index 100% rename from src/ZoneCodeGeneratorNew/Utils/NamespaceBuilder.h rename to src/ZoneCodeGeneratorLib/Utils/NamespaceBuilder.h diff --git a/src/ZoneCodeGeneratorNew/ZoneCodeGenerator.cpp b/src/ZoneCodeGeneratorLib/ZoneCodeGenerator.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/ZoneCodeGenerator.cpp rename to src/ZoneCodeGeneratorLib/ZoneCodeGenerator.cpp diff --git a/src/ZoneCodeGeneratorNew/ZoneCodeGenerator.h b/src/ZoneCodeGeneratorLib/ZoneCodeGenerator.h similarity index 100% rename from src/ZoneCodeGeneratorNew/ZoneCodeGenerator.h rename to src/ZoneCodeGeneratorLib/ZoneCodeGenerator.h diff --git a/src/ZoneCodeGeneratorNew/ZoneCodeGeneratorArguments.cpp b/src/ZoneCodeGeneratorLib/ZoneCodeGeneratorArguments.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/ZoneCodeGeneratorArguments.cpp rename to src/ZoneCodeGeneratorLib/ZoneCodeGeneratorArguments.cpp diff --git a/src/ZoneCodeGeneratorNew/ZoneCodeGeneratorArguments.h b/src/ZoneCodeGeneratorLib/ZoneCodeGeneratorArguments.h similarity index 100% rename from src/ZoneCodeGeneratorNew/ZoneCodeGeneratorArguments.h rename to src/ZoneCodeGeneratorLib/ZoneCodeGeneratorArguments.h diff --git a/src/ZoneCodeGeneratorNew.lua b/src/ZoneCodeGeneratorNew.lua index 108db2ae..8949b0d0 100644 --- a/src/ZoneCodeGeneratorNew.lua +++ b/src/ZoneCodeGeneratorNew.lua @@ -6,10 +6,13 @@ function ZoneCodeGeneratorNew:include() path.join(ProjectFolder(), "ZoneCodeGeneratorNew") } end + Utils:include() end function ZoneCodeGeneratorNew:link() - + if References:link(self:name()) then + links(self:name()) + end end function ZoneCodeGeneratorNew:use() @@ -25,7 +28,7 @@ function ZoneCodeGeneratorNew:project() local folder = ProjectFolder(); project(self:name()) - targetdir(TargetDirectoryLib) + targetdir(TargetDirectoryBin) location "%{wks.location}/src/%{prj.name}" kind "ConsoleApp" language "C++" @@ -34,9 +37,15 @@ function ZoneCodeGeneratorNew:project() path.join(folder, "ZoneCodeGeneratorNew/**.h"), path.join(folder, "ZoneCodeGeneratorNew/**.cpp") } + vpaths { + ["*"] = { + path.join(folder, "ZoneCodeGeneratorNew"), + } + } self:include() - Utils:include() + ZoneCodeGeneratorLib:include() Utils:link() + ZoneCodeGeneratorLib:link() end diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.h b/src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.h deleted file mode 100644 index 23d21e7d..00000000 --- a/src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "Parsing/IParserLineStream.h" - -class CommentRemovingStreamProxy final : IParserLineStream -{ -public: - std::string NextLine() override; - bool IncludeFile(const std::string& filename) override; - bool IsOpen() const override; - _NODISCARD bool Eof() const override; -}; diff --git a/test/ZoneCodeGeneratorLibTests.lua b/test/ZoneCodeGeneratorLibTests.lua new file mode 100644 index 00000000..9c84d1bc --- /dev/null +++ b/test/ZoneCodeGeneratorLibTests.lua @@ -0,0 +1,51 @@ +ZoneCodeGeneratorLibTests = {} + +function ZoneCodeGeneratorLibTests:include() + if References:include(self:name()) then + includedirs { + path.join(TestFolder(), "ZoneCodeGeneratorLibTests") + } + end +end + +function ZoneCodeGeneratorLibTests:link() + if References:link(self:name()) then + links(self:name()) + end +end + +function ZoneCodeGeneratorLibTests:use() + +end + +function ZoneCodeGeneratorLibTests:name() + return "ZoneCodeGeneratorLibTests" +end + +function ZoneCodeGeneratorLibTests:project() + References:reset() + local folder = TestFolder(); + + project(self:name()) + targetdir(TargetDirectoryTest) + location "%{wks.location}/test/%{prj.name}" + kind "ConsoleApp" + language "C++" + + files { + path.join(folder, "ZoneCodeGeneratorLibTests/**.h"), + path.join(folder, "ZoneCodeGeneratorLibTests/**.cpp") + } + + vpaths { + ["*"] = { + path.join(folder, "ZoneCodeGeneratorLibTests"), + } + } + + self:include() + ZoneCodeGeneratorLib:include() + catch2:include() + + ZoneCodeGeneratorLib:link() +end diff --git a/test/ZoneCodeGeneratorLibTests/Parsing/Impl/CommentRemovingStreamProxyTest.cpp b/test/ZoneCodeGeneratorLibTests/Parsing/Impl/CommentRemovingStreamProxyTest.cpp new file mode 100644 index 00000000..71854447 --- /dev/null +++ b/test/ZoneCodeGeneratorLibTests/Parsing/Impl/CommentRemovingStreamProxyTest.cpp @@ -0,0 +1,227 @@ +#include + + +#include "Parsing/Impl/CommentRemovingStreamProxy.h" +#include "Parsing/Mock/MockParserLineStream.h" + +namespace test::parsing +{ + TEST_CASE("CommentRemovingStreamProxy: Ensure simple single line comment is working", "[parsing][parsingstream]") + { + const std::vector lines + { + "// hello", + "prefix // test", + "t//est" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line == "prefix "); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line == "t"); + } + + REQUIRE(proxy.Eof()); + } + + TEST_CASE("CommentRemovingStreamProxy: Ensure single line comment expands to next line on backslash", "[parsing][parsingstream]") + { + const std::vector lines + { + "// hello\\", + "this should still be a comment", + "this should not be a comment anymore" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line == "this should not be a comment anymore"); + } + + REQUIRE(proxy.Eof()); + } + + TEST_CASE("CommentRemovingStreamProxy: Ensure single line comment expands to next line on backslash and is repeatable", "[parsing][parsingstream]") + { + const std::vector lines + { + "// hello\\", + "this should still be a comment \\", + "this as well", + "this not anymore" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 4); + REQUIRE(line.m_line == "this not anymore"); + } + + REQUIRE(proxy.Eof()); + } + + TEST_CASE("CommentRemovingStreamProxy: Ensure backslash must be last character to expand single line comment to next line", "[parsing][parsingstream]") + { + const std::vector lines + { + "// hello\\", + "this should still be a comment \\ ", + "this not anymore" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line == "this not anymore"); + } + + REQUIRE(proxy.Eof()); + } + + TEST_CASE("CommentRemovingStreamProxy: Ensure simple multiline comment works on one line", "[parsing][parsingstream]") + { + const std::vector lines + { + "hello/* hell*/ world", + "/*this should be a comment*/", + "Hello /*asdf*/", + "/*asdf*/World" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line == "hello world"); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line == "Hello "); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 4); + REQUIRE(line.m_line == "World"); + } + + REQUIRE(proxy.Eof()); + } + + TEST_CASE("CommentRemovingStreamProxy: Ensure simple multiline comment works over multiple lines", "[parsing][parsingstream]") + { + const std::vector lines + { + "hello/* hell", + " hell*/ world/*nope", + "notatall", + "hehe*/xd" + }; + + MockParserLineStream mockStream(lines); + CommentRemovingStreamProxy proxy(&mockStream); + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 1); + REQUIRE(line.m_line == "hello"); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 2); + REQUIRE(line.m_line == " world"); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 3); + REQUIRE(line.m_line.empty()); + } + + { + auto line = proxy.NextLine(); + REQUIRE(line.m_line_number == 4); + REQUIRE(line.m_line == "xd"); + } + + REQUIRE(proxy.Eof()); + } +} diff --git a/src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.cpp b/test/ZoneCodeGeneratorLibTests/Parsing/Impl/DefinesStreamProxyTest.cpp similarity index 100% rename from src/ZoneCodeGeneratorNew/Parsing/Impl/CommentRemovingStreamProxy.cpp rename to test/ZoneCodeGeneratorLibTests/Parsing/Impl/DefinesStreamProxyTest.cpp diff --git a/test/ZoneCodeGeneratorLibTests/Parsing/Impl/IncludingStreamProxyTest.cpp b/test/ZoneCodeGeneratorLibTests/Parsing/Impl/IncludingStreamProxyTest.cpp new file mode 100644 index 00000000..e69de29b diff --git a/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.cpp b/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.cpp new file mode 100644 index 00000000..b6287466 --- /dev/null +++ b/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.cpp @@ -0,0 +1,36 @@ +#include "MockParserLineStream.h" + +const std::string MockParserLineStream::MOCK_FILENAME; + +MockParserLineStream::MockParserLineStream(const std::vector& lines) + : m_lines(lines), + m_line(0) +{ +} + +ParserLine MockParserLineStream::NextLine() +{ + if(m_line < m_lines.size()) + { + const auto line = m_line++; + return ParserLine(MOCK_FILENAME, line + 1, m_lines[line]); + } + + return ParserLine(MOCK_FILENAME, 0, std::string()); +} + +bool MockParserLineStream::IncludeFile(const std::string& filename) +{ + m_includes.push_back(filename); + return true; +} + +bool MockParserLineStream::IsOpen() const +{ + return true; +} + +bool MockParserLineStream::Eof() const +{ + return m_line >= m_lines.size(); +} diff --git a/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.h b/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.h new file mode 100644 index 00000000..2e431380 --- /dev/null +++ b/test/ZoneCodeGeneratorLibTests/Parsing/Mock/MockParserLineStream.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +#include "Parsing/IParserLineStream.h" + +class MockParserLineStream final : public IParserLineStream +{ + static const std::string MOCK_FILENAME; + + const std::vector& m_lines; + unsigned m_line; + std::vector m_includes{}; + +public: + explicit MockParserLineStream(const std::vector& lines); + + ParserLine NextLine() override; + bool IncludeFile(const std::string& filename) override; + _NODISCARD bool IsOpen() const override; + _NODISCARD bool Eof() const override; +}; diff --git a/test/ZoneCodeGeneratorLibTests/main.cpp b/test/ZoneCodeGeneratorLibTests/main.cpp new file mode 100644 index 00000000..2380d6bf --- /dev/null +++ b/test/ZoneCodeGeneratorLibTests/main.cpp @@ -0,0 +1,2 @@ +#define CATCH_CONFIG_MAIN +#include \ No newline at end of file