1#ifndef TAG_PARSER_ABSTRACTATTACHMENT_H
2#define TAG_PARSER_ABSTRACTATTACHMENT_H
19 uint64_t
endOffset = 0, std::ios_base::seekdir endDir = std::ios_base::end);
22 std::istream &
stream()
const;
25 std::uint64_t
size()
const;
26 const std::unique_ptr<char[]> &
buffer()
const;
97 std::unique_ptr<MediaFileInfo> m_fileInfo;
102 return m_fileInfo.get();
111 const std::string &
name()
const;
113 const std::string &
mimeType()
const;
115 std::uint64_t
id()
const;
116 void setId(std::uint64_t
id);
118 void setData(std::unique_ptr<StreamDataBlock> &&
data);
121 std::string
label()
const;
132 std::string m_description;
134 std::string m_mimeType;
136 std::unique_ptr<StreamDataBlock> m_data;
137 std::unique_ptr<AbstractAttachmentPrivate> m_p;
138 bool m_isDataFromFile;
147 return m_description;
225 m_data = std::move(
data);
226 m_isDataFromFile =
false;
234 return m_isDataFromFile;
264 return m_description.empty() && m_name.empty() && !m_mimeType.empty() && !m_data;
The AbortableProgressFeedback class provides feedback about an ongoing operation via callbacks.
bool isEmpty() const
Returns whether the attachment is empty (no data and no meta-data assigned).
void setDescription(std::string_view description)
Sets a description of the attachment.
void clear()
Resets the object to its initial state.
const std::string & mimeType() const
Returns the MIME-type of the attachment.
const std::string & description() const
Returns a description of the attachment.
void setData(std::unique_ptr< StreamDataBlock > &&data)
Sets the data for the attachment.
const std::string & name() const
Returns the (file) name of the attachment.
std::uint64_t id() const
Returns the ID of the attachment.
void setFile(std::string_view path, Diagnostics &diag, AbortableProgressFeedback &progress)
Sets the data, name and MIME-type for the specified path.
bool isDataFromFile() const
Returns whether the assigned data has been assigned using the setFile() method.
void setName(std::string_view name)
Sets the (file) name of the attachment.
std::string label() const
Returns a label for the track.
void setIgnored(bool ignored)
Sets whether the attachment is ignored/omitted when rewriting the container.
bool isIgnored() const
Returns whether the attachment is ignored/omitted when rewriting the container.
AbstractAttachment()
Constructs a new attachment.
void setId(std::uint64_t id)
Sets the ID of the attachment.
const StreamDataBlock * data() const
Returns a reference to the data of the attachment.
void setMimeType(std::string_view mimeType)
Sets the MIME-type of the attachment.
The Diagnostics class is a container for DiagMessage.
const MediaFileInfo * fileInfo() const
FileDataBlock(std::string_view path, Diagnostics &diag, AbortableProgressFeedback &progress)
Constructs a new FileDataBlock with the specified path.
The StreamDataBlock class is a reference to a certain data block of a stream.
std::uint64_t m_startOffset
std::uint64_t m_endOffset
std::unique_ptr< char[]> m_buffer
void makeBuffer() const
Buffers the data block.
const std::unique_ptr< char[]> & buffer() const
Returns the data buffered via makeBuffer().
std::uint64_t startOffset() const
Returns the absolute start offset of the data block in the stream.
std::uint64_t size() const
Returns the size of the data block.
StreamDataBlock(const std::function< std::istream &()> &stream, uint64_t startOffset=0, std::ios_base::seekdir startDir=std::ios_base::beg, uint64_t endOffset=0, std::ios_base::seekdir endDir=std::ios_base::end)
std::istream & stream() const
Returns the associated stream.
void copyTo(std::ostream &stream) const
Copies the data to the specified stream.
void discardBuffer()
Discards buffered data.
std::uint64_t endOffset() const
Returns the absolute end offset of the data block in the stream.
std::function< std::istream &()> m_stream
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
Contains all classes and functions of the TagInfo library.
The AbstractAttachmentPrivate struct contains private fields of the AbstractAttachment class.