Serialize table segment. See "include/loader/serialize.h".
| 8 | |
| 9 | // Serialize table segment. See "include/loader/serialize.h". |
| 10 | Expect<void> |
| 11 | Serializer::serializeSegment(const AST::TableSegment &Seg, |
| 12 | std::vector<uint8_t> &OutVec) const noexcept { |
| 13 | // Table segment: tabletype + expr. |
| 14 | if (Seg.getExpr().getInstrs().size() > 0) { |
| 15 | if (!Conf.hasProposal(Proposal::FunctionReferences)) { |
| 16 | return logNeedProposal(ErrCode::Value::MalformedTable, |
| 17 | Proposal::FunctionReferences, |
| 18 | ASTNodeAttr::Seg_Table); |
| 19 | } |
| 20 | OutVec.push_back(0x40); |
| 21 | OutVec.push_back(0x00); |
| 22 | } |
| 23 | return Expect<void>{} |
| 24 | .and_then([&]() { return serializeType(Seg.getTableType(), OutVec); }) |
| 25 | .and_then([&]() { return serializeExpression(Seg.getExpr(), OutVec); }) |
| 26 | .map_error([](auto E) { |
| 27 | spdlog::error(ErrInfo::InfoAST(ASTNodeAttr::Seg_Table)); |
| 28 | return E; |
| 29 | }); |
| 30 | } |
| 31 | |
| 32 | // Serialize global segment. See "include/loader/serialize.h". |
| 33 | Expect<void> |
nothing calls this directly
no test coverage detected