mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-25 19:11:06 +00:00
Add bindings for Bitmask values
This commit is contained in:
parent
07e9383ddf
commit
31b65e572c
1 changed files with 86 additions and 0 deletions
|
@ -412,6 +412,92 @@ impl SetValue for FractionRange {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
||||
pub struct Bitmask(u64);
|
||||
|
||||
impl Bitmask {
|
||||
pub fn new(v: u64) -> Self {
|
||||
Bitmask(v)
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::Deref for Bitmask {
|
||||
type Target = u64;
|
||||
|
||||
fn deref(&self) -> &u64 {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::DerefMut for Bitmask {
|
||||
fn deref_mut(&mut self) -> &mut u64 {
|
||||
&mut self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::BitAnd for Bitmask {
|
||||
type Output = Self;
|
||||
|
||||
fn bitand(self, rhs: Self) -> Self {
|
||||
Bitmask(self.0.bitand(rhs.0))
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::BitOr for Bitmask {
|
||||
type Output = Self;
|
||||
|
||||
fn bitor(self, rhs: Self) -> Self {
|
||||
Bitmask(self.0.bitor(rhs.0))
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::BitXor for Bitmask {
|
||||
type Output = Self;
|
||||
|
||||
fn bitxor(self, rhs: Self) -> Self {
|
||||
Bitmask(self.0.bitxor(rhs.0))
|
||||
}
|
||||
}
|
||||
|
||||
impl ops::Not for Bitmask {
|
||||
type Output = Self;
|
||||
|
||||
fn not(self) -> Self {
|
||||
Bitmask(self.0.not())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<u64> for Bitmask {
|
||||
fn from(v: u64) -> Self {
|
||||
Self::new(v)
|
||||
}
|
||||
}
|
||||
|
||||
impl glib::types::StaticType for Bitmask {
|
||||
fn static_type() -> glib::types::Type {
|
||||
unsafe { from_glib(ffi::gst_bitmask_get_type()) }
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> FromValue<'a> for Bitmask {
|
||||
unsafe fn from_value(v: &'a Value) -> Self {
|
||||
let v = ffi::gst_value_get_bitmask(v.to_glib_none().0);
|
||||
Self::new(v)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> FromValueOptional<'a> for Bitmask {
|
||||
unsafe fn from_value_optional(v: &'a Value) -> Option<Self> {
|
||||
Some(Self::from_value(v))
|
||||
}
|
||||
}
|
||||
|
||||
impl SetValue for Bitmask {
|
||||
unsafe fn set_value(v: &mut Value, r: &Self) {
|
||||
ffi::gst_value_set_bitmask(v.to_glib_none_mut().0, r.0);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Array<'a>(Cow<'a, [glib::Value]>);
|
||||
|
||||
|
|
Loading…
Reference in a new issue