Boost logo

Boost Users :

From: martin f krafft (madduck_at_[hidden])
Date: 2005-05-16 18:11:15


[Cc'd libfactory discussion list. Quite possibly, boost::factory may
be the end for libfactory++, so you guys probably care. :)]

also sprach Pavel Vozenilek <pavel_vozenilek_at_[hidden]> [2005.05.17.0017 +0200]:
> Could you compary your library to the version from
> http://boost-sandbox.sourceforge.net/vault/ (file factory2.zip).

Thanks for the pointer. I compared to factory3.zip, which seems to
be an updated version.

From a cursory look I can conclude the following:

  - boost::factory and libfactory++ do 98% of the same stuff.

  - both factories are header-only.

  - both libraries provide for custom allocators, custom key types.

  - boost::factory is nicely documented, libfactory++ is not (yet).

  - boost::factory's handling of constructors is very nice, although
    I can't figure it out completely... how are arguments bounds at
    builder creation time? anyway, being able to bind some arguments
    at builder creation time and specify remaining ones at
    instantiation time is spiffy! I use the Command pattern, which
    essentially allows the same, but now that I saw boost::factory,
    I am envious. :) Anyway, is the constructor selected based on
    the arguments available? libfactory++ allows you to choose (and
    configure) the constructor to use for each call to create().

  - libfactory++ relies on static factory objects instantiated in
    the unnamed namespace (all automatic), whereas boost::factory
    requires factory objects to be created and configured by the
    user.

  - It seems that boost::factory does not allow automatic
    registration of types (think: load plugins), which was one of
    the reasons for the creation of libfactory++, so libfactory++
    supports it, using the static global factory objects as well as
    macros for the type registration. I may well be wrong and
    boost::factory does support this. How?

  - boost::factory is written for boost, libfactory++ is not. Thus,
    there is quite some work ahead of libfactory++, should it be the
    chosen one (I doubt it).

  - boost::factory seems to be very closely modelled on
    Alexandrescu's AbstractFactory (which may well not be his
    concept). libfactory++ comes from my own synapses only and was
    written long before I got into generic programming as understood
    by GoF, Alexandrescu, and boost. I am humbled to find out that
    I was smart enough to do most of it right. However, I also feel
    as if I will likely not stand a chance because I surely did
    overlook something.
    
> There has been at least one attempt to create Boost factory
> library in the past.

I would have been surprised if otherwise.

So all of the above make me want to think that boost::factory is the
way to go. I think I will keep libfactory++ around to allow people
to use a factory without the boost "overhead", but it's not going
into boost.

Instead, I will talk to Federico (that name sounds familiar from
somewhere...) and see whether I can help out developing
boost::factory.

Thanks for the pointer, Pavel.

-- 
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net_at_madduck
 
invalid/expired pgp subkeys? use subkeys.pgp.net as keyserver!
spamtraps: madduck.bogus_at_[hidden]
 
#include <signature.h>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net