1use crate::{ffi};
7use glib::{prelude::*,translate::*};
8
9#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
10#[derive(Clone, Copy)]
11#[non_exhaustive]
12#[doc(alias = "JsonNodeType")]
13pub enum NodeType {
14 #[doc(alias = "JSON_NODE_OBJECT")]
15 Object,
16 #[doc(alias = "JSON_NODE_ARRAY")]
17 Array,
18 #[doc(alias = "JSON_NODE_VALUE")]
19 Value,
20 #[doc(alias = "JSON_NODE_NULL")]
21 Null,
22#[doc(hidden)]
23 __Unknown(i32),
24}
25
26#[doc(hidden)]
27impl IntoGlib for NodeType {
28 type GlibType = ffi::JsonNodeType;
29
30 #[inline]
31fn into_glib(self) -> ffi::JsonNodeType {
32match self {
33 Self::Object => ffi::JSON_NODE_OBJECT,
34 Self::Array => ffi::JSON_NODE_ARRAY,
35 Self::Value => ffi::JSON_NODE_VALUE,
36 Self::Null => ffi::JSON_NODE_NULL,
37 Self::__Unknown(value) => value,
38}
39}
40}
41
42#[doc(hidden)]
43impl FromGlib<ffi::JsonNodeType> for NodeType {
44 #[inline]
45unsafe fn from_glib(value: ffi::JsonNodeType) -> Self {
46 skip_assert_initialized!();
47
48match value {
49 ffi::JSON_NODE_OBJECT => Self::Object,
50 ffi::JSON_NODE_ARRAY => Self::Array,
51 ffi::JSON_NODE_VALUE => Self::Value,
52 ffi::JSON_NODE_NULL => Self::Null,
53 value => Self::__Unknown(value),
54}
55}
56}
57
58impl StaticType for NodeType {
59 #[inline]
60 #[doc(alias = "json_node_type_get_type")]
61 fn static_type() -> glib::Type {
62 unsafe { from_glib(ffi::json_node_type_get_type()) }
63 }
64 }
65
66impl glib::HasParamSpec for NodeType {
67 type ParamSpec = glib::ParamSpecEnum;
68 type SetValue = Self;
69 type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
70
71 fn param_spec_builder() -> Self::BuilderFn {
72 Self::ParamSpec::builder_with_default
73 }
74}
75
76impl glib::value::ValueType for NodeType {
77 type Type = Self;
78}
79
80unsafe impl<'a> glib::value::FromValue<'a> for NodeType {
81 type Checker = glib::value::GenericValueTypeChecker<Self>;
82
83 #[inline]
84 unsafe fn from_value(value: &'a glib::Value) -> Self {
85 skip_assert_initialized!();
86 from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
87 }
88}
89
90impl ToValue for NodeType {
91 #[inline]
92 fn to_value(&self) -> glib::Value {
93 let mut value = glib::Value::for_value_type::<Self>();
94 unsafe {
95 glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
96 }
97 value
98 }
99
100 #[inline]
101 fn value_type(&self) -> glib::Type {
102 Self::static_type()
103 }
104}
105
106impl From<NodeType> for glib::Value {
107 #[inline]
108 fn from(v: NodeType) -> Self {
109 skip_assert_initialized!();
110 ToValue::to_value(&v)
111 }
112}
113
114#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
115#[derive(Clone, Copy)]
116#[non_exhaustive]
117#[doc(alias = "JsonParserError")]
118pub enum ParserError {
119 #[doc(alias = "JSON_PARSER_ERROR_PARSE")]
120 Parse,
121 #[doc(alias = "JSON_PARSER_ERROR_TRAILING_COMMA")]
122 TrailingComma,
123 #[doc(alias = "JSON_PARSER_ERROR_MISSING_COMMA")]
124 MissingComma,
125 #[doc(alias = "JSON_PARSER_ERROR_MISSING_COLON")]
126 MissingColon,
127 #[doc(alias = "JSON_PARSER_ERROR_INVALID_BAREWORD")]
128 InvalidBareword,
129 #[doc(alias = "JSON_PARSER_ERROR_EMPTY_MEMBER_NAME")]
130 EmptyMemberName,
131 #[doc(alias = "JSON_PARSER_ERROR_INVALID_DATA")]
132 InvalidData,
133 #[doc(alias = "JSON_PARSER_ERROR_UNKNOWN")]
134 Unknown,
135 #[cfg(feature = "v1_10")]
136 #[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
137 #[doc(alias = "JSON_PARSER_ERROR_NESTING")]
138 Nesting,
139 #[cfg(feature = "v1_10")]
140 #[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
141 #[doc(alias = "JSON_PARSER_ERROR_INVALID_STRUCTURE")]
142 InvalidStructure,
143 #[cfg(feature = "v1_10")]
144 #[cfg_attr(docsrs, doc(cfg(feature = "v1_10")))]
145 #[doc(alias = "JSON_PARSER_ERROR_INVALID_ASSIGNMENT")]
146 InvalidAssignment,
147#[doc(hidden)]
148 __Unknown(i32),
149}
150
151#[doc(hidden)]
152impl IntoGlib for ParserError {
153 type GlibType = ffi::JsonParserError;
154
155 #[inline]
156fn into_glib(self) -> ffi::JsonParserError {
157match self {
158 Self::Parse => ffi::JSON_PARSER_ERROR_PARSE,
159 Self::TrailingComma => ffi::JSON_PARSER_ERROR_TRAILING_COMMA,
160 Self::MissingComma => ffi::JSON_PARSER_ERROR_MISSING_COMMA,
161 Self::MissingColon => ffi::JSON_PARSER_ERROR_MISSING_COLON,
162 Self::InvalidBareword => ffi::JSON_PARSER_ERROR_INVALID_BAREWORD,
163 Self::EmptyMemberName => ffi::JSON_PARSER_ERROR_EMPTY_MEMBER_NAME,
164 Self::InvalidData => ffi::JSON_PARSER_ERROR_INVALID_DATA,
165 Self::Unknown => ffi::JSON_PARSER_ERROR_UNKNOWN,
166 #[cfg(feature = "v1_10")]
167 Self::Nesting => ffi::JSON_PARSER_ERROR_NESTING,
168 #[cfg(feature = "v1_10")]
169 Self::InvalidStructure => ffi::JSON_PARSER_ERROR_INVALID_STRUCTURE,
170 #[cfg(feature = "v1_10")]
171 Self::InvalidAssignment => ffi::JSON_PARSER_ERROR_INVALID_ASSIGNMENT,
172 Self::__Unknown(value) => value,
173}
174}
175}
176
177#[doc(hidden)]
178impl FromGlib<ffi::JsonParserError> for ParserError {
179 #[inline]
180unsafe fn from_glib(value: ffi::JsonParserError) -> Self {
181 skip_assert_initialized!();
182
183match value {
184 ffi::JSON_PARSER_ERROR_PARSE => Self::Parse,
185 ffi::JSON_PARSER_ERROR_TRAILING_COMMA => Self::TrailingComma,
186 ffi::JSON_PARSER_ERROR_MISSING_COMMA => Self::MissingComma,
187 ffi::JSON_PARSER_ERROR_MISSING_COLON => Self::MissingColon,
188 ffi::JSON_PARSER_ERROR_INVALID_BAREWORD => Self::InvalidBareword,
189 ffi::JSON_PARSER_ERROR_EMPTY_MEMBER_NAME => Self::EmptyMemberName,
190 ffi::JSON_PARSER_ERROR_INVALID_DATA => Self::InvalidData,
191 ffi::JSON_PARSER_ERROR_UNKNOWN => Self::Unknown,
192 #[cfg(feature = "v1_10")]
193 ffi::JSON_PARSER_ERROR_NESTING => Self::Nesting,
194 #[cfg(feature = "v1_10")]
195 ffi::JSON_PARSER_ERROR_INVALID_STRUCTURE => Self::InvalidStructure,
196 #[cfg(feature = "v1_10")]
197 ffi::JSON_PARSER_ERROR_INVALID_ASSIGNMENT => Self::InvalidAssignment,
198 value => Self::__Unknown(value),
199}
200}
201}
202
203impl glib::error::ErrorDomain for ParserError {
204 #[inline]
205 fn domain() -> glib::Quark {
206 skip_assert_initialized!();
207
208 unsafe { from_glib(ffi::json_parser_error_quark()) }
209 }
210
211 #[inline]
212 fn code(self) -> i32 {
213 self.into_glib()
214 }
215
216 #[inline]
217 #[allow(clippy::match_single_binding)]
218 fn from(code: i32) -> Option<Self> {
219 skip_assert_initialized!();
220 match unsafe { from_glib(code) } {
221 value => Some(value),
222}
223 }
224}
225
226impl StaticType for ParserError {
227 #[inline]
228 #[doc(alias = "json_parser_error_get_type")]
229 fn static_type() -> glib::Type {
230 unsafe { from_glib(ffi::json_parser_error_get_type()) }
231 }
232 }
233
234impl glib::HasParamSpec for ParserError {
235 type ParamSpec = glib::ParamSpecEnum;
236 type SetValue = Self;
237 type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
238
239 fn param_spec_builder() -> Self::BuilderFn {
240 Self::ParamSpec::builder_with_default
241 }
242}
243
244impl glib::value::ValueType for ParserError {
245 type Type = Self;
246}
247
248unsafe impl<'a> glib::value::FromValue<'a> for ParserError {
249 type Checker = glib::value::GenericValueTypeChecker<Self>;
250
251 #[inline]
252 unsafe fn from_value(value: &'a glib::Value) -> Self {
253 skip_assert_initialized!();
254 from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
255 }
256}
257
258impl ToValue for ParserError {
259 #[inline]
260 fn to_value(&self) -> glib::Value {
261 let mut value = glib::Value::for_value_type::<Self>();
262 unsafe {
263 glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
264 }
265 value
266 }
267
268 #[inline]
269 fn value_type(&self) -> glib::Type {
270 Self::static_type()
271 }
272}
273
274impl From<ParserError> for glib::Value {
275 #[inline]
276 fn from(v: ParserError) -> Self {
277 skip_assert_initialized!();
278 ToValue::to_value(&v)
279 }
280}
281
282#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
283#[derive(Clone, Copy)]
284#[non_exhaustive]
285#[doc(alias = "JsonPathError")]
286pub enum PathError {
287 #[doc(alias = "JSON_PATH_ERROR_INVALID_QUERY")]
288 Query,
289#[doc(hidden)]
290 __Unknown(i32),
291}
292
293#[doc(hidden)]
294impl IntoGlib for PathError {
295 type GlibType = ffi::JsonPathError;
296
297 #[inline]
298fn into_glib(self) -> ffi::JsonPathError {
299match self {
300 Self::Query => ffi::JSON_PATH_ERROR_INVALID_QUERY,
301 Self::__Unknown(value) => value,
302}
303}
304}
305
306#[doc(hidden)]
307impl FromGlib<ffi::JsonPathError> for PathError {
308 #[inline]
309unsafe fn from_glib(value: ffi::JsonPathError) -> Self {
310 skip_assert_initialized!();
311
312match value {
313 ffi::JSON_PATH_ERROR_INVALID_QUERY => Self::Query,
314 value => Self::__Unknown(value),
315}
316}
317}
318
319impl glib::error::ErrorDomain for PathError {
320 #[inline]
321 fn domain() -> glib::Quark {
322 skip_assert_initialized!();
323
324 unsafe { from_glib(ffi::json_path_error_quark()) }
325 }
326
327 #[inline]
328 fn code(self) -> i32 {
329 self.into_glib()
330 }
331
332 #[inline]
333 #[allow(clippy::match_single_binding)]
334 fn from(code: i32) -> Option<Self> {
335 skip_assert_initialized!();
336 match unsafe { from_glib(code) } {
337 value => Some(value),
338}
339 }
340}
341
342impl StaticType for PathError {
343 #[inline]
344 #[doc(alias = "json_path_error_get_type")]
345 fn static_type() -> glib::Type {
346 unsafe { from_glib(ffi::json_path_error_get_type()) }
347 }
348 }
349
350impl glib::HasParamSpec for PathError {
351 type ParamSpec = glib::ParamSpecEnum;
352 type SetValue = Self;
353 type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
354
355 fn param_spec_builder() -> Self::BuilderFn {
356 Self::ParamSpec::builder_with_default
357 }
358}
359
360impl glib::value::ValueType for PathError {
361 type Type = Self;
362}
363
364unsafe impl<'a> glib::value::FromValue<'a> for PathError {
365 type Checker = glib::value::GenericValueTypeChecker<Self>;
366
367 #[inline]
368 unsafe fn from_value(value: &'a glib::Value) -> Self {
369 skip_assert_initialized!();
370 from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
371 }
372}
373
374impl ToValue for PathError {
375 #[inline]
376 fn to_value(&self) -> glib::Value {
377 let mut value = glib::Value::for_value_type::<Self>();
378 unsafe {
379 glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
380 }
381 value
382 }
383
384 #[inline]
385 fn value_type(&self) -> glib::Type {
386 Self::static_type()
387 }
388}
389
390impl From<PathError> for glib::Value {
391 #[inline]
392 fn from(v: PathError) -> Self {
393 skip_assert_initialized!();
394 ToValue::to_value(&v)
395 }
396}
397
398#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
399#[derive(Clone, Copy)]
400#[non_exhaustive]
401#[doc(alias = "JsonReaderError")]
402pub enum ReaderError {
403 #[doc(alias = "JSON_READER_ERROR_NO_ARRAY")]
404 NoArray,
405 #[doc(alias = "JSON_READER_ERROR_INVALID_INDEX")]
406 InvalidIndex,
407 #[doc(alias = "JSON_READER_ERROR_NO_OBJECT")]
408 NoObject,
409 #[doc(alias = "JSON_READER_ERROR_INVALID_MEMBER")]
410 InvalidMember,
411 #[doc(alias = "JSON_READER_ERROR_INVALID_NODE")]
412 InvalidNode,
413 #[doc(alias = "JSON_READER_ERROR_NO_VALUE")]
414 NoValue,
415 #[doc(alias = "JSON_READER_ERROR_INVALID_TYPE")]
416 InvalidType,
417#[doc(hidden)]
418 __Unknown(i32),
419}
420
421#[doc(hidden)]
422impl IntoGlib for ReaderError {
423 type GlibType = ffi::JsonReaderError;
424
425 #[inline]
426fn into_glib(self) -> ffi::JsonReaderError {
427match self {
428 Self::NoArray => ffi::JSON_READER_ERROR_NO_ARRAY,
429 Self::InvalidIndex => ffi::JSON_READER_ERROR_INVALID_INDEX,
430 Self::NoObject => ffi::JSON_READER_ERROR_NO_OBJECT,
431 Self::InvalidMember => ffi::JSON_READER_ERROR_INVALID_MEMBER,
432 Self::InvalidNode => ffi::JSON_READER_ERROR_INVALID_NODE,
433 Self::NoValue => ffi::JSON_READER_ERROR_NO_VALUE,
434 Self::InvalidType => ffi::JSON_READER_ERROR_INVALID_TYPE,
435 Self::__Unknown(value) => value,
436}
437}
438}
439
440#[doc(hidden)]
441impl FromGlib<ffi::JsonReaderError> for ReaderError {
442 #[inline]
443unsafe fn from_glib(value: ffi::JsonReaderError) -> Self {
444 skip_assert_initialized!();
445
446match value {
447 ffi::JSON_READER_ERROR_NO_ARRAY => Self::NoArray,
448 ffi::JSON_READER_ERROR_INVALID_INDEX => Self::InvalidIndex,
449 ffi::JSON_READER_ERROR_NO_OBJECT => Self::NoObject,
450 ffi::JSON_READER_ERROR_INVALID_MEMBER => Self::InvalidMember,
451 ffi::JSON_READER_ERROR_INVALID_NODE => Self::InvalidNode,
452 ffi::JSON_READER_ERROR_NO_VALUE => Self::NoValue,
453 ffi::JSON_READER_ERROR_INVALID_TYPE => Self::InvalidType,
454 value => Self::__Unknown(value),
455}
456}
457}
458
459impl glib::error::ErrorDomain for ReaderError {
460 #[inline]
461 fn domain() -> glib::Quark {
462 skip_assert_initialized!();
463
464 unsafe { from_glib(ffi::json_reader_error_quark()) }
465 }
466
467 #[inline]
468 fn code(self) -> i32 {
469 self.into_glib()
470 }
471
472 #[inline]
473 #[allow(clippy::match_single_binding)]
474 fn from(code: i32) -> Option<Self> {
475 skip_assert_initialized!();
476 match unsafe { from_glib(code) } {
477 value => Some(value),
478}
479 }
480}
481
482impl StaticType for ReaderError {
483 #[inline]
484 #[doc(alias = "json_reader_error_get_type")]
485 fn static_type() -> glib::Type {
486 unsafe { from_glib(ffi::json_reader_error_get_type()) }
487 }
488 }
489
490impl glib::HasParamSpec for ReaderError {
491 type ParamSpec = glib::ParamSpecEnum;
492 type SetValue = Self;
493 type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
494
495 fn param_spec_builder() -> Self::BuilderFn {
496 Self::ParamSpec::builder_with_default
497 }
498}
499
500impl glib::value::ValueType for ReaderError {
501 type Type = Self;
502}
503
504unsafe impl<'a> glib::value::FromValue<'a> for ReaderError {
505 type Checker = glib::value::GenericValueTypeChecker<Self>;
506
507 #[inline]
508 unsafe fn from_value(value: &'a glib::Value) -> Self {
509 skip_assert_initialized!();
510 from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
511 }
512}
513
514impl ToValue for ReaderError {
515 #[inline]
516 fn to_value(&self) -> glib::Value {
517 let mut value = glib::Value::for_value_type::<Self>();
518 unsafe {
519 glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
520 }
521 value
522 }
523
524 #[inline]
525 fn value_type(&self) -> glib::Type {
526 Self::static_type()
527 }
528}
529
530impl From<ReaderError> for glib::Value {
531 #[inline]
532 fn from(v: ReaderError) -> Self {
533 skip_assert_initialized!();
534 ToValue::to_value(&v)
535 }
536}
537