${node.retval.type.ctype} ${node.symbol} ${node.parent.ctype} * self % for arg in node.parameters: % if arg.type.ctype == '': % else: ${arg.type.ctype} ${arg.argname} % endif % endfor ${node.symbol} ${node.retval.type.ctype} ${node.symbol} (${node.parent.ctype} *self\ % if len(node.parameters) == 0: ); % else: , % endif % for arg, ix in zip(node.parameters, range(len(node.parameters))): ${' ' * (len(node.retval.type.ctype) + len(node.symbol) + 3)}\ % if arg.type.ctype == '': ...\ % else: ${arg.type.ctype} ${arg.argname}\ % endif % if ix == len(node.parameters) - 1: ); % else: , %endif % endfor ${format(node.doc)}