10#include <absl/hash/hash.h>
12#include "connector.pb.h"
22 h = H::combine(std::move(h), td.name());
23 for(
const int32_t & arg : td.args())
25 h = H::combine(std::move(h), arg);
33 h = H::combine(std::move(h), d.composite());
35 std::vector<std::pair<std::string, std::string>> sorted_bindings;
36 sorted_bindings.reserve(
static_cast<std::size_t
>(d.bindings_size()));
37 for(
const auto & [slot, composite] : d.bindings())
39 sorted_bindings.emplace_back(slot, composite);
41 std::ranges::sort(sorted_bindings, [](
const auto & lhs,
const auto & rhs)
43 return lhs.first < rhs.first;
46 for(
const auto & [slot, composite] : sorted_bindings)
48 h = H::combine(std::move(h), slot, composite);
51 for(
const TransformationDef & t : d.transformations())
53 h = H::combine(std::move(h), t);
61 h = H::combine(std::move(h), p.name());
63 for(
const Dimension & d : p.dimensions())
65 h = H::combine(std::move(h), d);
68 h = H::combine(std::move(h), p.condition_name());
69 for(
const auto & arg : p.condition_args())
71 h = H::combine(std::move(h), arg);
89 std::map<std::pair<std::uint32_t, std::uint32_t>, std::string>
bindings;
95 const std::uint8_t* data,
96 std::size_t data_size,
97 const evmc::bytes32 topics[],
98 std::size_t num_topics);
101 const std::string & data_hex,
102 const std::vector<std::string> & topics_hex);
109 Result<json>
parseToJson(TransformationDef transform_def, use_json_t);
115 Result<json>
parseToJson(Dimension dimension, use_json_t);
121 Result<std::string>
parseToJson(Dimension dimension, use_protobuf_t);
124 Result<Dimension>
parseFromJson(std::string json_str, use_protobuf_t);
127 Result<json>
parseToJson(Connector connector, use_json_t);
133 Result<std::string>
parseToJson(Connector connector, use_protobuf_t);
136 Result<Connector>
parseFromJson(std::string json_str, use_protobuf_t);
139 Result<json>
parseToJson(ConnectorRecord connector_record, use_json_t);
142 Result<std::string>
parseToJson(ConnectorRecord connector_record, use_protobuf_t);
148 Result<ConnectorRecord>
parseFromJson(std::string json_str, use_protobuf_t);
evmc::address Address
Definition address.hpp:18
Result< json > parseToJson(T message, use_json_t)
Converts a T to a JSON object using JSON.
Result< T > parseFromJson(json json, use_json_t)
Converts a JSON string to a T using JSON.
Definition condition.hpp:33
std::optional< ConnectorAddedEvent > decodeConnectorAddedEvent(const std::uint8_t *data, std::size_t data_size, const evmc::bytes32 topics[], std::size_t num_topics)
Definition connector.cpp:351
Definition decentralised_art.hpp:33
parse::Result< std::string > constructConnectorSolidityCode(const Connector &connector)
Definition connector.cpp:70
H AbslHashValue(H h, const Condition &c)
Combines hash values for a Condition object.
Definition condition.hpp:25
nlohmann::json json
Definition parser.hpp:7
Definition connector.hpp:82
std::map< std::pair< std::uint32_t, std::uint32_t >, std::string > bindings
Definition connector.hpp:89
std::vector< std::int32_t > condition_args
Definition connector.hpp:91
std::map< std::uint32_t, std::string > composites
Definition connector.hpp:88
chain::Address caller
Definition connector.hpp:83
std::string name
Definition connector.hpp:85
chain::Address owner
Definition connector.hpp:84
chain::Address connector_address
Definition connector.hpp:86
std::string condition_name
Definition connector.hpp:90
std::uint32_t dimensions_count
Definition connector.hpp:87