libappstream 0.4.0

Rust bindings for appstream
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files.git)
// DO NOT EDIT

use crate::{ffi, ControlKind, DisplaySideKind, RelationCompare, RelationItemKind, RelationKind};
use glib::{prelude::*, translate::*};

glib::wrapper! {
    #[doc(alias = "AsRelation")]
    pub struct Relation(Object<ffi::AsRelation, ffi::AsRelationClass>);

    match fn {
        type_ => || ffi::as_relation_get_type(),
    }
}

impl Relation {
    pub const NONE: Option<&'static Relation> = None;

    #[doc(alias = "as_relation_new")]
    pub fn new() -> Relation {
        assert_initialized_main_thread!();
        unsafe { from_glib_full(ffi::as_relation_new()) }
    }

    //#[doc(alias = "as_relation_check_results_get_compatibility_score")]
    //pub fn check_results_get_compatibility_score(rc_results: /*Ignored*/&[RelationCheckResult]) -> i32 {
    //    unsafe { TODO: call ffi:as_relation_check_results_get_compatibility_score() }
    //}
}

impl Default for Relation {
    fn default() -> Self {
        Self::new()
    }
}

pub trait RelationExt: IsA<Relation> + 'static {
    #[doc(alias = "as_relation_get_compare")]
    #[doc(alias = "get_compare")]
    fn compare(&self) -> RelationCompare {
        unsafe { from_glib(ffi::as_relation_get_compare(self.as_ref().to_glib_none().0)) }
    }

    #[doc(alias = "as_relation_get_display_side_kind")]
    #[doc(alias = "get_display_side_kind")]
    fn display_side_kind(&self) -> DisplaySideKind {
        unsafe {
            from_glib(ffi::as_relation_get_display_side_kind(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[doc(alias = "as_relation_get_item_kind")]
    #[doc(alias = "get_item_kind")]
    fn item_kind(&self) -> RelationItemKind {
        unsafe {
            from_glib(ffi::as_relation_get_item_kind(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[doc(alias = "as_relation_get_kind")]
    #[doc(alias = "get_kind")]
    fn kind(&self) -> RelationKind {
        unsafe { from_glib(ffi::as_relation_get_kind(self.as_ref().to_glib_none().0)) }
    }

    #[doc(alias = "as_relation_get_value_control_kind")]
    #[doc(alias = "get_value_control_kind")]
    fn value_control_kind(&self) -> ControlKind {
        unsafe {
            from_glib(ffi::as_relation_get_value_control_kind(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[doc(alias = "as_relation_get_value_int")]
    #[doc(alias = "get_value_int")]
    fn value_int(&self) -> i32 {
        unsafe { ffi::as_relation_get_value_int(self.as_ref().to_glib_none().0) }
    }

    #[doc(alias = "as_relation_get_value_internet_bandwidth")]
    #[doc(alias = "get_value_internet_bandwidth")]
    fn value_internet_bandwidth(&self) -> u32 {
        unsafe { ffi::as_relation_get_value_internet_bandwidth(self.as_ref().to_glib_none().0) }
    }

    //#[doc(alias = "as_relation_get_value_internet_kind")]
    //#[doc(alias = "get_value_internet_kind")]
    //fn value_internet_kind(&self) -> /*Ignored*/InternetKind {
    //    unsafe { TODO: call ffi:as_relation_get_value_internet_kind() }
    //}

    #[doc(alias = "as_relation_get_value_px")]
    #[doc(alias = "get_value_px")]
    fn value_px(&self) -> i32 {
        unsafe { ffi::as_relation_get_value_px(self.as_ref().to_glib_none().0) }
    }

    #[doc(alias = "as_relation_get_value_str")]
    #[doc(alias = "get_value_str")]
    fn value_str(&self) -> Option<glib::GString> {
        unsafe {
            from_glib_none(ffi::as_relation_get_value_str(
                self.as_ref().to_glib_none().0,
            ))
        }
    }

    #[doc(alias = "as_relation_get_version")]
    #[doc(alias = "get_version")]
    fn version(&self) -> Option<glib::GString> {
        unsafe { from_glib_none(ffi::as_relation_get_version(self.as_ref().to_glib_none().0)) }
    }

    //#[doc(alias = "as_relation_is_satisfied")]
    //fn is_satisfied(&self, system_info: /*Ignored*/Option<&SystemInfo>, pool: Option<&impl IsA<Pool>>) -> Result</*Ignored*/Option<RelationCheckResult>, glib::Error> {
    //    unsafe { TODO: call ffi:as_relation_is_satisfied() }
    //}

    #[doc(alias = "as_relation_set_compare")]
    fn set_compare(&self, compare: RelationCompare) {
        unsafe {
            ffi::as_relation_set_compare(self.as_ref().to_glib_none().0, compare.into_glib());
        }
    }

    #[doc(alias = "as_relation_set_display_side_kind")]
    fn set_display_side_kind(&self, kind: DisplaySideKind) {
        unsafe {
            ffi::as_relation_set_display_side_kind(
                self.as_ref().to_glib_none().0,
                kind.into_glib(),
            );
        }
    }

    #[doc(alias = "as_relation_set_item_kind")]
    fn set_item_kind(&self, kind: RelationItemKind) {
        unsafe {
            ffi::as_relation_set_item_kind(self.as_ref().to_glib_none().0, kind.into_glib());
        }
    }

    #[doc(alias = "as_relation_set_kind")]
    fn set_kind(&self, kind: RelationKind) {
        unsafe {
            ffi::as_relation_set_kind(self.as_ref().to_glib_none().0, kind.into_glib());
        }
    }

    #[doc(alias = "as_relation_set_value_control_kind")]
    fn set_value_control_kind(&self, kind: ControlKind) {
        unsafe {
            ffi::as_relation_set_value_control_kind(
                self.as_ref().to_glib_none().0,
                kind.into_glib(),
            );
        }
    }

    #[doc(alias = "as_relation_set_value_int")]
    fn set_value_int(&self, value: i32) {
        unsafe {
            ffi::as_relation_set_value_int(self.as_ref().to_glib_none().0, value);
        }
    }

    #[doc(alias = "as_relation_set_value_internet_bandwidth")]
    fn set_value_internet_bandwidth(&self, bandwidth_mbitps: u32) {
        unsafe {
            ffi::as_relation_set_value_internet_bandwidth(
                self.as_ref().to_glib_none().0,
                bandwidth_mbitps,
            );
        }
    }

    //#[doc(alias = "as_relation_set_value_internet_kind")]
    //fn set_value_internet_kind(&self, kind: /*Ignored*/InternetKind) {
    //    unsafe { TODO: call ffi:as_relation_set_value_internet_kind() }
    //}

    #[doc(alias = "as_relation_set_value_px")]
    fn set_value_px(&self, logical_px: i32) {
        unsafe {
            ffi::as_relation_set_value_px(self.as_ref().to_glib_none().0, logical_px);
        }
    }

    #[doc(alias = "as_relation_set_value_str")]
    fn set_value_str(&self, value: &str) {
        unsafe {
            ffi::as_relation_set_value_str(self.as_ref().to_glib_none().0, value.to_glib_none().0);
        }
    }

    #[doc(alias = "as_relation_set_version")]
    fn set_version(&self, version: &str) {
        unsafe {
            ffi::as_relation_set_version(self.as_ref().to_glib_none().0, version.to_glib_none().0);
        }
    }

    #[doc(alias = "as_relation_version_compare")]
    fn version_compare(&self, version: &str) -> Result<(), glib::Error> {
        unsafe {
            let mut error = std::ptr::null_mut();
            let is_ok = ffi::as_relation_version_compare(
                self.as_ref().to_glib_none().0,
                version.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))
            }
        }
    }
}

impl<O: IsA<Relation>> RelationExt for O {}