From: Martin Reinecke (martin_at_[hidden])
Date: 2001-07-18 17:14:45
On Wed, Jul 18, 2001 at 09:54:48AM -0700, Thomas Matelich wrote:
> One of the things I like about boost is the way it takes things and makes them super
> cool. Things like the operators and tokenizer and others, where I've done things
> before and the solution provided by boost is so much more extensible and complete, it
> makes you smile when you look at the code. What I'm trying to get at is that there
> are so many options you need to consider.
In principle, DLC is intended to be a "cool" replacement for the mechanisms which
are currently used in many software packages (under UNIX variants, I can't comment on
Windows) to load DLLs. Usually the DLL is dlopen()ed and then some standardized hooks
in the DLLs are found using dlsym(), which provide information about the content of
the DLL. This usually involves some rather ugly code (in the application and the DLL),
which can be nearly completely avoided by using DLC.
As an example project which uses an (in my opinion) cumbersome approach, see
> Do you enforce a base class?
Yes (if I understood the question right, that is).
If your class in the DLL is not derived from DLC::BASE, you get an error when
compiling the DLL. The only purpose of enforcing this base class is to make
sure that every dynamically loaded class is polymorphic (needed for
the dynamic_cast<> in DLC::New).
> How do the loadable classes inform the loading
> application what tools they provide?
They are derived from an abstract base class which is known to the loading application;
this way, the application knows exactly what how to interact with them.
Since this happens via a pointer to the abstract base class, only virtual
functions of the loadable class can be called.
> Do you want to implement something as structured as COM?
To be honest, I don't have the faintest idea how COM works; but I'm very sure the DLC
is much more simplistic and has a much narrower range of applications.
> I have taken over maintenance of SOMELib (somelib.sf.net, use CVS), and ported it to
> Windows. It has tried to be a very simple framework, no required base classes, no
> UUID's. The tradeoff here is that the host app has to do a bit more work setting up
> the system. On the other hand its a lot more flexible than something like COM.
I will have a look at it tomorrow; for today it's too late.
> I haven't looked at your API, but the DLC::New seems interesting.
> Back to boost, I think it could be an interesting project, but I would like to see the
> same level of coolness developed.
I'll do my best ;)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk