Changeset View
Changeset View
Standalone View
Standalone View
src/rpc/util.cpp
Show First 20 Lines • Show All 331 Lines • ▼ Show 20 Lines | void Push(const RPCArg &arg, const size_t current_indent = 5, | ||||
// Dictionary keys must have a name | // Dictionary keys must have a name | ||||
const bool push_name{outer_type == OuterType::OBJ}; | const bool push_name{outer_type == OuterType::OBJ}; | ||||
switch (arg.m_type) { | switch (arg.m_type) { | ||||
case RPCArg::Type::STR_HEX: | case RPCArg::Type::STR_HEX: | ||||
case RPCArg::Type::STR: | case RPCArg::Type::STR: | ||||
case RPCArg::Type::NUM: | case RPCArg::Type::NUM: | ||||
case RPCArg::Type::AMOUNT: | case RPCArg::Type::AMOUNT: | ||||
case RPCArg::Type::RANGE: | |||||
case RPCArg::Type::BOOL: { | case RPCArg::Type::BOOL: { | ||||
// Nothing more to do for non-recursive types on first recursion | // Nothing more to do for non-recursive types on first recursion | ||||
if (outer_type == OuterType::NAMED_ARG) { | if (outer_type == OuterType::NAMED_ARG) { | ||||
return; | return; | ||||
} | } | ||||
auto left = indent; | auto left = indent; | ||||
if (arg.m_type_str.size() != 0 && push_name) { | if (arg.m_type_str.size() != 0 && push_name) { | ||||
left += "\"" + arg.m_name + "\": " + arg.m_type_str.at(0); | left += "\"" + arg.m_name + "\": " + arg.m_type_str.at(0); | ||||
▲ Show 20 Lines • Show All 213 Lines • ▼ Show 20 Lines | if (m_type_str.size() != 0) { | ||||
case Type::NUM: { | case Type::NUM: { | ||||
ret += "numeric"; | ret += "numeric"; | ||||
break; | break; | ||||
} | } | ||||
case Type::AMOUNT: { | case Type::AMOUNT: { | ||||
ret += "numeric or string"; | ret += "numeric or string"; | ||||
break; | break; | ||||
} | } | ||||
case Type::RANGE: { | |||||
ret += "numeric or array"; | |||||
break; | |||||
} | |||||
case Type::BOOL: { | case Type::BOOL: { | ||||
ret += "boolean"; | ret += "boolean"; | ||||
break; | break; | ||||
} | } | ||||
case Type::OBJ: | case Type::OBJ: | ||||
case Type::OBJ_USER_KEYS: { | case Type::OBJ_USER_KEYS: { | ||||
ret += "json object"; | ret += "json object"; | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | std::string RPCArg::ToStringObj(const bool oneline) const { | ||||
} | } | ||||
switch (m_type) { | switch (m_type) { | ||||
case Type::STR: | case Type::STR: | ||||
return res + "\"str\""; | return res + "\"str\""; | ||||
case Type::STR_HEX: | case Type::STR_HEX: | ||||
return res + "\"hex\""; | return res + "\"hex\""; | ||||
case Type::NUM: | case Type::NUM: | ||||
return res + "n"; | return res + "n"; | ||||
case Type::RANGE: | |||||
return res + "n or [n,n]"; | |||||
case Type::AMOUNT: | case Type::AMOUNT: | ||||
return res + "amount"; | return res + "amount"; | ||||
case Type::BOOL: | case Type::BOOL: | ||||
return res + "bool"; | return res + "bool"; | ||||
case Type::ARR: | case Type::ARR: | ||||
res += "["; | res += "["; | ||||
for (const auto &i : m_inner) { | for (const auto &i : m_inner) { | ||||
res += i.ToString(oneline) + ","; | res += i.ToString(oneline) + ","; | ||||
Show All 15 Lines | std::string RPCArg::ToString(const bool oneline) const { | ||||
} | } | ||||
switch (m_type) { | switch (m_type) { | ||||
case Type::STR_HEX: | case Type::STR_HEX: | ||||
case Type::STR: { | case Type::STR: { | ||||
return "\"" + m_name + "\""; | return "\"" + m_name + "\""; | ||||
} | } | ||||
case Type::NUM: | case Type::NUM: | ||||
case Type::RANGE: | |||||
case Type::AMOUNT: | case Type::AMOUNT: | ||||
case Type::BOOL: { | case Type::BOOL: { | ||||
return m_name; | return m_name; | ||||
} | } | ||||
case Type::OBJ: | case Type::OBJ: | ||||
case Type::OBJ_USER_KEYS: { | case Type::OBJ_USER_KEYS: { | ||||
const std::string res = Join(m_inner, ",", [&](const RPCArg &i) { | const std::string res = Join(m_inner, ",", [&](const RPCArg &i) { | ||||
return i.ToStringObj(oneline); | return i.ToStringObj(oneline); | ||||
Show All 37 Lines |