summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-29 23:29:20 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-29 23:29:20 +0100
commit5853245ec192799892a1a713f73269bbe4b03593 (patch)
treea3d46a9ee6bfcc2ab2e3cc708586891b24384111 /examples
parente5b0b62785e75d19b4d852712cb6a72ea77429d2 (diff)
Support Float64 in transient-0
Diffstat (limited to 'examples')
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/data/transient0/HobgoblinTransient0Data.java11
-rw-r--r--examples/16-transient-0/output/java/src/main/java/org/zwobble/example/types/transient0/HobgoblinTransient0Builtins.java9
-rw-r--r--examples/16-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java13
-rw-r--r--examples/16-transient-0/output/rust/src/gen/data.rs6
-rw-r--r--examples/16-transient-0/output/rust/src/gen/data/transient_0.rs12
-rw-r--r--examples/16-transient-0/output/rust/src/gen/transient_0.rs14
-rw-r--r--examples/16-transient-0/output/rust/src/lib.rs14
-rw-r--r--examples/16-transient-0/src/data.hob5
8 files changed, 83 insertions, 1 deletions
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
index 13e5044..f8799b7 100644
--- 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
@@ -35,6 +35,17 @@ public final class HobgoblinTransient0Data {
return new org.zwobble.example.types.data.StructWithBool(a, b);
}
+ public static void encodeStructWithFloat64(org.zwobble.example.types.data.StructWithFloat64 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.encodeFloat64(value.a(), outputStream, sharedValues);
+ org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.encodeFloat64(value.b(), outputStream, sharedValues);
+ }
+
+ public static org.zwobble.example.types.data.StructWithFloat64 decodeStructWithFloat64(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var a = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeFloat64(inputStream, sharedValues);
+ var b = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeFloat64(inputStream, sharedValues);
+ return new org.zwobble.example.types.data.StructWithFloat64(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);
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
index 7935ca8..861d7bb 100644
--- 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
@@ -14,6 +14,15 @@ public final class HobgoblinTransient0Builtins {
return inputStream.read() != 0;
}
+ public static void encodeFloat64(double 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(java.lang.Double.doubleToLongBits(value), outputStream, sharedValues);
+ }
+
+ public static double decodeFloat64(java.io.InputStream inputStream, java.util.List<java.lang.Object> sharedValues) throws java.io.IOException {
+ var longBits = org.zwobble.example.types.transient0.HobgoblinTransient0Builtins.decodeInt64(inputStream, sharedValues);
+ return java.lang.Double.longBitsToDouble(longBits);
+ }
+
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);
}
diff --git a/examples/16-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java b/examples/16-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
index 8b2ba3a..1a1d659 100644
--- a/examples/16-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
+++ b/examples/16-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
@@ -23,6 +23,7 @@ import org.zwobble.example.types.data.StructWithBool;
import org.zwobble.example.types.data.StructWithBox;
import org.zwobble.example.types.data.StructWithDifferentSharedTypes;
import org.zwobble.example.types.data.StructWithEnum;
+import org.zwobble.example.types.data.StructWithFloat64;
import org.zwobble.example.types.data.StructWithGenericNative;
import org.zwobble.example.types.data.StructWithGenericStruct;
import org.zwobble.example.types.data.StructWithInt8;
@@ -67,6 +68,18 @@ public class Transient0Tests {
}
@Test
+ public void structWithFloat64() throws IOException {
+ var value = new StructWithFloat64(10, 2.5);
+
+ assertRoundTripEncoding(
+ "StructWithFloat64",
+ value,
+ HobgoblinTransient0Data::encodeStructWithFloat64,
+ HobgoblinTransient0Data::decodeStructWithFloat64
+ );
+ }
+
+ @Test
public void structWithInt8() throws IOException {
var value = new StructWithInt8((byte)10, (byte)25);
diff --git a/examples/16-transient-0/output/rust/src/gen/data.rs b/examples/16-transient-0/output/rust/src/gen/data.rs
index 63cdda5..2b344e4 100644
--- a/examples/16-transient-0/output/rust/src/gen/data.rs
+++ b/examples/16-transient-0/output/rust/src/gen/data.rs
@@ -10,6 +10,12 @@ pub struct StructWithBool {
}
#[derive(Clone, Debug, PartialEq)]
+pub struct StructWithFloat64 {
+ pub a: ::core::primitive::f64,
+ pub b: ::core::primitive::f64,
+}
+
+#[derive(Clone, Debug, PartialEq)]
pub struct StructWithInt8 {
pub a: ::core::primitive::i8,
pub b: ::core::primitive::i8,
diff --git a/examples/16-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/16-transient-0/output/rust/src/gen/data/transient_0.rs
index 0731126..3c40ea2 100644
--- a/examples/16-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/16-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -20,6 +20,18 @@ pub fn decode_struct_with_bool(reader: &mut impl ::std::io::Read, shared_values:
::std::io::Result::Ok(crate::data::StructWithBool { a: a, b: b })
}
+pub fn encode_struct_with_float_64(value: &crate::data::StructWithFloat64, writer: &mut impl ::std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
+ crate::transient_0::encode_float_64(&value.a, writer, shared_values)?;
+ crate::transient_0::encode_float_64(&value.b, writer, shared_values)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_float_64(reader: &mut impl ::std::io::Read, shared_values: &mut ::std::vec::Vec::<::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>>) -> ::std::io::Result::<crate::data::StructWithFloat64> {
+ let a = crate::transient_0::decode_float_64(reader, shared_values)?;
+ let b = crate::transient_0::decode_float_64(reader, shared_values)?;
+ ::std::io::Result::Ok(crate::data::StructWithFloat64 { a: a, b: b })
+}
+
pub fn encode_struct_with_int_8(value: &crate::data::StructWithInt8, writer: &mut impl ::std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
crate::transient_0::encode_int_8(&value.a, writer, shared_values)?;
crate::transient_0::encode_int_8(&value.b, writer, shared_values)?;
diff --git a/examples/16-transient-0/output/rust/src/gen/transient_0.rs b/examples/16-transient-0/output/rust/src/gen/transient_0.rs
index f9538ca..1b1b659 100644
--- a/examples/16-transient-0/output/rust/src/gen/transient_0.rs
+++ b/examples/16-transient-0/output/rust/src/gen/transient_0.rs
@@ -29,6 +29,20 @@ pub fn decode_bool(reader: &mut impl ::std::io::Read, shared_values: &mut ::std:
})
}
+pub fn encode_float_64(value: &::core::primitive::f64, writer: &mut impl ::std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
+ writer.write_all(&value.to_le_bytes())?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_float_64(reader: &mut impl ::std::io::Read, shared_values: &mut ::std::vec::Vec::<::std::sync::Arc::<dyn ::std::any::Any + ::std::marker::Sync + ::std::marker::Send>>) -> ::std::io::Result::<::core::primitive::f64> {
+ let bytes = {
+ let mut bytes = [0; 8];
+ reader.read_exact(&mut bytes)?;
+ bytes
+ };
+ ::std::io::Result::Ok(::core::primitive::f64::from_le_bytes(bytes))
+}
+
pub fn encode_int_8(value: &::core::primitive::i8, writer: &mut impl ::std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
writer.write_all(&value.to_le_bytes())?;
::std::io::Result::Ok(())
diff --git a/examples/16-transient-0/output/rust/src/lib.rs b/examples/16-transient-0/output/rust/src/lib.rs
index 1f78032..ea26e60 100644
--- a/examples/16-transient-0/output/rust/src/lib.rs
+++ b/examples/16-transient-0/output/rust/src/lib.rs
@@ -8,7 +8,7 @@ mod test {
use std::path::PathBuf;
use std::sync::Arc;
use std::collections::HashMap;
- use super::data::{EnumWithVariants, GenericNative, GenericStruct, Native, StructSingleton, StructWithBool, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithGenericNative, StructWithGenericStruct, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithNative, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
+ use super::data::{EnumWithVariants, GenericNative, GenericStruct, Native, StructSingleton, StructWithBool, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithFloat64, StructWithGenericNative, StructWithGenericStruct, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithNative, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
#[test]
fn struct_singleton() {
@@ -35,6 +35,18 @@ mod test {
}
#[test]
+ fn struct_with_float_64() {
+ let value = StructWithFloat64 { a: 10.0, b: 2.5 };
+
+ assert_round_trip_encoding(
+ "StructWithFloat64",
+ value,
+ super::data::transient_0::encode_struct_with_float_64,
+ super::data::transient_0::decode_struct_with_float_64,
+ );
+ }
+
+ #[test]
fn struct_with_int_8() {
let value = StructWithInt8 { a: 10, b: 25 };
diff --git a/examples/16-transient-0/src/data.hob b/examples/16-transient-0/src/data.hob
index ed93768..25fb1be 100644
--- a/examples/16-transient-0/src/data.hob
+++ b/examples/16-transient-0/src/data.hob
@@ -7,6 +7,11 @@ struct StructWithBool {
field b: Bool;
}
+struct StructWithFloat64 {
+ field a: Float64;
+ field b: Float64;
+}
+
struct StructWithInt8 {
field a: Int8;
field b: Int8;