mirror of
https://github.com/ostreedev/ostree.git
synced 2025-02-01 09:47:45 +03:00
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]]
|
||||
name = "OSTree.CollectionRef"
|
||||
status = "generate"
|
||||
status = "manual"
|
||||
[[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
|
||||
|
||||
[[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"/>
|
||||
</return-value>
|
||||
<parameters>
|
||||
<parameter name="ref1"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref1" transfer-ownership="none">
|
||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</parameter>
|
||||
<parameter name="ref2"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref2" transfer-ownership="none">
|
||||
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</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"/>
|
||||
</return-value>
|
||||
<parameters>
|
||||
<parameter name="ref"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref" transfer-ownership="none">
|
||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</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"/>
|
||||
</return-value>
|
||||
<parameters>
|
||||
<parameter name="ref1"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref1" transfer-ownership="none">
|
||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</parameter>
|
||||
<parameter name="ref2"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref2" transfer-ownership="none">
|
||||
<doc xml:space="preserve">another #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</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"/>
|
||||
</return-value>
|
||||
<parameters>
|
||||
<parameter name="ref"
|
||||
transfer-ownership="none"
|
||||
nullable="1"
|
||||
allow-none="1">
|
||||
<parameter name="ref" transfer-ownership="none">
|
||||
<doc xml:space="preserve">an #OstreeCollectionRef</doc>
|
||||
<type name="gpointer" c:type="gconstpointer"/>
|
||||
</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::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"))]
|
||||
mod remote;
|
||||
#[cfg(any(feature = "v2018_6", feature = "dox"))]
|
||||
|
62
rust-bindings/rust/src/collection_ref.rs
Normal file
62
rust-bindings/rust/src/collection_ref.rs
Normal file
@ -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;
|
||||
|
||||
// re-exports
|
||||
#[cfg_attr(feature = "cargo-clippy", allow(clippy))]
|
||||
mod auto;
|
||||
pub use auto::functions::*;
|
||||
pub use auto::*;
|
||||
pub use crate::auto::functions::*;
|
||||
pub use crate::auto::*;
|
||||
|
||||
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;
|
||||
pub use object_name::ObjectName;
|
||||
pub use crate::object_name::ObjectName;
|
||||
|
||||
// public modules
|
||||
pub mod prelude {
|
||||
pub use auto::traits::*;
|
||||
pub use repo::RepoExtManual;
|
||||
pub use crate::auto::traits::*;
|
||||
pub use crate::repo::RepoExtManual;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user