diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-06 21:38:29 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-06 21:38:29 +0100 |
| commit | 115fdcf79d0e7fa2bd69f5b5dd330c7863c03d5a (patch) | |
| tree | 71a01814a0d4f80dc9ff078fe158249478e4f4da /src | |
| parent | 8bb79efe44cf56df9e232de89ce304618e23f2e2 (diff) | |
Extract methods for encode/decode expressions
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java | 90 |
1 files changed, 52 insertions, 38 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 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<JavaBlockStatement> 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<JavaBlockStatement> 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<JavaBlockStatement> 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), |
