Re: Scripting in Gnome
- From: James Henstridge <james daa com au>
- To: Bob Smith <bob thestuff net>
- Cc: jamie <jamiemcc blueyonder co uk>, Bill Haneman <Bill Haneman Sun COM>, GNOME Desktop Hackers <desktop-devel-list gnome org>
- Subject: Re: Scripting in Gnome
- Date: Fri, 06 Feb 2004 09:42:17 +0800
On 06/02/04 02:46, Bob Smith wrote:
Exactly. This was what I was talking about when I suggested making
GObject's self describing. a GObject could then be introspected by
CORBA, DBus, Python, Whatever to allow the scripting functionality
easily. I think GObject's properties are self describing currently but
methods are not. Anyone know what else would need to be described to
make this possible?
The ORBit2 IInterface IDL would be worth looking at for this kind of
thing. You basically want:
* get the type of an object (we already have this with
G_OBJECT_GET_CLASS() or G_OBJECT_TYPE()).
* A way to find all base classes of a particular class (also already
available).
* A way to get a list of the methods of a class.
* For each method on the class:
o The return type
o List of argument names (you might consider this optional)
o List of argument types
o Whether each argument is in, out or inout.
* Require that all function arguments and return values can be
represented by the type system (this requires a fair bit of
work). This might involve extending the type system.
* Some way to invoke a method on an instance programatically.
The last one is probably most difficult. The two ways to solve it are
to generate marshalling code (similar to what we do for signals), or use
something like libffi to construct the function calls (probably making
use of the interface information to help construct the call).
For GTK, we haven't really had to worry about this because C can already
call C functions quite easily :) For CORBA, they needed to deal with
this from the start, since they needed to be able to convert invocations
from the network into function calls.
Note that most of the language bindings for dynamic languages actually
implement most of this already. Unfortunately, the format they expose
all the class information in is "Python classes" or "Perl classes", and
method calls are done using the "Python method call interface" or "Perl
method call interface" :) This isn't very helpful if you are trying to
use the information from a language other than the one the binding is
for ...
James.
--
Email: james daa com au
WWW: http://www.daa.com.au/~james/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]