diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java | 42 |
1 files changed, 27 insertions, 15 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 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<JavaBlockStatement> 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()); } |
