Re: user_data and language bindings

Claudio Sacerdoti Coen <[email protected]>
Newsgroups gmane.comp.gnome.gdome
Message-ID <[email protected]>
 Hi,

> And then, obj' and newChild are just two names for the same object,
> because of some feature in ocaml?

 Not exactly. newChild is the OO wrapper, while obj' is the pre-method this.
 If you want (roughly!!) newChild is the ocaml object while obj' is the
 gdome "object".

> >     To sum up, we have two "functions" (the constructor and as_node)
> >     to map "this" of the pre-method level to objects at the OO-level.
> >     A method M at the OO level is the composition of a constructor
> >     with the pre-method M' with the as_node method.
> 
> Ok, how is this mapping performed in the constructor? Using a per-document
> this-to-OO hash table or something?

 Not at all. Simply, the constructor stores the "this" in a field of
 the object. (Roughly: in Ocaml you don't have to store fields because
 you have closures...) So, every time you call a method of the object,
 the method implementation retrieves the "this" and calls the
 pre-methods on the this and the arguments.

> First I wanted to write that I don't understand this paragraph, but having
> read it for the third time or so

 ;-))

> it becomes somewhat clear. You are in
> fact using a global or per-document hash to map the C pointers to gdome
> objects in OCaml. Well then prepare for the great programming language
> shootout :-)

 ;-)

> >  Of course, this approach is probably not feasible for other languages.
> 
> Ha! Ruby has hash tables, and so has Perl, and even C++! We could do the
> very same thing in these other languages :-) 

 Of course. My remark was just that to complete the binding I have no
 need at all for the hash table, because of the "trick" of the
 OO-objects remembering the "this" without need of any hash-table.
 So I have not really implemented the hash-table stuff, but it can be
 implemented if someone needs this (e.g. for subclassing Ocaml objects).

 I don't know if you can do the same easily in other languages
 (i.e. I don't know if you will need the hash table just to be able to
 complete the binding.)

> It's just much more efficient to simply use the user_data pointer.

 As I have said, for now it is already as efficiente as possible in the
 "standard" usage model. The hash table stuff is just for real hackers.
 And yes, I am sharing the same DOM from different languages. VERY unpolite
 of myself ;-))

> Admit: 
> I have not thought that people would want to use the same gdome tree from
> two different languages, and then still want to use the user_data
> themselves. Not really polite by these people. 

 Every time someone in my research group thinks something like that,
 I am soon going to need that. Either it is Murphy or myself ;-D

 				Happy binding,
				   C.S.C.

-- 
----------------------------------------------------------------
Real name: Claudio Sacerdoti Coen
PhD Student in Computer Science at University of Bologna
E-mail: [email protected]
http://caristudenti.cs.unibo.it/~sacerdot
----------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.