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