From 798a3176144c4f9116d3f38559104e9773937d5a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 6 Jul 2026 21:08:44 +0100 Subject: Extract generateEncodeMethod() --- .../javatransient0/JavaTransient0Generator.java | 42 ++++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'src/main') 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 6d0a6c9..23f699b 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 @@ -126,19 +126,9 @@ public class JavaTransient0Generator implements Generator { var structJavaTypeRef = this.javaGenerator.generateTypeRef(structDefinition.type()); yield Stream.of( - new JavaMethodDeclaration( - encodeMethodName(structDefinition.type()), - JavaVisibility.PUBLIC, - JavaMethodKind.STATIC, - JavaTypeRef.VOID, - List.of( - new JavaParam(structJavaTypeRef, VALUE_NAME), - new JavaParam( - JavaTypeRef.OUTPUT_STREAM, - OUTPUT_STREAM_NAME - ) - ), - List.of(JavaTypeRef.IO_EXCEPTION), + generateEncodeMethod( + structDefinition.type(), + structJavaTypeRef, new JavaBlock( structDefinition.fields().stream() .flatMap(field -> generateEncode( @@ -189,6 +179,28 @@ public class JavaTransient0Generator implements Generator { }; } + private JavaMethodDeclaration generateEncodeMethod( + Type type, + JavaTypeRef javaTypeRef, + JavaBlock body + ) { + return new JavaMethodDeclaration( + encodeMethodName(type), + JavaVisibility.PUBLIC, + JavaMethodKind.STATIC, + JavaTypeRef.VOID, + List.of( + new JavaParam(javaTypeRef, VALUE_NAME), + new JavaParam( + JavaTypeRef.OUTPUT_STREAM, + OUTPUT_STREAM_NAME + ) + ), + List.of(JavaTypeRef.IO_EXCEPTION), + body + ); + } + private Stream generateEncode(JavaExpression value, Type type) { return switch (type) { case ConstructedNativeType constructedNativeType -> { @@ -415,11 +427,11 @@ public class JavaTransient0Generator implements Generator { .map(x -> x * 8); } - private JavaIdentifier encodeMethodName(StructType type) { + private JavaIdentifier encodeMethodName(Type type) { return this.javaGenerator.generateFieldName("encode" + type.name()); } - private JavaIdentifier decodeMethodName(StructType type) { + private JavaIdentifier decodeMethodName(Type type) { return this.javaGenerator.generateFieldName("decode" + type.name()); } -- cgit v1.2.3