mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 04:12:36 -03:00
rpc: Add RPCHelpMan::IsValidNumArgs()
This commit is contained in:
parent
f9775a8655
commit
fa05626ca7
2 changed files with 28 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2018 The Bitcoin Core developers
|
// Copyright (c) 2017-2019 The Bitcoin Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -315,6 +315,17 @@ std::string RPCExamples::ToDescriptionString() const
|
||||||
return m_examples.empty() ? m_examples : "\nExamples:\n" + m_examples;
|
return m_examples.empty() ? m_examples : "\nExamples:\n" + m_examples;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RPCHelpMan::IsValidNumArgs(size_t num_args) const
|
||||||
|
{
|
||||||
|
size_t num_required_args = 0;
|
||||||
|
for (size_t n = m_args.size(); n > 0; --n) {
|
||||||
|
if (!m_args.at(n - 1).IsOptional()) {
|
||||||
|
num_required_args = n;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return num_required_args <= num_args && num_args <= m_args.size();
|
||||||
|
}
|
||||||
std::string RPCHelpMan::ToString() const
|
std::string RPCHelpMan::ToString() const
|
||||||
{
|
{
|
||||||
std::string ret;
|
std::string ret;
|
||||||
|
@ -323,12 +334,7 @@ std::string RPCHelpMan::ToString() const
|
||||||
ret += m_name;
|
ret += m_name;
|
||||||
bool was_optional{false};
|
bool was_optional{false};
|
||||||
for (const auto& arg : m_args) {
|
for (const auto& arg : m_args) {
|
||||||
bool optional;
|
const bool optional = arg.IsOptional();
|
||||||
if (arg.m_fallback.which() == 1) {
|
|
||||||
optional = true;
|
|
||||||
} else {
|
|
||||||
optional = RPCArg::Optional::NO != boost::get<RPCArg::Optional>(arg.m_fallback);
|
|
||||||
}
|
|
||||||
ret += " ";
|
ret += " ";
|
||||||
if (optional) {
|
if (optional) {
|
||||||
if (!was_optional) ret += "( ";
|
if (!was_optional) ret += "( ";
|
||||||
|
@ -370,6 +376,15 @@ std::string RPCHelpMan::ToString() const
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RPCArg::IsOptional() const
|
||||||
|
{
|
||||||
|
if (m_fallback.which() == 1) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return RPCArg::Optional::NO != boost::get<RPCArg::Optional>(m_fallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string RPCArg::ToDescriptionString() const
|
std::string RPCArg::ToDescriptionString() const
|
||||||
{
|
{
|
||||||
std::string ret;
|
std::string ret;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2018 The Bitcoin Core developers
|
// Copyright (c) 2017-2019 The Bitcoin Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ struct RPCArg {
|
||||||
/** Required arg */
|
/** Required arg */
|
||||||
NO,
|
NO,
|
||||||
/**
|
/**
|
||||||
* Optinal arg that is a named argument and has a default value of
|
* Optional arg that is a named argument and has a default value of
|
||||||
* `null`. When possible, the default value should be specified.
|
* `null`. When possible, the default value should be specified.
|
||||||
*/
|
*/
|
||||||
OMITTED_NAMED_ARG,
|
OMITTED_NAMED_ARG,
|
||||||
|
@ -110,6 +110,8 @@ struct RPCArg {
|
||||||
assert(type == Type::ARR || type == Type::OBJ);
|
assert(type == Type::ARR || type == Type::OBJ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsOptional() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the type string of the argument.
|
* Return the type string of the argument.
|
||||||
* Set oneline to allow it to be overridden by a custom oneline type string (m_oneline_description).
|
* Set oneline to allow it to be overridden by a custom oneline type string (m_oneline_description).
|
||||||
|
@ -185,6 +187,8 @@ public:
|
||||||
RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples);
|
RPCHelpMan(std::string name, std::string description, std::vector<RPCArg> args, RPCResults results, RPCExamples examples);
|
||||||
|
|
||||||
std::string ToString() const;
|
std::string ToString() const;
|
||||||
|
/** If the supplied number of args is neither too small nor too high */
|
||||||
|
bool IsValidNumArgs(size_t num_args) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const std::string m_name;
|
const std::string m_name;
|
||||||
|
|
Loading…
Reference in a new issue