json_glib/auto/
builder.rs1use crate::{ffi,Node};
7use glib::{prelude::*,translate::*};
8
9glib::wrapper! {
10 #[doc(alias = "JsonBuilder")]
11 pub struct Builder(Object<ffi::JsonBuilder, ffi::JsonBuilderClass>);
12
13 match fn {
14 type_ => || ffi::json_builder_get_type(),
15 }
16}
17
18impl Builder {
19 pub const NONE: Option<&'static Builder> = None;
20
21
22 #[doc(alias = "json_builder_new")]
23 pub fn new() -> Builder {
24 assert_initialized_main_thread!();
25 unsafe {
26 from_glib_full(ffi::json_builder_new())
27 }
28 }
29
30 #[cfg(feature = "v1_2")]
31 #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
32 #[doc(alias = "json_builder_new_immutable")]
33 pub fn new_immutable() -> Builder {
34 assert_initialized_main_thread!();
35 unsafe {
36 from_glib_full(ffi::json_builder_new_immutable())
37 }
38 }
39
40 pub fn builder() -> BuilderBuilder {
45 BuilderBuilder::new()
46 }
47
48}
49
50impl Default for Builder {
51 fn default() -> Self {
52 Self::new()
53 }
54 }
55
56#[must_use = "The builder must be built to be used"]
61pub struct BuilderBuilder {
62 builder: glib::object::ObjectBuilder<'static, Builder>,
63 }
64
65 impl BuilderBuilder {
66 fn new() -> Self {
67 Self { builder: glib::object::Object::builder() }
68 }
69
70 #[cfg(feature = "v1_2")]
71 #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
72 pub fn immutable(self, immutable: bool) -> Self {
73 Self { builder: self.builder.property("immutable", immutable), }
74 }
75
76 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
79 pub fn build(self) -> Builder {
80assert_initialized_main_thread!();
81 self.builder.build() }
82}
83
84pub trait BuilderExt: IsA<Builder> + 'static {
85 #[doc(alias = "json_builder_add_boolean_value")]
86#[must_use]
87 fn add_boolean_value(&self, value: bool) -> Option<Builder> {
88 unsafe {
89 from_glib_none(ffi::json_builder_add_boolean_value(self.as_ref().to_glib_none().0, value.into_glib()))
90 }
91 }
92
93 #[doc(alias = "json_builder_add_double_value")]
94#[must_use]
95 fn add_double_value(&self, value: f64) -> Option<Builder> {
96 unsafe {
97 from_glib_none(ffi::json_builder_add_double_value(self.as_ref().to_glib_none().0, value))
98 }
99 }
100
101 #[doc(alias = "json_builder_add_int_value")]
102#[must_use]
103 fn add_int_value(&self, value: i64) -> Option<Builder> {
104 unsafe {
105 from_glib_none(ffi::json_builder_add_int_value(self.as_ref().to_glib_none().0, value))
106 }
107 }
108
109 #[doc(alias = "json_builder_add_null_value")]
110#[must_use]
111 fn add_null_value(&self) -> Option<Builder> {
112 unsafe {
113 from_glib_none(ffi::json_builder_add_null_value(self.as_ref().to_glib_none().0))
114 }
115 }
116
117 #[doc(alias = "json_builder_add_string_value")]
118#[must_use]
119 fn add_string_value(&self, value: &str) -> Option<Builder> {
120 unsafe {
121 from_glib_none(ffi::json_builder_add_string_value(self.as_ref().to_glib_none().0, value.to_glib_none().0))
122 }
123 }
124
125 #[doc(alias = "json_builder_add_value")]
126#[must_use]
127 fn add_value(&self, node: Node) -> Option<Builder> {
128 unsafe {
129 from_glib_none(ffi::json_builder_add_value(self.as_ref().to_glib_none().0, node.into_glib_ptr()))
130 }
131 }
132
133 #[doc(alias = "json_builder_begin_array")]
134#[must_use]
135 fn begin_array(&self) -> Option<Builder> {
136 unsafe {
137 from_glib_none(ffi::json_builder_begin_array(self.as_ref().to_glib_none().0))
138 }
139 }
140
141 #[doc(alias = "json_builder_begin_object")]
142#[must_use]
143 fn begin_object(&self) -> Option<Builder> {
144 unsafe {
145 from_glib_none(ffi::json_builder_begin_object(self.as_ref().to_glib_none().0))
146 }
147 }
148
149 #[doc(alias = "json_builder_end_array")]
150#[must_use]
151 fn end_array(&self) -> Option<Builder> {
152 unsafe {
153 from_glib_none(ffi::json_builder_end_array(self.as_ref().to_glib_none().0))
154 }
155 }
156
157 #[doc(alias = "json_builder_end_object")]
158#[must_use]
159 fn end_object(&self) -> Option<Builder> {
160 unsafe {
161 from_glib_none(ffi::json_builder_end_object(self.as_ref().to_glib_none().0))
162 }
163 }
164
165 #[doc(alias = "json_builder_get_root")]
166 #[doc(alias = "get_root")]
167 fn root(&self) -> Option<Node> {
168 unsafe {
169 from_glib_full(ffi::json_builder_get_root(self.as_ref().to_glib_none().0))
170 }
171 }
172
173 #[doc(alias = "json_builder_reset")]
174 fn reset(&self) {
175 unsafe {
176 ffi::json_builder_reset(self.as_ref().to_glib_none().0);
177 }
178 }
179
180 #[doc(alias = "json_builder_set_member_name")]
181#[must_use]
182 fn set_member_name(&self, member_name: &str) -> Option<Builder> {
183 unsafe {
184 from_glib_none(ffi::json_builder_set_member_name(self.as_ref().to_glib_none().0, member_name.to_glib_none().0))
185 }
186 }
187
188 #[cfg(feature = "v1_2")]
189 #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
190 fn is_immutable(&self) -> bool {
191 ObjectExt::property(self.as_ref(), "immutable")
192 }
193}
194
195impl<O: IsA<Builder>> BuilderExt for O {}