[Clam-devel] refactoring backends (2)

David García Garzón dgarcia at iua.upf.edu
Mon Jun 8 06:54:23 PDT 2009

Yes, that's just what CLAM_ASSERT does. Aborting in debug, throwing in 
release. The one that it is removed on release is the CLAM_DEBUG_ASSERT, and 
we don't recomend using it unless the overhead of the check is in a bottle 

CLAM asserts also provide backtrace dumping  (in linux) and programable 
handling callback. We had a callback that we used on graphical apps that 
showed a dialog before crashing but we removed it temporary because when the 
assert was done in the processing thread (within a Do) it could not access 
the gui thread safely. This is another one of the refactorings we should do 
on the backends: handling unhandled exceptions and failed assertions.

See the doxygen for more information:


On Monday 08 June 2009 15:08:42 dirk.griffioen wrote:
> Hi,
> Would clam be interested in the ENFORCE idiom? Basically these are
> asserts, but they are kept in release mode and throw(). The rationale
> you can find here: http://www.ddj.com/cpp/184403864
> I have found they lead to much smaller and safer code as for instance
> preconditions/invariants are 'enforced'.
> For example, before:
> and after (please note the example is not too good: destuctors should
> not throw ...)
> It generates errors like this:
> But this might be too much what CLAM_ASSERT already does ...
> Dirk
> PS - attached the header

More information about the clam-devel mailing list