14#define FMT_HEADER_ONLY
15#include <fmt/format.h>
22 static constexpr int64_t COSE_SIGN_1 = 18;
26 using Value = std::shared_ptr<ValueImpl>;
29 using Bytes = std::span<const uint8_t>;
61 using Type = std::variant<Signed, Bytes, String, Array, Map, Tagged, Simple>;
100 [[nodiscard]]
const Value&
tag_at(uint64_t tag)
const;
105 [[nodiscard]]
size_t size()
const;
108 Value make_signed(int64_t value);
110 Value make_string(std::string_view data);
111 Value make_bytes(std::span<const uint8_t> data);
112 Value make_tagged(uint64_t tag,
Value&& value);
113 Value make_array(std::vector<Value>&& data);
114 Value make_map(std::vector<MapItem>&& data);
116 Value parse(std::span<const uint8_t> raw,
size_t max_depth = 16);
117 std::vector<uint8_t> serialize(
const Value& value,
size_t max_depth = 16);
119 std::string to_string(
const Value& value);
120 bool simple_to_boolean(
const Simple& value);
129 catch (
const CBORDecodeError& err)
133 throw CBORDecodeError(
134 err.error_code(), fmt::format(
"{}: {}", msg, err.what()));
Error error_code() const
Definition cbor.cpp:519
Error error_code() const
Definition cbor.cpp:509
int64_t Signed
Definition cbor.h:28
std::string_view String
Definition cbor.h:30
Error
Definition cbor.h:64
decltype(auto) rethrow_with_msg(auto &&f, std::string_view msg={})
Definition cbor.h:123
std::shared_ptr< ValueImpl > Value
Definition cbor.h:26
std::variant< Signed, Bytes, String, Array, Map, Tagged, Simple > Type
Definition cbor.h:61
std::span< const uint8_t > Bytes
Definition cbor.h:29
SimpleValue
Definition cbor.h:37
@ Undefined
Definition cbor.h:41
@ False
Definition cbor.h:38
@ True
Definition cbor.h:39
@ Null
Definition cbor.h:40
std::pair< Value, Value > MapItem
Definition cbor.h:49
uint8_t Simple
Definition cbor.h:31
std::vector< Value > items
Definition cbor.h:46
std::vector< MapItem > items
Definition cbor.h:52
Value item
Definition cbor.h:58
uint64_t tag
Definition cbor.h:57
Type value
Definition cbor.h:96
const Value & array_at(size_t index) const
Definition cbor.cpp:644
Bytes as_bytes() const
Definition cbor.cpp:761
ValueImpl(Type value_)
Definition cbor.h:95
String as_string() const
Definition cbor.cpp:770
Simple as_simple() const
Definition cbor.cpp:779
const Value & tag_at(uint64_t tag) const
Definition cbor.cpp:736
size_t size() const
Definition cbor.cpp:721
const Value & map_at(const Value &key) const
Definition cbor.cpp:660
Signed as_signed() const
Definition cbor.cpp:752