summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java90
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),