Re: Plans for gnome-vfs replacement



> On Mon, 2006-09-25 at 09:16 +0200, Alexander Larsson wrote:
>> On Sun, 2006-09-24 at 14:33 +0200, Philip Van Hoof wrote:
>> > On Wed, 2006-09-20 at 12:31 +0200, Alexander Larsson wrote:
>> >
>> > Hey Alex,
>> >
>> > Great that you are planning to redesign the VFS.
>> >
>> > > Here is my current GInputStream:
>> > >
>> > > struct _GInputStreamClass
>> > > {
>> > >   GObjectClass parent_class;
>> >
>> > Using GTypeInterfaceClass here would make it much more easy to let
>> > library and application developers implement the GInputStream
>> interface
>> > in a for-their needs suitable way.
>>
>> I'm well aware of interfaces. In fact my initial version used an
>> interface for this. However, there are other aspects of the equation
>> that has to be taken into account to. For instance, using a base class
>> means you can inherit functionallity from the baseclass.
>
> Just a little note: GTypeInterface types really act more as "mixins"
> than "real" interfaces in GObject, as they can effectively support a
> default implementation inside their own definitions.

So this is then a bit like multiple inheritance (of implementations). That
should probably be avoided because it's not possible for some programming
languages to represent it in their wrappers. And because it's difficult.

>> In fact, if you look at Java and .Net you will see that their streams
>> are objects too, not interfaces.
>
> This happens mostly because Java and .Net do not have a native concept
> of mixin/role types and only have pure interface types; so the only way
> they have to define an abstract type with default implementations is to
> create an abstract object.
>
> Anyway, there's no hard or compelling reason for using a GTypeInterface
> instead of an abstract GObject.


Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]