diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-10 10:19:49 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-10 10:19:49 +0100 |
| commit | 5113f2157c5aa257ad7ebf555cb6a551701d169a (patch) | |
| tree | 8ddaee09f6c43b0529b2203f9e662a028fb5fcc0 /examples/12-native-type-generic | |
| parent | 5d41166750e0f05da436bf30c7a642749f7a71c5 (diff) | |
Add generic struct example without any outputs
Diffstat (limited to 'examples/12-native-type-generic')
13 files changed, 99 insertions, 0 deletions
diff --git a/examples/12-native-type-generic/hobgoblin.json5 b/examples/12-native-type-generic/hobgoblin.json5 new file mode 100644 index 0000000..ca81993 --- /dev/null +++ b/examples/12-native-type-generic/hobgoblin.json5 @@ -0,0 +1,33 @@ +{ + outputs: { + langs: { + java: { + packageName: "org.zwobble.example.types", + nativeTypes: [ + { + hobgoblin: "map.NativeMap", + java: "java.util.Map", + }, + ], + }, + rust: { + nativeTypes: [ + { + hobgoblin: "map.NativeMap", + rust: "::std::collections::BTreeMap", + }, + ], + }, + }, + generators: [ + { + generator: "java-types", + path: "output/java/src/gen/java", + }, + { + generator: "rust-types", + path: "output/rust/src/gen", + }, + ], + }, +} diff --git a/examples/12-native-type-generic/output/java/.gitignore b/examples/12-native-type-generic/output/java/.gitignore new file mode 100644 index 0000000..ff511d4 --- /dev/null +++ b/examples/12-native-type-generic/output/java/.gitignore @@ -0,0 +1,2 @@ +/src/gen/ +/target/ diff --git a/examples/12-native-type-generic/output/java/pom.xml b/examples/12-native-type-generic/output/java/pom.xml new file mode 120000 index 0000000..445fa65 --- /dev/null +++ b/examples/12-native-type-generic/output/java/pom.xml @@ -0,0 +1 @@ +../../../templates/java-junit/pom.xml
\ No newline at end of file diff --git a/examples/12-native-type-generic/output/java/src/main/java/org/zwobble/example/types/map/HobgoblinNativeMap.java b/examples/12-native-type-generic/output/java/src/main/java/org/zwobble/example/types/map/HobgoblinNativeMap.java new file mode 100644 index 0000000..309ba0b --- /dev/null +++ b/examples/12-native-type-generic/output/java/src/main/java/org/zwobble/example/types/map/HobgoblinNativeMap.java @@ -0,0 +1,9 @@ +package org.zwobble.example.types.map; + +public class HobgoblinNativeMap { + private HobgoblinNativeMap() {} + + public static <K, V> java.util.Map<K, V> arbitraryNativeMap() { + return new java.util.HashMap<>(); + } +} diff --git a/examples/12-native-type-generic/output/java/src/test/java/org/zwobble/example/MapTests.java b/examples/12-native-type-generic/output/java/src/test/java/org/zwobble/example/MapTests.java new file mode 100644 index 0000000..5b6a764 --- /dev/null +++ b/examples/12-native-type-generic/output/java/src/test/java/org/zwobble/example/MapTests.java @@ -0,0 +1,13 @@ +package org.zwobble.example; + +import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import org.zwobble.example.types.map.X; + +public class MapTests { + @Test + public void canUseGenericNativeTypes() { + var x = new X(Map.ofEntries(Map.entry("a", 1), Map.entry("b", 2))); + } +} diff --git a/examples/12-native-type-generic/output/rust/.gitignore b/examples/12-native-type-generic/output/rust/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/examples/12-native-type-generic/output/rust/.gitignore @@ -0,0 +1 @@ +/target diff --git a/examples/12-native-type-generic/output/rust/Cargo.lock b/examples/12-native-type-generic/output/rust/Cargo.lock new file mode 100644 index 0000000..9dc6e3e --- /dev/null +++ b/examples/12-native-type-generic/output/rust/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "example" +version = "0.1.0" diff --git a/examples/12-native-type-generic/output/rust/Cargo.toml b/examples/12-native-type-generic/output/rust/Cargo.toml new file mode 100644 index 0000000..5d4c622 --- /dev/null +++ b/examples/12-native-type-generic/output/rust/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "example" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/examples/12-native-type-generic/output/rust/rust-toolchain.toml b/examples/12-native-type-generic/output/rust/rust-toolchain.toml new file mode 100644 index 0000000..4fedb95 --- /dev/null +++ b/examples/12-native-type-generic/output/rust/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.96" diff --git a/examples/12-native-type-generic/output/rust/src/gen/map.rs b/examples/12-native-type-generic/output/rust/src/gen/map.rs new file mode 100644 index 0000000..5d9c837 --- /dev/null +++ b/examples/12-native-type-generic/output/rust/src/gen/map.rs @@ -0,0 +1,6 @@ +// Generated by hobgoblin. + +#[derive(Clone, Debug, Hash, PartialEq)] +pub struct X { + pub map: ::std::collections::BTreeMap::<::std::string::String, ::core::primitive::i32>, +} diff --git a/examples/12-native-type-generic/output/rust/src/lib.rs b/examples/12-native-type-generic/output/rust/src/lib.rs new file mode 100644 index 0000000..b0adf47 --- /dev/null +++ b/examples/12-native-type-generic/output/rust/src/lib.rs @@ -0,0 +1,12 @@ +mod map; + +#[cfg(test)] +mod test { + use std::collections::BTreeMap; + use super::map::X; + + #[test] + fn can_use_generic_native_types() { + let x = X { map: BTreeMap::from([("a".to_string(), 1), ("b".to_string(), 2)]) }; + } +} diff --git a/examples/12-native-type-generic/output/rust/src/map.rs b/examples/12-native-type-generic/output/rust/src/map.rs new file mode 100644 index 0000000..3dd0a72 --- /dev/null +++ b/examples/12-native-type-generic/output/rust/src/map.rs @@ -0,0 +1 @@ +include!("gen/map.rs"); diff --git a/examples/12-native-type-generic/src/map.hob b/examples/12-native-type-generic/src/map.hob new file mode 100644 index 0000000..0118889 --- /dev/null +++ b/examples/12-native-type-generic/src/map.hob @@ -0,0 +1,6 @@ +native NativeMap[K, V] { +} + +struct X { + field map: NativeMap[String, Int32]; +} |
