mirror of
https://github.com/wownero/wownero-cpp.git
synced 2026-10-18 23:58:59 +02:00
impl MoneroUtils::reconcile(vector, vector)
This commit is contained in:
@@ -92,7 +92,7 @@ namespace monero {
|
||||
|
||||
// merge coinbase tx
|
||||
if (coinbaseTx == boost::none) coinbaseTx = otherBlock->coinbaseTx;
|
||||
else if (otherBlock->coinbaseTx != boost::none) (**coinbaseTx).merge(*coinbaseTx, *otherBlock->coinbaseTx);
|
||||
else if (otherBlock->coinbaseTx != boost::none) coinbaseTx.get()->merge(*coinbaseTx, *otherBlock->coinbaseTx);
|
||||
|
||||
// merge non-coinbase txs
|
||||
if (txs.empty()) txs = otherBlock->txs;
|
||||
@@ -111,13 +111,13 @@ namespace monero {
|
||||
}
|
||||
if (!txs.empty()) {
|
||||
for (const shared_ptr<MoneroTx>& tx : txs) {
|
||||
tx->block = static_pointer_cast<MoneroBlock>(self);
|
||||
tx->block = self;
|
||||
}
|
||||
}
|
||||
|
||||
// merge other fields
|
||||
hex = MoneroUtils::reconcile(hex, otherBlock->hex);
|
||||
//txIds = MoneroUtils::reconcile(txIds, otherBlock->txIds); // TODO: implement
|
||||
txIds = MoneroUtils::reconcile(txIds, otherBlock->txIds);
|
||||
}
|
||||
|
||||
// ------------------------------- MONERO TX --------------------------------
|
||||
|
||||
@@ -173,6 +173,20 @@ namespace MoneroUtils
|
||||
return reconcile(val1, val2, boost::none, boost::none, boost::none);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
vector<T> reconcile(const vector<T>& v1, const vector<T>& v2) {
|
||||
|
||||
// check for equality
|
||||
if (v1 == v2) return v1;
|
||||
|
||||
// resolve one vector empty
|
||||
if (v1.empty()) return v2;
|
||||
if (v2.empty()) return v1;
|
||||
|
||||
// otherwise cannot reconcile
|
||||
throw runtime_error("Cannot reconcile vectors");
|
||||
}
|
||||
|
||||
// template <class T>
|
||||
// boost::optional<T> reconcile(const boost::optional<T>& val1, const boost::optional<T>& val2) {
|
||||
// return reconcile(val1, val2, boost::none, boost::none, boost::none);
|
||||
|
||||
Reference in New Issue
Block a user