identifier.hpp file

Public API for calculating AccurateRip ids.

Namespaces

namespace arcstk
libarcstk main namespace
namespace arcstk::v_1_0_0 inline
API version 1.0.0.
namespace arcstk::v_1_0_0::toc
Functions assisting the management of TOCs.

Classes

class arcstk::v_1_0_0::ARId
AccurateRip-Identifier of a compact disc.
struct arcstk::v_1_0_0::CDDA
Constants related to the CDDA format.
class arcstk::v_1_0_0::InvalidMetadataException
Reports invalid metadata for building a TOC.
class arcstk::v_1_0_0::NonstandardMetadataException
Reports metadata violating the redbook standard.
class arcstk::v_1_0_0::TOC
Table of contents of a compact disc.

Typedefs

template<typename T>
using IsFilenameContainer = std::enable_if_t<details::is_filename_container<T>::value>
Defined iff T is a container whose value_type IsFilenameType.
template<typename T>
using IsFilenameType = std::enable_if_t<details::is_filename_type<T>::value>
Defined iff T is a filename type, i.e. std::string or std::wstring.
template<typename T>
using IsLBAContainer = std::enable_if_t<details::is_lba_container<T>::value>
Defined iff T is a container whose value_type IsLBAType.
template<typename T>
using IsLBAType = std::enable_if_t<details::is_lba_type<T>::value>
Defined iff T is a numerical integer type of at least 32 bit size.
using lba_count_t = int32_t
Type to represent amounts of LBA frames.
using TrackNo = int
Type to represent 1-based track numbers.

Functions

auto get_filenames(const std::unique_ptr<TOC>& toc) -> std::vector<std::string>
Extract filenames from TOC in order.
auto get_filenames(const TOC& toc) -> std::vector<std::string>
Extract filenames from TOC in order.
auto get_offsets(const std::unique_ptr<TOC>& toc) -> std::vector<lba_count_t>
Extract the offsets from a TOC to an iterable container.
auto get_offsets(const TOC& toc) -> std::vector<lba_count_t>
Extract the offsets from a TOC to an iterable container.
auto get_parsed_lengths(const std::unique_ptr<TOC>& toc) -> std::vector<lba_count_t>
Extract parsed lengths from TOC in order.
auto get_parsed_lengths(const TOC& toc) -> std::vector<lba_count_t>
Extract parsed lengths from TOC in order.
auto make_arid(const std::unique_ptr<TOC>& toc) -> std::unique_ptr<ARId>
Create an ARId from a complete() TOC.
auto make_arid(const TOC& toc) -> std::unique_ptr<ARId>
Create an ARId from a complete() TOC.
auto make_arid(const TOC& toc, const lba_count_t leadout) -> std::unique_ptr<ARId>
Create an ARId from a TOC and a specified leadout.
template<typename LBAContainer, typename = IsLBAContainer<LBAContainer>>
auto make_arid(const TrackNo track_count, LBAContainer&& offsets, const lba_count_t leadout) -> std::unique_ptr<ARId>
Create an ARId by track_count, offsets and leadout.
template<typename T, typename = IsLBAType<T>>
auto make_arid(const TrackNo track_count, std::initializer_list<T> offsets, const lba_count_t leadout) -> std::unique_ptr<ARId>
Create an ARId by track_count, offsets and leadout.
template<typename LBAContainer, typename = IsLBAContainer<LBAContainer>>
auto make_arid(LBAContainer&& offsets, const lba_count_t leadout) -> std::unique_ptr<ARId>
Create an ARId by offsets and leadout.
template<typename T, typename = IsLBAType<T>>
auto make_arid(std::initializer_list<T> offsets, const lba_count_t leadout) -> std::unique_ptr<ARId>
Create an ARId by offsets and leadout.
auto make_empty_arid() -> std::unique_ptr<ARId> noexcept
Create an empty() ARId.
template<typename LBAContainer, typename FilenameContainer = std::vector<std::string>, typename = IsLBAContainer<LBAContainer>, typename = IsFilenameContainer<FilenameContainer>>
auto make_toc(const TrackNo track_count, LBAContainer&& offsets, const lba_count_t leadout, FilenameContainer&& files = {}) -> std::unique_ptr<TOC>
Create a TOC by track count, offsets, leadout and optional filenames.
template<typename LBAContainer1, typename LBAContainer2, typename FilenameContainer = std::vector<std::string>, typename = IsLBAContainer<LBAContainer1>, typename = IsLBAContainer<LBAContainer2>, typename = IsFilenameContainer<FilenameContainer>>
auto make_toc(const TrackNo track_count, LBAContainer1&& offsets, LBAContainer2&& lengths, FilenameContainer&& files = {}) -> std::unique_ptr<TOC>
Create a TOC by track count, offsets, lengths and optional filenames.
template<typename LBAContainer, typename FilenameContainer = std::vector<std::string>, typename = IsLBAContainer<LBAContainer>, typename = IsFilenameContainer<FilenameContainer>>
auto make_toc(LBAContainer&& offsets, const lba_count_t leadout, FilenameContainer&& files = {}) -> std::unique_ptr<TOC>
Create a TOC by offsets, leadout and optional filenames.
template<typename LBAContainer1, typename LBAContainer2, typename FilenameContainer = std::vector<std::string>, typename = IsLBAContainer<LBAContainer1>, typename = IsLBAContainer<LBAContainer2>, typename = IsFilenameContainer<FilenameContainer>>
auto make_toc(LBAContainer1&& offsets, LBAContainer2&& lengths, FilenameContainer&& files = {}) -> std::unique_ptr<TOC>
Create a TOC by offsets, lengths and optional filenames.

Variables

const ARId EmptyARId
Global instance of an empty ARId.