summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-06 21:08:44 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-06 21:08:44 +0100
commit798a3176144c4f9116d3f38559104e9773937d5a (patch)
treed12dbae61a95ca2058e9fb8cf3986f46caa3f85d /src/main/java/org/zwobble
parent044c79e110a2d65dd186a89030b72f53cb9804cb (diff)
Extract generateEncodeMethod()
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java42
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());
}