summaryrefslogtreecommitdiff
path: root/examples/16-transient-0/output/java/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-10 10:19:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-10 10:19:49 +0100
commit5113f2157c5aa257ad7ebf555cb6a551701d169a (patch)
tree8ddaee09f6c43b0529b2203f9e662a028fb5fcc0 /examples/16-transient-0/output/java/src/main
parent5d41166750e0f05da436bf30c7a642749f7a71c5 (diff)
Add generic struct example without any outputs
Diffstat (limited to 'examples/16-transient-0/output/java/src/main')
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/GenericNative.java3
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/HobgoblinNativeData.java13
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/Native.java3
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/transient0/HobgoblinTransient0Data.java581
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Decoder.java13
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Encoder.java13
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0Builtins.java82
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0TaggedSharedValue.java22
8 files changed, 730 insertions, 0 deletions
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/GenericNative.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/GenericNative.java
new file mode 100644
index 0000000..cfd16d5
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/GenericNative.java
@@ -0,0 +1,3 @@
+package org.zwobble.example.types.data;
+
+public record GenericNative<A, B>(A a, B b) {}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/HobgoblinNativeData.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/HobgoblinNativeData.java
new file mode 100644
index 0000000..32796b5
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/HobgoblinNativeData.java
@@ -0,0 +1,13 @@
+package org.zwobble.example.types.data;
+
+public class HobgoblinNativeData {
+ private HobgoblinNativeData() {}
+
+ public static Native arbitraryNative() {
+ return new Native(0, 0);
+ }
+
+ public static <A, B> GenericNative<A, B> arbitraryGenericNative() {
+ throw new RuntimeException("TODO");
+ }
+}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/Native.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/Native.java
new file mode 100644
index 0000000..366dd74
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/Native.java
@@ -0,0 +1,3 @@
+package org.zwobble.example.types.data;
+
+public record Native(int a, int b) {}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/transient0/HobgoblinTransient0Data.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/transient0/HobgoblinTransient0Data.java
new file mode 100644
index 0000000..1eea54c
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/transient0/HobgoblinTransient0Data.java
@@ -0,0 +1,581 @@
+// Generated by hobgoblin.
+
+package org.zwobble.example.types.data.transient0;
+
+// Custom area start: org.zwobble.example.types.data.transient0.HobgoblinTransient0Data imports
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Map;
+import org.zwobble.example.types.data.GenericNative;
+import org.zwobble.example.types.data.Native;
+import org.zwobble.example.types.transient0.Decoder;
+import org.zwobble.example.types.transient0.Encoder;
+import org.zwobble.example.types.transient0.HobgoblinTransient0Builtins;
+import org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue;
+// Custom area end: org.zwobble.example.types.data.transient0.HobgoblinTransient0Data imports
+
+public final class HobgoblinTransient0Data {
+ public static void encodeStructSingleton(org.zwobble.example.types.data.StructSingleton value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ }
+
+ public static org.zwobble.example.types.data.StructSingleton decodeStructSingleton(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ return org.zwobble.example.types.data.StructSingleton.INSTANCE;
+ }
+
+ public static void encodeStructWithBool(org.zwobble.example.types.data.StructWithBool value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeBool(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeBool(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithBool decodeStructWithBool(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeBool(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeBool(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithBool(a, b);
+ }
+
+ public static void encodeStructWithInt8(org.zwobble.example.types.data.StructWithInt8 value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt8(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt8(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithInt8 decodeStructWithInt8(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt8(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt8(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithInt8(a, b);
+ }
+
+ public static void encodeStructWithInt32(org.zwobble.example.types.data.StructWithInt32 value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithInt32 decodeStructWithInt32(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithInt32(a, b);
+ }
+
+ public static void encodeStructWithInt64(org.zwobble.example.types.data.StructWithInt64 value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithInt64 decodeStructWithInt64(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithInt64(a, b);
+ }
+
+ public static void encodeStructWithString(org.zwobble.example.types.data.StructWithString value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeString(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeString(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithString decodeStructWithString(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeString(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeString(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithString(a, b);
+ }
+
+ public static void encodeStructWithStruct(org.zwobble.example.types.data.StructWithStruct value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(value.inner(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.c(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithStruct decodeStructWithStruct(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var inner = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ var c = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithStruct(inner, c);
+ }
+
+ public static void encodeStructWithList(org.zwobble.example.types.data.StructWithList value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64((long) value.a().size(), outputStream, sharedValues);
+ for (var element : value.a()) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(element, outputStream, sharedValues);
+ }
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64((long) value.b().size(), outputStream, sharedValues);
+ for (var element : value.b()) {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(element, outputStream, sharedValues);
+ }
+ }
+
+ public static org.zwobble.example.types.data.StructWithList decodeStructWithList(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a$size = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (a$size > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Lists longer than Integer.MAX_VALUE are not supported");
+ }
+ var a = new java.util.ArrayList<java.lang.Long>((int) a$size);
+ for (long a$index = 0; a$index < a$size; a$index++) {
+ var a$element = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ a.add(a$element);
+ }
+ var b$size = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (b$size > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Lists longer than Integer.MAX_VALUE are not supported");
+ }
+ var b = new java.util.ArrayList<org.zwobble.example.types.data.StructWithInt32>((int) b$size);
+ for (long b$index = 0; b$index < b$size; b$index++) {
+ var b$element = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ b.add(b$element);
+ }
+ return new org.zwobble.example.types.data.StructWithList(a, b);
+ }
+
+ public static void encodeStructWithOption(org.zwobble.example.types.data.StructWithOption value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeBool(value.a().isPresent(), outputStream, sharedValues);
+ if (value.a().isPresent()) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(value.a().get(), outputStream, sharedValues);
+ }
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeBool(value.b().isPresent(), outputStream, sharedValues);
+ if (value.b().isPresent()) {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(value.b().get(), outputStream, sharedValues);
+ }
+ }
+
+ public static org.zwobble.example.types.data.StructWithOption decodeStructWithOption(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a$isPresent = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeBool(inputStream, sharedValues);
+ java.util.Optional<java.lang.Long> a;
+ if (a$isPresent) {
+ var a$element = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ a = java.util.Optional.of(a$element);
+ } else {
+ a = java.util.Optional.empty();
+ }
+ var b$isPresent = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeBool(inputStream, sharedValues);
+ java.util.Optional<org.zwobble.example.types.data.StructWithInt32> b;
+ if (b$isPresent) {
+ var b$element = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ b = java.util.Optional.of(b$element);
+ } else {
+ b = java.util.Optional.empty();
+ }
+ return new org.zwobble.example.types.data.StructWithOption(a, b);
+ }
+
+ public static void encodeEnumWithVariants(org.zwobble.example.types.data.EnumWithVariants value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.ordinal(), outputStream, sharedValues);
+ }
+
+ private static final org.zwobble.example.types.data.EnumWithVariants[] EnumWithVariants$values = org.zwobble.example.types.data.EnumWithVariants.values();
+
+ public static org.zwobble.example.types.data.EnumWithVariants decodeEnumWithVariants(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var ordinal = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return EnumWithVariants$values[ordinal];
+ }
+
+ public static void encodeStructWithEnum(org.zwobble.example.types.data.StructWithEnum value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeEnumWithVariants(value.inner(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.c(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithEnum decodeStructWithEnum(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var inner = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeEnumWithVariants(inputStream, sharedValues);
+ var c = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithEnum(inner, c);
+ }
+
+ public static void encodeSumWithVariants(org.zwobble.example.types.data.SumWithVariants value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ switch (value) {
+ case org.zwobble.example.types.data.VariantOne value$0 -> {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(0, outputStream, sharedValues);
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeVariantOne(value$0, outputStream, sharedValues);
+ }
+ case org.zwobble.example.types.data.VariantTwo value$1 -> {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(1, outputStream, sharedValues);
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeVariantTwo(value$1, outputStream, sharedValues);
+ }
+ }
+ }
+
+ public static org.zwobble.example.types.data.SumWithVariants decodeSumWithVariants(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var variantTag = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ switch (variantTag) {
+ case 0 -> {
+ var value$0 = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeVariantOne(inputStream, sharedValues);
+ return value$0;
+ }
+ case 1 -> {
+ var value$1 = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeVariantTwo(inputStream, sharedValues);
+ return value$1;
+ }
+ default -> {
+ throw new java.lang.RuntimeException("unexpected data.SumWithVariants variant tag: " + variantTag);
+ }
+ }
+ }
+
+ public static void encodeVariantOne(org.zwobble.example.types.data.VariantOne value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.a(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.VariantOne decodeVariantOne(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.VariantOne(a);
+ }
+
+ public static void encodeVariantTwo(org.zwobble.example.types.data.VariantTwo value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(value.a(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.VariantTwo decodeVariantTwo(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.VariantTwo(a);
+ }
+
+ public static void encodeSumWithBoxedVariants(org.zwobble.example.types.data.SumWithBoxedVariants value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ switch (value) {
+ case org.zwobble.example.types.data.VariantOne value$0 -> {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(0, outputStream, sharedValues);
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeVariantOne(value$0, outputStream, sharedValues);
+ }
+ case org.zwobble.example.types.data.VariantTwo value$1 -> {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(1, outputStream, sharedValues);
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeVariantTwo(value$1, outputStream, sharedValues);
+ }
+ }
+ }
+
+ public static org.zwobble.example.types.data.SumWithBoxedVariants decodeSumWithBoxedVariants(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var variantTag = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ switch (variantTag) {
+ case 0 -> {
+ var value$0 = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeVariantOne(inputStream, sharedValues);
+ return value$0;
+ }
+ case 1 -> {
+ var value$1 = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeVariantTwo(inputStream, sharedValues);
+ return value$1;
+ }
+ default -> {
+ throw new java.lang.RuntimeException("unexpected data.SumWithBoxedVariants variant tag: " + variantTag);
+ }
+ }
+ }
+
+ public static void encodeStructWithSum(org.zwobble.example.types.data.StructWithSum value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeSumWithVariants(value.inner(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt32(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithSum decodeStructWithSum(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var inner = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeSumWithVariants(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithSum(inner, b);
+ }
+
+ public static void encodeStructWithNative(org.zwobble.example.types.data.StructWithNative value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeNative(value.a(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithNative decodeStructWithNative(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeNative(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithNative(a);
+ }
+
+ public static void encodeStructWithGenericNative(org.zwobble.example.types.data.StructWithGenericNative value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeGenericNative(value.a(), outputStream, sharedValues, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::encodeInt32, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::encodeString);
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeGenericNative(value.b(), outputStream, sharedValues, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::encode$constructedType$0, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::encode$constructedType$1);
+ }
+
+ public static org.zwobble.example.types.data.StructWithGenericNative decodeStructWithGenericNative(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeGenericNative(inputStream, sharedValues, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::decodeInt32, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::decodeString);
+ var b = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeGenericNative(inputStream, sharedValues, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::decode$constructedType$0, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::decode$constructedType$1);
+ return new org.zwobble.example.types.data.StructWithGenericNative(a, b);
+ }
+
+ public static void encodeStructWithBox(org.zwobble.example.types.data.StructWithBox value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(value.inner(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithBox decodeStructWithBox(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var inner = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithBox(inner);
+ }
+
+ public static void encodeStructWithListOfShared(org.zwobble.example.types.data.StructWithListOfShared value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64((long) value.inner().size(), outputStream, sharedValues);
+ for (var element : value.inner()) {
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, element));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, element), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(element, outputStream, sharedValues);
+ }
+ }
+ }
+ }
+
+ public static org.zwobble.example.types.data.StructWithListOfShared decodeStructWithListOfShared(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var inner$size = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (inner$size > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Lists longer than Integer.MAX_VALUE are not supported");
+ }
+ var inner = new java.util.ArrayList<org.zwobble.example.types.data.StructWithInt32>((int) inner$size);
+ for (long inner$index = 0; inner$index < inner$size; inner$index++) {
+ var inner$element$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (inner$element$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.StructWithInt32 inner$element;
+ if (inner$element$id < sharedValues.size()) {
+ inner$element = switch (sharedValues.get((int) inner$element$id)) {
+ case org.zwobble.example.types.data.StructWithInt32 inner$element$decodedValue -> {
+ yield inner$element$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var inner$element$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ sharedValues.add(inner$element$decodedValue);
+ inner$element = inner$element$decodedValue;
+ }
+ inner.add(inner$element);
+ }
+ return new org.zwobble.example.types.data.StructWithListOfShared(inner);
+ }
+
+ public static void encodeStructWithDifferentSharedTypes(org.zwobble.example.types.data.StructWithDifferentSharedTypes value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, value.a()));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, value.a()), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(value.a(), outputStream, sharedValues);
+ }
+ }
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(1, value.b()));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(1, value.b()), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt64(value.b(), outputStream, sharedValues);
+ }
+ }
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, value.c()));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(0, value.c()), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeStructWithInt32(value.c(), outputStream, sharedValues);
+ }
+ }
+ }
+
+ public static org.zwobble.example.types.data.StructWithDifferentSharedTypes decodeStructWithDifferentSharedTypes(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (a$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.StructWithInt32 a;
+ if (a$id < sharedValues.size()) {
+ a = switch (sharedValues.get((int) a$id)) {
+ case org.zwobble.example.types.data.StructWithInt32 a$decodedValue -> {
+ yield a$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var a$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ sharedValues.add(a$decodedValue);
+ a = a$decodedValue;
+ }
+ var b$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (b$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.StructWithInt64 b;
+ if (b$id < sharedValues.size()) {
+ b = switch (sharedValues.get((int) b$id)) {
+ case org.zwobble.example.types.data.StructWithInt64 b$decodedValue -> {
+ yield b$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var b$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt64(inputStream, sharedValues);
+ sharedValues.add(b$decodedValue);
+ b = b$decodedValue;
+ }
+ var c$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (c$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.StructWithInt32 c;
+ if (c$id < sharedValues.size()) {
+ c = switch (sharedValues.get((int) c$id)) {
+ case org.zwobble.example.types.data.StructWithInt32 c$decodedValue -> {
+ yield c$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var c$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeStructWithInt32(inputStream, sharedValues);
+ sharedValues.add(c$decodedValue);
+ c = c$decodedValue;
+ }
+ return new org.zwobble.example.types.data.StructWithDifferentSharedTypes(a, b, c);
+ }
+
+ public static void encodeStructWithSharedSumAndVariant(org.zwobble.example.types.data.StructWithSharedSumAndVariant value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(2, value.a()));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(2, value.a()), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeSumWithVariants(value.a(), outputStream, sharedValues);
+ }
+ }
+ {
+ var existingId = sharedValues.get(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(3, value.b()));
+ if (existingId != null) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(existingId, outputStream, sharedValues);
+ } else {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64(sharedValues.size(), outputStream, sharedValues);
+ sharedValues.put(new org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue(3, value.b()), (long) sharedValues.size());
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeVariantOne(value.b(), outputStream, sharedValues);
+ }
+ }
+ }
+
+ public static org.zwobble.example.types.data.StructWithSharedSumAndVariant decodeStructWithSharedSumAndVariant(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (a$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.SumWithVariants a;
+ if (a$id < sharedValues.size()) {
+ a = switch (sharedValues.get((int) a$id)) {
+ case org.zwobble.example.types.data.SumWithVariants a$decodedValue -> {
+ yield a$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var a$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeSumWithVariants(inputStream, sharedValues);
+ sharedValues.add(a$decodedValue);
+ a = a$decodedValue;
+ }
+ var b$id = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (b$id > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Shared value IDs greater than Integer.MAX_VALUE are not supported");
+ }
+ org.zwobble.example.types.data.VariantOne b;
+ if (b$id < sharedValues.size()) {
+ b = switch (sharedValues.get((int) b$id)) {
+ case org.zwobble.example.types.data.VariantOne b$decodedValue -> {
+ yield b$decodedValue;
+ }
+ default -> {
+ throw new java.io.IOException("Shared value was of the wrong type");
+ }
+ };
+ } else {
+ var b$decodedValue = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeVariantOne(inputStream, sharedValues);
+ sharedValues.add(b$decodedValue);
+ b = b$decodedValue;
+ }
+ return new org.zwobble.example.types.data.StructWithSharedSumAndVariant(a, b);
+ }
+
+ private static void encode$constructedType$0(java.util.Optional<String> value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeBool(value.isPresent(), outputStream, sharedValues);
+ if (value.isPresent()) {
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeString(value.get(), outputStream, sharedValues);
+ }
+ }
+
+ private static java.util.Optional<String> decode$constructedType$0(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var value$isPresent = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeBool(inputStream, sharedValues);
+ java.util.Optional<String> value;
+ if (value$isPresent) {
+ var value$element = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeString(inputStream, sharedValues);
+ value = java.util.Optional.of(value$element);
+ } else {
+ value = java.util.Optional.empty();
+ }
+ return value;
+ }
+
+ private static void encode$constructedType$1(org.zwobble.example.types.data.GenericNative<java.util.Optional<String>, org.zwobble.example.types.data.GenericNative<String, String>> value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeGenericNative(value, outputStream, sharedValues, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::encode$constructedType$0, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::encode$constructedType$2);
+ }
+
+ private static org.zwobble.example.types.data.GenericNative<java.util.Optional<String>, org.zwobble.example.types.data.GenericNative<String, String>> decode$constructedType$1(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var value = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeGenericNative(inputStream, sharedValues, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::decode$constructedType$0, org.zwobble.example.types.data.transient0.HobgoblinTransient0Data::decode$constructedType$2);
+ return value;
+ }
+
+ private static void encode$constructedType$2(org.zwobble.example.types.data.GenericNative<String, String> value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.encodeGenericNative(value, outputStream, sharedValues, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::encodeString, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::encodeString);
+ }
+
+ private static org.zwobble.example.types.data.GenericNative<String, String> decode$constructedType$2(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var value = org.zwobble.example.types.data.transient0.HobgoblinTransient0Data.decodeGenericNative(inputStream, sharedValues, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::decodeString, org.zwobble.example.types.transient0.HobgoblinTransient0Builtins::decodeString);
+ return value;
+ }
+
+ // Custom area start: org.zwobble.example.types.data.transient0.HobgoblinTransient0Data body
+ public static void encodeNative(
+ Native value,
+ OutputStream outputStream,
+ Map<HobgoblinTransient0TaggedSharedValue, Long> sharedValues
+ ) throws IOException {
+ HobgoblinTransient0Builtins.encodeInt32(value.a(), outputStream, sharedValues);
+ HobgoblinTransient0Builtins.encodeInt32(value.b(), outputStream, sharedValues);
+ }
+
+ public static Native decodeNative(
+ InputStream inputStream,
+ List<Object> sharedValues
+ ) throws IOException {
+ var a = HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ var b = HobgoblinTransient0Builtins.decodeInt32(inputStream, sharedValues);
+ return new Native(a, b);
+ }
+
+ public static <A, B> void encodeGenericNative(
+ GenericNative<A, B> value,
+ OutputStream outputStream,
+ Map<HobgoblinTransient0TaggedSharedValue, Long> sharedValues,
+ Encoder<A> encoderA,
+ Encoder<B> encoderB
+ ) throws IOException {
+ encoderA.encode(value.a(), outputStream, sharedValues);
+ encoderB.encode(value.b(), outputStream, sharedValues);
+ }
+
+ public static <A, B> GenericNative<A, B> decodeGenericNative(
+ InputStream inputStream,
+ List<Object> sharedValues,
+ Decoder<A> decoderA,
+ Decoder<B> decoderB
+ ) throws IOException {
+ var a = decoderA.decode(inputStream, sharedValues);
+ var b = decoderB.decode(inputStream, sharedValues);
+ return new GenericNative(a, b);
+ }
+ // Custom area end: org.zwobble.example.types.data.transient0.HobgoblinTransient0Data body
+}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Decoder.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Decoder.java
new file mode 100644
index 0000000..ad1a6d0
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Decoder.java
@@ -0,0 +1,13 @@
+// Generated by hobgoblin.
+
+package org.zwobble.example.types.transient0;
+
+// Custom area start: org.zwobble.example.types.transient0.Decoder imports
+// Custom area end: org.zwobble.example.types.transient0.Decoder imports
+
+public interface Decoder<T> {
+ public T decode(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException;
+
+ // Custom area start: org.zwobble.example.types.transient0.Decoder body
+ // Custom area end: org.zwobble.example.types.transient0.Decoder body
+}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Encoder.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Encoder.java
new file mode 100644
index 0000000..2ba43a6
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/Encoder.java
@@ -0,0 +1,13 @@
+// Generated by hobgoblin.
+
+package org.zwobble.example.types.transient0;
+
+// Custom area start: org.zwobble.example.types.transient0.Encoder imports
+// Custom area end: org.zwobble.example.types.transient0.Encoder imports
+
+public interface Encoder<T> {
+ public void encode(T value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException;
+
+ // Custom area start: org.zwobble.example.types.transient0.Encoder body
+ // Custom area end: org.zwobble.example.types.transient0.Encoder body
+}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0Builtins.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0Builtins.java
new file mode 100644
index 0000000..293aee7
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0Builtins.java
@@ -0,0 +1,82 @@
+// Generated by hobgoblin.
+
+package org.zwobble.example.types.transient0;
+
+// Custom area start: org.zwobble.example.types.transient0.HobgoblinTransient0Builtins imports
+// Custom area end: org.zwobble.example.types.transient0.HobgoblinTransient0Builtins imports
+
+public final class HobgoblinTransient0Builtins {
+ public static void encodeBool(boolean value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ outputStream.write(value ? 1 : 0);
+ }
+
+ public static boolean decodeBool(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ return inputStream.read() != 0;
+ }
+
+ public static void encodeInt8(byte value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ outputStream.write(value);
+ }
+
+ public static byte decodeInt8(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ return (byte) inputStream.read();
+ }
+
+ public static void encodeInt32(int value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ outputStream.write(value >>> 0 & 255);
+ outputStream.write(value >>> 8 & 255);
+ outputStream.write(value >>> 16 & 255);
+ outputStream.write(value >>> 24 & 255);
+ }
+
+ public static int decodeInt32(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ int value = 0;
+ value = value | inputStream.read() << 0;
+ value = value | inputStream.read() << 8;
+ value = value | inputStream.read() << 16;
+ value = value | inputStream.read() << 24;
+ return value;
+ }
+
+ public static void encodeInt64(long value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ outputStream.write((int) (value >>> 0 & 255));
+ outputStream.write((int) (value >>> 8 & 255));
+ outputStream.write((int) (value >>> 16 & 255));
+ outputStream.write((int) (value >>> 24 & 255));
+ outputStream.write((int) (value >>> 32 & 255));
+ outputStream.write((int) (value >>> 40 & 255));
+ outputStream.write((int) (value >>> 48 & 255));
+ outputStream.write((int) (value >>> 56 & 255));
+ }
+
+ public static long decodeInt64(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ long value = 0;
+ value = value | inputStream.read() << 0;
+ value = value | inputStream.read() << 8;
+ value = value | inputStream.read() << 16;
+ value = value | inputStream.read() << 24;
+ value = value | inputStream.read() << 32;
+ value = value | inputStream.read() << 40;
+ value = value | inputStream.read() << 48;
+ value = value | inputStream.read() << 56;
+ return value;
+ }
+
+ public static void encodeString(String value, java.io.OutputStream outputStream, java.util.Map<org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue, java.lang.Long> sharedValues) throws java.io.IOException {
+ var bytes = value.getBytes(java.nio.charset.StandardCharsets.UTF_8);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeInt64((long) bytes.length, outputStream, sharedValues);
+ outputStream.write(bytes);
+ }
+
+ public static String decodeString(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var bytesLength = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ if (bytesLength > java.lang.Integer.MAX_VALUE) {
+ throw new java.io.IOException("Strings longer than Integer.MAX_VALUE are not supported");
+ }
+ var bytes = inputStream.readNBytes((int) bytesLength);
+ return new String(bytes, java.nio.charset.StandardCharsets.UTF_8);
+ }
+
+ // Custom area start: org.zwobble.example.types.transient0.HobgoblinTransient0Builtins body
+ // Custom area end: org.zwobble.example.types.transient0.HobgoblinTransient0Builtins body
+}
diff --git a/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0TaggedSharedValue.java b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0TaggedSharedValue.java
new file mode 100644
index 0000000..6c5b520
--- /dev/null
+++ b/examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0TaggedSharedValue.java
@@ -0,0 +1,22 @@
+// Generated by hobgoblin.
+
+package org.zwobble.example.types.transient0;
+
+// Custom area start: org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue imports
+// Custom area end: org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue imports
+
+public record HobgoblinTransient0TaggedSharedValue(
+ long typeId,
+ java.lang.Object value
+) {
+ public boolean equals(java.lang.Object other) {
+ return other instanceof org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue otherSharedValue && this.typeId == otherSharedValue.typeId && this.value == otherSharedValue.value;
+ }
+
+ public int hashCode() {
+ return 37 * (37 * 17 + java.lang.Long.hashCode(this.typeId)) + java.lang.System.identityHashCode(this.value);
+ }
+
+ // Custom area start: org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue body
+ // Custom area end: org.zwobble.example.types.transient0.HobgoblinTransient0TaggedSharedValue body
+}