use crate::{ffi,Node};
use glib::{prelude::*,translate::*};
glib::wrapper! {
#[doc(alias = "JsonSerializable")]
pub struct Serializable(Interface<ffi::JsonSerializable, ffi::JsonSerializableIface>);
match fn {
type_ => || ffi::json_serializable_get_type(),
}
}
impl Serializable {
pub const NONE: Option<&'static Serializable> = None;
}
pub trait SerializableExt: IsA<Serializable> + 'static {
#[doc(alias = "json_serializable_default_deserialize_property")]
fn default_deserialize_property(&self, property_name: &str, value: &mut glib::Value, pspec: impl AsRef<glib::ParamSpec>, property_node: &Node) -> bool {
unsafe {
from_glib(ffi::json_serializable_default_deserialize_property(self.as_ref().to_glib_none().0, property_name.to_glib_none().0, value.to_glib_none_mut().0, pspec.as_ref().to_glib_none().0, property_node.to_glib_none().0))
}
}
#[doc(alias = "json_serializable_default_serialize_property")]
fn default_serialize_property(&self, property_name: &str, value: &glib::Value, pspec: impl AsRef<glib::ParamSpec>) -> Option<Node> {
unsafe {
from_glib_full(ffi::json_serializable_default_serialize_property(self.as_ref().to_glib_none().0, property_name.to_glib_none().0, value.to_glib_none().0, pspec.as_ref().to_glib_none().0))
}
}
#[doc(alias = "json_serializable_deserialize_property")]
fn deserialize_property(&self, property_name: &str, pspec: impl AsRef<glib::ParamSpec>, property_node: &Node) -> Option<glib::Value> {
unsafe {
let mut value = glib::Value::uninitialized();
let ret = from_glib(ffi::json_serializable_deserialize_property(self.as_ref().to_glib_none().0, property_name.to_glib_none().0, value.to_glib_none_mut().0, pspec.as_ref().to_glib_none().0, property_node.to_glib_none().0));
if ret { Some(value) } else { None }
}
}
#[doc(alias = "json_serializable_find_property")]
fn find_property(&self, name: &str) -> Option<glib::ParamSpec> {
unsafe {
from_glib_none(ffi::json_serializable_find_property(self.as_ref().to_glib_none().0, name.to_glib_none().0))
}
}
#[doc(alias = "json_serializable_get_property")]
#[doc(alias = "get_property")]
fn property(&self, pspec: impl AsRef<glib::ParamSpec>) -> glib::Value {
unsafe {
let mut value = glib::Value::uninitialized();
ffi::json_serializable_get_property(self.as_ref().to_glib_none().0, pspec.as_ref().to_glib_none().0, value.to_glib_none_mut().0);
value
}
}
#[doc(alias = "json_serializable_list_properties")]
fn list_properties(&self) -> Vec<glib::ParamSpec> {
unsafe {
let mut n_pspecs = std::mem::MaybeUninit::uninit();
let ret = FromGlibContainer::from_glib_container_num(ffi::json_serializable_list_properties(self.as_ref().to_glib_none().0, n_pspecs.as_mut_ptr()), n_pspecs.assume_init() as _);
ret
}
}
#[doc(alias = "json_serializable_serialize_property")]
fn serialize_property(&self, property_name: &str, value: &glib::Value, pspec: impl AsRef<glib::ParamSpec>) -> Option<Node> {
unsafe {
from_glib_full(ffi::json_serializable_serialize_property(self.as_ref().to_glib_none().0, property_name.to_glib_none().0, value.to_glib_none().0, pspec.as_ref().to_glib_none().0))
}
}
#[doc(alias = "json_serializable_set_property")]
fn set_property(&self, pspec: impl AsRef<glib::ParamSpec>, value: &glib::Value) {
unsafe {
ffi::json_serializable_set_property(self.as_ref().to_glib_none().0, pspec.as_ref().to_glib_none().0, value.to_glib_none().0);
}
}
}
impl<O: IsA<Serializable>> SerializableExt for O {}