static bool RenderSignature(WasmRenderContext& c, const AstSig& sig, const AstNameVector* maybeLocals = nullptr) { uint32_t paramsNum = sig.args().length(); if (maybeLocals) { for (uint32_t i = 0; i < paramsNum; i++) { if (!c.buffer.append(" (param ")) return false; const AstName& name = (*maybeLocals)[i]; if (!name.empty()) { if (!RenderName(c, name)) return false; if (!c.buffer.append(" ")) return false; } ValType arg = sig.args()[i]; if (!RenderValType(c, arg)) return false; if (!c.buffer.append(")")) return false; } } else if (paramsNum > 0) { if (!c.buffer.append(" (param")) return false; for (uint32_t i = 0; i < paramsNum; i++) { if (!c.buffer.append(" ")) return false; ValType arg = sig.args()[i]; if (!RenderValType(c, arg)) return false; } if (!c.buffer.append(")")) return false; } if (sig.ret() != ExprType::Void) { if (!c.buffer.append(" (result ")) return false; if (!RenderExprType(c, sig.ret())) return false; if (!c.buffer.append(")")) return false; } return true; }
static bool AstDecodeCallReturn(AstDecodeContext& c, const AstSig& sig) { return c.iter().readCallReturn(sig.ret()); }