libmirage 0.1.1

Rust bindings for libMirage
Documentation
use crate::Disc;
use crate::translate::StringVariantHashMap;
use crate::{Writer, ffi};
use glib::object::*;
use glib::translate::*;
use std::collections::HashMap;
use std::ptr;

pub trait WriterExtManual: IsA<Writer> + 'static {
    #[doc(alias = "mirage_writer_open_image")]
    fn open_image(
        &self,
        disc: &impl IsA<Disc>,
        parameters: &HashMap<String, glib::Variant>,
    ) -> Result<(), glib::Error> {
        unsafe {
            let mut error = ptr::null_mut();
            let is_ok = ffi::mirage_writer_open_image(
                self.as_ref().to_glib_none().0,
                disc.as_ref().to_glib_none().0,
                StringVariantHashMap(parameters).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 = "mirage_writer_convert_image")]
    fn convert_image(
        &self,
        filename: &str,
        original_disc: &impl IsA<Disc>,
        parameters: &HashMap<String, glib::Variant>,
        cancellable: Option<&impl IsA<gio::Cancellable>>,
    ) -> Result<(), glib::Error> {
        unsafe {
            let mut error = ptr::null_mut();
            let is_ok = ffi::mirage_writer_convert_image(
                self.as_ref().to_glib_none().0,
                filename.to_glib_none().0,
                original_disc.as_ref().to_glib_none().0,
                StringVariantHashMap(parameters).to_glib_none().0,
                cancellable.map(AsRef::as_ref).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<Writer>> WriterExtManual for O {}