| 684 | |
| 685 | using CheckFn = void(const RPCArg&); |
| 686 | static const UniValue* DetailMaybeArg(CheckFn* check, const std::vector<RPCArg>& params, const JSONRPCRequest* req, size_t i) |
| 687 | { |
| 688 | CHECK_NONFATAL(i < params.size()); |
| 689 | const UniValue& arg{CHECK_NONFATAL(req)->params[i]}; |
| 690 | const RPCArg& param{params.at(i)}; |
| 691 | if (check) check(param); |
| 692 | |
| 693 | if (!arg.isNull()) return &arg; |
| 694 | if (!std::holds_alternative<RPCArg::Default>(param.m_fallback)) return nullptr; |
| 695 | return &std::get<RPCArg::Default>(param.m_fallback); |
| 696 | } |
| 697 | |
| 698 | static void CheckRequiredOrDefault(const RPCArg& param) |
| 699 | { |