summaryrefslogtreecommitdiff
path: root/examples/12-native-type-generic
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/12-native-type-generic
parent5d41166750e0f05da436bf30c7a642749f7a71c5 (diff)
Add generic struct example without any outputs
Diffstat (limited to 'examples/12-native-type-generic')
-rw-r--r--examples/12-native-type-generic/hobgoblin.json533
-rw-r--r--examples/12-native-type-generic/output/java/.gitignore2
l---------examples/12-native-type-generic/output/java/pom.xml1
-rw-r--r--examples/12-native-type-generic/output/java/src/main/java/org/zwobble/example/types/map/HobgoblinNativeMap.java9
-rw-r--r--examples/12-native-type-generic/output/java/src/test/java/org/zwobble/example/MapTests.java13
-rw-r--r--examples/12-native-type-generic/output/rust/.gitignore1
-rw-r--r--examples/12-native-type-generic/output/rust/Cargo.lock7
-rw-r--r--examples/12-native-type-generic/output/rust/Cargo.toml6
-rw-r--r--examples/12-native-type-generic/output/rust/rust-toolchain.toml2
-rw-r--r--examples/12-native-type-generic/output/rust/src/gen/map.rs6
-rw-r--r--examples/12-native-type-generic/output/rust/src/lib.rs12
-rw-r--r--examples/12-native-type-generic/output/rust/src/map.rs1
-rw-r--r--examples/12-native-type-generic/src/map.hob6
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];
+}