mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-17 18:40:09 +00:00
Make CScript (and prevector) c++11 movable.
Such moves are used when reallocating vectors that contain them, for example.
This commit is contained in:
parent
e8cfe1ee2d
commit
2ddfcfd2d6
@ -248,6 +248,10 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prevector(prevector<N, T, Size, Diff>&& other) : _size(0) {
|
||||||
|
swap(other);
|
||||||
|
}
|
||||||
|
|
||||||
prevector& operator=(const prevector<N, T, Size, Diff>& other) {
|
prevector& operator=(const prevector<N, T, Size, Diff>& other) {
|
||||||
if (&other == this) {
|
if (&other == this) {
|
||||||
return *this;
|
return *this;
|
||||||
@ -263,6 +267,11 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prevector& operator=(prevector<N, T, Size, Diff>&& other) {
|
||||||
|
swap(other);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
size_type size() const {
|
size_type size() const {
|
||||||
return is_direct() ? _size : _size - N - 1;
|
return is_direct() ? _size : _size - N - 1;
|
||||||
}
|
}
|
||||||
|
@ -394,7 +394,6 @@ protected:
|
|||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
CScript() { }
|
CScript() { }
|
||||||
CScript(const CScript& b) : CScriptBase(b.begin(), b.end()) { }
|
|
||||||
CScript(const_iterator pbegin, const_iterator pend) : CScriptBase(pbegin, pend) { }
|
CScript(const_iterator pbegin, const_iterator pend) : CScriptBase(pbegin, pend) { }
|
||||||
CScript(std::vector<unsigned char>::const_iterator pbegin, std::vector<unsigned char>::const_iterator pend) : CScriptBase(pbegin, pend) { }
|
CScript(std::vector<unsigned char>::const_iterator pbegin, std::vector<unsigned char>::const_iterator pend) : CScriptBase(pbegin, pend) { }
|
||||||
CScript(const unsigned char* pbegin, const unsigned char* pend) : CScriptBase(pbegin, pend) { }
|
CScript(const unsigned char* pbegin, const unsigned char* pend) : CScriptBase(pbegin, pend) { }
|
||||||
|
@ -169,6 +169,19 @@ public:
|
|||||||
pre_vector.swap(pre_vector_alt);
|
pre_vector.swap(pre_vector_alt);
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void move() {
|
||||||
|
real_vector = std::move(real_vector_alt);
|
||||||
|
real_vector_alt.clear();
|
||||||
|
pre_vector = std::move(pre_vector_alt);
|
||||||
|
pre_vector_alt.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void copy() {
|
||||||
|
real_vector = real_vector_alt;
|
||||||
|
pre_vector = pre_vector_alt;
|
||||||
|
}
|
||||||
|
|
||||||
~prevector_tester() {
|
~prevector_tester() {
|
||||||
BOOST_CHECK_MESSAGE(passed, "insecure_rand_Rz: "
|
BOOST_CHECK_MESSAGE(passed, "insecure_rand_Rz: "
|
||||||
<< rand_cache.Rz
|
<< rand_cache.Rz
|
||||||
@ -240,9 +253,15 @@ BOOST_AUTO_TEST_CASE(PrevectorTestInt)
|
|||||||
if (((r >> 21) % 512) == 12) {
|
if (((r >> 21) % 512) == 12) {
|
||||||
test.assign(insecure_rand() % 32, insecure_rand());
|
test.assign(insecure_rand() % 32, insecure_rand());
|
||||||
}
|
}
|
||||||
if (((r >> 15) % 64) == 3) {
|
if (((r >> 15) % 8) == 3) {
|
||||||
test.swap();
|
test.swap();
|
||||||
}
|
}
|
||||||
|
if (((r >> 15) % 16) == 8) {
|
||||||
|
test.copy();
|
||||||
|
}
|
||||||
|
if (((r >> 15) % 32) == 18) {
|
||||||
|
test.move();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user