A fact:

I can't start a class from GTypeInstance in vala 0.3.5, Vala will try to
use GTypeInstanceClass as the c class name whereas GTypeClass should be
used.

and in glib-2.0.vapi 
TypeInstance is labelled as deprecated.

Yu
On Thu, 2008-08-07 at 14:16 +0100, Sam Liddicott wrote:
> Hi Juan,
> 
> I'm not qualified to give any official response, but as I'm working to
> support more underlying class implementations I'm very interested in
> what you say.
> 
> -----Original Message-----
> From: Juan Luis Paz <[EMAIL PROTECTED]>
> Sent: 06 August 2008 23:16
> 
> ...
> >In this moment vala have two kind of object, the
> >object based in glib and the others tagged as 
> >"compact", all class are automatically based in glib 
> >except the classes tagged with the compact 
> >attribute; 
> 
> Features available in compact classes will increase, including virtual
> methods. The difference between gtypeinstance classes and compact
> clases will be mere implementation details, the main distinction being
> that class and object overheads (type casting implementation, virtual
> method table etc) wil have to be explicitly specified for compact
> classes whereas gtypeinstance/gobject classes have a regularly defined
> model implementation.
> 
> >in the glib exists two fundamental base class, the 
> >GTypeInstance (actually named TypeInstance in 
> >the glib vapi file, with the comment: "deprecated") 
> >and GObject (actually named Object in the glib vapi 
> >file), the second extends the first; and all class 
> >without super class extends automatically from 
> >GTypeInstance
> >
> >I propose create a logical class named "any" and 
> >all class registered in vala extends "any" (like Eiffel 
> >program language), all base class for any type 
> >systems extends "any" and all compact class 
> >extends "any" (the compact class is a reduced type 
> >system).
> 
> See above, compact clases need no longer be reduced.
> 
> > "any" is the logical super super class in vala, for 
> >this extends all elements registered in vala: 
> >classes, structs, etc.
> >
> >With "any" class, the object model look like:
> 
> any
>   |
>   + ----- GTypeInstance
>   |              |
>   |              + ---- GObject
>   |                           |
>   |                           + ---- MyGObjectClass
>   |
>   + ----- MyCompactClass
>   |
>   + ----- AnotherCompactClass
>   |
>   + ----- AnotherTypeSystem
>                 |
>                 + ---- MyClassWithAnoterTypeSystem
> 
> >For more usability I propose create two aliases:
> > object = GTypeInstance (actually TypeInstance)
> >gobject = GObject (actually Object)
> >
> >object is the super class for all gobject type 
> >system based class, like java and C#
> >
> >Why object is GTypeInstance instead GObject?
> > Because GTypeInstance can be handle all gobject 
> >type system based classes, this is the real 
> >superclass for all types based in gobject type 
> >system
> 
> I don't quite follow the logic, it sounds like you are saying that
> object should be gtypeinstance because it is the superclass of
> gobject, but that seems a weak reason, but I may have misunderstood
> the reason.
> 
> However, I would agree with the suggestion anyway, as this is the
> first class with proper object qualities... except that soons compact
> classes will also have these qualities...
> 
> >For prevent confusion when use gobject type 
> >system with another I propose rename this classes 
> >(from the glib vapi file):
> > "Type" to "GType"
> >"TypeInstance" to "GTypeInstance"
> >"Object" to "GObject"
> 
> Hmmm
> 
> >For close the large discussed issue about the 
> >default base class, I propose change it for 
> >GObject, this is the natural base class for the news 
> >classes; for use another super class must be 
> >indicate explicitly. 
> 
> Makes sense, although assumption about gobject this might only be true
> for gnome projects.
> 
> ...
> 
> >Now, the compiler can identify the compact class 
> >without the compact attribute, it is unnecessary 
> >and can be dropped
> 
> Well... Maybe, only maybe; the breadth of compact classes actually
> increases with attributes to specify forward casting, backwards
> casting, vmt, class data, etc. These will need specifying somehow. 
> 
> My perspective is of using vala to extend existing projects, like
> samba or the linux kernel that already have their own psuedo object
> system.
> 
> Further such compact classes can be subclassed indirectly by gobject
> (a simple wrapping technique) although the gtype system may not be
> able to learn much about the parent classes, virtual methods
> implemented by the non-gtype object etc will still work.
> 
> >About the use of "any":
> >
> >"any" is a metaclass, and this does not indicate 
> >how to handle its memory; unknown how handle 
> >its memory makes impossible to use "any" as type 
> >of  argument, variable, field, etc. then, the valid 
> >use of "any" is in a pointer, any* is the same as 
> >void*
> >
> >Note:
> >I prefer any* instead of void* because any* is >has 
> >a logic reason, void* is magic and illogical, but 
> >void* is very common
> 
> "Any" has a is meaningful in a literal way for argument types, but not
> for subclas declarations.
> I prefer void as the parent class, it is literally meaningful in both
> cases and not unexpected.
> 
> >Note:
> >In the variable argument list, the data type of 
> >"..." is any
> 
> >Note:
> > I'm not sure, but I think some methods in GObject 
> >class are GTypeInstance methods like get_type( )
> >
> >With this change vala has a consistent object 
> >model, without exceptions (actually the compact 
> >classes are exceptions), and open de possibility to 
> >support another type system with the same level 
> >as gobject type system, only one consideration 
> >must be understand the vala programmer when 
> >use across type systems: the capabilities of each 
> >type system
> >
> >I would like to receive your opinions.
> >
> >PD: I apologize for my bad English, I'm Spanish-speaking
> 
> Your english is fine!
> 
> Sam
> _______________________________________________
> Vala-list mailing list
> Vala-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/vala-list

_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to