Re: MathML DOM implementation: I need some advise
Luca Padovani <[email protected]> Thu, 02 Oct 2003 09:27:07 +0200
| Newsgroups | gmane.comp.gnome.gdome |
|---|---|
| Message-ID | <1065079627.615.29.camel@giraffe> |
Hi, we are very much interested in an implementation of the MathML DOM. On Thu, 2003-10-02 at 03:45, Pierre-Paul Delisle wrote: > I want to implement the MathML DOM using GDome. Will it be to low level > using directly GDome (in the sense that I can use Python instead of C)? If > so, should I implement instead using GMetaDome? it depends on a number of things. If you work at the C level it is more painful because of the gory details like reference counting, extra arguments for exceptions, and so on. Furthermore you cannot easily benefit from object-oriented facilities that may be very useful for this job: the MathML DOM is more structured and makes more extensive use of multiple inheritance of interfaces than "plain" DOM does. The good thing would be that it would be easy to create bindings for any other language, including Ocaml and C++ which means that in a few shots we would deliver a MathML DOM implementation (I can hardly find one that is free) for virtually any language. If you implement it at the "gmetadom level" you are already committing to one specific language, and then people who want to use it elsewhere might be forced to write a "back-binding" to C. > If I go with GDome, should I think about creating the MathML DOM as separate > library or instead as a feature part of GDome? I think the MathML DOM can be implemented taking the DOM implementation as a black box. Unfortunately, because Gdome is plain C and because of the way the C++ binding is done, it is not easy to "extend" the DOM implementation as you would do in Java, so that the Document node would be the factory for MathML DOM elements. Were you thinking about implementing the DOM for the presentation only or the whole set of interfaces? Have you considered automatic generation of the code? A fair amount of methods can be generated automatically I think, this would reduce the code to hand-write and would make it easier to switch to an alternative approach if the one you try first does not seem to work well. Cheers, -- Luca