4
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
5
6
6
#include < rpc/client.h>
7
+ #include < tinyformat.h>
7
8
#include < util/system.h>
8
9
9
10
#include < set>
10
11
#include < stdint.h>
12
+ #include < string>
13
+ #include < string_view>
11
14
12
15
class CRPCConvertParam
13
16
{
@@ -228,15 +231,15 @@ class CRPCConvertTable
228
231
CRPCConvertTable ();
229
232
230
233
/* * Return arg_value as UniValue, and first parse it if it is a non-string parameter */
231
- UniValue ArgToUniValue (const std::string& arg_value, const std::string& method, int param_idx)
234
+ UniValue ArgToUniValue (std::string_view arg_value, const std::string& method, int param_idx)
232
235
{
233
- return members.count (std::make_pair ( method, param_idx) ) > 0 ? ParseNonRFCJSONValue (arg_value) : arg_value;
236
+ return members.count ({ method, param_idx} ) > 0 ? ParseNonRFCJSONValue (arg_value) : arg_value;
234
237
}
235
238
236
239
/* * Return arg_value as UniValue, and first parse it if it is a non-string parameter */
237
- UniValue ArgToUniValue (const std::string& arg_value, const std::string& method, const std::string& param_name)
240
+ UniValue ArgToUniValue (std::string_view arg_value, const std::string& method, const std::string& param_name)
238
241
{
239
- return membersByName.count (std::make_pair ( method, param_name) ) > 0 ? ParseNonRFCJSONValue (arg_value) : arg_value;
242
+ return membersByName.count ({ method, param_name} ) > 0 ? ParseNonRFCJSONValue (arg_value) : arg_value;
240
243
}
241
244
};
242
245
@@ -253,10 +256,10 @@ static CRPCConvertTable rpcCvtTable;
253
256
/* * Non-RFC4627 JSON parser, accepts internal values (such as numbers, true, false, null)
254
257
* as well as objects and arrays.
255
258
*/
256
- UniValue ParseNonRFCJSONValue (const std::string& raw)
259
+ UniValue ParseNonRFCJSONValue (std::string_view raw)
257
260
{
258
261
UniValue parsed;
259
- if (!parsed.read (raw)) throw std::runtime_error (std::string (" Error parsing JSON: " ) + raw);
262
+ if (!parsed.read (raw)) throw std::runtime_error (tfm::format (" Error parsing JSON: %s " , raw) );
260
263
return parsed;
261
264
}
262
265
@@ -265,8 +268,8 @@ UniValue RPCConvertValues(const std::string &strMethod, const std::vector<std::s
265
268
UniValue params (UniValue::VARR);
266
269
267
270
for (unsigned int idx = 0 ; idx < strParams.size (); idx++) {
268
- const std::string& strVal = strParams[idx];
269
- params.push_back (rpcCvtTable.ArgToUniValue (strVal , strMethod, idx));
271
+ std::string_view value{ strParams[idx]} ;
272
+ params.push_back (rpcCvtTable.ArgToUniValue (value , strMethod, idx));
270
273
}
271
274
272
275
return params;
@@ -277,15 +280,15 @@ UniValue RPCConvertNamedValues(const std::string &strMethod, const std::vector<s
277
280
UniValue params (UniValue::VOBJ);
278
281
UniValue positional_args{UniValue::VARR};
279
282
280
- for (const std::string & s: strParams) {
283
+ for (std::string_view s: strParams) {
281
284
size_t pos = s.find (' =' );
282
285
if (pos == std::string::npos) {
283
286
positional_args.push_back (rpcCvtTable.ArgToUniValue (s, strMethod, positional_args.size ()));
284
287
continue ;
285
288
}
286
289
287
- std::string name = s.substr (0 , pos);
288
- std::string value = s.substr (pos+1 );
290
+ std::string name{ s.substr (0 , pos)} ;
291
+ std::string_view value{ s.substr (pos+1 )} ;
289
292
290
293
// Intentionally overwrite earlier named values with later ones as a
291
294
// convenience for scripts and command line users that want to merge
0 commit comments