On Friday 16 January 2009, Peter TB Brett wrote: > On Friday 16 January 2009 23:21:19 DJ Delorie wrote: > > Better would be to have the plugin itself have some > > well-known function that registers itself, like pcb's > > plugins do. Thus, all you really have to do is dl_open() > > any .so's you find, and call their well-known function. > > Having been stung by this in the past, I would prefer the > majority of plugins to be "opt-in" than "opt-out" (i.e. > loaded only when the current project needs to use them). > > You can quite easily envisage loading different plugins for, > say, gnucap simulation design and PCB design.
I was thinking of recommending a gnucap-like plugin system, but DJ sort of already did that. In gnucap, which is written in C++, static constructors are automatically called when a plugin is loaded, and they take care of whatever else is needed. Mostly, a static object is created and registered with a dispatcher, so you can add models, commands, and other things. Plugins are "opt-in". Otherwise, why would you bother? It is my impression that the PCB plugin system is almost the same, except that the "well-known function" is used instead of static constructors. Gnucap has the capability of also static linking plugins. Just add it to the Makefile when you build. I guess this would be "opt-out", and not really plugins any more, but the code is the same. The reason for doing this is to make a basic version that runs on anything and has some functionality without plugins. Aside from using the same general idea, I don't see much opportunity to share between projects. I do see one, to read and write files with different formats. Gnucap uses plugins to directly read and write a variety of file formats. That is something that IS worth sharing, because it open up the possibility of the different applications using the same files directly. Should plugins use the ".so" extension, (or is that ".dll) which is system dependent, or should they use another extension that is application specific but consistent across systems? _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user