use std::cell::Cell;
use std::rc::Rc;
#[allow(unused_imports)]
use std::marker::PhantomData;
#[allow(unused_imports)]
use std::os::raw::c_void;
#[allow(unused_imports)]
use std::mem::transmute;
#[allow(unused_imports)]
use std::ffi::{CStr, CString};
use rute_ffi_base::*;
#[allow(unused_imports)]
use auto::*;
#[derive(Clone)]
pub struct SpacerItem<'a> {
#[doc(hidden)]
pub data: Rc<Cell<Option<*const RUBase>>>,
#[doc(hidden)]
pub all_funcs: *const RUSpacerItemAllFuncs,
#[doc(hidden)]
pub owned: bool,
#[doc(hidden)]
pub _marker: PhantomData<::std::cell::Cell<&'a ()>>,
}
impl<'a> SpacerItem<'a> {
#[allow(dead_code)]
pub(crate) fn new_from_rc(ffi_data: RUSpacerItem) -> SpacerItem<'a> {
SpacerItem {
data: unsafe { Rc::from_raw(ffi_data.host_data as *const Cell<Option<*const RUBase>>) },
all_funcs: ffi_data.all_funcs,
owned: false,
_marker: PhantomData,
}
}
#[allow(dead_code)]
pub(crate) fn new_from_owned(ffi_data: RUSpacerItem) -> SpacerItem<'a> {
SpacerItem {
data: Rc::new(Cell::new(Some(ffi_data.qt_data as *const RUBase))),
all_funcs: ffi_data.all_funcs,
owned: true,
_marker: PhantomData,
}
}
#[allow(dead_code)]
pub(crate) fn new_from_temporary(ffi_data: RUSpacerItem) -> SpacerItem<'a> {
SpacerItem {
data: Rc::new(Cell::new(Some(ffi_data.qt_data as *const RUBase))),
all_funcs: ffi_data.all_funcs,
owned: false,
_marker: PhantomData,
}
}
pub fn change_size(&self, w: i32, h: i32, h_data: Policy, v_data: Policy) -> &Self {
let enum_h_data_3 = h_data as u32;
let enum_v_data_4 = v_data as u32;
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
((*funcs).change_size)(obj_data, w, h, enum_h_data_3, enum_v_data_4);
}
self
}
pub fn size_hint(&self) -> Size {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).size_hint)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Size::new_from_rc(t);
} else {
ret_val = Size::new_from_owned(t);
}
ret_val
}
}
pub fn minimum_size(&self) -> Size {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).minimum_size)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Size::new_from_rc(t);
} else {
ret_val = Size::new_from_owned(t);
}
ret_val
}
}
pub fn maximum_size(&self) -> Size {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).maximum_size)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Size::new_from_rc(t);
} else {
ret_val = Size::new_from_owned(t);
}
ret_val
}
}
pub fn expanding_directions(&self) -> Orientations {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).expanding_directions)(obj_data);
let ret_val = Orientations::from_bits_truncate(ret_val);
ret_val
}
}
pub fn is_empty(&self) -> bool {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).is_empty)(obj_data);
ret_val
}
}
pub fn spacer_item(&self) -> Option<SpacerItem> {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).spacer_item)(obj_data);
if ret_val.qt_data == ::std::ptr::null() {
return None;
}
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = SpacerItem::new_from_rc(t);
} else {
ret_val = SpacerItem::new_from_owned(t);
}
Some(ret_val)
}
}
pub fn size_policy(&self) -> SizePolicy {
let (obj_data, funcs) = self.get_spacer_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).size_policy)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = SizePolicy::new_from_rc(t);
} else {
ret_val = SizePolicy::new_from_owned(t);
}
ret_val
}
}
#[doc(hidden)]
pub fn has_height_for_width(&self) -> bool {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).has_height_for_width)(obj_data);
ret_val
}
}
#[doc(hidden)]
pub fn height_for_width(&self, arg0: i32) -> i32 {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).height_for_width)(obj_data, arg0);
ret_val
}
}
#[doc(hidden)]
pub fn minimum_height_for_width(&self, arg0: i32) -> i32 {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).minimum_height_for_width)(obj_data, arg0);
ret_val
}
}
#[doc(hidden)]
pub fn invalidate(&self) -> &Self {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
((*funcs).invalidate)(obj_data);
}
self
}
#[doc(hidden)]
pub fn widget(&self) -> Option<Widget> {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).widget)(obj_data);
if ret_val.qt_data == ::std::ptr::null() {
return None;
}
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Widget::new_from_rc(t);
} else {
ret_val = Widget::new_from_owned(t);
}
Some(ret_val)
}
}
#[doc(hidden)]
pub fn layout(&self) -> Option<Layout> {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).layout)(obj_data);
if ret_val.qt_data == ::std::ptr::null() {
return None;
}
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Layout::new_from_rc(t);
} else {
ret_val = Layout::new_from_owned(t);
}
Some(ret_val)
}
}
#[doc(hidden)]
pub fn alignment(&self) -> Alignment {
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
let ret_val = ((*funcs).alignment)(obj_data);
let ret_val = Alignment::from_bits_truncate(ret_val);
ret_val
}
}
#[doc(hidden)]
pub fn set_alignment(&self, a: Alignment) -> &Self {
let enum_a_1 = a.bits();
let (obj_data, funcs) = self.get_layout_item_obj_funcs();
unsafe {
((*funcs).set_alignment)(obj_data, enum_a_1);
}
self
}
pub fn build(&self) -> Self {
self.clone()
}
}
pub trait SpacerItemTrait<'a> {
#[inline]
#[doc(hidden)]
fn get_spacer_item_obj_funcs(&self) -> (*const RUBase, *const RUSpacerItemFuncs);
}
impl<'a> LayoutItemTrait<'a> for SpacerItem<'a> {
#[doc(hidden)]
fn get_layout_item_obj_funcs(&self) -> (*const RUBase, *const RULayoutItemFuncs) {
let obj = self.data.get().unwrap();
unsafe { (obj, (*self.all_funcs).layout_item_funcs) }
}
}
impl<'a> SpacerItemTrait<'a> for SpacerItem<'a> {
#[doc(hidden)]
fn get_spacer_item_obj_funcs(&self) -> (*const RUBase, *const RUSpacerItemFuncs) {
let obj = self.data.get().unwrap();
unsafe { (obj, (*self.all_funcs).spacer_item_funcs) }
}
}