#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include "revng/ADT/KeyedObjectContainer.h" #include "revng/TupleTree/Introspection.h" #include "revng/TupleTree/TupleTree.h" struct Element { uint64_t Key; uint64_t Value; Element(uint64_t Key) : Key(Key), Value(0) {} Element(uint64_t Key, uint64_t Value) : Key(Key), Value(Value) {} bool operator==(const Element &Other) const = default; uint64_t key() const { return Key; } uint64_t value() const { return Value; } void setValue(uint64_t NewValue) { Value = NewValue; } }; template<> struct KeyedObjectTraits { static uint64_t key(const Element &SE) { return SE.key(); } static Element fromKey(uint64_t Key) { return Element(Key); } }; INTROSPECTION(Element, Key, Value); template<> struct llvm::yaml::MappingTraits : public TupleLikeMappingTraits {}; static_assert(KeyedObjectContainerCompatible); static_assert(not KeyedObjectContainer>>);