%def name="type(name)">
<%
cname = name
if cname.startswith("const "):
cname = cname[6:]
if cname.endswith("@"):
cname = cname[:-1]
if cname.endswith("&"):
cname = cname[:-1]
cname = cname.strip()
%>
% if cname in data["classmap"]:
${name}
% elif cname in data["enummap"]:
${name}
% else:
${name}
% endif
%def>
<%def name="func(f, link=None)">
${type(f["return"]["type"])}
% if link is not None:
${f["name"]}(
% else:
${f["name"]}(
% endif
% for i, arg in enumerate(f["arguments"]):
${type(arg["type"])} ${arg["name"]}<%
d = ""
if "default" in arg:
d = " = "+arg["default"]
%>${d}${"," if i != len(f["arguments"]) - 1 else ""}
% endfor
) ${"const" if f["const"] else ""}
%def>