use crate::{
ffi, Buffer, Device, DomDocument, DomNode, GcFeatureNode, GcInvalidatorNode, GcNode,
RegisterCachePolicy,
};
#[cfg(feature = "v0_8_6")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_6")))]
use crate::{AccessCheckPolicy, RangeCheckPolicy};
use glib::{prelude::*, translate::*};
glib::wrapper! {
#[doc(alias = "ArvGc")]
pub struct Gc(Object<ffi::ArvGc, ffi::ArvGcClass>) @extends DomDocument, DomNode;
match fn {
type_ => || ffi::arv_gc_get_type(),
}
}
impl Gc {
#[doc(alias = "arv_gc_p_value_indexed_node_new")]
pub fn p_value_indexed_node_new() -> Gc {
assert_initialized_main_thread!();
unsafe { GcNode::from_glib_full(ffi::arv_gc_p_value_indexed_node_new()).unsafe_cast() }
}
#[cfg(feature = "v0_8_6")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_6")))]
#[doc(alias = "arv_gc_get_access_check_policy")]
#[doc(alias = "get_access_check_policy")]
pub fn access_check_policy(&self) -> AccessCheckPolicy {
unsafe { from_glib(ffi::arv_gc_get_access_check_policy(self.to_glib_none().0)) }
}
#[doc(alias = "arv_gc_get_buffer")]
#[doc(alias = "get_buffer")]
pub fn buffer(&self) -> Option<Buffer> {
unsafe { from_glib_none(ffi::arv_gc_get_buffer(self.to_glib_none().0)) }
}
#[doc(alias = "arv_gc_get_device")]
#[doc(alias = "get_device")]
pub fn device(&self) -> Option<Device> {
unsafe { from_glib_none(ffi::arv_gc_get_device(self.to_glib_none().0)) }
}
#[doc(alias = "arv_gc_get_node")]
#[doc(alias = "get_node")]
pub fn node(&self, name: &str) -> Option<GcNode> {
unsafe {
from_glib_none(ffi::arv_gc_get_node(
self.to_glib_none().0,
name.to_glib_none().0,
))
}
}
#[cfg(feature = "v0_8_6")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_6")))]
#[doc(alias = "arv_gc_get_range_check_policy")]
#[doc(alias = "get_range_check_policy")]
pub fn range_check_policy(&self) -> RangeCheckPolicy {
unsafe { from_glib(ffi::arv_gc_get_range_check_policy(self.to_glib_none().0)) }
}
#[doc(alias = "arv_gc_get_register_cache_policy")]
#[doc(alias = "get_register_cache_policy")]
pub fn register_cache_policy(&self) -> RegisterCachePolicy {
unsafe { from_glib(ffi::arv_gc_get_register_cache_policy(self.to_glib_none().0)) }
}
#[doc(alias = "arv_gc_register_feature_node")]
pub fn register_feature_node(&self, node: &impl IsA<GcFeatureNode>) {
unsafe {
ffi::arv_gc_register_feature_node(
self.to_glib_none().0,
node.as_ref().to_glib_none().0,
);
}
}
#[cfg(feature = "v0_8_6")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_6")))]
#[doc(alias = "arv_gc_set_access_check_policy")]
pub fn set_access_check_policy(&self, policy: AccessCheckPolicy) {
unsafe {
ffi::arv_gc_set_access_check_policy(self.to_glib_none().0, policy.into_glib());
}
}
#[doc(alias = "arv_gc_set_buffer")]
pub fn set_buffer(&self, buffer: &Buffer) {
unsafe {
ffi::arv_gc_set_buffer(self.to_glib_none().0, buffer.to_glib_none().0);
}
}
#[cfg(feature = "v0_8_6")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_6")))]
#[doc(alias = "arv_gc_set_range_check_policy")]
pub fn set_range_check_policy(&self, policy: RangeCheckPolicy) {
unsafe {
ffi::arv_gc_set_range_check_policy(self.to_glib_none().0, policy.into_glib());
}
}
#[doc(alias = "arv_gc_set_register_cache_policy")]
pub fn set_register_cache_policy(&self, policy: RegisterCachePolicy) {
unsafe {
ffi::arv_gc_set_register_cache_policy(self.to_glib_none().0, policy.into_glib());
}
}
#[doc(alias = "arv_gc_invalidator_has_changed")]
pub fn invalidator_has_changed(self_: &GcInvalidatorNode) -> bool {
skip_assert_initialized!();
unsafe { from_glib(ffi::arv_gc_invalidator_has_changed(self_.to_glib_none().0)) }
}
}
unsafe impl Send for Gc {}