use crate::{ffi, ArtifactKind, BundleKind, Checksum, ChecksumKind, SizeKind};
use glib::{prelude::*, translate::*};
glib::wrapper! {
#[doc(alias = "AsArtifact")]
pub struct Artifact(Object<ffi::AsArtifact, ffi::AsArtifactClass>);
match fn {
type_ => || ffi::as_artifact_get_type(),
}
}
impl Artifact {
pub const NONE: Option<&'static Artifact> = None;
#[doc(alias = "as_artifact_new")]
pub fn new() -> Artifact {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::as_artifact_new()) }
}
}
impl Default for Artifact {
fn default() -> Self {
Self::new()
}
}
pub trait ArtifactExt: IsA<Artifact> + 'static {
#[doc(alias = "as_artifact_add_checksum")]
fn add_checksum(&self, cs: &impl IsA<Checksum>) {
unsafe {
ffi::as_artifact_add_checksum(
self.as_ref().to_glib_none().0,
cs.as_ref().to_glib_none().0,
);
}
}
#[doc(alias = "as_artifact_add_location")]
fn add_location(&self, location: &str) {
unsafe {
ffi::as_artifact_add_location(
self.as_ref().to_glib_none().0,
location.to_glib_none().0,
);
}
}
#[doc(alias = "as_artifact_get_bundle_kind")]
#[doc(alias = "get_bundle_kind")]
fn bundle_kind(&self) -> BundleKind {
unsafe {
from_glib(ffi::as_artifact_get_bundle_kind(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_artifact_get_checksum")]
#[doc(alias = "get_checksum")]
fn checksum(&self, kind: ChecksumKind) -> Option<Checksum> {
unsafe {
from_glib_none(ffi::as_artifact_get_checksum(
self.as_ref().to_glib_none().0,
kind.into_glib(),
))
}
}
#[doc(alias = "as_artifact_get_checksums")]
#[doc(alias = "get_checksums")]
fn checksums(&self) -> Vec<Checksum> {
unsafe {
FromGlibPtrContainer::from_glib_none(ffi::as_artifact_get_checksums(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_artifact_get_filename")]
#[doc(alias = "get_filename")]
fn filename(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::as_artifact_get_filename(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_artifact_get_kind")]
#[doc(alias = "get_kind")]
fn kind(&self) -> ArtifactKind {
unsafe { from_glib(ffi::as_artifact_get_kind(self.as_ref().to_glib_none().0)) }
}
#[doc(alias = "as_artifact_get_locations")]
#[doc(alias = "get_locations")]
fn locations(&self) -> Vec<glib::GString> {
unsafe {
FromGlibPtrContainer::from_glib_none(ffi::as_artifact_get_locations(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_artifact_get_platform")]
#[doc(alias = "get_platform")]
fn platform(&self) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::as_artifact_get_platform(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_artifact_get_size")]
#[doc(alias = "get_size")]
fn size(&self, kind: SizeKind) -> u64 {
unsafe { ffi::as_artifact_get_size(self.as_ref().to_glib_none().0, kind.into_glib()) }
}
#[doc(alias = "as_artifact_set_bundle_kind")]
fn set_bundle_kind(&self, kind: BundleKind) {
unsafe {
ffi::as_artifact_set_bundle_kind(self.as_ref().to_glib_none().0, kind.into_glib());
}
}
#[doc(alias = "as_artifact_set_filename")]
fn set_filename(&self, filename: &str) {
unsafe {
ffi::as_artifact_set_filename(
self.as_ref().to_glib_none().0,
filename.to_glib_none().0,
);
}
}
#[doc(alias = "as_artifact_set_kind")]
fn set_kind(&self, kind: ArtifactKind) {
unsafe {
ffi::as_artifact_set_kind(self.as_ref().to_glib_none().0, kind.into_glib());
}
}
#[doc(alias = "as_artifact_set_platform")]
fn set_platform(&self, platform: &str) {
unsafe {
ffi::as_artifact_set_platform(
self.as_ref().to_glib_none().0,
platform.to_glib_none().0,
);
}
}
#[doc(alias = "as_artifact_set_size")]
fn set_size(&self, size: u64, kind: SizeKind) {
unsafe {
ffi::as_artifact_set_size(self.as_ref().to_glib_none().0, size, kind.into_glib());
}
}
}
impl<O: IsA<Artifact>> ArtifactExt for O {}