From kde-commits Tue Jul 06 05:15:11 2004 From: Werner Trobin Date: Tue, 06 Jul 2004 05:15:11 +0000 To: kde-commits Subject: Re: koffice/lib/kofficecore Message-Id: <200407060715.11950.trobin () kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=108909096518479 On Tuesday 06 July 2004 02:01, David Faure wrote: > CVS commit by faure: > > Dug up Werner's generic command, to make it easier to write undo/redo commands that > simply set a property on an object. In order to make it work with methods taking > a bool I had to write another version of it (otherwise it was looking for setFoo(const bool&)). > Any way to do this better? Yes. The solution would be to use type traits for the Property template parameter to determine the "OptimalParamType". This would also fix some other problems with the code (e.g. that you can't use a reference as property type as it would result in a reference to a reference inside the template). You can find an example at: http://courses.iicm.edu/ak_swent/examples_20040622.tar.gz (from a course I attended this semester :-) The interesting files are: - type_traits.h - type_traits_test.cpp - select_type.h You might also want to look at the generalized functor which is way more flexible than our solution (generalized_functor.h, typelist.h, hook_example.cpp,...). This version is different from Alexandrescu's original solution and IMHO it's a better solution in some areas. Another nice idea can be found in the mks_unit* files, but that's totally unrelated to our problem. Please contact me if there are problems with German comments in the code (they should be English, but you never know). There also would be a (German) text and slides for all those examples, so in case you need more context please send a mail. Some details in the generalized functor code are weird :-) Ciao, Werner