From 115fdcf79d0e7fa2bd69f5b5dd330c7863c03d5a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 6 Jul 2026 21:38:29 +0100 Subject: Extract methods for encode/decode expressions --- .../javatransient0/JavaTransient0Generator.java | 90 +++++++++++++--------- 1 file changed, 52 insertions(+), 38 deletions(-) (limited to 'src/main/java/org/zwobble') 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 6078578..346bde0 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 @@ -365,27 +365,19 @@ public class JavaTransient0Generator implements Generator { throw new UnsupportedOperationException("TODO"); } - case SimpleNativeType simpleNativeType -> { - yield Stream.of( - new JavaExpressionStatement( - new JavaStaticMethodCall( - generateTransient0TypeRef(simpleNativeType.namespaceName()), - encodeMethodName(simpleNativeType), - List.of(value, new JavaRef(OUTPUT_STREAM_NAME)) - ) - ) + case SimpleNativeType simpleNativeType -> { + yield generateEncode( + value, + simpleNativeType.namespaceName(), + simpleNativeType ); } - case StructType structType -> { - yield Stream.of( - new JavaExpressionStatement( - new JavaStaticMethodCall( - generateTransient0TypeRef(structType.namespaceName()), - encodeMethodName(structType), - List.of(value, new JavaRef(OUTPUT_STREAM_NAME)) - ) - ) + case StructType structType -> { + yield generateEncode( + value, + structType.namespaceName(), + structType ); } @@ -403,6 +395,22 @@ public class JavaTransient0Generator implements Generator { }; } + private Stream generateEncode( + JavaExpression value, + NamespaceName typeNamespaceName, + Type type + ) { + return Stream.of( + new JavaExpressionStatement( + new JavaStaticMethodCall( + generateTransient0TypeRef(typeNamespaceName), + encodeMethodName(type), + List.of(value, new JavaRef(OUTPUT_STREAM_NAME)) + ) + ) + ); + } + private Stream generateDecode(JavaIdentifier target, Type type) { return switch (type) { case ConstructedNativeType constructedNativeType -> { @@ -414,30 +422,18 @@ public class JavaTransient0Generator implements Generator { } case SimpleNativeType simpleNativeType -> { - yield Stream.of( - new JavaLocalVariableDeclaration( - Optional.empty(), - target, - new JavaStaticMethodCall( - generateTransient0TypeRef(simpleNativeType.namespaceName()), - decodeMethodName(simpleNativeType), - List.of(new JavaRef(INPUT_STREAM_NAME)) - ) - ) + yield generateDecode( + target, + simpleNativeType.namespaceName(), + simpleNativeType ); } case StructType structType -> { - yield Stream.of( - new JavaLocalVariableDeclaration( - Optional.empty(), - target, - new JavaStaticMethodCall( - generateTransient0TypeRef(structType.namespaceName()), - decodeMethodName(structType), - List.of(new JavaRef(INPUT_STREAM_NAME)) - ) - ) + yield generateDecode( + target, + structType.namespaceName(), + structType ); } @@ -455,6 +451,24 @@ public class JavaTransient0Generator implements Generator { }; } + private Stream generateDecode( + JavaIdentifier target, + NamespaceName typeNamespaceName, + Type type + ) { + return Stream.of( + new JavaLocalVariableDeclaration( + Optional.empty(), + target, + new JavaStaticMethodCall( + generateTransient0TypeRef(typeNamespaceName), + decodeMethodName(type), + List.of(new JavaRef(INPUT_STREAM_NAME)) + ) + ) + ); + } + private static JavaMethodCall generateOutputStreamWrite(JavaExpression byteToWrite) { return new JavaMethodCall( new JavaRef(OUTPUT_STREAM_NAME), -- cgit v1.2.3