Skip to content
This repository was archived by the owner on Jun 17, 2022. It is now read-only.

Commit 55265e8

Browse files
committed
Implement number constructors in cpp
Do not use setInt which unnecessarily calls clear().
1 parent 31293dc commit 55265e8

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

include/univalue.h

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,11 @@ class UniValue {
5959
UniValue(const std::string& val_) : typ(VSTR), val(val_) {}
6060
UniValue(std::string&& val_) : typ(VSTR), val(std::move(val_)) {}
6161
UniValue(const char *val_) : typ(VSTR), val(val_) {}
62-
UniValue(uint64_t val_) {
63-
setInt(val_);
64-
}
65-
UniValue(int64_t val_) {
66-
setInt(val_);
67-
}
68-
UniValue(bool val_) {
69-
setBool(val_);
70-
}
71-
UniValue(int val_) {
72-
setInt(val_);
73-
}
74-
UniValue(double val_) {
75-
setFloat(val_);
76-
}
62+
UniValue(uint64_t val_);
63+
UniValue(int64_t val_);
64+
UniValue(bool val_);
65+
UniValue(int val_);
66+
UniValue(double val_);
7767

7868
void clear();
7969

lib/univalue.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,32 @@ void appendNumToString(T n, std::string& str)
4242

4343
}
4444

45+
UniValue::UniValue(uint64_t val_) : typ(VNUM)
46+
{
47+
appendNumToString(val_, val);
48+
}
49+
50+
UniValue::UniValue(int64_t val_) : typ(VNUM)
51+
{
52+
appendNumToString(val_, val);
53+
}
54+
55+
UniValue::UniValue(bool val_) : typ(VBOOL)
56+
{
57+
if (val_)
58+
val = "1";
59+
}
60+
61+
UniValue::UniValue(int val_) : typ(VNUM)
62+
{
63+
appendNumToString(val_, val);
64+
}
65+
66+
UniValue::UniValue(double val_) : typ(VNUM)
67+
{
68+
setFloat(val_);
69+
}
70+
4571
void UniValue::clear()
4672
{
4773
typ = VNULL;

0 commit comments

Comments
 (0)