summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-01 09:24:12 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-01 09:24:12 +0100
commit6b4d2a11537282947dc71a646c168ea1343d6a52 (patch)
tree091de7d0a71dda3779a13f14f221a0751552868e /examples
parent4524a8a16574887bfdb0ee66984709c8158470a6 (diff)
Support Box in transient-0
Diffstat (limited to 'examples')
-rw-r--r--examples/14-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java15
-rw-r--r--examples/14-transient-0/output/rust/src/gen/data.rs5
-rw-r--r--examples/14-transient-0/output/rust/src/gen/data/transient_0.rs10
-rw-r--r--examples/14-transient-0/output/rust/src/lib.rs16
-rw-r--r--examples/14-transient-0/src/data.hob4
5 files changed, 49 insertions, 1 deletions
diff --git a/examples/14-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java b/examples/14-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
index 8161920..6732f72 100644
--- a/examples/14-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
+++ b/examples/14-transient-0/output/java/src/test/java/org/zwobble/example/Transient0Tests.java
@@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test;
import org.zwobble.example.types.data.EnumWithVariants;
import org.zwobble.example.types.data.StructSingleton;
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.StructWithInt8;
@@ -257,6 +258,20 @@ public class Transient0Tests {
}
@Test
+ public void structWithBox() throws IOException {
+ var value = new StructWithBox(
+ new StructWithInt32(10, 25)
+ );
+
+ assertRoundTripEncoding(
+ "StructWithBox",
+ value,
+ HobgoblinTransient0Data::encodeStructWithBox,
+ HobgoblinTransient0Data::decodeStructWithBox
+ );
+ }
+
+ @Test
public void structWithListOfShared() throws IOException {
var a = new StructWithInt32(10, 25);
var b = new StructWithInt32(42, 47);
diff --git a/examples/14-transient-0/output/rust/src/gen/data.rs b/examples/14-transient-0/output/rust/src/gen/data.rs
index 77bcbe8..d4847ec 100644
--- a/examples/14-transient-0/output/rust/src/gen/data.rs
+++ b/examples/14-transient-0/output/rust/src/gen/data.rs
@@ -117,6 +117,11 @@ pub struct StructWithSum {
}
#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct StructWithBox {
+ pub inner: ::std::boxed::Box::<crate::data::StructWithInt32>,
+}
+
+#[derive(Clone, Debug, Hash, PartialEq)]
pub struct StructWithListOfShared {
pub inner: ::std::vec::Vec::<::std::sync::Arc::<crate::data::StructWithInt32>>,
}
diff --git a/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
index f2bf149..0c8efd3 100644
--- a/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
+++ b/examples/14-transient-0/output/rust/src/gen/data/transient_0.rs
@@ -264,6 +264,16 @@ pub fn decode_struct_with_sum(reader: &mut impl std::io::Read, shared_values: &m
::std::io::Result::Ok(crate::data::StructWithSum { inner: inner, b: b })
}
+pub fn encode_struct_with_box(value: &crate::data::StructWithBox, writer: &mut impl std::io::Write, shared_values: &mut ::std::collections::HashMap::<::core::primitive::usize, ::core::primitive::i64>) -> ::std::io::Result::<()> {
+ crate::data::transient_0::encode_struct_with_int_32((&value.inner).as_ref(), writer, shared_values)?;
+ ::std::io::Result::Ok(())
+}
+
+pub fn decode_struct_with_box(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::StructWithBox> {
+ let inner = ::std::boxed::Box::new(crate::data::transient_0::decode_struct_with_int_32(reader, shared_values)?);
+ ::std::io::Result::Ok(crate::data::StructWithBox { inner: inner })
+}
+
pub fn encode_struct_with_list_of_shared(value: &crate::data::StructWithListOfShared, 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_64(&(((&value.inner).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer, shared_values)?;
diff --git a/examples/14-transient-0/output/rust/src/lib.rs b/examples/14-transient-0/output/rust/src/lib.rs
index df50cae..f0f6e24 100644
--- a/examples/14-transient-0/output/rust/src/lib.rs
+++ b/examples/14-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, StructSingleton, StructWithBool, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
+ use super::data::{EnumWithVariants, StructSingleton, StructWithBool, StructWithBox, StructWithDifferentSharedTypes, StructWithEnum, StructWithInt8, StructWithInt32, StructWithInt64, StructWithList, StructWithListOfShared, StructWithOption, StructWithSharedSumAndVariant, StructWithString, StructWithStruct, StructWithSum, SumWithBoxedVariants, SumWithVariants, VariantOne, VariantTwo };
#[test]
fn struct_singleton() {
@@ -229,6 +229,20 @@ mod test {
}
#[test]
+ fn struct_with_box() {
+ let value = StructWithBox {
+ inner: Box::new(StructWithInt32 { a: 10, b: 25 }),
+ };
+
+ assert_round_trip_encoding(
+ "StructWithBox",
+ value,
+ super::data::transient_0::encode_struct_with_box,
+ super::data::transient_0::decode_struct_with_box,
+ );
+ }
+
+ #[test]
fn struct_with_list_of_shared() {
let a = Arc::new(StructWithInt32 { a: 10, b: 25 });
let b = Arc::new(StructWithInt32 { a: 42, b: 47 });
diff --git a/examples/14-transient-0/src/data.hob b/examples/14-transient-0/src/data.hob
index 0744b79..2bcc6be 100644
--- a/examples/14-transient-0/src/data.hob
+++ b/examples/14-transient-0/src/data.hob
@@ -76,6 +76,10 @@ struct StructWithSum {
field b: Int32;
}
+struct StructWithBox {
+ field inner: Box[StructWithInt32];
+}
+
struct StructWithListOfShared {
field inner: List[Shared[StructWithInt32]];
}