summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/10-transient-0/output/rust/src/gen/transient_0.rs9
-rw-r--r--examples/10-transient-0/output/rust/src/lib.rs11
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java18
3 files changed, 20 insertions, 18 deletions
diff --git a/examples/10-transient-0/output/rust/src/gen/transient_0.rs b/examples/10-transient-0/output/rust/src/gen/transient_0.rs
index 63b2367..ad47d30 100644
--- a/examples/10-transient-0/output/rust/src/gen/transient_0.rs
+++ b/examples/10-transient-0/output/rust/src/gen/transient_0.rs
@@ -22,11 +22,16 @@ pub fn decode_int_32(reader: &mut impl std::io::Read) -> ::core::primitive::i32
}
pub fn encode_int_64(value: &::core::primitive::i64, writer: &mut impl std::io::Write) {
- todo!();
+ writer.write_all(&value.to_le_bytes());
}
pub fn decode_int_64(reader: &mut impl std::io::Read) -> ::core::primitive::i64 {
- todo!()
+ let bytes = {
+ let mut bytes = [0; 8];
+ reader.read_exact(&mut bytes);
+ bytes
+ };
+ ::core::primitive::i64::from_le_bytes(bytes)
}
pub fn encode_string(value: &::std::string::String, writer: &mut impl std::io::Write) {
diff --git a/examples/10-transient-0/output/rust/src/lib.rs b/examples/10-transient-0/output/rust/src/lib.rs
index 56be8ca..9b53c0e 100644
--- a/examples/10-transient-0/output/rust/src/lib.rs
+++ b/examples/10-transient-0/output/rust/src/lib.rs
@@ -18,6 +18,17 @@ mod test {
);
}
+ #[test]
+ fn struct_with_int_64() {
+ let value = StructWithInt64 { a: 10, b: 25 };
+
+ assert_round_trip_encoding(
+ value,
+ super::data::transient_0::encode_struct_with_int_64,
+ super::data::transient_0::decode_struct_with_int_64,
+ );
+ }
+
fn assert_round_trip_encoding<T: std::cmp::PartialEq + std::fmt::Debug>(
value: T,
encode: impl Fn(&T, &mut Cursor<Vec<u8>>),
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
index 9e4ae50..02b0ae9 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
@@ -113,25 +113,11 @@ public class RustTransient0Generator implements Generator {
}
private RustItem generateEncodeInt64Function() {
- return generateEncodeFunction(
- NativeTypes.INT_64,
- new RustBlockExpression(
- List.of(
- new RustExpressionStatement(generateTodo())
- ),
- Optional.empty()
- )
- );
+ return generateEncodeIntFunction(NativeTypes.INT_64);
}
private RustItem generateDecodeInt64Function() {
- return generateDecodeFunction(
- NativeTypes.INT_64,
- new RustBlockExpression(
- List.of(),
- Optional.of(generateTodo())
- )
- );
+ return generateDecodeIntFunction(NativeTypes.INT_64, 64);
}
private RustItem generateEncodeIntFunction(SimpleNativeType type) {