aravis 0.11.1

safe bindings for Aravis, a vision library for genicam based cameras
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from ../gir-files
// DO NOT EDIT

use crate::ffi;
use glib::{prelude::*, translate::*};

glib::wrapper! {
///
///
/// # Implements
///
/// [`GcRegisterExt`][trait@crate::prelude::GcRegisterExt]
	#[doc(alias = "ArvGcRegister")]
	pub struct GcRegister(Interface<ffi::ArvGcRegister, ffi::ArvGcRegisterInterface>);

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

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

unsafe impl Send for GcRegister {}

mod sealed {
	pub trait Sealed {}
	impl<T: super::IsA<super::GcRegister>> Sealed for T {}
}

/// Trait containing all [`struct@GcRegister`] methods.
///
/// # Implementors
///
/// [`GcFloatRegNode`][struct@crate::GcFloatRegNode], [`GcIntRegNode`][struct@crate::GcIntRegNode], [`GcMaskedIntRegNode`][struct@crate::GcMaskedIntRegNode], [`GcRegisterNode`][struct@crate::GcRegisterNode], [`GcRegister`][struct@crate::GcRegister], [`GcStringRegNode`][struct@crate::GcStringRegNode], [`GcStructEntryNode`][struct@crate::GcStructEntryNode], [`GcStructRegNode`][struct@crate::GcStructRegNode]
pub trait GcRegisterExt: IsA<GcRegister> + sealed::Sealed + 'static {
	//#[cfg(feature = "v0_8_31")]
	//#[cfg_attr(docsrs, doc(cfg(feature = "v0_8_31")))]
	//#[doc(alias = "arv_gc_register_dup")]
	//fn dup(&self) -> Result<(/*Unimplemented*/Option<Basic: Pointer>, u64), glib::Error> {
	//    unsafe { TODO: call ffi:arv_gc_register_dup() }
	//}

	//#[doc(alias = "arv_gc_register_get")]
	//fn get(&self, buffer: /*Unimplemented*/Option<Basic: Pointer>, length: u64) -> Result<(), glib::Error> {
	//    unsafe { TODO: call ffi:arv_gc_register_get() }
	//}

	#[doc(alias = "arv_gc_register_get_address")]
	#[doc(alias = "get_address")]
	fn address(&self) -> Result<u64, glib::Error> {
		unsafe {
			let mut error = std::ptr::null_mut();
			let ret = ffi::arv_gc_register_get_address(self.as_ref().to_glib_none().0, &mut error);
			if error.is_null() {
				Ok(ret)
			} else {
				Err(from_glib_full(error))
			}
		}
	}

	#[doc(alias = "arv_gc_register_get_length")]
	#[doc(alias = "get_length")]
	fn length(&self) -> Result<u64, glib::Error> {
		unsafe {
			let mut error = std::ptr::null_mut();
			let ret = ffi::arv_gc_register_get_length(self.as_ref().to_glib_none().0, &mut error);
			if error.is_null() {
				Ok(ret)
			} else {
				Err(from_glib_full(error))
			}
		}
	}

	//#[doc(alias = "arv_gc_register_set")]
	//fn set(&self, buffer: /*Unimplemented*/Option<Basic: Pointer>, length: u64) -> Result<(), glib::Error> {
	//    unsafe { TODO: call ffi:arv_gc_register_set() }
	//}
}

impl<O: IsA<GcRegister>> GcRegisterExt for O {}