1#include <xrpl/protocol/STXChainBridge.h>
3#include <xrpl/basics/contract.h>
4#include <xrpl/json/json_value.h>
5#include <xrpl/protocol/AccountID.h>
6#include <xrpl/protocol/Issue.h>
7#include <xrpl/protocol/SField.h>
8#include <xrpl/protocol/STAccount.h>
9#include <xrpl/protocol/STBase.h>
10#include <xrpl/protocol/STObject.h>
11#include <xrpl/protocol/Serializer.h>
12#include <xrpl/protocol/jss.h>
14#include <boost/format/free_funcs.hpp>
34 Issue const& srcChainIssue,
36 Issue const& dstChainIssue)
63 "STXChainBridge can only be specified with a 'object' Json value");
67 static auto const kBridgeJson =
69 for (
auto it = v.
begin(); it != v.
end(); ++it)
72 if (!kBridgeJson.isMember(name))
81 json::Value const& lockingChainDoorStr = v[jss::LockingChainDoor];
83 json::Value const& issuingChainDoorStr = v[jss::IssuingChainDoor];
145 boost::format(
"{ %s = %s, %s = %s, %s = %s, %s = %s }") % sfLockingChainDoor.getName() %
147 sfIssuingChainDoor.getName() %
issuingChainDoor_.getText() % sfIssuingChainIssue.getName() %
165 return STI_XCHAIN_BRIDGE;
172 return (v !=
nullptr) && (*v == *
this);
197 return emplace(n, buf, std::move(*
this));
const_iterator begin() const
const_iterator end() const
std::string asString() const
Returns the unquoted string value.
A currency issued by an account.
A type which can be exported to a well known binary format.
static STBase * emplace(std::size_t n, void *buf, T &&val)
static std::unique_ptr< STXChainBridge > construct(SerialIter &, SField const &name)
STIssue issuingChainIssue_
std::string getText() const override
STAccount issuingChainDoor_
AccountID const & issuingChainDoor() const
STBase * move(std::size_t n, void *buf) override
STAccount lockingChainDoor_
json::Value getJson(JsonOptions) const override
void add(Serializer &s) const override
AccountID const & lockingChainDoor() const
STIssue lockingChainIssue_
bool isDefault() const override
STBase * copy(std::size_t n, void *buf) const override
bool isEquivalent(STBase const &t) const override
SerializedTypeID getSType() const override
Issue const & issuingChainIssue() const
STObject toSTObject() const
Issue const & lockingChainIssue() const
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Issue issueFromJson(json::Value const &v)
std::optional< AccountID > parseBase58(std::string const &s)
Parse AccountID from checked, base58 string.
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Note, should be treated as flags that can be | and &.