[PATCH 3/5] Wrap function argument type name emissions in getname
[Thread Prev] | [Thread Next]
- Subject: [PATCH 3/5] Wrap function argument type name emissions in getname
- From: "S. Gilles" <sgilles@xxxxxxx>
- Reply-to: myrddin-dev@xxxxxxxxxxxxxx
- Date: Sun, 10 May 2020 20:38:05 -0400
- To: "myrddin-dev" <myrddin-dev@xxxxxxxxxxxxxx>
- Cc: "S. Gilles" <sgilles@xxxxxxx>
This strips prefixes from a few more places that they should be
stripped.
---
myrglue.myr | 60 ++++++++++++++++++++++++++---------------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/myrglue.myr b/myrglue.myr
index c9cd975..0a0a5be 100644
--- a/myrglue.myr
+++ b/myrglue.myr
@@ -29,7 +29,7 @@ const emitmyrproto = {f, ctx
name = getname(ctx, name)
name = pfxstrip(ctx, name)
std.htput(defnames, name, void)
- protostruct(f, name, st)
+ protostruct(ctx, f, name, st)
;;
bio.put(f, "\n")
for (name, en) : ctx.enums
@@ -43,13 +43,13 @@ const emitmyrproto = {f, ctx
name = getname(ctx, name)
if !std.hthas(defnames, name)
std.htput(defnames, name, void)
- protodef(f, name, &td, defnames)
+ protodef(ctx, f, name, &td, defnames)
;;
;;
bio.put(f, "\n")
for (name, fn) : ctx.funcs
name = pfxstrip(ctx, name)
- protofunc(f, name, fn)
+ protofunc(ctx, f, name, fn)
;;
for name : ctx.fwstructs
@@ -66,7 +66,7 @@ const emitmyrproto = {f, ctx
for (i, s) : iter.byenum(anonstructs)
n = std.bfmt(buf[:], "_anon{}", i)
- protostruct(f, n, s)
+ protostruct(ctx, f, n, s)
;;
bio.put(f, ";;\n")
@@ -76,7 +76,7 @@ const emitmyrproto = {f, ctx
const emitmyrglue = {f, ctx
}
-const protostruct = {f, name, ty : cb.cstruct#
+const protostruct = {ctx, f, name, ty : cb.cstruct#
var nanon, pfx
nanon = 0
@@ -89,7 +89,7 @@ const protostruct = {f, name, ty : cb.cstruct#
bio.put(f, "\t\t{}{} : ", pfx, n)
| `std.None: bio.put(f, "\t\t_a{} : ", nanon++)
;;
- myrtype(f, &mty)
+ myrtype(ctx, f, &mty)
bio.put(f, "\n")
;;
bio.put(f, "\t;;\n")
@@ -110,7 +110,7 @@ const protoenum = {f, name, ty
bio.put(f, "\n")
}
-const protodef = {f, name, ty, defnames
+const protodef = {ctx, f, name, ty, defnames
var pfx
pfx = myrname(name) ? "_" : ""
@@ -121,25 +121,25 @@ const protodef = {f, name, ty, defnames
| (`Tag t, true):
bio.put(f, "\ttype {} = void /* incomplete: {} */", name, name)
| (`Body b, true):
- protostruct(f, name, b)
+ protostruct(ctx, f, name, b)
| (_, false):
bio.put(f, "\ttype {}{} = ", pfx, name)
- myrtype(f, ty)
+ myrtype(ctx, f, ty)
;;
| _:
bio.put(f, "\ttype {}{} = ", pfx, name)
- myrtype(f, ty)
+ myrtype(ctx, f, ty)
;;
bio.put(f, "\n")
}
-const protofunc = {f, name, fn
+const protofunc = {ctx, f, name, fn
var pfx
pfx = (myrname(name) ? "_" : "")
if abiclean(fn)
bio.put(f, "\textern const {}{}\t: (", pfx, name)
- args(f, fn)
+ args(ctx, f, fn)
bio.put(f, ")\n")
else
std.fatal("abi-dirty functions not yet supported\n")
@@ -150,7 +150,7 @@ const abiclean = {fn
-> true
}
-const args = {f, fn
+const args = {ctx, f, fn
var sep, pfx
var narg
@@ -161,18 +161,18 @@ const args = {f, fn
| (`std.Some n, ty):
pfx = (myrname(n) ? "_" : "")
bio.put(f, "{}{}{} : ", sep, pfx, n)
- myrtype(f, &ty)
+ myrtype(ctx, f, &ty)
| (`std.None, ty):
bio.put(f, "{}a{} : ", sep, narg++)
- myrtype(f, &ty)
+ myrtype(ctx, f, &ty)
;;
sep = ", "
;;
bio.put(f, " -> ")
- myrtype(f, &fn.rty)
+ myrtype(ctx, f, &fn.rty)
}
-const myrtype : (f : bio.file#, ty : cb.ctype# -> void)= {f, ty
+const myrtype : (ctx : bindctx#, f : bio.file#, ty : cb.ctype# -> void)= {ctx, f, ty
match ty
| &`cb.Tyvoid: bio.write(f, "void")
| &`cb.Tylong: bio.write(f, "int64")
@@ -185,36 +185,36 @@ const myrtype : (f : bio.file#, ty : cb.ctype# -> void)= {f, ty
| &`cb.Tyuint: bio.write(f, "uint")
| &`cb.Tyushort: bio.write(f, "uint16")
| &`cb.Tyuchar: bio.write(f, "byte")
- | &`cb.Typtr ct: myrptr(f, ct)
- | &`cb.Tyarr ca: myrarr(f, ca)
- | &`cb.Tystruct st: myrstruct(f, st)
- | &`cb.Tyenum e: myrenum(f, e)
+ | &`cb.Typtr ct: myrptr(ctx, f, ct)
+ | &`cb.Tyarr ca: myrarr(ctx, f, ca)
+ | &`cb.Tystruct st: myrstruct(ctx, f, st)
+ | &`cb.Tyenum e: myrenum(ctx, f, e)
| &`cb.Tyfunc cfunc: bio.put(f, "cfunc")
- | &`cb.Tydefn cdefn: bio.put(f, "{}", cdefn.name)
+ | &`cb.Tydefn cdefn: bio.put(f, "{}", getname(ctx, cdefn.name))
;;
}
-const myrptr = {f, ct
- myrtype(f, ct);
+const myrptr = {ctx, f, ct
+ myrtype(ctx, f, ct);
bio.write(f, "#")
}
-const myrarr = {f, ca
- myrtype(f, &ca.subty);
+const myrarr = {ctx, f, ca
+ myrtype(ctx, f, &ca.subty);
match ca.len
| `std.Some n: bio.put(f, "[{}]", n)
| `std.None: bio.put(f, "[...]")
;;
}
-const myrstruct = {f, s
+const myrstruct = {ctx, f, s
match s
| &`cb.Tag n:
bio.put(f, "void /* incomplete: {} */", n)
| &`cb.Body d:
match d.tag
| `std.Some n:
- bio.put(f, "{}", n)
+ bio.put(f, "{}", getname(ctx, n))
| `std.None:
bio.put(f, "_anon{}", anonstructs.len)
std.slpush(&anonstructs, d)
@@ -222,13 +222,13 @@ const myrstruct = {f, s
;;
}
-const myrenum = {f, e
+const myrenum = {ctx, f, e
match e
| &`cb.Tag n:
bio.put(f, "{}", n)
| &`cb.Body d:
match d.tag
- | `std.Some n: bio.put(f, "{}", n)
+ | `std.Some n: bio.put(f, "{}", getname(ctx, n))
| `std.None: bio.put(f, "int")
;;
;;
--
2.26.2
| [PATCH 0/5] mcbind patches, round 2 | "S. Gilles" <sgilles@xxxxxxx> |
- Prev by Date: [PATCH 2/5] Mirror prefix-stripping from myrglue in cglue
- Next by Date: [PATCH 5/5] Handle one case of returning struct pointers
- Previous by thread: [PATCH 2/5] Mirror prefix-stripping from myrglue in cglue
- Next by thread: [PATCH 5/5] Handle one case of returning struct pointers
- Index(es):