implement tx wallet deep copy;

ready to implement tx request deep copy
This commit is contained in:
woodser
2019-07-29 22:10:13 -04:00
parent dcb8407457
commit 3956ad1e6b
2 changed files with 16 additions and 5 deletions
+2 -2
View File
@@ -202,7 +202,7 @@ namespace monero {
if (!src->vins.empty()) {
tgt->vins = vector<shared_ptr<MoneroOutput>>();
for (const shared_ptr<MoneroOutput>& vin : src->vins) {
shared_ptr<MoneroOutput> vinCopy = vin->copy(vin, shared_ptr<MoneroOutput>());
shared_ptr<MoneroOutput> vinCopy = vin->copy(vin, make_shared<MoneroOutput>());
vinCopy->tx = tgt;
tgt->vins.push_back(vinCopy);
}
@@ -210,7 +210,7 @@ namespace monero {
if (!src->vouts.empty()) {
tgt->vouts = vector<shared_ptr<MoneroOutput>>();
for (const shared_ptr<MoneroOutput>& vout : src->vouts) {
shared_ptr<MoneroOutput> voutCopy = vout->copy(vout, shared_ptr<MoneroOutput>());
shared_ptr<MoneroOutput> voutCopy = vout->copy(vout, make_shared<MoneroOutput>());
voutCopy->tx = tgt;
tgt->vouts.push_back(voutCopy);
}
+14 -3
View File
@@ -107,8 +107,6 @@ namespace monero {
shared_ptr<MoneroTxWallet> MoneroTxWallet::copy(const shared_ptr<MoneroTx>& src, const shared_ptr<MoneroTx>& tgt) const {
MTRACE("MoneroTxWallet::copy(const shared_ptr<MoneroTx>& src, const shared_ptr<MoneroTx>& tgt)");
MTRACE("src: " << src);
MTRACE("tgt: " << tgt);
return MoneroTxWallet::copy(static_pointer_cast<MoneroTxWallet>(src), static_pointer_cast<MoneroTxWallet>(tgt));
};
@@ -120,7 +118,20 @@ namespace monero {
MoneroTx::copy(static_pointer_cast<MoneroTx>(src), static_pointer_cast<MoneroTx>(tgt));
// copy wallet extensions
throw runtime_error("MoneroTxWallet::copy(txWallet) not implemented");
if (!src->incomingTransfers.empty()) {
tgt->incomingTransfers = vector<shared_ptr<MoneroIncomingTransfer>>();
for (const shared_ptr<MoneroIncomingTransfer>& transfer : src->incomingTransfers) {
shared_ptr<MoneroIncomingTransfer> transferCopy = transfer->copy(transfer, shared_ptr<MoneroIncomingTransfer>());
transferCopy->tx = tgt;
tgt->incomingTransfers.push_back(transferCopy);
}
}
if (src->outgoingTransfer != boost::none) {
shared_ptr<MoneroOutgoingTransfer> transferCopy = src->outgoingTransfer.get()->copy(src->outgoingTransfer.get(), make_shared<MoneroOutgoingTransfer>());
transferCopy->tx = tgt;
tgt->outgoingTransfer = transferCopy;
}
tgt->note = src->note;
return tgt;
};