arcstk::VerificationResult class
#include <verify.hpp>

Interface: Result of a verification process.

A VerificationResult is the result of a complete matching of actual Checksums against a ChecksumSource of referene checksums.

It holds the result of any verification task of any reference track value. Access to each of these results is provided in terms of block:track:version. The block and track address components are integers, that refer to the respective 0-based block and 0-based track in the ChecksumSource. The version is a boolean that indicates whether the match is for ARCSv2 (TRUE) or for ARCSv1 (FALSE).

The result contains also the track-based interpretation of the flags, i.e. whether a given track is considered to be verified or not.

Constructors, destructors, conversion operators

~VerificationResult() virtual noexcept
Virtual default destructor.

Public functions

auto all_tracks_verified() const -> bool
TRUE iff each track is verified.
auto best_block() const -> std::tuple<int, bool, int>
Identify best matching block (the one with smallest difference).
auto best_block_difference() const -> int
Difference of the best block in this result.
auto clone() const -> std::unique_ptr<VerificationResult>
Clones this instance.
auto difference(int b, bool v2) const -> int
Returns the difference for block b .
auto id(int b) const -> bool
TRUE iff the ARId of the specified block matches the ARId of the original request, otherwise FALSE.
auto is_verified(const int track) const -> bool
TRUE iff specified 0-based track is verified, otherwise FALSE.
auto size() const -> size_t
Returns the number of comparison flags stored.
auto strict() const -> bool
TRUE iff verification obeys a strict policy.
auto total_blocks() const -> int
Returns the number of analyzed reference blocks.
auto total_unverified_tracks() const -> int
Total number of unverified tracks.
auto track(int b, int t, bool v2) const -> bool
Return the verification status of an ARCS of the specified track in the specified block.
auto tracks_per_block() const -> int
Returns the number of compared tracks per reference block.
auto verify_id(int block) -> int
Mark the ARId of the specified block as 'matched'.
auto verify_track(int b, int t, bool v2) -> int
Mark the checksum of a specified track in a specified block as 'matched'.

Friends

auto operator<<(std::ostream&, const VerificationResult& match) -> std::ostream&
Print a VerificationResult to a stream.

Function documentation

bool arcstk::VerificationResult::all_tracks_verified() const

TRUE iff each track is verified.

Returns TRUE iff each track is verified otherwise FALSE

This is shorthand for checking whether total_unverified_tracks is 0. The verification should be considered as successful and iff this returns TRUE.

A rip for which all tracks are verified can be considered accurate relative to the applied verification method. Iff the method is strict, then there is a single block in the ChecksumSource that is identical with the list of actual Checksums. Iff the method is non-strict, every actual Checksum occurred at least in one block of the ChecksumSource.

std::tuple<int, bool, int> arcstk::VerificationResult::best_block() const

Identify best matching block (the one with smallest difference).

Returns 0-based index, ARCS version, and difference of the best block

If there is more than one block with the smallest difference, return the one with the lowest index position.

int arcstk::VerificationResult::best_block_difference() const

Difference of the best block in this result.

Returns Smallest difference of any block

This is shorthand for getting element 2 of best_block().

std::unique_ptr<VerificationResult> arcstk::VerificationResult::clone() const

Clones this instance.

Returns Deep copy of this instance.

int arcstk::VerificationResult::difference(int b, bool v2) const

Returns the difference for block b .

Parameters
in 0-based index of the block to verify in the ChecksumSource
v2 in Returns the ARCSv2 iff TRUE, otherwise ARCSv1
Returns Difference of block b
Exceptions
std::runtime_error Iff b is out of range

The difference is the number of ARCSs in b that do not match their corresponsing positions in the request. The difference is only of relevance iff the ARId of b matchs the ARId of the request.

bool arcstk::VerificationResult::id(int b) const

TRUE iff the ARId of the specified block matches the ARId of the original request, otherwise FALSE.

Parameters
in 0-based index of the block to verify in response
Returns TRUE iff the ARId of block b matches the ARId of the request
Exceptions
std::runtime_error Iff b is out of range

bool arcstk::VerificationResult::is_verified(const int track) const

TRUE iff specified 0-based track is verified, otherwise FALSE.

Parameters
track in 0-based track
Returns TRUE iff specified track is verified, otherwise FALSE

size_t arcstk::VerificationResult::size() const

Returns the number of comparison flags stored.

Returns Number of flags stored

bool arcstk::VerificationResult::strict() const

TRUE iff verification obeys a strict policy.

Returns TRUE iff verification obeys a strict policy, otherwise FALSE.

int arcstk::VerificationResult::total_blocks() const

Returns the number of analyzed reference blocks.

Returns Total number of analyzed blocks.

This is identical with the total number of blocks in the ChecksumSource.

int arcstk::VerificationResult::total_unverified_tracks() const

Total number of unverified tracks.

Returns Total number of unverified tracks.

bool arcstk::VerificationResult::track(int b, int t, bool v2) const

Return the verification status of an ARCS of the specified track in the specified block.

Parameters
in 0-based index of the block to verify in the ChecksumSource
in 0-based index of the track to verify in the ChecksumSource
v2 in Returns the ARCSv2 flag iff TRUE, otherwise ARCSv1
Returns Flag for ARCS of track t in block b
Exceptions
std::runtime_error Iff b or t are out of range

int arcstk::VerificationResult::tracks_per_block() const

Returns the number of compared tracks per reference block.

Returns Total number of tracks per block.

This is identical with the total number of tracks in each block in the ChecksumSource.

int arcstk::VerificationResult::verify_id(int block)

Mark the ARId of the specified block as 'matched'.

Parameters
block in 0-based index of the block to verify
Returns Index position to store the verification flag
Exceptions
std::runtime_error Iff b is out of range

int arcstk::VerificationResult::verify_track(int b, int t, bool v2)

Mark the checksum of a specified track in a specified block as 'matched'.

Parameters
in 0-based index of the block to verify in the ChecksumSource
in 0-based index of the track to verify in the ChecksumSource
v2 in Verifies the ARCSv2 iff TRUE, otherwise ARCSv1
Returns Index position to store the verification flag
Exceptions
std::runtime_error Iff b or t are out of range