#include "mp4_shim.hpp" #include #include #include namespace taglib_shim { ItemMapEntry::ItemMapEntry(TagLib::String key, TagLib::MP4::Item value) : key_(std::move(key)), value_(std::move(value)) {} std::unique_ptr ItemMapEntry::key() const { return std::make_unique(key_); } std::unique_ptr ItemMapEntry::value() const { return std::make_unique(value_); } std::unique_ptr> ItemMap_to_entries(const TagLib::MP4::ItemMap& map) { auto entries = std::make_unique>(); for (auto it = map.begin(); it != map.end(); ++it) { entries->emplace_back(it->first, it->second); } return entries; } IntPair::IntPair(int first, int second) : first_(first), second_(second) {} int IntPair::first() const { return first_; } int IntPair::second() const { return second_; } CoverArt::CoverArt(TagLib::MP4::CoverArt::Format format, const TagLib::ByteVector& data) : art_(format, data) {} uint32_t CoverArt::format() const { return static_cast(art_.format()); } std::unique_ptr CoverArt::data() const { return std::make_unique(art_.data()); } CoverArtList::CoverArtList(const TagLib::MP4::CoverArtList& list) : list_(list) {} std::unique_ptr> CoverArtList::to_vector() const { auto vec = std::make_unique>(); for (const auto& item : list_) { vec->emplace_back(item.format(), item.data()); } return vec; } unsigned int Item_type(const TagLib::MP4::Item& item) { return static_cast(item.type()); } std::unique_ptr Item_toIntPair(const TagLib::MP4::Item& item) { auto pair = item.toIntPair(); return std::make_unique(pair.first, pair.second); } std::unique_ptr Item_toStringList(const TagLib::MP4::Item& item) { return std::make_unique(item.toStringList()); } std::unique_ptr Item_toByteVectorList(const TagLib::MP4::Item& item) { return std::make_unique(item.toByteVectorList()); } std::unique_ptr Item_toCoverArtList(const TagLib::MP4::Item& item) { return std::make_unique(item.toCoverArtList()); } int64_t Item_toLongLong(const TagLib::MP4::Item& item) { return item.toLongLong(); } }