Skip to content
This repository was archived by the owner on Mar 4, 2024. It is now read-only.

Commit c070941

Browse files
authored
Merge pull request #10 from ids1024/generic-class
In glib_object_wrapper!, use generic Class type instead defining a struct
2 parents 584b990 + ab67eb8 commit c070941

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+360
-380
lines changed

examples/src/bin/basic_subclass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ mod imp_win {
113113
}
114114

115115
glib_wrapper! {
116-
pub struct SimpleWindow(ObjectSubclass<imp_win::SimpleWindow, SimpleWindowClass>)
116+
pub struct SimpleWindow(ObjectSubclass<imp_win::SimpleWindow>)
117117
@extends gtk::Widget, gtk::Container, gtk::Bin, gtk::Window, gtk::ApplicationWindow;
118118
}
119119

examples/src/bin/listbox_model.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ mod row_data {
319319
// Public part of the RowData type. This behaves like a normal gtk-rs-style GObject
320320
// binding
321321
glib_wrapper! {
322-
pub struct RowData(ObjectSubclass<imp::RowData, RowDataClass>);
322+
pub struct RowData(ObjectSubclass<imp::RowData>);
323323
}
324324

325325
// Constructor for new instances. This simply calls glib::Object::new() with

gio/src/subclass/application.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,11 +303,11 @@ impl<T: ApplicationImpl> ApplicationImplExt for T {
303303
}
304304
}
305305

306-
unsafe impl<T: ApplicationImpl> IsSubclassable<T> for ApplicationClass {
307-
fn override_vfuncs(&mut self) {
308-
<glib::ObjectClass as IsSubclassable<T>>::override_vfuncs(self);
306+
unsafe impl<T: ApplicationImpl> IsSubclassable<T> for Application {
307+
fn override_vfuncs(class: &mut ::glib::object::Class<Self>) {
308+
<glib::Object as IsSubclassable<T>>::override_vfuncs(class);
309309
unsafe {
310-
let klass = &mut *(self as *mut Self as *mut gio_sys::GApplicationClass);
310+
let klass = &mut *(class.as_mut() as *mut gio_sys::GApplicationClass);
311311
klass.activate = Some(application_activate::<T>);
312312
klass.after_emit = Some(application_after_emit::<T>);
313313
klass.before_emit = Some(application_before_emit::<T>);

gio/src/subclass/input_stream.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,11 @@ impl<T: InputStreamImpl> InputStreamImplExt for T {
151151
}
152152
}
153153

154-
unsafe impl<T: InputStreamImpl> IsSubclassable<T> for InputStreamClass {
155-
fn override_vfuncs(&mut self) {
156-
<glib::ObjectClass as IsSubclassable<T>>::override_vfuncs(self);
154+
unsafe impl<T: InputStreamImpl> IsSubclassable<T> for InputStream {
155+
fn override_vfuncs(class: &mut ::glib::object::Class<Self>) {
156+
<glib::Object as IsSubclassable<T>>::override_vfuncs(class);
157157
unsafe {
158-
let klass = &mut *(self as *mut Self as *mut gio_sys::GInputStreamClass);
158+
let klass = &mut *(class.as_mut() as *mut gio_sys::GInputStreamClass);
159159
klass.read_fn = Some(stream_read::<T>);
160160
klass.close_fn = Some(stream_close::<T>);
161161
klass.skip = Some(stream_skip::<T>);

gio/src/subclass/io_stream.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ impl<T: IOStreamImpl> IOStreamImplExt for T {
9595
}
9696
}
9797

98-
unsafe impl<T: IOStreamImpl> IsSubclassable<T> for IOStreamClass {
99-
fn override_vfuncs(&mut self) {
100-
<glib::ObjectClass as IsSubclassable<T>>::override_vfuncs(self);
98+
unsafe impl<T: IOStreamImpl> IsSubclassable<T> for IOStream {
99+
fn override_vfuncs(class: &mut ::glib::object::Class<Self>) {
100+
<glib::Object as IsSubclassable<T>>::override_vfuncs(class);
101101
unsafe {
102-
let klass = &mut *(self as *mut Self as *mut gio_sys::GIOStreamClass);
102+
let klass = &mut *(class.as_mut() as *mut gio_sys::GIOStreamClass);
103103
klass.get_input_stream = Some(stream_get_input_stream::<T>);
104104
klass.get_output_stream = Some(stream_get_output_stream::<T>);
105105
klass.close_fn = Some(stream_close::<T>);

gio/src/subclass/output_stream.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,11 @@ impl<T: OutputStreamImpl> OutputStreamImplExt for T {
191191
}
192192
}
193193

194-
unsafe impl<T: OutputStreamImpl> IsSubclassable<T> for OutputStreamClass {
195-
fn override_vfuncs(&mut self) {
196-
<glib::ObjectClass as IsSubclassable<T>>::override_vfuncs(self);
194+
unsafe impl<T: OutputStreamImpl> IsSubclassable<T> for OutputStream {
195+
fn override_vfuncs(class: &mut ::glib::object::Class<Self>) {
196+
<glib::Object as IsSubclassable<T>>::override_vfuncs(class);
197197
unsafe {
198-
let klass = &mut *(self as *mut Self as *mut gio_sys::GOutputStreamClass);
198+
let klass = &mut *(class.as_mut() as *mut gio_sys::GOutputStreamClass);
199199
klass.write_fn = Some(stream_write::<T>);
200200
klass.close_fn = Some(stream_close::<T>);
201201
klass.flush = Some(stream_flush::<T>);

glib/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ pub use closure::Closure;
104104
pub use error::{BoolError, Error};
105105
pub use file_error::FileError;
106106
pub use object::{
107-
Cast, InitiallyUnowned, InitiallyUnownedClass, IsA, IsClassFor, Object, ObjectClass, ObjectExt,
108-
ObjectType, SendWeakRef, WeakRef,
107+
Cast, InitiallyUnowned, InitiallyUnownedClass, IsA, Object, ObjectClass, ObjectExt, ObjectType,
108+
SendWeakRef, WeakRef,
109109
};
110110
pub use signal::{
111111
signal_handler_block, signal_handler_disconnect, signal_handler_unblock,

0 commit comments

Comments
 (0)