mirror of
https://github.com/wownero/wownero-cpp.git
synced 2026-10-29 03:58:31 +01:00
MoneroTransfer copy is not virtual so subclasses may be bound to return
shared_ptrs of derived type
This commit is contained in:
@@ -258,6 +258,10 @@ namespace monero {
|
||||
throw runtime_error("MoneroTransfer deep copy constructor not implemented");
|
||||
}
|
||||
|
||||
shared_ptr<MoneroTransfer> MoneroTransfer::copy() const {
|
||||
throw runtime_error("Subclass must implement");
|
||||
}
|
||||
|
||||
boost::property_tree::ptree MoneroTransfer::toPropertyTree() const {
|
||||
boost::property_tree::ptree node;
|
||||
if (amount != boost::none) node.put("amount", *amount);
|
||||
@@ -300,7 +304,7 @@ namespace monero {
|
||||
throw runtime_error("MoneroIncomingTransfer deepy copy not implemented");
|
||||
}
|
||||
|
||||
shared_ptr<MoneroTransfer> MoneroIncomingTransfer::copy() const {
|
||||
shared_ptr<MoneroIncomingTransfer> MoneroIncomingTransfer::copy() const {
|
||||
return make_shared<MoneroIncomingTransfer>(*this);
|
||||
}
|
||||
|
||||
@@ -334,7 +338,7 @@ namespace monero {
|
||||
throw runtime_error("MoneroOutgoingTransfer deep copy not implemented");
|
||||
}
|
||||
|
||||
shared_ptr<MoneroTransfer> MoneroOutgoingTransfer::copy() const {
|
||||
shared_ptr<MoneroOutgoingTransfer> MoneroOutgoingTransfer::copy() const {
|
||||
return make_shared<MoneroOutgoingTransfer>(*this);
|
||||
}
|
||||
|
||||
@@ -370,7 +374,7 @@ namespace monero {
|
||||
throw runtime_error("MoneroTransferRequet deep copy not implemented");
|
||||
}
|
||||
|
||||
shared_ptr<MoneroTransfer> MoneroTransferRequest::copy() const {
|
||||
shared_ptr<MoneroTransferRequest> MoneroTransferRequest::copy() const {
|
||||
return make_shared<MoneroTransferRequest>(*this);
|
||||
}
|
||||
|
||||
|
||||
@@ -148,9 +148,9 @@ namespace monero {
|
||||
boost::optional<uint32_t> numSuggestedConfirmations;
|
||||
|
||||
MoneroTransfer();
|
||||
MoneroTransfer(const MoneroTransfer& transfer); // deep copy constructor
|
||||
virtual shared_ptr<MoneroTransfer> copy() const = 0; // derived class must implement
|
||||
MoneroTransfer(const MoneroTransfer& transfer); // deep copy constructor
|
||||
virtual boost::optional<bool> getIsIncoming() const = 0; // derived class must implement
|
||||
shared_ptr<MoneroTransfer> copy() const; // not virtual in order for subclasses to return shared_ptr of derived types
|
||||
boost::optional<bool> getIsOutgoing() const {
|
||||
if (getIsIncoming() == boost::none) return boost::none;
|
||||
return !(*getIsIncoming());
|
||||
@@ -168,7 +168,7 @@ namespace monero {
|
||||
|
||||
MoneroIncomingTransfer();
|
||||
MoneroIncomingTransfer(const MoneroIncomingTransfer& transfer); // deep copy constructor
|
||||
shared_ptr<MoneroTransfer> copy() const;
|
||||
shared_ptr<MoneroIncomingTransfer> copy() const;
|
||||
boost::optional<bool> getIsIncoming() const;
|
||||
boost::property_tree::ptree toPropertyTree() const;
|
||||
void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
|
||||
@@ -185,7 +185,7 @@ namespace monero {
|
||||
|
||||
MoneroOutgoingTransfer();
|
||||
MoneroOutgoingTransfer(const MoneroOutgoingTransfer& transfer);
|
||||
shared_ptr<MoneroTransfer> copy() const;
|
||||
shared_ptr<MoneroOutgoingTransfer> copy() const;
|
||||
boost::optional<bool> getIsIncoming() const;
|
||||
boost::property_tree::ptree toPropertyTree() const;
|
||||
void merge(const shared_ptr<MoneroTransfer>& self, const shared_ptr<MoneroTransfer>& other);
|
||||
@@ -209,7 +209,7 @@ namespace monero {
|
||||
|
||||
MoneroTransferRequest();
|
||||
MoneroTransferRequest(const MoneroTransferRequest& request);
|
||||
shared_ptr<MoneroTransfer> copy() const;
|
||||
shared_ptr<MoneroTransferRequest> copy() const;
|
||||
boost::optional<bool> getIsIncoming() const;
|
||||
boost::property_tree::ptree toPropertyTree() const;
|
||||
bool meetsCriteria(MoneroTransfer* transfer) const;
|
||||
|
||||
Reference in New Issue
Block a user