Eigenstate: myrddin-dev mailing list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 5/5] Handle one case of returning struct pointers


---
 cglue.myr | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/cglue.myr b/cglue.myr
index fe9a512..da6d407 100644
--- a/cglue.myr
+++ b/cglue.myr
@@ -86,7 +86,7 @@ const declare = {buf, name, ty, nptr
 	| `Tydefn def:	-> std.bfmt(buf, "{} {}{}{}{}", def.name, s, p, name, e)
 	| `Typtr sub:	-> declare(buf, name, sub, nptr + 1)
 	| `Tyarr arr:	-> declarearray(buf, name, arr, nptr)
-	| `Tystruct st:	-> declarestruct(buf, name, st, nptr)
+	| `Tystruct st: -> declarestruct(buf, name, st, s, p, e)
 	| `Tyenum en:	-> declareenum(buf, name, en, nptr)
 	| `Tyfunc fn:	-> declarefunc(buf, name, fn, nptr)
 	;;
@@ -102,8 +102,15 @@ const declarearray = {buf, name, arr, nptr
 	-> declare(buf, n, &arr.subty, nptr)
 }
 
-const declarestruct = {buf, name, st, nptr
-	-> "struct"
+const declarestruct = {buf, name, st, s, p, e
+	match st
+	| &`Body b:
+		match b.tag
+		| `std.Some tag: -> std.bfmt(buf, "struct {} {}{}{}{}", tag, s, p, name, e)
+		| _: -> "struct"
+		;;
+	| _: -> "struct"
+	;;
 }
 
 const declareenum = {buf, name, e, nptr
-- 
2.26.2


References:
[PATCH 0/5] mcbind patches, round 2"S. Gilles" <sgilles@xxxxxxx>