barretenberg
Loading...
Searching...
No Matches
witness_map.hpp
1#pragma once
2
3#include "bincode.hpp"
4#include "serde.hpp"
5
6namespace WitnessMap {
7
8struct Witness {
9 uint32_t value;
10
11 friend bool operator==(const Witness&, const Witness&);
12 bool operator<(Witness const& rhs) const { return value < rhs.value; }
13 std::vector<uint8_t> bincodeSerialize() const;
14 static Witness bincodeDeserialize(std::vector<uint8_t>);
15};
16
17struct WitnessMap {
18 std::map<Witness, std::string> value;
19
20 friend bool operator==(const WitnessMap&, const WitnessMap&);
21 std::vector<uint8_t> bincodeSerialize() const;
22 static WitnessMap bincodeDeserialize(std::vector<uint8_t>);
23};
24
25} // end of namespace WitnessMap
26
27namespace WitnessMap {
28
29inline bool operator==(const Witness& lhs, const Witness& rhs)
30{
31 if (!(lhs.value == rhs.value)) {
32 return false;
33 }
34 return true;
35}
36
37inline std::vector<uint8_t> Witness::bincodeSerialize() const
38{
39 auto serializer = serde::BincodeSerializer();
41 return std::move(serializer).bytes();
42}
43
44inline Witness Witness::bincodeDeserialize(std::vector<uint8_t> input)
45{
46 auto deserializer = serde::BincodeDeserializer(input);
47 auto value = serde::Deserializable<Witness>::deserialize(deserializer);
48 if (deserializer.get_buffer_offset() < input.size()) {
49 throw_or_abort("Some input bytes were not read");
50 }
51 return value;
52}
53
54} // end of namespace WitnessMap
55
56template <>
57template <typename Serializer>
59{
60 serializer.increase_container_depth();
61 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
62 serializer.decrease_container_depth();
63}
64
65template <>
66template <typename Deserializer>
68{
69 deserializer.increase_container_depth();
71 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
72 deserializer.decrease_container_depth();
73 return obj;
74}
75
76namespace WitnessMap {
77
78inline bool operator==(const WitnessMap& lhs, const WitnessMap& rhs)
79{
80 if (!(lhs.value == rhs.value)) {
81 return false;
82 }
83 return true;
84}
85
86inline std::vector<uint8_t> WitnessMap::bincodeSerialize() const
87{
88 auto serializer = serde::BincodeSerializer();
90 return std::move(serializer).bytes();
91}
92
93inline WitnessMap WitnessMap::bincodeDeserialize(std::vector<uint8_t> input)
94{
95 auto deserializer = serde::BincodeDeserializer(input);
96 auto value = serde::Deserializable<WitnessMap>::deserialize(deserializer);
97 if (deserializer.get_buffer_offset() < input.size()) {
98 throw_or_abort("Some input bytes were not read");
99 }
100 return value;
101}
102
103} // end of namespace WitnessMap
104
105template <>
106template <typename Serializer>
108{
109 serializer.increase_container_depth();
110 serde::Serializable<decltype(obj.value)>::serialize(obj.value, serializer);
111 serializer.decrease_container_depth();
112}
113
114template <>
115template <typename Deserializer>
117{
118 deserializer.increase_container_depth();
120 obj.value = serde::Deserializable<decltype(obj.value)>::deserialize(deserializer);
121 deserializer.decrease_container_depth();
122 return obj;
123}
Definition: bincode.hpp:33
Definition: bincode.hpp:17
Definition: witness_map.hpp:17
Definition: witness_map.hpp:8
Definition: serde.hpp:131
Definition: serde.hpp:125