From abfeddafe9b883f168c54ef165541ebee762f867 Mon Sep 17 00:00:00 2001 From: Bernhard Date: Thu, 15 Jul 2021 12:58:32 +0200 Subject: [PATCH] add framework for erased extensions of nodetypes --- .../main/scala/overflowdb/codegen/CodeGen.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/codegen/src/main/scala/overflowdb/codegen/CodeGen.scala b/codegen/src/main/scala/overflowdb/codegen/CodeGen.scala index 40562291..babd116f 100644 --- a/codegen/src/main/scala/overflowdb/codegen/CodeGen.scala +++ b/codegen/src/main/scala/overflowdb/codegen/CodeGen.scala @@ -496,7 +496,7 @@ class CodeGen(schema: Schema) { val companionObject = s"""object $className { - | def apply(graph: Graph, id: Long) = new $className(graph, id) + | def apply(graph: Graph, id: Long) = new ${className}_Ref[AnyRef](graph, id) | | val Label = "${nodeType.name}" | @@ -762,7 +762,7 @@ class CodeGen(schema: Schema) { s""" override def $name: ${getCompleteType(key)} = get().$name""" }.mkString("\n") - s"""class $className(graph: Graph, id: Long) extends NodeRef[$classNameDb](graph, id) + s"""class ${className}_Ref[+SubType](graph: Graph, id: Long) extends NodeRef[$classNameDb](graph, id) | with ${className}Base | with StoredNode | $mixinTraits { @@ -939,9 +939,19 @@ class CodeGen(schema: Schema) { val srcFile = nodeType.className + ".scala" results.append(baseDir.createChild(srcFile).write(src)) } + results.append(baseDir.createChild("package.scala").write(generatePackageFile())) results.toSeq } + def generatePackageFile():String = { + val items = schema.nodeTypes.map{nodeType => s"type ${nodeType.className} = ${nodeType.className}_Ref[Any]"} + s"""package $basePackage + |package object nodes { + | ${items.mkString("\n ")} + |} + |""".stripMargin + } + protected def writeNodeTraversalFiles(outputDir: File): Seq[File] = { val staticHeader = s"""package $traversalsPackage