diff --git a/AstClasses.ipynb b/AstClasses.ipynb index 0824ea96..c4cb307c 100644 --- a/AstClasses.ipynb +++ b/AstClasses.ipynb @@ -1,8 +1,9 @@ { "cells": [ { - "metadata": {}, "cell_type": "markdown", + "id": "f72be856a0eccf2e", + "metadata": {}, "source": [ "# AST tree nodes\n", "\n", @@ -19,19 +20,20 @@ "\n", "```\n", "\n", - "**ArgumentNode** - represents variables that are passed to the function.\n", + "**Constructor** - represents constructor call, with type and arguments. Should contain Arguments child node.\n", "\n", - "**Constructor** - represents constructor call, with type and arguments. Should contain Arguments child node." - ], - "id": "f72be856a0eccf2e" + "**InputsList** - root node for the method arguments\n", + "\n", + "**Input** - represents variables that are passed to the function." + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "", - "id": "e6a163c0aeed68e" + "id": "e6a163c0aeed68e", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/AstTransformations.ipynb b/AstTransformations.ipynb index 2c2aba54..d1864f7d 100644 --- a/AstTransformations.ipynb +++ b/AstTransformations.ipynb @@ -28,8 +28,8 @@ "source": [ "import ce.defs.DataType\n", "import ce.defs.DataValue\n", - "import generators.obj.input.DataClass\n", - "import generators.obj.input.DataField\n", + "import generators.obj.abstractSyntaxTree.DataClass\n", + "import generators.obj.abstractSyntaxTree.DataField\n", "import generators.kotlin.PrepareRightValueUseCase\n", "\n", "val dataClassDescriptor = DataClass(\"c\").apply {\n", @@ -65,8 +65,8 @@ "outputs": [], "source": [ "val dataField = DataField(\"varName\").apply {\n", - " generators.obj.input.setType(DataType.int32)\n", - " generators.obj.input.setValue(\"strValue\")\n", + " generators.obj.abstractSyntaxTree.setType(DataType.int32)\n", + " generators.obj.abstractSyntaxTree.setValue(\"strValue\")\n", " }\n", "print(dataField)" ] @@ -85,10 +85,38 @@ ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "NewInstance will be transformed to Constructor node, with type and arguments.", - "id": "927d27f642e731f4" + "id": "927d27f642e731f4", + "metadata": {}, + "source": [ + "NewInstance will be transformed to Constructor node, with type and arguments.\n", + "\n", + "```\n", + "\n", + " some.class\n", + " string\n", + " int32\n", + "\n", + "```\n", + "\n", + "Transforms to the:\n", + "\n", + "```\n", + "\n", + " \n", + " \n", + " \n", + " <=><\"someValue\">\n", + " \n", + " <,>\n", + " \n", + " <=><10>\n", + " \n", + " \n", + " \n", + "\n", + "```" + ] } ], "metadata": { diff --git a/InputClasses.ipynb b/InputClasses.ipynb index 70d85cdb..45ea9840 100644 --- a/InputClasses.ipynb +++ b/InputClasses.ipynb @@ -28,7 +28,7 @@ "source": [ "import ce.defs.DataType\n", "import ce.defs.DataValue\n", - "import generators.obj.input.DataClass\n", + "import generators.obj.abstractSyntaxTree.DataClass\n", "\n", "val dataClassDescriptor = DataClass(\"c\").apply {\n", " field(\"A\", DataType.int32, 1)\n", diff --git a/cgen-lib/cgen/dataclass.kts b/cgen-lib/cgen/dataclass.kts index d859aa85..95f9ebb0 100644 --- a/cgen-lib/cgen/dataclass.kts +++ b/cgen-lib/cgen/dataclass.kts @@ -3,7 +3,7 @@ import ce.defs.* namespace("ce.defs.domain").apply { dataClass("DirsConfiguration").apply { - field("workingDir", DataType.string(), "") - field("tempDir", DataType.string(), "") + field("workingDir", DataType.string, "") + field("tempDir", DataType.string, "") } } diff --git a/cgen-lib/cgen/enums.kts b/cgen-lib/cgen/enums.kts index 6614f84f..55b6abf2 100644 --- a/cgen-lib/cgen/enums.kts +++ b/cgen-lib/cgen/enums.kts @@ -8,7 +8,7 @@ namespace("ce.defs").apply { } val targetEnum = enum("Target").apply { - defaultType(DataType.string()) + defaultType(DataType.string) add("Other", "other") add("Kotlin", "kotlin") add("C", "c") @@ -22,7 +22,7 @@ namespace("ce.defs").apply { } dataClass("TargetConfiguration").apply { - field("outputFolder", DataType.string(), "") + field("outputFolder", DataType.string, "") field("type", DataType.userClassTest2(targetEnum)) } } diff --git a/cgen-lib/src/main/kotlin/ce/defs/DataType.kt b/cgen-lib/src/main/kotlin/ce/defs/DataType.kt index be89a509..621de26d 100644 --- a/cgen-lib/src/main/kotlin/ce/defs/DataType.kt +++ b/cgen-lib/src/main/kotlin/ce/defs/DataType.kt @@ -1,6 +1,6 @@ package ce.defs -import generators.obj.input.Block +import generators.obj.abstractSyntaxTree.Block sealed class DataType( val canBeNull: Boolean = false @@ -64,7 +64,8 @@ sealed class DataType( object float64Nullable : DataType(canBeNull = true) object float128Nullable : DataType(canBeNull = true) - class string(canBeNull: Boolean = false) : DataType(canBeNull) + object string : DataType(false) + object stringNullable : DataType(true) object bool : DataType() object boolNullable : DataType(canBeNull = true) class pointer(val subType: DataType) : DataType(canBeNull = true) @@ -72,7 +73,7 @@ sealed class DataType( class promise(val elementDataType: DataType) : DataType() class custom(val block: Block, nullable : Boolean = false) : DataType(nullable) class userClass(val path: String, nullable : Boolean = false) : DataType(nullable) - class userClassTest2(val node: generators.obj.input.Node, nullable : Boolean = false) : DataType(nullable) + class userClassTest2(val node: generators.obj.abstractSyntaxTree.Node, nullable : Boolean = false) : DataType(nullable) // class nullable(val inner: DataType) : DataType(true) } diff --git a/cgen-lib/src/main/kotlin/ce/defs/DataValue.kt b/cgen-lib/src/main/kotlin/ce/defs/DataValue.kt index 7b49e0fc..e646206a 100644 --- a/cgen-lib/src/main/kotlin/ce/defs/DataValue.kt +++ b/cgen-lib/src/main/kotlin/ce/defs/DataValue.kt @@ -1,8 +1,8 @@ package ce.defs -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt data class RValue( override val name: String = "", diff --git a/cgen-lib/src/main/kotlin/ce/defs/Funcs.kt b/cgen-lib/src/main/kotlin/ce/defs/Funcs.kt index b301a50f..013ade8b 100644 --- a/cgen-lib/src/main/kotlin/ce/defs/Funcs.kt +++ b/cgen-lib/src/main/kotlin/ce/defs/Funcs.kt @@ -1,6 +1,6 @@ package ce.defs -import generators.obj.input.* +import generators.obj.abstractSyntaxTree.* val globRootNamespace = NamespaceImpl("").apply { setParent2(TreeRoot) } var currentTarget: Target = Target.Other diff --git a/cgen-lib/src/main/kotlin/ce/defs/TargetExt.kt b/cgen-lib/src/main/kotlin/ce/defs/TargetExt.kt index 6eae5205..f10d62be 100644 --- a/cgen-lib/src/main/kotlin/ce/defs/TargetExt.kt +++ b/cgen-lib/src/main/kotlin/ce/defs/TargetExt.kt @@ -2,5 +2,5 @@ package ce.defs object TargetExt { fun findByName(name: String): Target = - Target.values().find {it.name.equals(name, true) } ?: Target.Other + Target.entries.find {it.name.equals(name, true) } ?: Target.Other } \ No newline at end of file diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/add/AddRegionDefaultsUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/add/AddRegionDefaultsUseCase.kt index 32e64710..70d6b25e 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/add/AddRegionDefaultsUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/add/AddRegionDefaultsUseCase.kt @@ -1,10 +1,9 @@ package ce.domain.usecase.add import ce.formatters.CodeStyleRepo -import generators.obj.input.Block -import generators.obj.input.addSub -import generators.obj.input.removeSub -import generators.obj.out.* +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.* import javax.inject.Inject interface AddRegionDefaultsUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/BuildOutTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/BuildOutTreeUseCase.kt index f236f50b..181cb4f9 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/BuildOutTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/BuildOutTreeUseCase.kt @@ -8,7 +8,7 @@ import ce.domain.usecase.store.StoreOutTreeUseCase import ce.domain.usecase.transform.TransformInTreeToOutTreeUseCase import ce.repository.CodestyleRepoImpl import ce.repository.GeneratorsRepo -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.Node import javax.inject.Inject interface BuildOutTreeUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/PrepareAstTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/PrepareAstTreeUseCase.kt index 765b2b7a..92633255 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/PrepareAstTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/entry/PrepareAstTreeUseCase.kt @@ -5,7 +5,7 @@ import ce.domain.usecase.load.LoadMetaFilesForTargetUseCase import ce.domain.usecase.load.LoadProjectUseCase import ce.domain.usecase.store.StoreAstTreeUseCase import ce.settings.Project -import generators.obj.out.AstTree +import generators.obj.syntaxParseTree.AstTree class PrepareAstTreeUseCase( private val getProjectUseCase : LoadProjectUseCase, diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadAstTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadAstTreeUseCase.kt index c443e8d7..b86a7022 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadAstTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadAstTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.load import ce.treeio.XmlTreeReader -import generators.obj.out.AstTree +import generators.obj.syntaxParseTree.AstTree class LoadAstTreeUseCase { operator fun invoke(inputFile : String) : AstTree { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadCodeStyleTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadCodeStyleTreeUseCase.kt index 2c9771c7..245b5462 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadCodeStyleTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadCodeStyleTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.load import ce.treeio.XmlTreeReader -import generators.obj.out.CodeStyleOutputTree +import generators.obj.syntaxParseTree.CodeStyleOutputTree class LoadCodeStyleTreeUseCase { operator fun invoke(inputFile : String) : CodeStyleOutputTree { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadMetaFilesUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadMetaFilesUseCase.kt index 890d8757..4c17d598 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadMetaFilesUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadMetaFilesUseCase.kt @@ -9,9 +9,9 @@ import ce.defs.outputFile import ce.defs.sourceFile import ce.settings.Project import ce.treeio.TreeFunctions -import generators.obj.input.Namespace -import generators.obj.input.Node -import generators.obj.input.clearSubs +import generators.obj.abstractSyntaxTree.Namespace +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.clearSubs import java.io.File import java.io.FileInputStream import java.io.InputStreamReader diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadOutTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadOutTreeUseCase.kt index 0f97a59f..ee3f2c1b 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadOutTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadOutTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.load import ce.treeio.XmlTreeReader -import generators.obj.out.OutputTree +import generators.obj.syntaxParseTree.OutputTree class LoadOutTreeUseCase { operator fun invoke(inputFile : String) : OutputTree { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadXmlTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadXmlTreeUseCase.kt index 9ba605a3..40060fe5 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadXmlTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/load/LoadXmlTreeUseCase.kt @@ -1,8 +1,7 @@ package ce.domain.usecase.load import ce.treeio.XmlTreeReader -import generators.obj.input.Leaf -import generators.obj.out.AstTree +import generators.obj.abstractSyntaxTree.Leaf class LoadXmlTreeUseCase { private val reader = XmlTreeReader() diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreAstTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreAstTreeUseCase.kt index 2eaa9a80..a43ae3fa 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreAstTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreAstTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.store import ce.treeio.XmlInTreeWritterImpl -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.Node import java.io.File class StoreAstTreeUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreCodeStyleTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreCodeStyleTreeUseCase.kt index cc0a91b3..c48e60e1 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreCodeStyleTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreCodeStyleTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.store import ce.treeio.XmlInTreeWritterImpl -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.Node import java.io.File class StoreCodeStyleTreeUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutFilesUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutFilesUseCase.kt index b277f335..fe3b54de 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutFilesUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutFilesUseCase.kt @@ -1,18 +1,6 @@ package ce.domain.usecase.store -import ce.defs.DataType -import ce.defs.DataValue -import ce.defs.globRootNamespace -import ce.settings.Project -import ce.treeio.DataTypeSerializer -import ce.treeio.DataValueSerializer -import ce.treeio.XmlInTreeWritterImpl -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.databind.SerializationFeature -import com.fasterxml.jackson.databind.module.SimpleModule -import generators.obj.input.Node -import java.io.File -import java.io.FileInputStream +import generators.obj.abstractSyntaxTree.Node class StoreOutFilesUseCase { operator fun invoke(outputFile : String, tree: Node) { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutTreeUseCase.kt index 16bc955d..90ba6815 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreOutTreeUseCase.kt @@ -1,7 +1,7 @@ package ce.domain.usecase.store import ce.treeio.XmlInTreeWritterImpl -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.Node import java.io.File class StoreOutTreeUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreTreeToSvgUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreTreeToSvgUseCase.kt index 0aef3398..0c5ea35f 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreTreeToSvgUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/store/StoreTreeToSvgUseCase.kt @@ -1,9 +1,9 @@ package ce.domain.usecase.store -import generators.obj.input.DataField -import generators.obj.input.Leaf -import generators.obj.input.Namespace -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Namespace +import generators.obj.abstractSyntaxTree.Node import org.abego.treelayout.Configuration import org.abego.treelayout.NodeExtentProvider import org.abego.treelayout.TreeLayout diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformInTreeToOutTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformInTreeToOutTreeUseCase.kt index aa4a9143..71a152a9 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformInTreeToOutTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformInTreeToOutTreeUseCase.kt @@ -1,8 +1,8 @@ package ce.domain.usecase.transform import generators.obj.MetaGenerator -import generators.obj.input.Node -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Node +import generators.obj.syntaxParseTree.OutputTree class TransformInTreeToOutTreeUseCase { operator fun invoke(inTree: Node, metaGenerator: MetaGenerator) : OutputTree { diff --git a/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformOutTreeToCodeStyleTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformOutTreeToCodeStyleTreeUseCase.kt index 616ce9cd..2073d816 100644 --- a/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformOutTreeToCodeStyleTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/domain/usecase/transform/TransformOutTreeToCodeStyleTreeUseCase.kt @@ -1,8 +1,8 @@ package ce.domain.usecase.transform import ce.formatters.PrepareCodeStyleTreeUseCase -import generators.obj.out.CodeStyleOutputTree -import generators.obj.out.OutputTree +import generators.obj.syntaxParseTree.CodeStyleOutputTree +import generators.obj.syntaxParseTree.OutputTree @Deprecated("Please use PrepareCodeStyleTreeUseCase") class TransformOutTreeToCodeStyleTreeUseCase { diff --git a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterCxxUseCaseImpl.kt b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterCxxUseCaseImpl.kt index 4ef7cfc5..f54a52d2 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterCxxUseCaseImpl.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterCxxUseCaseImpl.kt @@ -1,11 +1,11 @@ package ce.formatters -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addSeparator -import generators.obj.input.addSub -import generators.obj.out.EnumNode -import generators.obj.out.Separator +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addSeparator +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.Separator import javax.inject.Inject class CodeFormatterCxxUseCaseImpl @Inject constructor(codeStyleRepo: CodeStyleRepo) : diff --git a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterJavaUseCaseImpl.kt b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterJavaUseCaseImpl.kt index f991c24e..fda4cb44 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterJavaUseCaseImpl.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterJavaUseCaseImpl.kt @@ -1,14 +1,14 @@ package ce.formatters -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addSub -import generators.obj.out.ArgumentNode -import generators.obj.out.AstTypeLeaf -import generators.obj.out.NlSeparator -import generators.obj.out.Separator -import generators.obj.out.Space -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space +import generators.obj.syntaxParseTree.VariableName import javax.inject.Inject class CodeFormatterJavaUseCaseImpl @Inject constructor(codeStyleRepo: CodeStyleRepo) : diff --git a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterKotlinUseCaseImpl.kt b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterKotlinUseCaseImpl.kt index 1666af9e..764609dc 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterKotlinUseCaseImpl.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterKotlinUseCaseImpl.kt @@ -2,24 +2,24 @@ package ce.formatters import ce.defs.DataValue import ce.defs.RValue -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addKeyword -import generators.obj.input.addSeparatorNewLine -import generators.obj.input.addSub -import generators.obj.out.ArgumentNode -import generators.obj.out.Arguments -import generators.obj.out.AstTypeLeaf -import generators.obj.out.EnumNode -import generators.obj.out.FieldNode -import generators.obj.out.Keyword -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.Separator -import generators.obj.out.Space -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addSeparatorNewLine +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space +import generators.obj.syntaxParseTree.VariableName import javax.inject.Inject class CodeFormatterKotlinUseCaseImpl @Inject constructor(codeStyleRepo: CodeStyleRepo) : diff --git a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCase.kt b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCase.kt index ed5d68c4..8ba330f0 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCase.kt @@ -1,6 +1,6 @@ package ce.formatters -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.Node interface CodeFormatterUseCase { operator fun invoke(input: T): T diff --git a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCaseImpl.kt b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCaseImpl.kt index 5a6f4fca..850e0c41 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCaseImpl.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/CodeFormatterUseCaseImpl.kt @@ -2,29 +2,29 @@ package ce.formatters import ce.defs.RValue import generators.cpp.CompilerDirective -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addKeyword -import generators.obj.input.addSeparator -import generators.obj.input.addSeparatorNewLine -import generators.obj.input.addSub -import generators.obj.out.ArgumentNode -import generators.obj.out.Arguments -import generators.obj.out.CommentLeaf -import generators.obj.out.EnumNode -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.ImportLeaf -import generators.obj.out.Indent -import generators.obj.out.NamespaceBlock -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.Separator -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addSeparator +import generators.obj.abstractSyntaxTree.addSeparatorNewLine +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportLeaf +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space import javax.inject.Inject open class CodeFormatterUseCaseImpl @Inject constructor( diff --git a/cgen-lib/src/main/kotlin/ce/formatters/PrepareCodeStyleTreeUseCase.kt b/cgen-lib/src/main/kotlin/ce/formatters/PrepareCodeStyleTreeUseCase.kt index d378c291..78db3ee6 100644 --- a/cgen-lib/src/main/kotlin/ce/formatters/PrepareCodeStyleTreeUseCase.kt +++ b/cgen-lib/src/main/kotlin/ce/formatters/PrepareCodeStyleTreeUseCase.kt @@ -1,8 +1,8 @@ package ce.formatters -import generators.obj.input.addSub -import generators.obj.out.CodeStyleOutputTree -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.CodeStyleOutputTree +import generators.obj.syntaxParseTree.OutputTree interface PrepareCodeStyleTreeUseCase { fun prepareCodeStyleTree(projectOutput: OutputTree): CodeStyleOutputTree diff --git a/cgen-lib/src/main/kotlin/ce/repository/GeneratorsRepo.kt b/cgen-lib/src/main/kotlin/ce/repository/GeneratorsRepo.kt index 8888abb8..dcb9a83b 100644 --- a/cgen-lib/src/main/kotlin/ce/repository/GeneratorsRepo.kt +++ b/cgen-lib/src/main/kotlin/ce/repository/GeneratorsRepo.kt @@ -27,10 +27,10 @@ import generators.kotlin.KtDataClassGenerator import generators.kotlin.PrepareRightValueUseCase import generators.obj.MetaGenerator import generators.obj.PrepareFilesListUseCaseImpl -import generators.obj.input.ConstantsBlock -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataClass -import generators.obj.input.InterfaceDescription +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.InterfaceDescription import generators.rust.RustFileGenerator import generators.swift.SwiftConstantsBlockGenerator import generators.swift.SwiftDataClassGenerator diff --git a/cgen-lib/src/main/kotlin/ce/treeio/DataTypeSerializer.kt b/cgen-lib/src/main/kotlin/ce/treeio/DataTypeSerializer.kt index 5ca70b76..a1bfb08d 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/DataTypeSerializer.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/DataTypeSerializer.kt @@ -5,7 +5,7 @@ import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.databind.JsonSerializer import com.fasterxml.jackson.databind.SerializerProvider import com.fasterxml.jackson.databind.jsontype.TypeSerializer -import generators.obj.input.getPath +import generators.obj.abstractSyntaxTree.getPath class DataTypeSerializer : JsonSerializer() { @@ -67,10 +67,8 @@ class DataTypeSerializer : JsonSerializer() { is DataType.promise -> PREFIX_FLOW_OF + stringValue(value.elementDataType) is DataType.userClass -> PREFIX_CLASS + value.path is DataType.userClassTest2 -> PREFIX_CLASS + value.node.getPath() - is DataType.string -> if (value.canBeNull) - STRING_NULLABLE - else - STRING + is DataType.string -> STRING + is DataType.stringNullable -> STRING_NULLABLE else -> "UNK" + value.toString() } return typeStr @@ -83,10 +81,10 @@ class DataTypeSerializer : JsonSerializer() { return DataType.array(fromStringValue(value.substring(PREFIX_ARRAY_OF.length))) } if (value == STRING) { - return DataType.string() + return DataType.string } if (value == STRING_NULLABLE) { - return DataType.string(canBeNull = true) + return DataType.stringNullable } throw IllegalStateException("Not supported data type=\"$value\"") } diff --git a/cgen-lib/src/main/kotlin/ce/treeio/NodeDeserializer.kt b/cgen-lib/src/main/kotlin/ce/treeio/NodeDeserializer.kt index 3b9603c4..d4490460 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/NodeDeserializer.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/NodeDeserializer.kt @@ -6,48 +6,48 @@ import ce.defs.DataValueImpl import ce.defs.RValue import ce.defs.TargetExt import generators.kotlin.KotlinClassData -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataClass -import generators.obj.input.DataField -import generators.obj.input.Input -import generators.obj.input.InputList -import generators.obj.input.InterfaceDescription -import generators.obj.input.Leaf -import generators.obj.input.Method -import generators.obj.input.Namespace -import generators.obj.input.NamespaceImpl -import generators.obj.input.Node -import generators.obj.input.OutputList -import generators.obj.input.OutputReusable -import generators.obj.input.TypeLeaf -import generators.obj.input.buildNamespaceTree -import generators.obj.out.ArgumentNode -import generators.obj.out.Arguments -import generators.obj.out.AstTree -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CodeStyleOutputTree -import generators.obj.out.CommentLeaf -import generators.obj.out.CommentsBlock -import generators.obj.out.EnumNode -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.FileDataImpl -import generators.obj.out.ImportsBlock -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.ResultLeaf -import generators.obj.out.Separator -import generators.obj.out.Space -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.Input +import generators.obj.abstractSyntaxTree.InputList +import generators.obj.abstractSyntaxTree.InterfaceDescription +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Method +import generators.obj.abstractSyntaxTree.Namespace +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.OutputList +import generators.obj.abstractSyntaxTree.OutputReusable +import generators.obj.abstractSyntaxTree.TypeLeaf +import generators.obj.abstractSyntaxTree.buildNamespaceTree +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.AstTree +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CodeStyleOutputTree +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.ResultLeaf +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space +import generators.obj.syntaxParseTree.VariableName import org.w3c.dom.Element data class DeserializeArguments( diff --git a/cgen-lib/src/main/kotlin/ce/treeio/TreeFunctions.kt b/cgen-lib/src/main/kotlin/ce/treeio/TreeFunctions.kt index 37920f7d..b9224bef 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/TreeFunctions.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/TreeFunctions.kt @@ -1,8 +1,7 @@ package ce.treeio -import generators.obj.input.Node -import generators.obj.input.addSub -import generators.obj.input.findOrNull +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addSub class TreeMergeWrongRoot: Exception("Tree roots must have same class") diff --git a/cgen-lib/src/main/kotlin/ce/treeio/TreeReader.kt b/cgen-lib/src/main/kotlin/ce/treeio/TreeReader.kt index 46ac54c3..9b777971 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/TreeReader.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/TreeReader.kt @@ -1,6 +1,6 @@ package ce.treeio -import generators.obj.input.Leaf +import generators.obj.abstractSyntaxTree.Leaf interface TreeReader { fun load(filePath: String): Leaf diff --git a/cgen-lib/src/main/kotlin/ce/treeio/TreeWritter.kt b/cgen-lib/src/main/kotlin/ce/treeio/TreeWritter.kt index 8fe64055..b0167842 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/TreeWritter.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/TreeWritter.kt @@ -1,7 +1,6 @@ package ce.treeio -import generators.obj.input.Leaf -import generators.obj.input.Namespace +import generators.obj.abstractSyntaxTree.Leaf interface TreeWritter { fun storeTree(filePath: String, tree: Leaf) diff --git a/cgen-lib/src/main/kotlin/ce/treeio/XmlInTreeWritterImpl.kt b/cgen-lib/src/main/kotlin/ce/treeio/XmlInTreeWritterImpl.kt index 04da7cfe..a6a1f111 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/XmlInTreeWritterImpl.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/XmlInTreeWritterImpl.kt @@ -1,18 +1,18 @@ package ce.treeio -import generators.obj.input.Block -import generators.obj.input.ConstantsBlock -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataField -import generators.obj.input.FieldImpl -import generators.obj.input.Input -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.Output -import generators.obj.input.OutputReusable -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.FieldImpl +import generators.obj.abstractSyntaxTree.Input +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.Output +import generators.obj.abstractSyntaxTree.OutputReusable +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl import org.w3c.dom.Document import org.w3c.dom.Element import java.io.File diff --git a/cgen-lib/src/main/kotlin/ce/treeio/XmlTreeReader.kt b/cgen-lib/src/main/kotlin/ce/treeio/XmlTreeReader.kt index d68a4bb8..098597e9 100644 --- a/cgen-lib/src/main/kotlin/ce/treeio/XmlTreeReader.kt +++ b/cgen-lib/src/main/kotlin/ce/treeio/XmlTreeReader.kt @@ -1,14 +1,14 @@ package ce.treeio import ce.defs.DataType -import generators.obj.input.Block -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.input.getPath +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.getPath import org.w3c.dom.Document import org.w3c.dom.Element import org.xml.sax.InputSource diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppClasses.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppClasses.kt index 902b6ff5..d3b4f9c0 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppClasses.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppClasses.kt @@ -1,12 +1,12 @@ package generators.cpp -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addSub -import generators.obj.input.copyLeafExt -import generators.obj.input.copyNodeExt -import generators.obj.out.FileData -import generators.obj.out.ImportsBlock +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.copyLeafExt +import generators.obj.abstractSyntaxTree.copyNodeExt +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportsBlock class CompilerDirective(override val name: String) : Leaf { var parent: Node? = null diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppConstantsBlockGenerator.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppConstantsBlockGenerator.kt index 44f46bf4..ba2ef684 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppConstantsBlockGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppConstantsBlockGenerator.kt @@ -4,20 +4,20 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.kotlin.PrepareRightValueUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.addCommentLine -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.input.findOrNull -import generators.obj.input.getParentPath -import generators.obj.out.CommentsBlock -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.NamespaceBlock -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.addCommentLine +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.RegionImpl class CppConstantsBlockGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppDataClassGenerator.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppDataClassGenerator.kt index 34ce6614..6c377ca1 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppDataClassGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppDataClassGenerator.kt @@ -2,23 +2,23 @@ package generators.cpp import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.TransformBlockUseCase -import generators.obj.input.DataClass -import generators.obj.input.DataField -import generators.obj.input.addCommentLine -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.input.findOrCreateSub -import generators.obj.input.findOrNull -import generators.obj.input.getParentPath -import generators.obj.out.CommentsBlock -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.ImportsBlock -import generators.obj.out.NamespaceBlock -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addCommentLine +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.abstractSyntaxTree.findOrCreateSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.RegionImpl class CppDataClassGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppEnumGenerator.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppEnumGenerator.kt index 529f5e7a..ce390b80 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppEnumGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppEnumGenerator.kt @@ -4,21 +4,21 @@ import ce.defs.DataType import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataField -import generators.obj.input.addCommentLine -import generators.obj.input.addEnumLeaf -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addSeparator -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.input.findOrNull -import generators.obj.input.getParentPath -import generators.obj.out.CommentsBlock -import generators.obj.out.FileData -import generators.obj.out.NamespaceBlock -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addCommentLine +import generators.obj.abstractSyntaxTree.addEnumLeaf +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSeparator +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.RegionImpl class CppEnumGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppFileGenerator.kt index 214daeb2..95599146 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppFileGenerator.kt @@ -1,9 +1,9 @@ package generators.cpp import generators.obj.CLikeFileGenerator -import generators.obj.input.Block -import generators.obj.out.FileData -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutputTree class CppFileGenerator() : CLikeFileGenerator() { override fun createFile(project: OutputTree, outputFile: String, block: Block): List { diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppInterfaceGenerator.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppInterfaceGenerator.kt index dc16024d..e9e3e35c 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppInterfaceGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppInterfaceGenerator.kt @@ -2,10 +2,10 @@ package generators.cpp import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.TransformBlockUseCase -import generators.obj.input.InterfaceDescription -import generators.obj.input.addSub -import generators.obj.out.FileData -import generators.obj.out.OutBlock +import generators.obj.abstractSyntaxTree.InterfaceDescription +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutBlock class CppInterfaceGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/cpp/CppWritter.kt b/cgen-lib/src/main/kotlin/generators/cpp/CppWritter.kt index 93cffc82..d32d36d3 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/CppWritter.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/CppWritter.kt @@ -5,15 +5,15 @@ import ce.io.CodeWriter import ce.io.FileCodeWritter import ce.repository.ReportsRepo import generators.obj.Writter -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.findOrNull -import generators.obj.input.removeSub -import generators.obj.out.FileData -import generators.obj.out.ImportLeaf -import generators.obj.out.NamespaceBlock -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.abstractSyntaxTree.removeSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportLeaf +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments import java.io.File class CppWritter( diff --git a/cgen-lib/src/main/kotlin/generators/cpp/InterfaceGeneratorCpp.kt b/cgen-lib/src/main/kotlin/generators/cpp/InterfaceGeneratorCpp.kt index 5dc23f58..b5e8b5d8 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/InterfaceGeneratorCpp.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/InterfaceGeneratorCpp.kt @@ -3,10 +3,10 @@ package generators.cpp import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.InterfaceDescription -import generators.obj.input.addSub -import generators.obj.out.FileData -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.InterfaceDescription +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.RegionImpl class InterfaceGeneratorCpp( fileGenerator: FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/cpp/PrepareRightValueUseCase.kt b/cgen-lib/src/main/kotlin/generators/cpp/PrepareRightValueUseCase.kt new file mode 100644 index 00000000..2e151f23 --- /dev/null +++ b/cgen-lib/src/main/kotlin/generators/cpp/PrepareRightValueUseCase.kt @@ -0,0 +1,75 @@ +package generators.cpp + +import ce.defs.DataType +import ce.defs.DataValue +import ce.defs.RValue +import generators.kotlin.GetTypeNameUseCase +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.NewInstance +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FileData + +class PrepareRightValueUseCase( + private val getTypeNameUseCase: GetTypeNameUseCase +) { + fun toRightValue(dataField: DataField, fileData: FileData): RValue = + toRightValue( + type = dataField.getType(), + value = dataField.getValue(), + fileData = fileData + ) + + fun toRightValue(type: DataType, value: DataValue, fileData: FileData): RValue = + when (type) { + DataType.VOID -> RValue(name = "void") + DataType.int8, DataType.int16, DataType.int32, DataType.int64, + DataType.uint8, DataType.uint16, DataType.uint32, DataType.uint64 -> RValue(name = value.simple.toString()) + + DataType.float32 -> RValue(name = value.simple.toString() + "f") + DataType.float64 -> RValue(name = value.simple.toString()) + DataType.bool -> RValue(name = value.simple.toString()) + is DataType.string -> { + if (value.simple is String) { + RValue(name = "\"${value.simple}\"") + } else { + throw IllegalArgumentException( + "Expected a String value for DataType.string, " + + "but got: ${value.simple}" + ) + } + } + + is DataType.custom -> { + if (!value.isComplex) { + RValue(name = value.simple.toString()) + } else { + val valueComplexItem = value.subs.first() + if (valueComplexItem is NewInstance) { + prepareConstructor(valueComplexItem, fileData) + } else { + RValue(name = "QQVAL_complex???") + } + } + + } + + else -> RValue(name = "QQVAL_$type") + } + + fun prepareConstructor(item: NewInstance, fileData: FileData): RValue { + val result = RValue() + result.addSub( + Constructor( + name = getTypeNameUseCase.typeTo( + file = fileData, + type = item.getType() + ) + ).apply { + addSub(Arguments()) + } + ) + return result + } +} \ No newline at end of file diff --git a/cgen-lib/src/main/kotlin/generators/cpp/Types.kt b/cgen-lib/src/main/kotlin/generators/cpp/Types.kt index 44e8ac01..6820fc68 100644 --- a/cgen-lib/src/main/kotlin/generators/cpp/Types.kt +++ b/cgen-lib/src/main/kotlin/generators/cpp/Types.kt @@ -3,9 +3,9 @@ package generators.cpp import ce.defs.DataType import ce.defs.DataValue import ce.defs.DataValueImpl -import generators.obj.input.findOrCreateSub -import generators.obj.out.FileData -import generators.obj.out.ImportsBlock +import generators.obj.abstractSyntaxTree.findOrCreateSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportsBlock object Types { fun typeTo(file: FileData, diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaClassData.kt b/cgen-lib/src/main/kotlin/generators/java/JavaClassData.kt index bab61dbd..90c1d793 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaClassData.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaClassData.kt @@ -1,10 +1,9 @@ package generators.java -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt -import generators.obj.input.copyNodeExt -import generators.obj.out.ClassData +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyNodeExt +import generators.obj.syntaxParseTree.ClassData data class JavaClassData( override val name: String = "", diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaConstantsGenerator.kt b/cgen-lib/src/main/kotlin/generators/java/JavaConstantsGenerator.kt index 8a18eeae..a3cbb5d9 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaConstantsGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaConstantsGenerator.kt @@ -4,16 +4,16 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.kotlin.PrepareRightValueUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.OutBlock -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.RegionImpl class JavaConstantsGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaDataClassGenerator.kt b/cgen-lib/src/main/kotlin/generators/java/JavaDataClassGenerator.kt index faf364cc..a42bbcfe 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaDataClassGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaDataClassGenerator.kt @@ -2,16 +2,16 @@ package generators.java import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.TransformBlockUseCase -import generators.obj.input.DataClass -import generators.obj.input.DataField -import generators.obj.input.addDatatype -import generators.obj.input.addOutBlock -import generators.obj.input.addOutBlockArguments -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.FileData -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addOutBlockArguments +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.RegionImpl class JavaDataClassGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaEnumGenerator.kt b/cgen-lib/src/main/kotlin/generators/java/JavaEnumGenerator.kt index bf3ce69b..8915c201 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaEnumGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaEnumGenerator.kt @@ -4,17 +4,17 @@ import ce.defs.DataType import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataField -import generators.obj.input.addDatatype -import generators.obj.input.addEnumLeaf -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addEnumLeaf +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.RegionImpl class JavaEnumGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/java/JavaFileGenerator.kt index 35e36837..369d4805 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaFileGenerator.kt @@ -1,14 +1,14 @@ package generators.java import generators.obj.CLikeFileGenerator -import generators.obj.input.Block -import generators.obj.input.addSub -import generators.obj.input.getParentPath -import generators.obj.out.FileData -import generators.obj.out.FileDataImpl -import generators.obj.out.ImportsBlock -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutputTree import java.io.File class JavaFileGenerator() : CLikeFileGenerator() { diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaInterfaceGenerator.kt b/cgen-lib/src/main/kotlin/generators/java/JavaInterfaceGenerator.kt index b357490c..9e9a01ef 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaInterfaceGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaInterfaceGenerator.kt @@ -1,12 +1,10 @@ package generators.java import ce.domain.usecase.add.AddRegionDefaultsUseCase -import ce.settings.Project import generators.obj.TransformBlockUseCase -import generators.obj.input.DataField -import generators.obj.input.InterfaceDescription -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.InterfaceDescription +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class JavaInterfaceGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/java/JavaWritter.kt b/cgen-lib/src/main/kotlin/generators/java/JavaWritter.kt index 4c93a16d..8e35f946 100644 --- a/cgen-lib/src/main/kotlin/generators/java/JavaWritter.kt +++ b/cgen-lib/src/main/kotlin/generators/java/JavaWritter.kt @@ -5,12 +5,12 @@ import ce.io.CodeWriter import ce.io.FileCodeWritter import ce.repository.ReportsRepo import generators.obj.Writter -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.out.FileData -import generators.obj.out.ImportLeaf -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutBlock +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportLeaf +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutBlock import java.io.File class JavaWritter( diff --git a/cgen-lib/src/main/kotlin/generators/java/PrepareRightValueUseCase.kt b/cgen-lib/src/main/kotlin/generators/java/PrepareRightValueUseCase.kt new file mode 100644 index 00000000..0635c4eb --- /dev/null +++ b/cgen-lib/src/main/kotlin/generators/java/PrepareRightValueUseCase.kt @@ -0,0 +1,75 @@ +package generators.java + +import ce.defs.DataType +import ce.defs.DataValue +import ce.defs.RValue +import generators.kotlin.GetTypeNameUseCase +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.NewInstance +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FileData + +class PrepareRightValueUseCase( + private val getTypeNameUseCase: GetTypeNameUseCase +) { + fun toRightValue(dataField: DataField, fileData: FileData): RValue = + toRightValue( + type = dataField.getType(), + value = dataField.getValue(), + fileData = fileData + ) + + fun toRightValue(type: DataType, value: DataValue, fileData: FileData): RValue = + when (type) { + DataType.VOID -> RValue(name = "void") + DataType.int8, DataType.int16, DataType.int32, DataType.int64, + DataType.uint8, DataType.uint16, DataType.uint32, DataType.uint64 -> RValue(name = value.simple.toString()) + + DataType.float32 -> RValue(name = value.simple.toString() + "f") + DataType.float64 -> RValue(name = value.simple.toString()) + DataType.bool -> RValue(name = value.simple.toString()) + is DataType.string -> { + if (value.simple is String) { + RValue(name = "\"${value.simple}\"") + } else { + throw IllegalArgumentException( + "Expected a String value for DataType.string, " + + "but got: ${value.simple}" + ) + } + } + + is DataType.custom -> { + if (!value.isComplex) { + RValue(name = value.simple.toString()) + } else { + val valueComplexItem = value.subs.first() + if (valueComplexItem is NewInstance) { + prepareConstructor(valueComplexItem, fileData) + } else { + RValue(name = "QQVAL_complex???") + } + } + + } + + else -> RValue(name = "QQVAL_$type") + } + + fun prepareConstructor(item: NewInstance, fileData: FileData): RValue { + val result = RValue() + result.addSub( + Constructor( + name = getTypeNameUseCase.typeTo( + file = fileData, + type = item.getType() + ) + ).apply { + addSub(Arguments()) + } + ) + return result + } +} \ No newline at end of file diff --git a/cgen-lib/src/main/kotlin/generators/java/Types.kt b/cgen-lib/src/main/kotlin/generators/java/Types.kt index 59889a73..3af21e39 100644 --- a/cgen-lib/src/main/kotlin/generators/java/Types.kt +++ b/cgen-lib/src/main/kotlin/generators/java/Types.kt @@ -4,8 +4,8 @@ import ce.defs.DataType import ce.defs.DataValue import ce.defs.DataValueImpl import ce.defs.IntValue -import generators.obj.input.getPath -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.getPath +import generators.obj.syntaxParseTree.FileData object Types { fun getArrayType(type: DataType): String = diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/GetTypeNameUseCase.kt b/cgen-lib/src/main/kotlin/generators/kotlin/GetTypeNameUseCase.kt index f55efb47..0c94e063 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/GetTypeNameUseCase.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/GetTypeNameUseCase.kt @@ -1,11 +1,11 @@ package generators.kotlin import ce.defs.DataType -import generators.obj.input.findOrCreateSub -import generators.obj.input.getParentPath -import generators.obj.input.getPath -import generators.obj.out.FileData -import generators.obj.out.ImportsBlock +import generators.obj.abstractSyntaxTree.findOrCreateSub +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.abstractSyntaxTree.getPath +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportsBlock class GetTypeNameUseCase( private val arrayDataType: GetArrayDataTypeUseCase diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinClassData.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinClassData.kt index 23b2ee5f..2878d38e 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinClassData.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinClassData.kt @@ -1,14 +1,13 @@ package generators.kotlin -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt -import generators.obj.input.copyNodeExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyNodeExt data class KotlinClassData( override val name: String, override val subs: MutableList = mutableListOf() -) : generators.obj.out.ClassData { +) : generators.obj.syntaxParseTree.ClassData { override fun copyLeaf(parent: Node?, copySubs: Boolean) = this.copyNodeExt(parent, copySubs) { this.copy(subs = mutableListOf()) diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinEnumGenerator.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinEnumGenerator.kt index af1dcca2..924c2bce 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinEnumGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinEnumGenerator.kt @@ -4,19 +4,19 @@ import ce.defs.DataType import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataField -import generators.obj.input.addDatatype -import generators.obj.input.addEnumLeaf -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addOutBlockArguments -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.Arguments -import generators.obj.out.FileData -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addEnumLeaf +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addOutBlockArguments +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.RegionImpl class KotlinEnumGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinFileGenerator.kt index 4fdb7037..e42ab1a9 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinFileGenerator.kt @@ -1,16 +1,16 @@ package generators.kotlin import generators.obj.CLikeFileGenerator -import generators.obj.input.Block -import generators.obj.input.addSub -import generators.obj.input.getParentPath -import generators.obj.out.FileData -import generators.obj.out.FileDataImpl -import generators.obj.out.ImportsBlock -import generators.obj.out.Keyword -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutputTree -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.VariableName import java.io.File class KotlinFileGenerator() : CLikeFileGenerator() { diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinInterfaceGenerator.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinInterfaceGenerator.kt index 8d8df9d3..974dd0d4 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinInterfaceGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinInterfaceGenerator.kt @@ -3,19 +3,19 @@ package generators.kotlin import ce.defs.DataType import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.TransformBlockUseCase -import generators.obj.input.Input -import generators.obj.input.InputList -import generators.obj.input.InterfaceDescription -import generators.obj.input.Method -import generators.obj.input.Output -import generators.obj.input.OutputList -import generators.obj.input.OutputReusable -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.ArgumentNode -import generators.obj.out.FileData -import generators.obj.out.OutBlock -import generators.obj.out.ResultLeaf +import generators.obj.abstractSyntaxTree.Input +import generators.obj.abstractSyntaxTree.InputList +import generators.obj.abstractSyntaxTree.InterfaceDescription +import generators.obj.abstractSyntaxTree.Method +import generators.obj.abstractSyntaxTree.Output +import generators.obj.abstractSyntaxTree.OutputList +import generators.obj.abstractSyntaxTree.OutputReusable +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.ResultLeaf class KotlinInterfaceGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinWriter.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinWriter.kt index 01dd5ece..759acc21 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KotlinWriter.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KotlinWriter.kt @@ -4,17 +4,17 @@ import ce.formatters.CodeStyleRepo import ce.io.CodeWriter import ce.io.FileCodeWritter import generators.obj.Writter -import generators.obj.input.InputList -import generators.obj.input.Leaf -import generators.obj.input.Method -import generators.obj.input.Node -import generators.obj.input.findOrNull -import generators.obj.input.removeSub -import generators.obj.out.FileData -import generators.obj.out.ImportLeaf -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutBlock -import generators.obj.out.ResultLeaf +import generators.obj.abstractSyntaxTree.InputList +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Method +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.abstractSyntaxTree.removeSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.ImportLeaf +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.ResultLeaf import java.io.File class KotlinWriter(codeStyleRepo: CodeStyleRepo, outputFolder: String) diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KtConstantsGenerator.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KtConstantsGenerator.kt index 64cf63c4..3ba2fc54 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KtConstantsGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KtConstantsGenerator.kt @@ -3,16 +3,16 @@ package generators.kotlin import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.AutoincrementField import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.OutBlock -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.RegionImpl class KtConstantsGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/KtDataClassGenerator.kt b/cgen-lib/src/main/kotlin/generators/kotlin/KtDataClassGenerator.kt index c040638c..15c83052 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/KtDataClassGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/KtDataClassGenerator.kt @@ -2,18 +2,18 @@ package generators.kotlin import ce.domain.usecase.add.AddRegionDefaultsUseCase import generators.obj.TransformBlockUseCase -import generators.obj.input.DataClass -import generators.obj.input.DataField -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addOutBlockArguments -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.FieldNode -import generators.obj.out.FileData -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addOutBlockArguments +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.RegionImpl class KtDataClassGenerator( private val addBlockDefaultsUseCase: AddRegionDefaultsUseCase, diff --git a/cgen-lib/src/main/kotlin/generators/kotlin/PrepareRightValueUseCase.kt b/cgen-lib/src/main/kotlin/generators/kotlin/PrepareRightValueUseCase.kt index 113e38b7..c690fd01 100644 --- a/cgen-lib/src/main/kotlin/generators/kotlin/PrepareRightValueUseCase.kt +++ b/cgen-lib/src/main/kotlin/generators/kotlin/PrepareRightValueUseCase.kt @@ -3,12 +3,16 @@ package generators.kotlin import ce.defs.DataType import ce.defs.DataValue import ce.defs.RValue -import generators.obj.input.DataField -import generators.obj.input.NewInstance -import generators.obj.input.addSub -import generators.obj.out.Arguments -import generators.obj.out.Constructor -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.Input +import generators.obj.abstractSyntaxTree.NewInstance +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.VariableName class PrepareRightValueUseCase( private val getTypeNameUseCase: GetTypeNameUseCase @@ -24,7 +28,8 @@ class PrepareRightValueUseCase( when (type) { DataType.VOID -> RValue(name = "void") DataType.int8, DataType.int16, DataType.int32, DataType.int64, - DataType.uint8, DataType.uint16, DataType.uint32, DataType.uint64 -> RValue(name = value.simple.toString()) + DataType.uint8, DataType.uint16, DataType.uint32, DataType.uint64 -> + RValue(name = value.simple.toString()) DataType.float32 -> RValue(name = value.simple.toString() + "f") DataType.float64 -> RValue(name = value.simple.toString()) @@ -66,7 +71,26 @@ class PrepareRightValueUseCase( type = item.getType() ) ).apply { - addSub(Arguments()) + val arguments = Arguments() + addSub(arguments) + item.subs + .filter { it is Input } + .forEach { + val input = it as Input + val argumentNode = ArgumentNode() + arguments.addSub( + argumentNode + ) + argumentNode.addSub(VariableName(it.name)) + argumentNode.addSub(Keyword("=")) + argumentNode.addSub( + toRightValue( + type = input.getType(), + value = input.getValue(), + fileData = fileData + ) + ) + } } ) return result diff --git a/cgen-lib/src/main/kotlin/generators/obj/AutoincrementField.kt b/cgen-lib/src/main/kotlin/generators/obj/AutoincrementField.kt index a4316543..18112036 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/AutoincrementField.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/AutoincrementField.kt @@ -2,7 +2,7 @@ package generators.obj import ce.defs.DataValue import ce.defs.DataValueImpl -import generators.obj.input.Field +import generators.obj.abstractSyntaxTree.Field class AutoincrementField { var previous: DataValue? = null diff --git a/cgen-lib/src/main/kotlin/generators/obj/CLikeFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/obj/CLikeFileGenerator.kt index 9e116fc8..af632ec3 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/CLikeFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/CLikeFileGenerator.kt @@ -1,7 +1,6 @@ package generators.obj -import ce.settings.CodeStyle -import generators.obj.input.Block +import generators.obj.abstractSyntaxTree.Block import java.io.File abstract class CLikeFileGenerator() : FileGenerator() { diff --git a/cgen-lib/src/main/kotlin/generators/obj/FileGenerator.kt b/cgen-lib/src/main/kotlin/generators/obj/FileGenerator.kt index 6c217deb..4221ec67 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/FileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/FileGenerator.kt @@ -1,8 +1,8 @@ package generators.obj -import generators.obj.input.Block -import generators.obj.out.FileData -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutputTree abstract class FileGenerator() { abstract fun createFile(project: OutputTree, outputFile: String, block: Block): List diff --git a/cgen-lib/src/main/kotlin/generators/obj/MetaGenerator.kt b/cgen-lib/src/main/kotlin/generators/obj/MetaGenerator.kt index e3a1881a..1970f39f 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/MetaGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/MetaGenerator.kt @@ -1,10 +1,10 @@ package generators.obj import ce.defs.Target -import generators.obj.input.Block -import generators.obj.input.Node -import generators.obj.out.FileData -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.Node +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutputTree open class MetaGenerator( private val target: Target, diff --git a/cgen-lib/src/main/kotlin/generators/obj/PrepareFilesListUseCase.kt b/cgen-lib/src/main/kotlin/generators/obj/PrepareFilesListUseCase.kt index fa69e307..ec4c5051 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/PrepareFilesListUseCase.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/PrepareFilesListUseCase.kt @@ -1,10 +1,10 @@ package generators.obj import ce.settings.Project -import generators.obj.input.* -import generators.obj.out.CommentsBlock -import generators.obj.out.FileData -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.* +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.OutputTree import java.io.File import java.nio.file.Paths import javax.inject.Inject diff --git a/cgen-lib/src/main/kotlin/generators/obj/TransformBlockUseCase.kt b/cgen-lib/src/main/kotlin/generators/obj/TransformBlockUseCase.kt index a1bbf547..651fc76a 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/TransformBlockUseCase.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/TransformBlockUseCase.kt @@ -1,7 +1,7 @@ package generators.obj -import generators.obj.input.Block -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.Block +import generators.obj.syntaxParseTree.FileData interface TransformBlockUseCase { operator fun invoke(blockFiles: List, desc: I) diff --git a/cgen-lib/src/main/kotlin/generators/obj/Writter.kt b/cgen-lib/src/main/kotlin/generators/obj/Writter.kt index 935d7b66..a7fc6a1f 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/Writter.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/Writter.kt @@ -4,22 +4,22 @@ import ce.defs.DataValue import ce.defs.RValue import ce.formatters.CodeStyleRepo import ce.io.CodeWriter -import generators.obj.input.DataField -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CodeStyleOutputTree -import generators.obj.out.CommentLeaf -import generators.obj.out.Constructor -import generators.obj.out.EnumNode -import generators.obj.out.FileData -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.ResultLeaf -import generators.obj.out.Separator -import generators.obj.out.Space -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CodeStyleOutputTree +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.ResultLeaf +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space +import generators.obj.syntaxParseTree.VariableName import java.io.File abstract class Writter(val codeStyleRepo: CodeStyleRepo, diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/Block.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Block.kt similarity index 72% rename from cgen-lib/src/main/kotlin/generators/obj/input/Block.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Block.kt index 329d3a03..fad55424 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/Block.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Block.kt @@ -1,7 +1,7 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree -import generators.obj.out.CommentLeaf -import generators.obj.out.CommentsBlock +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.CommentsBlock fun T.addBlockCommentExt(value : String) { findOrCreateSub(CommentsBlock::class.java).apply { diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/ConstantsBlock.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsBlock.kt similarity index 97% rename from cgen-lib/src/main/kotlin/generators/obj/input/ConstantsBlock.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsBlock.kt index ff304c7b..4a82a0e4 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/ConstantsBlock.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsBlock.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.DataValue diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/ConstantsEnum.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsEnum.kt similarity index 96% rename from cgen-lib/src/main/kotlin/generators/obj/input/ConstantsEnum.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsEnum.kt index 626b01ff..39f468e4 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/ConstantsEnum.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/ConstantsEnum.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.NotDefined diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/DataClass.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataClass.kt similarity index 75% rename from cgen-lib/src/main/kotlin/generators/obj/input/DataClass.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataClass.kt index 27c0a1b9..79809cf7 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/DataClass.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataClass.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.NotDefined @@ -16,7 +16,14 @@ data class DataClass( fun instance(map: Map): NewInstance { return NewInstance("newInstance").setType(type = DataType.custom(this@DataClass)).apply { map.forEach { t, u -> - argument(t.toString(), DataType.Unknown, u) + val dataField = this@DataClass.subs + .filter { it is DataField } + .find { it.name == t.toString() } ?: throw Exception("Field ${t} not found in class ${this@DataClass.name}") + val dataType = (dataField as DataField).getType() + argument( + name = t.toString(), + type = dataType, + value = u) } } } diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/DataField.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataField.kt similarity index 97% rename from cgen-lib/src/main/kotlin/generators/obj/input/DataField.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataField.kt index 28e7812a..81405aca 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/DataField.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/DataField.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.DataValue @@ -54,8 +54,6 @@ data class TypeLeaf( override fun setParent2(parent: Node?) { this.parent = parent } } -class ModifiersList: Container() - open class DataField( name: String, val static: Boolean = false, diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/InTree.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/InTree.kt similarity index 95% rename from cgen-lib/src/main/kotlin/generators/obj/input/InTree.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/InTree.kt index 113140c5..0ff1b0fd 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/InTree.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/InTree.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree object TreeRoot : Node { diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/Namespace.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Namespace.kt similarity index 98% rename from cgen-lib/src/main/kotlin/generators/obj/input/Namespace.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Namespace.kt index b0c92b19..4c5658fe 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/Namespace.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Namespace.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.customBaseFolderPath import ce.defs.outputFile diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/NewInstance.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/NewInstance.kt similarity index 92% rename from cgen-lib/src/main/kotlin/generators/obj/input/NewInstance.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/NewInstance.kt index 92add183..57643c00 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/NewInstance.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/NewInstance.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType @@ -17,7 +17,7 @@ data class NewInstance( } fun argument(name: String, type: DataType, value: Any?): NewInstance { - addSub(DataField(name).apply { + addSub(Input(name).apply { setType(type) setValue(value) }) diff --git a/cgen-lib/src/main/kotlin/generators/obj/input/Node.kt b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Node.kt similarity index 92% rename from cgen-lib/src/main/kotlin/generators/obj/input/Node.kt rename to cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Node.kt index 13937ced..0ad08d6d 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/input/Node.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/abstractSyntaxTree/Node.kt @@ -1,22 +1,21 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.DataValueImpl import ce.defs.NotDefined import ce.defs.RValue -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CommentLeaf -import generators.obj.out.EnumNode -import generators.obj.out.FileData -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.Separator -import generators.obj.out.VariableName +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.VariableName import kotlin.reflect.KClass - fun T.findOrNull(clazz: Class): R? { subs.forEach { if (it.javaClass == clazz) { @@ -26,7 +25,6 @@ fun T.findOrNull(clazz: Class): R? { return null } - fun T.findOrCreateSub(clazz: Class): R { subs.forEach { if (it.javaClass == clazz) { diff --git a/cgen-lib/src/main/kotlin/generators/obj/out/FileData.kt b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/FileData.kt similarity index 75% rename from cgen-lib/src/main/kotlin/generators/obj/out/FileData.kt rename to cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/FileData.kt index ce063a0e..29bbe4f0 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/out/FileData.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/FileData.kt @@ -1,8 +1,8 @@ -package generators.obj.out +package generators.obj.syntaxParseTree -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt interface FileData: Node { var isDirty: Boolean diff --git a/cgen-lib/src/main/kotlin/generators/obj/out/OutLeaf.kt b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutLeaf.kt similarity index 72% rename from cgen-lib/src/main/kotlin/generators/obj/out/OutLeaf.kt rename to cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutLeaf.kt index 13f7cd27..c2a1f79a 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/out/OutLeaf.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutLeaf.kt @@ -1,8 +1,8 @@ -package generators.obj.out +package generators.obj.syntaxParseTree -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt // package $name data class NamespaceBlock( @@ -14,7 +14,6 @@ data class NamespaceBlock( var parent: Node? = null override fun getParent2(): Node? = parent override fun setParent2(parent: Node?) { this.parent = parent } - override fun toString() = name } @@ -27,7 +26,6 @@ data class ImportLeaf( var parent: Node? = null override fun getParent2(): Node? = parent override fun setParent2(parent: Node?) { this.parent = parent } - } // //$name @@ -51,42 +49,6 @@ data class ResultLeaf( override fun setParent2(parent: Node?) { this.parent = parent } } -data class FieldNode( - override val name: String = "", - override val subs: MutableList = mutableListOf(), -) : Node { - override fun toString() = name - override fun copyLeaf(parent: Node?, copySubs: Boolean): FieldNode = - this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) - var parent: Node? = null - override fun getParent2(): Node? = parent - override fun setParent2(parent: Node?) { this.parent = parent } -} - -data class EnumNode( - override val name: String, - override val subs: MutableList = mutableListOf(), -) : Node { - override fun toString() = name - override fun copyLeaf(parent: Node?, copySubs: Boolean): EnumNode = - this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) - var parent: Node? = null - override fun getParent2(): Node? = parent - override fun setParent2(parent: Node?) { this.parent = parent } -} - -data class ArgumentNode( - override val name: String = "", - override val subs: MutableList = mutableListOf(), -) : Node { - override fun toString() = name - override fun copyLeaf(parent: Node?, copySubs: Boolean): Node = - this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) - var parent: Node? = null - override fun getParent2(): Node? = parent - override fun setParent2(parent: Node?) { this.parent = parent } -} - data class Keyword( override val name: String, ) : Leaf { diff --git a/cgen-lib/src/main/kotlin/generators/obj/out/OutNode.kt b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutNode.kt similarity index 73% rename from cgen-lib/src/main/kotlin/generators/obj/out/OutNode.kt rename to cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutNode.kt index 6ca60282..477be3b3 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/out/OutNode.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutNode.kt @@ -1,9 +1,10 @@ -package generators.obj.out +package generators.obj.syntaxParseTree -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.addSub -import generators.obj.input.copyNodeExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.copyLeafExt +import generators.obj.abstractSyntaxTree.copyNodeExt abstract class Region2Impl( override val name: String = "", @@ -139,4 +140,40 @@ data class Arguments( var parent: Node? = null override fun getParent2(): Node? = parent override fun setParent2(parent: Node?) { this.parent = parent } +} + +data class FieldNode( + override val name: String = "", + override val subs: MutableList = mutableListOf(), +) : Node { + override fun toString() = name + override fun copyLeaf(parent: Node?, copySubs: Boolean): FieldNode = + this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) + var parent: Node? = null + override fun getParent2(): Node? = parent + override fun setParent2(parent: Node?) { this.parent = parent } +} + +data class EnumNode( + override val name: String, + override val subs: MutableList = mutableListOf(), +) : Node { + override fun toString() = name + override fun copyLeaf(parent: Node?, copySubs: Boolean): EnumNode = + this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) + var parent: Node? = null + override fun getParent2(): Node? = parent + override fun setParent2(parent: Node?) { this.parent = parent } +} + +data class ArgumentNode( + override val name: String = "", + override val subs: MutableList = mutableListOf(), +) : Node { + override fun toString() = name + override fun copyLeaf(parent: Node?, copySubs: Boolean): Node = + this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) + var parent: Node? = null + override fun getParent2(): Node? = parent + override fun setParent2(parent: Node?) { this.parent = parent } } \ No newline at end of file diff --git a/cgen-lib/src/main/kotlin/generators/obj/out/OutputTree.kt b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutputTree.kt similarity index 88% rename from cgen-lib/src/main/kotlin/generators/obj/out/OutputTree.kt rename to cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutputTree.kt index b84dc7cb..c5504be8 100644 --- a/cgen-lib/src/main/kotlin/generators/obj/out/OutputTree.kt +++ b/cgen-lib/src/main/kotlin/generators/obj/syntaxParseTree/OutputTree.kt @@ -1,9 +1,9 @@ -package generators.obj.out +package generators.obj.syntaxParseTree import ce.defs.Target -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt data class AstTree( val target: Target, diff --git a/cgen-lib/src/main/kotlin/generators/rust/RsConstantsBlockGenerator.kt b/cgen-lib/src/main/kotlin/generators/rust/RsConstantsBlockGenerator.kt index 3c2d6e94..98167f1a 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RsConstantsBlockGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RsConstantsBlockGenerator.kt @@ -3,10 +3,10 @@ package generators.rust import ce.settings.Project import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.DataField -import generators.obj.input.ConstantsBlock -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class RsConstantsBlockGenerator( fileGenerator : FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/rust/RsDataClassGenerator.kt b/cgen-lib/src/main/kotlin/generators/rust/RsDataClassGenerator.kt index b994f8ca..44329bcb 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RsDataClassGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RsDataClassGenerator.kt @@ -3,10 +3,10 @@ package generators.rust import ce.settings.Project import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.DataField -import generators.obj.input.DataClass -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class RsDataClassGenerator( fileGenerator : FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/rust/RustClassData.kt b/cgen-lib/src/main/kotlin/generators/rust/RustClassData.kt index a46d5d48..58676fa8 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RustClassData.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RustClassData.kt @@ -1,13 +1,13 @@ package generators.rust -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt data class RustClassData( override val name: String, override val subs: MutableList = mutableListOf() -) : generators.obj.out.ClassData { +) : generators.obj.syntaxParseTree.ClassData { override fun copyLeaf(parent: Node?, copySubs: Boolean): RustClassData = this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) var parent: Node? = null diff --git a/cgen-lib/src/main/kotlin/generators/rust/RustEnumGenerator.kt b/cgen-lib/src/main/kotlin/generators/rust/RustEnumGenerator.kt index 5c16afa6..a12097db 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RustEnumGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RustEnumGenerator.kt @@ -4,10 +4,10 @@ import ce.defs.DataType import ce.defs.DataValueImpl import ce.settings.Project import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsEnum -import generators.obj.input.DataField -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class RustEnumGenerator( fileGenerator: RustFileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/rust/RustFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/rust/RustFileGenerator.kt index 83fbc72f..1d932ccb 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RustFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RustFileGenerator.kt @@ -1,11 +1,11 @@ package generators.rust import generators.obj.CLikeFileGenerator -import generators.obj.input.Block -import generators.obj.input.getParentPath -import generators.obj.out.FileData -import generators.obj.out.FileDataImpl -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.abstractSyntaxTree.getParentPath +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.OutputTree import java.io.File class RustFileGenerator() : CLikeFileGenerator() { diff --git a/cgen-lib/src/main/kotlin/generators/rust/RustWritter.kt b/cgen-lib/src/main/kotlin/generators/rust/RustWritter.kt index 3c17d378..80be4d7d 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/RustWritter.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/RustWritter.kt @@ -4,7 +4,7 @@ import ce.formatters.CodeStyleRepo import ce.io.FileCodeWritter import ce.repository.ReportsRepo import generators.obj.Writter -import generators.obj.out.FileData +import generators.obj.syntaxParseTree.FileData import java.io.File class RustWritter( diff --git a/cgen-lib/src/main/kotlin/generators/rust/Types.kt b/cgen-lib/src/main/kotlin/generators/rust/Types.kt index 5ffecfc8..67923b35 100644 --- a/cgen-lib/src/main/kotlin/generators/rust/Types.kt +++ b/cgen-lib/src/main/kotlin/generators/rust/Types.kt @@ -1,8 +1,7 @@ package generators.rust import ce.defs.DataType -import generators.obj.out.FileData -import generators.rust.RustClassData +import generators.obj.syntaxParseTree.FileData object Types { fun typeTo(file: FileData, diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftClassData.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftClassData.kt index c44fb762..96f00c45 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftClassData.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftClassData.kt @@ -1,13 +1,13 @@ package generators.swift -import generators.obj.input.Leaf -import generators.obj.input.Node -import generators.obj.input.copyLeafExt +import generators.obj.abstractSyntaxTree.Leaf +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.copyLeafExt data class SwiftClassData( override val name: String, override val subs: MutableList = mutableListOf() -) : generators.obj.out.ClassData { +) : generators.obj.syntaxParseTree.ClassData { override fun copyLeaf(parent: Node?, copySubs: Boolean): SwiftClassData = this.copyLeafExt(parent, { this.copy(subs = mutableListOf()) }) var parent: Node? = null diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftConstantsBlockGenerator.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftConstantsBlockGenerator.kt index 9c24b1cf..47bb619b 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftConstantsBlockGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftConstantsBlockGenerator.kt @@ -3,9 +3,9 @@ package generators.swift import ce.settings.Project import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsBlock -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class SwiftConstantsBlockGenerator( fileGenerator : FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftDataClassGenerator.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftDataClassGenerator.kt index 4c9a3f02..a661cdcc 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftDataClassGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftDataClassGenerator.kt @@ -3,9 +3,9 @@ package generators.swift import ce.settings.Project import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.DataClass -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class SwiftDataClassGenerator( fileGenerator : FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftEnumGenerator.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftEnumGenerator.kt index e9105dab..831db890 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftEnumGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftEnumGenerator.kt @@ -4,9 +4,9 @@ import ce.defs.DataType import ce.settings.Project import generators.obj.FileGenerator import generators.obj.TransformBlockUseCase -import generators.obj.input.ConstantsEnum -import generators.obj.input.addSub -import generators.obj.out.FileData +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData class SwiftEnumGenerator( fileGenerator: FileGenerator, diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftFileGenerator.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftFileGenerator.kt index 40310c28..49f6fc68 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftFileGenerator.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftFileGenerator.kt @@ -1,10 +1,10 @@ package generators.swift import generators.obj.CLikeFileGenerator -import generators.obj.input.Block -import generators.obj.out.FileData -import generators.obj.out.FileDataImpl -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.Block +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.OutputTree class SwiftFileGenerator() : CLikeFileGenerator() { override fun createFile(project: OutputTree, outputFile: String, block: Block): List { diff --git a/cgen-lib/src/main/kotlin/generators/swift/SwiftWritter.kt b/cgen-lib/src/main/kotlin/generators/swift/SwiftWritter.kt index 71734b26..abada210 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/SwiftWritter.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/SwiftWritter.kt @@ -4,7 +4,7 @@ import ce.formatters.CodeStyleRepo import ce.io.FileCodeWritter import ce.repository.ReportsRepo import generators.obj.Writter -import generators.obj.out.FileData +import generators.obj.syntaxParseTree.FileData import java.io.File class SwiftWritter( diff --git a/cgen-lib/src/main/kotlin/generators/swift/Types.kt b/cgen-lib/src/main/kotlin/generators/swift/Types.kt index 36840ca6..5f516b8a 100644 --- a/cgen-lib/src/main/kotlin/generators/swift/Types.kt +++ b/cgen-lib/src/main/kotlin/generators/swift/Types.kt @@ -1,7 +1,7 @@ package generators.swift import ce.defs.DataType -import generators.obj.out.FileData +import generators.obj.syntaxParseTree.FileData object Types { fun typeTo(file: FileData, diff --git a/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterCxxUseCaseImplTest.kt b/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterCxxUseCaseImplTest.kt index e0a04b6a..dcf810c5 100644 --- a/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterCxxUseCaseImplTest.kt +++ b/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterCxxUseCaseImplTest.kt @@ -4,23 +4,23 @@ import ce.defs.DataType import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterCxxUseCaseImpl import ce.settings.CodeStyle -import generators.obj.input.DataField -import generators.obj.input.addEnumLeaf -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addRValue -import generators.obj.input.addSeparator -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NamespaceBlock -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.Separator +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.addEnumLeaf +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSeparator +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Separator import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterUseCaseImplTest.kt b/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterUseCaseImplTest.kt index d82fd920..ad0be98e 100644 --- a/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterUseCaseImplTest.kt +++ b/cgen-lib/src/test/java/ce/formatters/cxx/CodeFormatterUseCaseImplTest.kt @@ -5,9 +5,9 @@ import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterUseCaseImpl import ce.settings.CodeStyle import generators.cpp.CppHeaderFile -import generators.obj.input.addSub -import generators.obj.out.NamespaceBlock -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.OutputTree import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/cxx/CxxConstantsFormatterTest.kt b/cgen-lib/src/test/java/ce/formatters/cxx/CxxConstantsFormatterTest.kt index 4c2baad7..81af3c12 100644 --- a/cgen-lib/src/test/java/ce/formatters/cxx/CxxConstantsFormatterTest.kt +++ b/cgen-lib/src/test/java/ce/formatters/cxx/CxxConstantsFormatterTest.kt @@ -3,18 +3,18 @@ package ce.formatters.cxx import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterUseCaseImpl import ce.settings.CodeStyle -import generators.obj.input.addKeyword -import generators.obj.input.addRValue -import generators.obj.input.addSub -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CommentLeaf -import generators.obj.out.CommentsBlock -import generators.obj.out.FieldNode -import generators.obj.out.Keyword -import generators.obj.out.NamespaceBlock -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CommentLeaf +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.VariableName import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/cxx/FormatInclude.kt b/cgen-lib/src/test/java/ce/formatters/cxx/FormatInclude.kt index a7af20fc..0daa914d 100644 --- a/cgen-lib/src/test/java/ce/formatters/cxx/FormatInclude.kt +++ b/cgen-lib/src/test/java/ce/formatters/cxx/FormatInclude.kt @@ -13,15 +13,15 @@ import generators.cpp.CppHeaderFile import generators.kotlin.GetArrayDataTypeUseCase import generators.kotlin.GetTypeNameUseCase import generators.kotlin.PrepareRightValueUseCase -import generators.obj.input.ConstantsBlock -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.out.FileDataImpl -import generators.obj.out.ImportsBlock -import generators.obj.out.NamespaceBlock -import generators.obj.out.NlSeparator -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutputTree import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/java/JavaConstantsFormattingTests.kt b/cgen-lib/src/test/java/ce/formatters/java/JavaConstantsFormattingTests.kt index 1d2d80b3..ecd91f12 100644 --- a/cgen-lib/src/test/java/ce/formatters/java/JavaConstantsFormattingTests.kt +++ b/cgen-lib/src/test/java/ce/formatters/java/JavaConstantsFormattingTests.kt @@ -3,19 +3,19 @@ package ce.formatters.java import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterJavaUseCaseImpl import ce.settings.CodeStyle -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addRValue -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.FieldNode -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.RegionImpl -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Space import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/java/JavaDataClassFormattingTests.kt b/cgen-lib/src/test/java/ce/formatters/java/JavaDataClassFormattingTests.kt index 7ca685bf..9dc9df50 100644 --- a/cgen-lib/src/test/java/ce/formatters/java/JavaDataClassFormattingTests.kt +++ b/cgen-lib/src/test/java/ce/formatters/java/JavaDataClassFormattingTests.kt @@ -4,18 +4,18 @@ import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterJavaUseCaseImpl import ce.settings.CodeStyle import ce.treeio.XmlTreeReader -import generators.obj.input.Node -import generators.obj.input.addDatatype -import generators.obj.input.addOutBlock -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.RegionImpl -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Space import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinConstantsFormatterTest.kt b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinConstantsFormatterTest.kt index 7a2fce1c..67561581 100644 --- a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinConstantsFormatterTest.kt +++ b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinConstantsFormatterTest.kt @@ -4,20 +4,20 @@ import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterKotlinUseCaseImpl import ce.settings.CodeStyle import ce.treeio.XmlTreeReader -import generators.obj.input.Node -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addRValue -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.FieldNode -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.RegionImpl -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.Node +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Space import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinDataClassFormattingTests.kt b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinDataClassFormattingTests.kt index 86eb6f7a..eaeaee33 100644 --- a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinDataClassFormattingTests.kt +++ b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinDataClassFormattingTests.kt @@ -12,28 +12,28 @@ import generators.kotlin.GetTypeNameUseCase import generators.kotlin.KotlinFileGenerator import generators.kotlin.KtDataClassGenerator import generators.kotlin.PrepareRightValueUseCase -import generators.obj.input.DataClass -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addDatatype -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addRValue -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.Constructor -import generators.obj.out.FieldNode -import generators.obj.out.Indent -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.Separator -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Indent +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Separator +import generators.obj.syntaxParseTree.Space import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinEnumFormattingTests.kt b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinEnumFormattingTests.kt index 5eb8030d..5866174b 100644 --- a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinEnumFormattingTests.kt +++ b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinEnumFormattingTests.kt @@ -4,19 +4,19 @@ import ce.defs.RValue import ce.formatters.CLikeCodestyleRepo import ce.formatters.CodeFormatterKotlinUseCaseImpl import ce.settings.CodeStyle -import generators.obj.input.addDatatype -import generators.obj.input.addEnumLeaf -import generators.obj.input.addKeyword -import generators.obj.input.addOutBlock -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.ArgumentNode -import generators.obj.out.Arguments -import generators.obj.out.EnumNode -import generators.obj.out.Keyword -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.addDatatype +import generators.obj.abstractSyntaxTree.addEnumLeaf +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.RegionImpl import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinPackageAndImportsTest.kt b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinPackageAndImportsTest.kt index 88b677ff..f2edb79d 100644 --- a/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinPackageAndImportsTest.kt +++ b/cgen-lib/src/test/java/ce/formatters/kotlin/KotlinPackageAndImportsTest.kt @@ -1,12 +1,12 @@ package ce.formatters.kotlin import ce.basetest.KotlinBaseTest -import generators.obj.out.FileDataImpl -import generators.obj.out.Keyword -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutputTree -import generators.obj.out.Space -import generators.obj.out.VariableName +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Space +import generators.obj.syntaxParseTree.VariableName import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/writers/CppWritterTest.kt b/cgen-lib/src/test/java/ce/writers/CppWritterTest.kt index 78f6448c..b3a53cbc 100644 --- a/cgen-lib/src/test/java/ce/writers/CppWritterTest.kt +++ b/cgen-lib/src/test/java/ce/writers/CppWritterTest.kt @@ -5,10 +5,10 @@ import ce.io.CodeWriter import ce.repository.ReportsRepoImpl import ce.settings.CodeStyle import generators.cpp.CppWritter -import generators.obj.input.addSubs -import generators.obj.out.ImportLeaf -import generators.obj.out.ImportsBlock -import generators.obj.out.NlSeparator +import generators.obj.abstractSyntaxTree.addSubs +import generators.obj.syntaxParseTree.ImportLeaf +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.NlSeparator import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/writers/JavaWritterTest.kt b/cgen-lib/src/test/java/ce/writers/JavaWritterTest.kt index 5268979d..01ec874b 100644 --- a/cgen-lib/src/test/java/ce/writers/JavaWritterTest.kt +++ b/cgen-lib/src/test/java/ce/writers/JavaWritterTest.kt @@ -5,12 +5,12 @@ import ce.io.CodeWriter import ce.repository.ReportsRepoImpl import ce.settings.CodeStyle import generators.java.JavaWritter -import generators.obj.input.addOutBlock -import generators.obj.input.addSubs -import generators.obj.out.Keyword -import generators.obj.out.NlSeparator -import generators.obj.out.RegionImpl -import generators.obj.out.Space +import generators.obj.abstractSyntaxTree.addOutBlock +import generators.obj.abstractSyntaxTree.addSubs +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NlSeparator +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.Space import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/writers/kotlin/KotlinWriterTest.kt b/cgen-lib/src/test/java/ce/writers/kotlin/KotlinWriterTest.kt index 4b705d00..4033e5c2 100644 --- a/cgen-lib/src/test/java/ce/writers/kotlin/KotlinWriterTest.kt +++ b/cgen-lib/src/test/java/ce/writers/kotlin/KotlinWriterTest.kt @@ -8,21 +8,21 @@ import ce.io.CodeWriter import generators.kotlin.GetTypeNameUseCase import generators.kotlin.KotlinEnumGenerator import generators.kotlin.KotlinWriter -import generators.obj.input.ConstantsEnum -import generators.obj.input.NamespaceImpl -import generators.obj.input.addKeyword -import generators.obj.input.addRValue -import generators.obj.input.addSeparator -import generators.obj.input.addSub -import generators.obj.input.addVarName -import generators.obj.out.Arguments -import generators.obj.out.AstTypeLeaf -import generators.obj.out.Constructor -import generators.obj.out.EnumNode -import generators.obj.out.FieldNode -import generators.obj.out.OutBlock -import generators.obj.out.OutputTree -import generators.obj.out.Region +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.addKeyword +import generators.obj.abstractSyntaxTree.addRValue +import generators.obj.abstractSyntaxTree.addSeparator +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.addVarName +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/ce/writers/kotlin/WritePackageAndImportsTests.kt b/cgen-lib/src/test/java/ce/writers/kotlin/WritePackageAndImportsTests.kt index b66e93e6..a92494a8 100644 --- a/cgen-lib/src/test/java/ce/writers/kotlin/WritePackageAndImportsTests.kt +++ b/cgen-lib/src/test/java/ce/writers/kotlin/WritePackageAndImportsTests.kt @@ -6,9 +6,9 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.io.CodeWriter import generators.kotlin.KotlinWriter import generators.kotlin.KtConstantsGenerator -import generators.obj.input.ConstantsBlock -import generators.obj.input.NamespaceImpl -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.syntaxParseTree.OutputTree import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/cpp/CppConstantsBlockGeneratorTest.kt b/cgen-lib/src/test/java/generators/cpp/CppConstantsBlockGeneratorTest.kt index 17a541b6..1f70661a 100644 --- a/cgen-lib/src/test/java/generators/cpp/CppConstantsBlockGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/cpp/CppConstantsBlockGeneratorTest.kt @@ -9,20 +9,20 @@ import ce.settings.CodeStyle import generators.kotlin.GetArrayDataTypeUseCase import generators.kotlin.GetTypeNameUseCase import generators.kotlin.PrepareRightValueUseCase -import generators.obj.input.ConstantsBlock -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CommentsBlock -import generators.obj.out.FieldNode -import generators.obj.out.ImportsBlock -import generators.obj.out.Keyword -import generators.obj.out.NamespaceBlock -import generators.obj.out.OutputTree -import generators.obj.out.RegionImpl -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.VariableName import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/cpp/CppDataClassGeneratorTest.kt b/cgen-lib/src/test/java/generators/cpp/CppDataClassGeneratorTest.kt index 44b221ea..53f5b271 100644 --- a/cgen-lib/src/test/java/generators/cpp/CppDataClassGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/cpp/CppDataClassGeneratorTest.kt @@ -5,17 +5,17 @@ import ce.defs.Target import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle -import generators.obj.input.DataClass -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.CommentsBlock -import generators.obj.out.FieldNode -import generators.obj.out.NamespaceBlock -import generators.obj.out.OutBlock -import generators.obj.out.OutputTree -import generators.obj.out.Region +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.NamespaceBlock +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test @@ -42,7 +42,7 @@ class CppDataClassGeneratorTest { addBlockComment("182TEST_COMMENT") field("A", DataType.int32, 1) field("B", DataType.float64, 0.5f) - field("C", DataType.string(true)) + field("C", DataType.stringNullable) } Assert.assertFalse("Dirty flag should be false in .h before changes", headerFile.isDirty) Assert.assertFalse("Dirty flag should be false in .cpp before changes", cxxFile.isDirty) diff --git a/cgen-lib/src/test/java/generators/cpp/CppEnumGeneratorTest.kt b/cgen-lib/src/test/java/generators/cpp/CppEnumGeneratorTest.kt index ea195888..830c8af3 100644 --- a/cgen-lib/src/test/java/generators/cpp/CppEnumGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/cpp/CppEnumGeneratorTest.kt @@ -5,8 +5,8 @@ import ce.defs.Target import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle -import generators.obj.input.* -import generators.obj.out.* +import generators.obj.abstractSyntaxTree.* +import generators.obj.syntaxParseTree.* import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/java/JavaConstantsGeneratorTest.kt b/cgen-lib/src/test/java/generators/java/JavaConstantsGeneratorTest.kt index 99cc9c57..c26ce8c9 100644 --- a/cgen-lib/src/test/java/generators/java/JavaConstantsGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/java/JavaConstantsGeneratorTest.kt @@ -9,17 +9,17 @@ import ce.treeio.XmlTreeReader import generators.kotlin.GetArrayDataTypeUseCase import generators.kotlin.GetTypeNameUseCase import generators.kotlin.PrepareRightValueUseCase -import generators.obj.input.ConstantsBlock -import generators.obj.input.NamespaceImpl -import generators.obj.input.findOrNull -import generators.obj.out.AstTypeLeaf -import generators.obj.out.FieldNode -import generators.obj.out.Keyword -import generators.obj.out.OutBlock -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.VariableName import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/java/JavaDataClassGeneratorTest.kt b/cgen-lib/src/test/java/generators/java/JavaDataClassGeneratorTest.kt index 12dc81c1..ccbe7f3d 100644 --- a/cgen-lib/src/test/java/generators/java/JavaDataClassGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/java/JavaDataClassGeneratorTest.kt @@ -5,18 +5,18 @@ import ce.defs.Target import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle -import generators.obj.input.DataClass -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.ArgumentNode -import generators.obj.out.CommentsBlock -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test @@ -40,7 +40,7 @@ class JavaDataClassGeneratorTest { addBlockComment("182TEST_COMMENT") field("A", DataType.int32, 1) field("B", DataType.float64, 0.5f) - field("C", DataType.string(true)) + field("C", DataType.stringNullable) } val projectOutput = OutputTree(Target.Kotlin) diff --git a/cgen-lib/src/test/java/generators/java/JavaEnumGeneratorTest.kt b/cgen-lib/src/test/java/generators/java/JavaEnumGeneratorTest.kt index 816883a0..dc7cb238 100644 --- a/cgen-lib/src/test/java/generators/java/JavaEnumGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/java/JavaEnumGeneratorTest.kt @@ -5,17 +5,14 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle import ce.treeio.XmlTreeReader -import generators.obj.input.ConstantsEnum -import generators.obj.input.Namespace -import generators.obj.input.NamespaceImpl -import generators.obj.input.findOrNull -import generators.obj.out.ArgumentNode -import generators.obj.out.CommentsBlock -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.Namespace +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/kotlin/GetArrayDataTypeUseCaseTest.kt b/cgen-lib/src/test/java/generators/kotlin/GetArrayDataTypeUseCaseTest.kt index 2cee756e..975efb5a 100644 --- a/cgen-lib/src/test/java/generators/kotlin/GetArrayDataTypeUseCaseTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/GetArrayDataTypeUseCaseTest.kt @@ -62,7 +62,7 @@ class GetArrayDataTypeUseCaseTest { @Test fun getArrayTypeReturnsStringArrayForStringType() { - val result = useCase.getArrayType(DataType.string()) + val result = useCase.getArrayType(DataType.string) assertEquals("String[]", result) } diff --git a/cgen-lib/src/test/java/generators/kotlin/KotlinConstantsGeneratorTest.kt b/cgen-lib/src/test/java/generators/kotlin/KotlinConstantsGeneratorTest.kt index 0e5bf58c..7348ffca 100644 --- a/cgen-lib/src/test/java/generators/kotlin/KotlinConstantsGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/KotlinConstantsGeneratorTest.kt @@ -5,14 +5,14 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle import ce.treeio.XmlTreeReader -import generators.obj.input.ConstantsBlock -import generators.obj.input.NamespaceImpl -import generators.obj.input.findOrNull -import generators.obj.out.FieldNode -import generators.obj.out.OutBlock -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/kotlin/KotlinDataClassGeneratorTest.kt b/cgen-lib/src/test/java/generators/kotlin/KotlinDataClassGeneratorTest.kt index d5f8e034..a0d94033 100644 --- a/cgen-lib/src/test/java/generators/kotlin/KotlinDataClassGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/KotlinDataClassGeneratorTest.kt @@ -6,23 +6,23 @@ import ce.defs.Target import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle -import generators.obj.input.DataClass -import generators.obj.input.NamespaceImpl -import generators.obj.input.TreeRoot -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.ArgumentNode -import generators.obj.out.AstTypeLeaf -import generators.obj.out.CommentsBlock -import generators.obj.out.Constructor -import generators.obj.out.FieldNode -import generators.obj.out.Keyword -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl -import generators.obj.out.VariableName +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.TreeRoot +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.ArgumentNode +import generators.obj.syntaxParseTree.AstTypeLeaf +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FieldNode +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl +import generators.obj.syntaxParseTree.VariableName import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test @@ -52,7 +52,7 @@ class KotlinDataClassGeneratorTest { addBlockComment("182TEST_COMMENT") field("A", DataType.int32, 1) field("B", DataType.float64, 0.5f) - field("C", DataType.string(true)) + field("C", DataType.stringNullable) } val projectOutput = OutputTree(Target.Kotlin) @@ -113,8 +113,9 @@ class KotlinDataClassGeneratorTest { val dataClassDescriptor = DataClass("MyDataClass").apply { field("A", DataType.int32, 1) field("B", DataType.float64, 0.5f) - addstaticfield("SELF", DataType.custom(this), instance()) - // mapOf("A" to 10, "B" to 10.5f) + addstaticfield("SELF", DataType.custom(this), instance( + mapOf("A" to 10, "B" to 10.5f) + )) } val block = namespace.addSub(dataClassDescriptor) @@ -136,7 +137,12 @@ class KotlinDataClassGeneratorTest { // // <:><=> // - // + // + // + // <=> + // <=> + // + // // // // diff --git a/cgen-lib/src/test/java/generators/kotlin/KotlinEnumGeneratorTest.kt b/cgen-lib/src/test/java/generators/kotlin/KotlinEnumGeneratorTest.kt index 822198ea..8fb4f4dc 100644 --- a/cgen-lib/src/test/java/generators/kotlin/KotlinEnumGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/KotlinEnumGeneratorTest.kt @@ -7,19 +7,19 @@ import ce.domain.usecase.add.AddRegionDefaultsUseCaseImpl import ce.formatters.CLikeCodestyleRepo import ce.settings.CodeStyle import ce.treeio.XmlTreeReader -import generators.obj.input.ConstantsEnum -import generators.obj.input.Namespace -import generators.obj.input.NamespaceImpl -import generators.obj.input.addSub -import generators.obj.input.findOrNull -import generators.obj.out.Arguments -import generators.obj.out.CommentsBlock -import generators.obj.out.EnumNode -import generators.obj.out.OutBlock -import generators.obj.out.OutBlockArguments -import generators.obj.out.OutputTree -import generators.obj.out.Region -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantsEnum +import generators.obj.abstractSyntaxTree.Namespace +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.abstractSyntaxTree.findOrNull +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.EnumNode +import generators.obj.syntaxParseTree.OutBlock +import generators.obj.syntaxParseTree.OutBlockArguments +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.Region +import generators.obj.syntaxParseTree.RegionImpl import org.gradle.internal.impldep.org.junit.Assert import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/kotlin/KotlinFileGeneratorTest.kt b/cgen-lib/src/test/java/generators/kotlin/KotlinFileGeneratorTest.kt index 7d9fcd0f..f39e3ffa 100644 --- a/cgen-lib/src/test/java/generators/kotlin/KotlinFileGeneratorTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/KotlinFileGeneratorTest.kt @@ -1,13 +1,13 @@ package generators.kotlin import ce.defs.Target -import generators.obj.input.DataClass -import generators.obj.input.NamespaceImpl -import generators.obj.input.addSub -import generators.obj.out.FileData -import generators.obj.out.Keyword -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutputTree +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.addSub +import generators.obj.syntaxParseTree.FileData +import generators.obj.syntaxParseTree.Keyword +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutputTree import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/java/generators/kotlin/PrepareRightValueUseCaseTest.kt b/cgen-lib/src/test/java/generators/kotlin/PrepareRightValueUseCaseTest.kt index 996b3ff8..c33d1abe 100644 --- a/cgen-lib/src/test/java/generators/kotlin/PrepareRightValueUseCaseTest.kt +++ b/cgen-lib/src/test/java/generators/kotlin/PrepareRightValueUseCaseTest.kt @@ -4,12 +4,12 @@ import ce.defs.DataType import ce.defs.DataValueImpl import ce.defs.NotDefined import ce.defs.RValue -import generators.obj.input.DataClass -import generators.obj.input.DataField -import generators.obj.input.NewInstance -import generators.obj.out.Arguments -import generators.obj.out.Constructor -import generators.obj.out.FileDataImpl +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.NewInstance +import generators.obj.syntaxParseTree.Arguments +import generators.obj.syntaxParseTree.Constructor +import generators.obj.syntaxParseTree.FileDataImpl import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertTrue @@ -23,37 +23,43 @@ class PrepareRightValueUseCaseTest { @Test fun toRightValueReturnsVoidForVoidType() { - val result = prepareRightValueUseCase.toRightValue(DataType.VOID, DataValueImpl("ignored"), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.VOID, + DataValueImpl("ignored"), fileData) assertEquals("void", result.name) } @Test fun toRightValueReturnsSimpleValueForIntegerTypes() { - val result = prepareRightValueUseCase.toRightValue(DataType.int32, DataValueImpl(simple = 42), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.int32, + DataValueImpl(simple = 42), fileData) assertEquals("42", result.name) } @Test fun toRightValueAppendsFForFloat32Type() { - val result = prepareRightValueUseCase.toRightValue(DataType.float32, DataValueImpl(simple = 3.14), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.float32, + DataValueImpl(simple = 3.14), fileData) assertEquals("3.14f", result.name) } @Test fun toRightValueReturnsSimpleValueForFloat64Type() { - val result = prepareRightValueUseCase.toRightValue(DataType.float64, DataValueImpl(simple = 3.14), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.float64, + DataValueImpl(simple = 3.14), fileData) assertEquals("3.14", result.name) } @Test fun toRightValueReturnsSimpleValueForBooleanType() { - val result = prepareRightValueUseCase.toRightValue(DataType.bool, DataValueImpl(simple = true), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.bool, + DataValueImpl(simple = true), fileData) assertEquals("true", result.name) } @Test fun toRightValueReturnsSimpleValueForStringType() { - val result = prepareRightValueUseCase.toRightValue(DataType.string(), DataValueImpl(simple = "hello"), fileData) + val result = prepareRightValueUseCase.toRightValue(DataType.string, + DataValueImpl(simple = "hello"), fileData) assertEquals("\"hello\"", result.name) } @@ -63,7 +69,8 @@ class PrepareRightValueUseCaseTest { field("A", DataType.int32, 1) } val dataType = DataType.custom(dataClassDescriptor) - val instance = NewInstance("newInstance").setType(type = dataType) + val instance = NewInstance("newInstance") + instance.setType(type = dataType) instance.argument("a", DataType.int32, NotDefined) instance.argument("b", DataType.int32, 1) val field = DataField("name").apply { @@ -79,21 +86,45 @@ class PrepareRightValueUseCaseTest { fun testConstructorToAst() { val className = "className" val dataClassDescriptor = DataClass(className).apply { - field("A", DataType.int32, 1) + field("a", DataType.string, "") + field("b", DataType.int32, 0) } val dataType = DataType.custom(dataClassDescriptor) - val instance = NewInstance("newInstance") - .setType(dataType) - .argument("a", DataType.int32, NotDefined) - .argument("b", DataType.int32, 1) + val instance = dataClassDescriptor.instance( + mapOf("a" to "defined", "b" to 123) + ) val result = prepareRightValueUseCase.prepareConstructor(instance, fileData) + // expected result + // + // + // + // + // <=> + // + // + // <=> + // + // + // + // assertTrue(result is RValue) assertEquals(1, result.subs.size) assertTrue(result.subs[0] is Constructor) val constructor = result.subs[0] as Constructor Assertions.assertEquals(1, constructor.subs.size) assertTrue(constructor.subs[0] is Arguments) + val arguments = constructor.subs[0] as Arguments + assertEquals(2, arguments.subs.size) + val arg1 = arguments.subs[0] as generators.obj.syntaxParseTree.ArgumentNode + val arg2 = arguments.subs[1] as generators.obj.syntaxParseTree.ArgumentNode + assertEquals(3, arg1.subs.size) + assertEquals(3, arg2.subs.size) + assertEquals("a", arg1.subs[0].name) + assertEquals(RValue::class.java, arg1.subs[2].javaClass) + val rvalue1 = arg1.subs[2] as RValue + assertEquals("\"defined\"", rvalue1.name) + assertEquals("b", arg2.subs[0].name) + assertEquals("123", arg2.subs[2].name) } - } \ No newline at end of file diff --git a/cgen-lib/src/test/java/generators/obj/input/ConstantsBlockTests.kt b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/ConstantsBlockTests.kt similarity index 93% rename from cgen-lib/src/test/java/generators/obj/input/ConstantsBlockTests.kt rename to cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/ConstantsBlockTests.kt index 84f65775..00417f9b 100644 --- a/cgen-lib/src/test/java/generators/obj/input/ConstantsBlockTests.kt +++ b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/ConstantsBlockTests.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.DataValueImpl @@ -40,7 +40,7 @@ class ConstantsBlockTests { @Test fun addConstantWithNullValue() { val block = ConstantsBlock(name = "TestBlock") - val constant = block.add("CONST4", DataType.string(), null) + val constant = block.add("CONST4", DataType.string, null) Assertions.assertEquals("CONST4", constant.name) Assertions.assertTrue(constant.getType() is DataType.string) Assertions.assertNull(constant.getValue().simple) @@ -56,7 +56,7 @@ class ConstantsBlockTests { @Test fun updateDefaultTypeChangesType() { val block = ConstantsBlock(name = "TestBlock", defaultDataType = DataType.VOID) - block.defaultType(DataType.string()) + block.defaultType(DataType.string) Assertions.assertTrue(block.defaultDataType is DataType.string) } } \ No newline at end of file diff --git a/cgen-lib/src/test/java/generators/obj/input/DataClassTests.kt b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/DataClassTests.kt similarity index 61% rename from cgen-lib/src/test/java/generators/obj/input/DataClassTests.kt rename to cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/DataClassTests.kt index 4e53a70e..dc5f4f71 100644 --- a/cgen-lib/src/test/java/generators/obj/input/DataClassTests.kt +++ b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/DataClassTests.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.NotDefined @@ -21,7 +21,7 @@ class DataClassTests { @Test fun fieldAddsFieldWithDefaultValue() { val dataClass = DataClass(name = "TestClass") - dataClass.field("Field1", DataType.string()) + dataClass.field("Field1", DataType.string) val field = dataClass.subs.first() as DataField Assertions.assertEquals("Field1", field.name) Assertions.assertTrue(field.getType() is DataType.string) @@ -33,10 +33,28 @@ class DataClassTests { @Test fun fieldAddsFieldWithSpecifiedValue() { val dataClass = DataClass(name = "TestClass") - dataClass.field("Field2", DataType.string(), "value") + dataClass.field("Field2", DataType.string, "value") val field = dataClass.subs.first() as DataField Assertions.assertEquals("Field2", field.name) Assertions.assertTrue(field.getType() is DataType.string) Assertions.assertEquals("value", field.getValue().simple) } + + @Test + fun testNewInstanceWithArgs() { + val dataClass = DataClass(name = "TestClass") + dataClass.field("strField", DataType.string) + val instance = dataClass.instance( + mapOf( + "strField" to "test" + ) + ) + Assertions.assertEquals(DataType.custom::class.java, instance.getType().javaClass) + Assertions.assertEquals(2, instance.subs.size) + Assertions.assertEquals(Input::class.java, instance.subs[1].javaClass) + val argField = instance.subs[1] as Input + Assertions.assertEquals("strField", argField.name) + Assertions.assertEquals("test", argField.getValue().simple) + Assertions.assertEquals(DataType.string, argField.getType()) + } } \ No newline at end of file diff --git a/cgen-lib/src/test/java/generators/obj/input/NewInstanceTest.kt b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/NewInstanceTest.kt similarity index 78% rename from cgen-lib/src/test/java/generators/obj/input/NewInstanceTest.kt rename to cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/NewInstanceTest.kt index 1e6672ee..1c073610 100644 --- a/cgen-lib/src/test/java/generators/obj/input/NewInstanceTest.kt +++ b/cgen-lib/src/test/java/generators/obj/abstractSyntaxTree/NewInstanceTest.kt @@ -1,4 +1,4 @@ -package generators.obj.input +package generators.obj.abstractSyntaxTree import ce.defs.DataType import ce.defs.DataValueImpl @@ -14,7 +14,7 @@ class NewInstanceTest { val dc1instance = NewInstance("newInstance").setType(type = DataType.custom(dc1)) val instance = NewInstance(name = "test").setType(type = DataType.custom(DataClass("test"))) instance.argument("arg1", DataType.custom(dc1), dc1instance) - val sub = instance.subs.firstOrNull { it is DataField } as DataField? + val sub = instance.subs.firstOrNull { it is Input } as Input? assertEquals("arg1", sub!!.name) assertEquals(dc1instance, sub.getValue().subs.first()) } @@ -27,7 +27,7 @@ class NewInstanceTest { dc1dataValue.addSub(dc1instance) val instance = NewInstance(name = "test").setType(type = DataType.custom(DataClass("test"))) instance.argument("arg1", DataType.custom(dc1), dc1dataValue) - val sub = instance.subs.firstOrNull { it is DataField } as DataField? + val sub = instance.subs.firstOrNull { it is Input } as Input? assertEquals("arg1", sub!!.name) assertEquals(dc1instance, sub.getValue().subs.first()) } @@ -35,8 +35,8 @@ class NewInstanceTest { @Test fun argumentAddsSubWithCorrectValues() { val instance = NewInstance(name = "test").setType(type = DataType.custom(DataClass("test"))) - instance.argument("arg1", DataType.string(false), "value1") - val sub = instance.subs.firstOrNull { it is DataField } as DataField? + instance.argument("arg1", DataType.string, "value1") + val sub = instance.subs.firstOrNull { it is Input } as Input? assertEquals("arg1", sub!!.name) assertEquals("value1", sub.getValue().simple) } @@ -44,8 +44,8 @@ class NewInstanceTest { @Test fun argumentAddsSubWithNullValue() { val instance = NewInstance(name = "test").setType(type = DataType.custom(DataClass("test"))) - instance.argument("arg2", DataType.string(), "STR") - val sub = instance.subs.firstOrNull { it is DataField } as DataField? + instance.argument("arg2", DataType.string, "STR") + val sub = instance.subs.firstOrNull { it is Input } as Input? assertNotNull(sub) assertEquals("arg2", sub!!.name) assertEquals("STR", sub.getValue().simple) @@ -54,12 +54,12 @@ class NewInstanceTest { @Test fun argumentAddsMultipleSubs() { val instance = NewInstance(name = "test").setType(type = DataType.custom(DataClass("test"))) - instance.argument("arg1", DataType.string(false), "value1") + instance.argument("arg1", DataType.string, "value1") instance.argument("arg2", DataType.int32, 42) // NewInstance should have 3 subs: "TypeLeaf", "arg1", "arg2" assertEquals(3, instance.subs.size) - val sub1 = instance.subs[1] as DataField - val sub2 = instance.subs[2] as DataField + val sub1 = instance.subs[1] as Input + val sub2 = instance.subs[2] as Input assertEquals("arg1", sub1.name) assertEquals("value1", sub1.getValue().simple) assertEquals("arg2", sub2.name) diff --git a/cgen-lib/src/test/java/generators/obj/out/ImportsBlockTests.kt b/cgen-lib/src/test/java/generators/obj/syntaxParseTree/ImportsBlockTests.kt similarity index 94% rename from cgen-lib/src/test/java/generators/obj/out/ImportsBlockTests.kt rename to cgen-lib/src/test/java/generators/obj/syntaxParseTree/ImportsBlockTests.kt index 05641097..3b756d3f 100644 --- a/cgen-lib/src/test/java/generators/obj/out/ImportsBlockTests.kt +++ b/cgen-lib/src/test/java/generators/obj/syntaxParseTree/ImportsBlockTests.kt @@ -1,4 +1,4 @@ -package generators.obj.out +package generators.obj.syntaxParseTree import org.junit.jupiter.api.Test diff --git a/cgen-lib/src/test/kotlin/ce/treeio/DataTypeSerializerTest.kt b/cgen-lib/src/test/kotlin/ce/treeio/DataTypeSerializerTest.kt index 02803e52..b4c61319 100644 --- a/cgen-lib/src/test/kotlin/ce/treeio/DataTypeSerializerTest.kt +++ b/cgen-lib/src/test/kotlin/ce/treeio/DataTypeSerializerTest.kt @@ -40,9 +40,9 @@ class DataTypeSerializerTest { fun getStringDataType() { val serializer = DataTypeSerializer() Assertions.assertEquals("string", - serializer.stringValue(DataType.string(canBeNull = false))) + serializer.stringValue(DataType.string)) Assertions.assertEquals("stringNullable", - serializer.stringValue(DataType.string(canBeNull = true))) + serializer.stringValue(DataType.stringNullable)) val stringNotNull = serializer.fromStringValue("string") val stringNullable = serializer.fromStringValue("stringNullable") @@ -50,7 +50,7 @@ class DataTypeSerializerTest { Assertions.assertTrue(stringNotNull is DataType.string) Assertions.assertFalse(stringNotNull.canBeNull) - Assertions.assertTrue(stringNullable is DataType.string) + Assertions.assertTrue(stringNullable is DataType.stringNullable) Assertions.assertTrue(stringNullable.canBeNull) } } \ No newline at end of file diff --git a/cgen-lib/src/test/kotlin/ce/treeio/NodeDeserializerTest.kt b/cgen-lib/src/test/kotlin/ce/treeio/NodeDeserializerTest.kt index dd4d20e5..8695cec3 100644 --- a/cgen-lib/src/test/kotlin/ce/treeio/NodeDeserializerTest.kt +++ b/cgen-lib/src/test/kotlin/ce/treeio/NodeDeserializerTest.kt @@ -1,6 +1,6 @@ package ce.treeio -import generators.obj.out.CommentsBlock +import generators.obj.syntaxParseTree.CommentsBlock import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.w3c.dom.Element diff --git a/cgen-lib/src/test/kotlin/ce/treeio/TreeFunctionsTest.kt b/cgen-lib/src/test/kotlin/ce/treeio/TreeFunctionsTest.kt index c8655509..271975c7 100644 --- a/cgen-lib/src/test/kotlin/ce/treeio/TreeFunctionsTest.kt +++ b/cgen-lib/src/test/kotlin/ce/treeio/TreeFunctionsTest.kt @@ -1,7 +1,7 @@ package ce.treeio -import generators.obj.input.NamespaceImpl -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.abstractSyntaxTree.Node import org.junit.jupiter.api.Assertions.* class TreeFunctionsTest { diff --git a/cgen-lib/src/test/kotlin/ce/treeio/XmlNodeDeserializersTests.kt b/cgen-lib/src/test/kotlin/ce/treeio/XmlNodeDeserializersTests.kt index e542fe8f..3bafcc89 100644 --- a/cgen-lib/src/test/kotlin/ce/treeio/XmlNodeDeserializersTests.kt +++ b/cgen-lib/src/test/kotlin/ce/treeio/XmlNodeDeserializersTests.kt @@ -1,9 +1,9 @@ package ce.treeio import ce.defs.DataType -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.DataField +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.DataField import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows diff --git a/cgen-lib/src/test/kotlin/ce/treeio/XmlTreeReaderTest.kt b/cgen-lib/src/test/kotlin/ce/treeio/XmlTreeReaderTest.kt index 7c1d97e9..628515e3 100644 --- a/cgen-lib/src/test/kotlin/ce/treeio/XmlTreeReaderTest.kt +++ b/cgen-lib/src/test/kotlin/ce/treeio/XmlTreeReaderTest.kt @@ -2,16 +2,16 @@ package ce.treeio import ce.defs.DataType import ce.defs.NotDefined -import generators.obj.input.ConstantDesc -import generators.obj.input.ConstantsBlock -import generators.obj.input.DataField -import generators.obj.input.NamespaceImpl -import generators.obj.out.CommentsBlock -import generators.obj.out.FileDataImpl -import generators.obj.out.ImportsBlock -import generators.obj.out.NamespaceDeclaration -import generators.obj.out.OutputTree -import generators.obj.out.RegionImpl +import generators.obj.abstractSyntaxTree.ConstantDesc +import generators.obj.abstractSyntaxTree.ConstantsBlock +import generators.obj.abstractSyntaxTree.DataField +import generators.obj.abstractSyntaxTree.NamespaceImpl +import generators.obj.syntaxParseTree.CommentsBlock +import generators.obj.syntaxParseTree.FileDataImpl +import generators.obj.syntaxParseTree.ImportsBlock +import generators.obj.syntaxParseTree.NamespaceDeclaration +import generators.obj.syntaxParseTree.OutputTree +import generators.obj.syntaxParseTree.RegionImpl import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertFalse diff --git a/cgen-parser/src/main/kotlin/ce/parser/domain/JsonToDataClassUseCase.kt b/cgen-parser/src/main/kotlin/ce/parser/domain/JsonToDataClassUseCase.kt index 39a3277c..fe06ae2a 100644 --- a/cgen-parser/src/main/kotlin/ce/parser/domain/JsonToDataClassUseCase.kt +++ b/cgen-parser/src/main/kotlin/ce/parser/domain/JsonToDataClassUseCase.kt @@ -3,8 +3,8 @@ package ce.parser.domain import ce.defs.DataType import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature -import generators.obj.input.DataClass -import generators.obj.input.Node +import generators.obj.abstractSyntaxTree.DataClass +import generators.obj.abstractSyntaxTree.Node import javax.inject.Inject interface JsonToDataClassUseCase { @@ -27,7 +27,7 @@ class JsonToDataClassUseCaseImpl @Inject constructor(): JsonToDataClassUseCase { child.isBoolean -> dataClass.field(childName, DataType.bool) child.isDouble -> dataClass.field(childName, DataType.float64) child.isFloat -> dataClass.field(childName, DataType.float32) - child.isTextual -> dataClass.field(childName, DataType.string(true)) + child.isTextual -> dataClass.field(childName, DataType.stringNullable) child.isLong -> dataClass.field(childName, DataType.int64) child.isNumber -> dataClass.field(childName, DataType.int32) // child.isArray diff --git a/cgen-parser/src/test/java/ce/parser/domain/JsonToDataClassUseCaseImplTest.kt b/cgen-parser/src/test/java/ce/parser/domain/JsonToDataClassUseCaseImplTest.kt index 06db6f82..c8391ffe 100644 --- a/cgen-parser/src/test/java/ce/parser/domain/JsonToDataClassUseCaseImplTest.kt +++ b/cgen-parser/src/test/java/ce/parser/domain/JsonToDataClassUseCaseImplTest.kt @@ -1,6 +1,6 @@ package ce.parser.domain -import generators.obj.input.DataClass +import generators.obj.abstractSyntaxTree.DataClass import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test diff --git a/test/dataclass.kts b/test/dataclass.kts index 40384346..271eecf5 100644 --- a/test/dataclass.kts +++ b/test/dataclass.kts @@ -1,5 +1,5 @@ import ce.defs.* -import generators.obj.input.DataField +import generators.obj.abstractSyntaxTree.DataField namespace("com.goldman").apply { getNamespace("data").apply { @@ -12,7 +12,7 @@ namespace("com.goldman").apply { val money = dataClass("Money").apply { field("sum", DataType.int32) field("currency", DataType.custom(currency)) - field("name", DataType.string(canBeNull = true)) + field("name", DataType.stringNullable) field("attached", DataType.bool, false) } money.addstaticfield("EMPTY", DataType.custom(money), money.instance()) diff --git a/test/enumGoldErrors.groovy b/test/enumGoldErrors.groovy index 7c5901e2..46b9d021 100644 --- a/test/enumGoldErrors.groovy +++ b/test/enumGoldErrors.groovy @@ -14,8 +14,8 @@ modeType.add("OEXEC", 3) modeType.add("OTRUNC", 0x10) ns.dataClass("GroovyData").tap { - field("firstname", new DataType.string(true), NotDefined.INSTANCE) - field("secondname", new DataType.string()) + field("firstname", DataType.stringNullable.INSTANCE, NotDefined.INSTANCE) + field("secondname", DataType.string.INSTANCE) field("age", DataType.int32.INSTANCE, 35) } diff --git a/test/interface.kts b/test/interface.kts index 666a4b20..db51b74c 100644 --- a/test/interface.kts +++ b/test/interface.kts @@ -1,5 +1,5 @@ import ce.defs.* -import generators.obj.input.* +import generators.obj.abstractSyntaxTree.* namespace("com.goldman.data").apply { declareInterface("DataReader").apply {