Build CollectionRef manually
That way we can get Eq and Hash.
This commit is contained in:
parent
13c61a9329
commit
8bfefa2b14
|
|
@ -53,9 +53,15 @@ manual = [
|
||||||
|
|
||||||
[[object]]
|
[[object]]
|
||||||
name = "OSTree.CollectionRef"
|
name = "OSTree.CollectionRef"
|
||||||
status = "generate"
|
status = "manual"
|
||||||
[[object.function]]
|
[[object.function]]
|
||||||
pattern = "dupv|equal|freev|hash"
|
# helper functions for NULL-terminated arrays
|
||||||
|
pattern = "dupv|freev"
|
||||||
|
ignore = true
|
||||||
|
|
||||||
|
[[object.function]]
|
||||||
|
# we get this for free?
|
||||||
|
name = "dup"
|
||||||
ignore = true
|
ignore = true
|
||||||
|
|
||||||
[[object]]
|
[[object]]
|
||||||
|
|
|
||||||
|
|
@ -995,17 +995,11 @@ ref name, and %FALSE otherwise. Both @ref1 and @ref2 must be non-%NULL.</doc>
|
||||||
<type name="gboolean" c:type="gboolean"/>
|
<type name="gboolean" c:type="gboolean"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
<parameters>
|
<parameters>
|
||||||
<parameter name="ref1"
|
<parameter name="ref1" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="ref2"
|
<parameter name="ref2" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
@ -1038,10 +1032,7 @@ must be %NULL-terminated; it may be empty, but must not be %NULL.</doc>
|
||||||
<type name="guint" c:type="guint"/>
|
<type name="guint" c:type="guint"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
<parameters>
|
<parameters>
|
||||||
<parameter name="ref"
|
<parameter name="ref" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
@ -11550,17 +11541,11 @@ ref name, and %FALSE otherwise. Both @ref1 and @ref2 must be non-%NULL.</doc>
|
||||||
<type name="gboolean" c:type="gboolean"/>
|
<type name="gboolean" c:type="gboolean"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
<parameters>
|
<parameters>
|
||||||
<parameter name="ref1"
|
<parameter name="ref1" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
<parameter name="ref2"
|
<parameter name="ref2" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
@ -11595,10 +11580,7 @@ must be %NULL-terminated; it may be empty, but must not be %NULL.</doc>
|
||||||
<type name="guint" c:type="guint"/>
|
<type name="guint" c:type="guint"/>
|
||||||
</return-value>
|
</return-value>
|
||||||
<parameters>
|
<parameters>
|
||||||
<parameter name="ref"
|
<parameter name="ref" transfer-ownership="none">
|
||||||
transfer-ownership="none"
|
|
||||||
nullable="1"
|
|
||||||
allow-none="1">
|
|
||||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||||
<type name="gpointer" c:type="gconstpointer"/>
|
<type name="gpointer" c:type="gconstpointer"/>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
// This file was generated by gir (https://github.com/gtk-rs/gir)
|
|
||||||
// from gir-files (https://github.com/gtk-rs/gir-files)
|
|
||||||
// DO NOT EDIT
|
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use glib::translate::*;
|
|
||||||
use glib_ffi;
|
|
||||||
use gobject_ffi;
|
|
||||||
use std::mem;
|
|
||||||
use std::ptr;
|
|
||||||
|
|
||||||
glib_wrapper! {
|
|
||||||
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
||||||
pub struct CollectionRef(Boxed<ffi::OstreeCollectionRef>);
|
|
||||||
|
|
||||||
match fn {
|
|
||||||
copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef,
|
|
||||||
free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _),
|
|
||||||
get_type => || ffi::ostree_collection_ref_get_type(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl CollectionRef {
|
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
|
||||||
pub fn new<'a, P: Into<Option<&'a str>>>(collection_id: P, ref_name: &str) -> CollectionRef {
|
|
||||||
let collection_id = collection_id.into();
|
|
||||||
let collection_id = collection_id.to_glib_none();
|
|
||||||
unsafe {
|
|
||||||
from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
|
||||||
pub fn dup(&self) -> Option<CollectionRef> {
|
|
||||||
unsafe {
|
|
||||||
from_glib_full(ffi::ostree_collection_ref_dup(self.to_glib_none().0))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -26,11 +26,6 @@ mod se_policy;
|
||||||
pub use self::se_policy::SePolicy;
|
pub use self::se_policy::SePolicy;
|
||||||
pub use self::se_policy::SePolicyExt;
|
pub use self::se_policy::SePolicyExt;
|
||||||
|
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
|
||||||
mod collection_ref;
|
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
|
||||||
pub use self::collection_ref::CollectionRef;
|
|
||||||
|
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
mod remote;
|
mod remote;
|
||||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
// Based on a file generated by gir. Changes are marked below.
|
||||||
|
use ffi;
|
||||||
|
use glib::translate::*;
|
||||||
|
use glib_ffi;
|
||||||
|
use gobject_ffi;
|
||||||
|
use std::hash;
|
||||||
|
use std::mem;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
|
glib_wrapper! {
|
||||||
|
#[derive(Debug, PartialOrd, Ord)]
|
||||||
|
pub struct CollectionRef(Boxed<ffi::OstreeCollectionRef>);
|
||||||
|
|
||||||
|
match fn {
|
||||||
|
copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef,
|
||||||
|
free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _),
|
||||||
|
get_type => || ffi::ostree_collection_ref_get_type(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CollectionRef {
|
||||||
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
pub fn new<'a, P: Into<Option<&'a str>>>(collection_id: P, ref_name: &str) -> CollectionRef {
|
||||||
|
let collection_id = collection_id.into();
|
||||||
|
let collection_id = collection_id.to_glib_none();
|
||||||
|
unsafe {
|
||||||
|
from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
fn equal(&self, ref2: &CollectionRef) -> bool {
|
||||||
|
unsafe {
|
||||||
|
// CHANGE: both instances of *mut to *const
|
||||||
|
from_glib(ffi::ostree_collection_ref_equal(ToGlibPtr::<*const ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer, ToGlibPtr::<*const ffi::OstreeCollectionRef>::to_glib_none(ref2).0 as glib_ffi::gconstpointer))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
fn hash(&self) -> u32 {
|
||||||
|
unsafe {
|
||||||
|
// CHANGE: *mut to *const
|
||||||
|
ffi::ostree_collection_ref_hash(ToGlibPtr::<*const ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PartialEq for CollectionRef {
|
||||||
|
#[inline]
|
||||||
|
fn eq(&self, other: &Self) -> bool {
|
||||||
|
self.equal(other)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Eq for CollectionRef {}
|
||||||
|
|
||||||
|
impl hash::Hash for CollectionRef {
|
||||||
|
#[inline]
|
||||||
|
fn hash<H>(&self, state: &mut H) where H: hash::Hasher {
|
||||||
|
hash::Hash::hash(&self.hash(), state)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,18 +14,22 @@ extern crate lazy_static;
|
||||||
use glib::Error;
|
use glib::Error;
|
||||||
|
|
||||||
// re-exports
|
// re-exports
|
||||||
#[cfg_attr(feature = "cargo-clippy", allow(clippy))]
|
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::functions::*;
|
pub use crate::auto::functions::*;
|
||||||
pub use auto::*;
|
pub use crate::auto::*;
|
||||||
|
|
||||||
mod repo;
|
mod repo;
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
mod collection_ref;
|
||||||
|
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||||
|
pub use crate::collection_ref::CollectionRef;
|
||||||
|
|
||||||
mod object_name;
|
mod object_name;
|
||||||
pub use object_name::ObjectName;
|
pub use crate::object_name::ObjectName;
|
||||||
|
|
||||||
// public modules
|
// public modules
|
||||||
pub mod prelude {
|
pub mod prelude {
|
||||||
pub use auto::traits::*;
|
pub use crate::auto::traits::*;
|
||||||
pub use repo::RepoExtManual;
|
pub use crate::repo::RepoExtManual;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue