diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java index 1695da7..a8bacbf 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java @@ -95,6 +95,13 @@ public class JavaTransient0Generator implements Generator { ); } + private JavaTypeRef generateTransient0TypeRef(NamespaceName namespaceName) { + return JavaTypeRef.topLevel( + this.javaGenerator.namespaceToJavaPackageName(namespaceName), + generateTransient0ClassName(namespaceName) + ); + } + private JavaIdentifier generateTransient0ClassName(NamespaceName namespaceName) { var namespaceShortName = namespaceName.shortName(); return this.javaGenerator.generateTypeName( @@ -203,7 +210,15 @@ public class JavaTransient0Generator implements Generator { } case StructType structType -> { - throw new UnsupportedOperationException("TODO"); + yield Stream.of( + new JavaExpressionStatement( + new JavaStaticMethodCall( + generateTransient0TypeRef(structType.namespaceName()), + encodeMethodName(structType), + List.of(value, new JavaRef(OUTPUT_STREAM_NAME)) + ) + ) + ); } case SumType sumType -> { @@ -241,7 +256,17 @@ public class JavaTransient0Generator implements Generator { } case StructType structType -> { - throw new UnsupportedOperationException("TODO"); + yield Stream.of( + new JavaLocalVariableDeclaration( + Optional.empty(), + target, + new JavaStaticMethodCall( + generateTransient0TypeRef(structType.namespaceName()), + decodeMethodName(structType), + List.of(new JavaRef(INPUT_STREAM_NAME)) + ) + ) + ); } case SumType sumType -> { |
