aboutsummaryrefslogtreecommitdiff
path: root/tools/lxdrgen-c.awk
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2023-07-07 12:25:14 +0200
committerPřemysl Eric Janouch <p@janouch.name>2023-07-07 16:43:52 +0200
commit2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c (patch)
tree83e3f3c9cd4b4200946ec2428672cecfd6d3d311 /tools/lxdrgen-c.awk
parentf78f8a70f1753d687cae4a23659995b65e91fb3e (diff)
downloadliberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.tar.gz
liberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.tar.xz
liberty-2edc9c6fd10e34ca1da0d25d3ceb9b67a6b9c73c.zip
Add a C++ backend for LibertyXDR
Also change the C backend so that it also de/serializes unions without any other fields besides the tag.
Diffstat (limited to 'tools/lxdrgen-c.awk')
-rw-r--r--tools/lxdrgen-c.awk6
1 files changed, 3 insertions, 3 deletions
diff --git a/tools/lxdrgen-c.awk b/tools/lxdrgen-c.awk
index e898aae..0ee660c 100644
--- a/tools/lxdrgen-c.awk
+++ b/tools/lxdrgen-c.awk
@@ -222,7 +222,7 @@ function codegen_struct(name, cg, ctype, funcname) {
delete cg[i]
}
-function codegen_union_tag(d, cg) {
+function codegen_union_tag(name, d, cg) {
cg["tagtype"] = d["type"]
cg["tagname"] = d["name"]
append(cg, "fields", "\t" CodegenCType[d["type"]] " " d["name"] ";\n")
@@ -281,7 +281,7 @@ function codegen_union(name, cg, exhaustive, f, ctype, funcname) {
CodegenDispose[name] = "\t" funcname "(&%s);\n"
}
- if (cg["serialize"]) {
+ {
funcname = PrefixLower cameltosnake(name) "_serialize"
print ""
print "static bool\n" \
@@ -299,7 +299,7 @@ function codegen_union(name, cg, exhaustive, f, ctype, funcname) {
CodegenSerialize[name] = "\tif (!" funcname "(&%s, w))\n" \
"\t\treturn false;\n"
}
- if (cg["deserialize"]) {
+ {
funcname = PrefixLower cameltosnake(name) "_deserialize"
print ""
print "static bool\n" \