Struct DataTransfer

Struct Documentation

struct DataTransfer

DataTransfer abstracts over the various ways of transferring data within an application and between applications. The details will depend on the current platform, but the common features are:

  • Each DataTransfer contains multiple views over the same data in different formats, specified by MIME type

  • The DataTransfer may contain an in-memory representation of the data, which can be sent and received within the current application

  • Serializing to a given format may be done eagerly or lazily

Public Functions

inline DataTransfer()

Default constructor for DataTransfer

inline explicit DataTransfer(const SharedString &string)

Constructs a DataTransfer whose plaintext representation is string.

inline explicit DataTransfer(const Image &image)

Constructs a DataTransfer whose image representation is image. Conversion to the relevant format is done on-demand.

inline ~DataTransfer()

Destroys this DataTransfer, releasing any data it holds.

inline DataTransfer(const DataTransfer &other)

Creates a new DataTransfer that shares the data of other.

inline DataTransfer &operator=(const DataTransfer &other)

Assigns other to this DataTransfer and returns a reference to this.

inline DataTransfer(DataTransfer &&other) noexcept

Move-constructs a DataTransfer from other, leaving other in a default-constructed state.

inline DataTransfer &operator=(DataTransfer &&other) noexcept

Move-assigns other to this DataTransfer and returns a reference to this.

inline void set_plaintext(const SharedString &text)

Sets the plaintext representation of this DataTransfer. Each DataTransfer can only have a single plaintext representation; calling this again overwrites the previous one.

inline void set_image(const Image &image)

Sets the image representation of this DataTransfer. Each DataTransfer can only have a single image representation; calling this again overwrites the previous one.

inline bool has_plaintext() const

Returns true if this data transfer advertises a plaintext representation.

inline bool has_image() const

Returns true if this data transfer advertises an image representation.

inline std::optional<SharedString> fetch_plaintext() const

Returns the plaintext representation of this DataTransfer, or std::nullopt if no plaintext representation is available.

inline std::optional<Image> fetch_image() const

Returns the image representation of this DataTransfer, or std::nullopt if no image representation is available.

inline void set_user_data(std::any value)

Overload of set_user_data() for callers that already hold a std::any.

inline std::any user_data() const

Returns the user data, or an empty std::any if none is set. Use std::any_cast to extract the concrete value.

inline bool has_user_data() const

Returns true if this DataTransfer holds user data.

inline void clear_user_data()

Clears the user data, if any.

Friends

inline friend bool operator==(const DataTransfer &a, const DataTransfer &b)

Compare two DataTransfer values for equality. This will return true if b is an unmodified clone of a, but if any modification has been done to either value since cloning then this will return false even if the two values are semantically identical.