I know that this might be much more than people were asking for, but I have implemented an object system on top of Tcl. It most closely resembles Self in its treatment of objects (prototype-based, multiple inheritance, etc). The C library that implements the basic object functionality is very small; methods are, of course, implemented as hunks o Tcl code that are invoked in an interesting way :-) We are still in the process of testing things out, mainly by building wrapper "classes" (traits in Selfese) around the Tk widgets, writing a graphical browser on top of these, and a couple other things. Preliminary testing seems to indicate that the overhead is very small when compared to what you get (never having to say "global" again, among other things). I use the same method that Tk uses to give the world access to "binary" data (e.g. objects): Tcl commands. I think this is a pretty good method to use in general for this sort of problem in Tcl. Bind clientData to whatever strange thing (array of floats, etc) you want, have one function in C that all such data object commands get bound to, and you're pretty much done. I intend to use the C side of my object system to implement things like Hash tables, arrays, etc. in Tcl; in this case, the Tcl side is already done, I just have to write some methods in C to dick with the kinds of objects at hand.
If anyone is interested in the Basic Object System, please drop me a line and I'll add you to a list. It should be beta-testing in a week or two.
Cheers,
Sean Levy snl@cs.cmu.edu nDim Project, Engineering Design Research Center Carnegie Mellon University, Pittsburgh, PA
self-interest@lists.selflanguage.org