1 // This file was generated by gir (https://github.com/gtk-rs/gir)
2 // from gir-files (https://github.com/gtk-rs/gir-files)
3 // DO NOT EDIT
4 
5 use crate::Converter;
6 use crate::FilterOutputStream;
7 use crate::OutputStream;
8 use crate::PollableOutputStream;
9 use glib::object::Cast;
10 use glib::object::IsA;
11 use glib::translate::*;
12 use glib::StaticType;
13 use glib::ToValue;
14 use std::fmt;
15 
16 glib::wrapper! {
17     #[doc(alias = "GConverterOutputStream")]
18     pub struct ConverterOutputStream(Object<ffi::GConverterOutputStream, ffi::GConverterOutputStreamClass>) @extends FilterOutputStream, OutputStream, @implements PollableOutputStream;
19 
20     match fn {
21         type_ => || ffi::g_converter_output_stream_get_type(),
22     }
23 }
24 
25 impl ConverterOutputStream {
26     #[doc(alias = "g_converter_output_stream_new")]
new<P: IsA<OutputStream>, Q: IsA<Converter>>( base_stream: &P, converter: &Q, ) -> ConverterOutputStream27     pub fn new<P: IsA<OutputStream>, Q: IsA<Converter>>(
28         base_stream: &P,
29         converter: &Q,
30     ) -> ConverterOutputStream {
31         unsafe {
32             OutputStream::from_glib_full(ffi::g_converter_output_stream_new(
33                 base_stream.as_ref().to_glib_none().0,
34                 converter.as_ref().to_glib_none().0,
35             ))
36             .unsafe_cast()
37         }
38     }
39 
40     // rustdoc-stripper-ignore-next
41     /// Creates a new builder-pattern struct instance to construct [`ConverterOutputStream`] objects.
42     ///
43     /// This method returns an instance of [`ConverterOutputStreamBuilder`] which can be used to create [`ConverterOutputStream`] objects.
builder() -> ConverterOutputStreamBuilder44     pub fn builder() -> ConverterOutputStreamBuilder {
45         ConverterOutputStreamBuilder::default()
46     }
47 }
48 
49 #[derive(Clone, Default)]
50 // rustdoc-stripper-ignore-next
51 /// A [builder-pattern] type to construct [`ConverterOutputStream`] objects.
52 ///
53 /// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
54 pub struct ConverterOutputStreamBuilder {
55     converter: Option<Converter>,
56     base_stream: Option<OutputStream>,
57     close_base_stream: Option<bool>,
58 }
59 
60 impl ConverterOutputStreamBuilder {
61     // rustdoc-stripper-ignore-next
62     /// Create a new [`ConverterOutputStreamBuilder`].
new() -> Self63     pub fn new() -> Self {
64         Self::default()
65     }
66 
67     // rustdoc-stripper-ignore-next
68     /// Build the [`ConverterOutputStream`].
build(self) -> ConverterOutputStream69     pub fn build(self) -> ConverterOutputStream {
70         let mut properties: Vec<(&str, &dyn ToValue)> = vec![];
71         if let Some(ref converter) = self.converter {
72             properties.push(("converter", converter));
73         }
74         if let Some(ref base_stream) = self.base_stream {
75             properties.push(("base-stream", base_stream));
76         }
77         if let Some(ref close_base_stream) = self.close_base_stream {
78             properties.push(("close-base-stream", close_base_stream));
79         }
80         glib::Object::new::<ConverterOutputStream>(&properties)
81             .expect("Failed to create an instance of ConverterOutputStream")
82     }
83 
converter<P: IsA<Converter>>(mut self, converter: &P) -> Self84     pub fn converter<P: IsA<Converter>>(mut self, converter: &P) -> Self {
85         self.converter = Some(converter.clone().upcast());
86         self
87     }
88 
base_stream<P: IsA<OutputStream>>(mut self, base_stream: &P) -> Self89     pub fn base_stream<P: IsA<OutputStream>>(mut self, base_stream: &P) -> Self {
90         self.base_stream = Some(base_stream.clone().upcast());
91         self
92     }
93 
close_base_stream(mut self, close_base_stream: bool) -> Self94     pub fn close_base_stream(mut self, close_base_stream: bool) -> Self {
95         self.close_base_stream = Some(close_base_stream);
96         self
97     }
98 }
99 
100 pub const NONE_CONVERTER_OUTPUT_STREAM: Option<&ConverterOutputStream> = None;
101 
102 pub trait ConverterOutputStreamExt: 'static {
103     #[doc(alias = "g_converter_output_stream_get_converter")]
104     #[doc(alias = "get_converter")]
converter(&self) -> Converter105     fn converter(&self) -> Converter;
106 }
107 
108 impl<O: IsA<ConverterOutputStream>> ConverterOutputStreamExt for O {
converter(&self) -> Converter109     fn converter(&self) -> Converter {
110         unsafe {
111             from_glib_none(ffi::g_converter_output_stream_get_converter(
112                 self.as_ref().to_glib_none().0,
113             ))
114         }
115     }
116 }
117 
118 impl fmt::Display for ConverterOutputStream {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result119     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
120         f.write_str("ConverterOutputStream")
121     }
122 }
123