use crate::{ffi, Context, Release};
use glib::{prelude::*, translate::*};
glib::wrapper! {
#[doc(alias = "AsReleaseList")]
pub struct ReleaseList(Object<ffi::AsReleaseList, ffi::AsReleaseListClass>);
match fn {
type_ => || ffi::as_release_list_get_type(),
}
}
impl ReleaseList {
pub const NONE: Option<&'static ReleaseList> = None;
#[doc(alias = "as_release_list_new")]
pub fn new() -> ReleaseList {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::as_release_list_new()) }
}
}
impl Default for ReleaseList {
fn default() -> Self {
Self::new()
}
}
pub trait ReleaseListExt: IsA<ReleaseList> + 'static {
#[doc(alias = "as_release_list_add")]
fn add(&self, release: &impl IsA<Release>) {
unsafe {
ffi::as_release_list_add(
self.as_ref().to_glib_none().0,
release.as_ref().to_glib_none().0,
);
}
}
#[doc(alias = "as_release_list_clear")]
fn clear(&self) {
unsafe {
ffi::as_release_list_clear(self.as_ref().to_glib_none().0);
}
}
#[doc(alias = "as_release_list_get_context")]
#[doc(alias = "get_context")]
fn context(&self) -> Option<Context> {
unsafe {
from_glib_none(ffi::as_release_list_get_context(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_release_list_get_entries")]
#[doc(alias = "get_entries")]
fn entries(&self) -> Vec<Release> {
unsafe {
FromGlibPtrContainer::from_glib_none(ffi::as_release_list_get_entries(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_release_list_get_size")]
#[doc(alias = "get_size")]
fn size(&self) -> u32 {
unsafe { ffi::as_release_list_get_size(self.as_ref().to_glib_none().0) }
}
#[doc(alias = "as_release_list_get_url")]
#[doc(alias = "get_url")]
fn url(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::as_release_list_get_url(self.as_ref().to_glib_none().0)) }
}
#[doc(alias = "as_release_list_index_safe")]
fn index_safe(&self, index: u32) -> Option<Release> {
unsafe {
from_glib_none(ffi::as_release_list_index_safe(
self.as_ref().to_glib_none().0,
index,
))
}
}
#[doc(alias = "as_release_list_is_empty")]
fn is_empty(&self) -> bool {
unsafe {
from_glib(ffi::as_release_list_is_empty(
self.as_ref().to_glib_none().0,
))
}
}
#[doc(alias = "as_release_list_load_from_bytes")]
fn load_from_bytes(
&self,
context: Option<&impl IsA<Context>>,
bytes: &glib::Bytes,
) -> Result<(), glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let is_ok = ffi::as_release_list_load_from_bytes(
self.as_ref().to_glib_none().0,
context.map(|p| p.as_ref()).to_glib_none().0,
bytes.to_glib_none().0,
&mut error,
);
debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
if error.is_null() {
Ok(())
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "as_release_list_set_context")]
fn set_context(&self, context: &impl IsA<Context>) {
unsafe {
ffi::as_release_list_set_context(
self.as_ref().to_glib_none().0,
context.as_ref().to_glib_none().0,
);
}
}
#[doc(alias = "as_release_list_set_size")]
fn set_size(&self, size: u32) {
unsafe {
ffi::as_release_list_set_size(self.as_ref().to_glib_none().0, size);
}
}
#[doc(alias = "as_release_list_set_url")]
fn set_url(&self, url: &str) {
unsafe {
ffi::as_release_list_set_url(self.as_ref().to_glib_none().0, url.to_glib_none().0);
}
}
#[doc(alias = "as_release_list_sort")]
fn sort(&self) {
unsafe {
ffi::as_release_list_sort(self.as_ref().to_glib_none().0);
}
}
}
impl<O: IsA<ReleaseList>> ReleaseListExt for O {}