summaryrefslogtreecommitdiff
path: root/platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt')
-rw-r--r--platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt40
1 files changed, 40 insertions, 0 deletions
diff --git a/platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt b/platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt
new file mode 100644
index 00000000..1dcbe8f0
--- /dev/null
+++ b/platform/script-debugger/protocol/protocol-model-generator/src/MyCreateStandaloneTypeBindingVisitorBase.kt
@@ -0,0 +1,40 @@
+package org.jetbrains.protocolModelGenerator
+
+import org.jetbrains.jsonProtocol.ProtocolMetaModel
+import org.jetbrains.protocolReader.appendEnums
+
+internal class MyCreateStandaloneTypeBindingVisitorBase(private val generator: DomainGenerator, type: ProtocolMetaModel.StandaloneType, private val name: String) : CreateStandaloneTypeBindingVisitorBase(generator, type) {
+ override fun visitObject(properties: List<ProtocolMetaModel.ObjectProperty>?): StandaloneTypeBinding {
+ return object : StandaloneTypeBinding {
+ override fun getJavaType() = subMessageType(generator.generator.naming.additionalParam.getFullName(generator.domain.domain(), name))
+
+ override fun generate() = generator.generateCommandAdditionalParam(type)
+
+ override fun getDirection() = TypeData.Direction.OUTPUT
+ }
+ }
+
+ override fun visitEnum(enumConstants: List<String>): StandaloneTypeBinding {
+ return object : StandaloneTypeBinding {
+ override fun getJavaType(): BoxableType = StandaloneType(generator.generator.naming.additionalParam.getFullName(generator.domain.domain(), name), "writeEnum")
+
+ override fun generate() = appendEnums(enumConstants, name, false, generator.fileUpdater.out.newLine().newLine())
+
+ override fun getDirection() = TypeData.Direction.OUTPUT
+ }
+ }
+
+ override fun visitArray(items: ProtocolMetaModel.ArrayItemType) = generator.createTypedefTypeBinding(type, object : Target {
+ override fun resolve(context: Target.ResolveContext): BoxableType {
+ return ListType(generator.generator.resolveType(items, object : ResolveAndGenerateScope {
+ // This class is responsible for generating ad hoc type.
+ // If we ever are to do it, we should generate into string buffer and put strings inside TypeDef class
+ override fun getDomainName() = generator.domain.domain()
+
+ override fun getTypeDirection() = TypeData.Direction.OUTPUT
+
+ override fun generateNestedObject(description: String?, properties: List<ProtocolMetaModel.ObjectProperty>?) = context.generateNestedObject("Item", description, properties)
+ }).type)
+ }
+ }, generator.generator.naming.outputTypedef, TypeData.Direction.OUTPUT)
+}